* Borislav Petkov [off-list ref] wrote:
On Wed, May 13, 2015 at 11:47:56AM +0200, Ingo Molnar wrote:
quoted
- introduce the '..' denotion (in the final table) to show features
that cannot be supported by an architecture due to hardware
dependencies:
gcov-profile-all:---------------.
THP:--------. |
irq-time-acct:-. | |
| | |
----------------------------------------
alpha | TODO | TODO | TODO |
arc | TODO | .. | TODO |
arm | ok | ok | ok |
arm64 | TODO | ok | ok |
avr32 | TODO | .. | TODO |
blackfin | TODO | .. | TODO |
c6x | TODO | .. | TODO |
so in the 'THP' column, if an architecture could in theory support
THP, it's listed as 'TODO', if it cannot, it's listed as '..'.
Shouldn't exactly that explanation be in the text file itself too?
Yeah, indeed, added it.
Also, how about s/TODO//g for less clutter:
No, I'd like there to be a very visible 'TODO' item for missing
features.
The 'clutter' shows how badly our generic kernel features are
propagating :-/ We hope to reduce this clutter in the future.
Updated patch attached - I've added a few more features to the last
table, and restructured the explanations, now every feature
description also lists the Kconfig variable that it's tracking, e.g.:
irq time acct: HAVE_IRQ_TIME_ACCOUNTING
THP: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
gcov profile all: ARCH_HAS_GCOV_PROFILE_ALL
rwsem optimized: Optimized asm/rwsem.h
queued spinlocks: ARCH_USE_QUEUED_SPINLOCKS
queued rwlocks: ARCH_USE_QUEUED_RWLOCKS
numa balancing: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA
Thanks,
Ingo
=========================================>From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001
From: Ingo Molnar <redacted>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt
Add a support matrix for various generic kernel features that need
architecture support.
Signed-off-by: Ingo Molnar <redacted>
---
Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 222 insertions(+)
diff --git a/Documentation/arch-features.txt b/Documentation/arch-features.txt
new file mode 100644
index 000000000000..4f6430bc552b
--- /dev/null
+++ b/Documentation/arch-features.txt
@@ -0,0 +1,222 @@
+
+For generic kernel features that need architecture support, this is
+the feature support matrix, for all upstream Linux architectures.
+
+Meaning of entries in the tables:
+
+ ' ok ': feature supported by the architecture
+ 'TODO': feature not yet supported by the architecture
+ ' .. ': feature cannot be supported by the hardware
+
+
+
+ lockdep: LOCKDEP_SUPPORT
+ stackprotector: HAVE_CC_STACKPROTECTOR
+ jump labels: HAVE_ARCH_JUMP_LABEL
+ seccomp filter: HAVE_ARCH_SECCOMP_FILTER
+ context tracking: HAVE_CONTEXT_TRACKING
+ kgdb: HAVE_ARCH_KGDB
+ modern timekeeping: !ARCH_USES_GETTIMEOFFSET
+ clockevents: GENERIC_CLOCKEVENTS
+ ELF ASLR: ARCH_HAS_ELF_RANDOMIZE
+
+ lockdep:---------------------------------------------------------.
+ stackprotector:--------------------------------------------------. |
+ jump labels:-------------------------------------------. | |
+ seccomp filter:------------------------------------. | | |
+ context tracking:-----------------------------. | | | |
+ kgdb:----------------------. | | | | |
+ modern timekeeping:---------------. | | | | | |
+ clockevents:--------. | | | | | | |
+ ELF ASLR:-. | | | | | | | |
+ | | | | | | | | |
+----------------------------------------------------------------------------------
+ alpha | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ arc | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
+ arm | ok | ok | TODO | ok | ok | ok | ok | ok | ok |
+ arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ avr32 | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ blackfin | TODO | ok | TODO | ok | TODO | TODO | TODO | TODO | ok |
+ c6x | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ cris | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ frv | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ hexagon | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
+ ia64 | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ m68k | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ metag | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ microblaze | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
+ mips | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ mn10300 | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | TODO |
+ nios2 | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | TODO |
+ openrisc | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ parisc | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ powerpc | ok | ok | ok | ok | ok | TODO | ok | TODO | ok |
+ s390 | ok | ok | ok | TODO | TODO | ok | ok | TODO | ok |
+ score | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ sh | TODO | ok | ok | ok | TODO | TODO | TODO | ok | ok |
+ sparc | TODO | ok | ok | ok | ok | TODO | ok | TODO | ok |
+ tile | TODO | ok | ok | ok | ok | TODO | TODO | TODO | ok |
+ um | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ unicore32 | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ xtensa | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+----------------------------------------------------------------------------------
+
+
+arch tick broadcast: ARCH_HAS_TICK_BROADCAST
+ kprobes: HAVE_KPROBES
+ optprobes: HAVE_OPTPROBES
+ kprobes on ftrace: HAVE_KPROBES_ON_FTRACE
+ uprobes: ARCH_SUPPORTS_UPROBES
+ kretprobes: HAVE_KRETPROBES
+ user ret profiler: HAVE_USER_RETURN_NOTIFIER
+ ioremap_prot(): HAVE_IOREMAP_PROT
+ tracehook: HAVE_ARCH_TRACEHOOK
+
+arch tick broadcast:---------------------------------------------------------.
+ kprobes:--------------------------------------------------. |
+ optprobes:-------------------------------------------. | |
+ kprobes on ftrace:------------------------------------. | | |
+ uprobes:-----------------------------. | | | |
+ kretprobes:----------------------. | | | | |
+ user ret profiler:---------------. | | | | | |
+ ioremap_prot():--------. | | | | | | |
+ tracehook:-. | | | | | | | |
+ | | | | | | | | |
+----------------------------------------------------------------------------------
+ alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ arc | ok | ok | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ arm | ok | TODO | TODO | ok | ok | TODO | ok | ok | ok |
+ arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
+ blackfin | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ c6x | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ frv | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ hexagon | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ ia64 | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ metag | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ microblaze | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ mips | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | ok |
+ mn10300 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ nios2 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ openrisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ powerpc | ok | ok | TODO | ok | ok | TODO | TODO | ok | ok |
+ s390 | ok | TODO | TODO | ok | ok | TODO | TODO | ok | TODO |
+ score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ sh | ok | ok | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ sparc | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ tile | ok | ok | ok | ok | TODO | TODO | ok | ok | TODO |
+ um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ x86 | ok | ok | ok | ok | ok | ok | ok | ok | TODO |
+ xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+----------------------------------------------------------------------------------
+
+
+generic idle thread: GENERIC_SMP_IDLE_THREAD
+ dma_*map*_attrs(): HAVE_DMA_ATTRS
+ dma contiguous: HAVE_DMA_CONTIGUOUS
+ kprobes event: HAVE_REGS_AND_STACK_ACCESS_API
+ dma api debug: HAVE_DMA_API_DEBUG
+ perf regs: HAVE_PERF_REGS
+ perf stackdump: HAVE_PERF_USER_STACK_DUMP
+ cmpxchg local: HAVE_CMPXCHG_LOCAL
+ virt cpuacct: HAVE_VIRT_CPU_ACCOUNTING || 64BIT
+
+generic idle thread:---------------------------------------------------------.
+ dma_*map*_attrs():--------------------------------------------------. |
+ dma contiguous:-------------------------------------------. | |
+ kprobes event:------------------------------------. | | |
+ dma api debug:-----------------------------. | | | |
+ perf regs:----------------------. | | | | |
+ perf stackdump:---------------. | | | | | |
+ cmpxchg local:--------. | | | | | | |
+ virt cpuacct:-. | | | | | | | |
+ | | | | | | | | |
+----------------------------------------------------------------------------------
+ alpha | ok | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok |
+ arc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ arm | ok | TODO | ok | ok | ok | ok | ok | ok | ok |
+ arm64 | ok | TODO | ok | ok | ok | TODO | ok | ok | ok |
+ avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ c6x | TODO | TODO | TODO | TODO | ok | TODO | TODO | TODO | TODO |
+ cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ hexagon | TODO | TODO | TODO | TODO | TODO | ok | TODO | ok | ok |
+ ia64 | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | ok |
+ m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ metag | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ microblaze | TODO | TODO | TODO | TODO | ok | TODO | TODO | ok | TODO |
+ mips | ok | TODO | TODO | TODO | ok | TODO | ok | ok | ok |
+ mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
+ parisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ powerpc | ok | TODO | TODO | TODO | ok | ok | TODO | ok | ok |
+ s390 | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok |
+ score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ sh | TODO | TODO | TODO | TODO | ok | ok | TODO | ok | ok |
+ sparc | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | ok |
+ tile | ok | TODO | TODO | TODO | ok | ok | TODO | ok | TODO |
+ um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
+ x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+----------------------------------------------------------------------------------
+
+
+ irq time acct: HAVE_IRQ_TIME_ACCOUNTING
+ THP: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
+ gcov profile all: ARCH_HAS_GCOV_PROFILE_ALL
+ rwsem optimized: Optimized asm/rwsem.h
+ queued spinlocks: ARCH_USE_QUEUED_SPINLOCKS
+ queued rwlocks: ARCH_USE_QUEUED_RWLOCKS
+ numa balancing: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA
+
+ irq time acct:-------------------------------------------.
+ THP:------------------------------------. |
+ gcov profile all:-----------------------------. | |
+ rwsem optimized:----------------------. | | |
+ queued spinlocks:---------------. | | | |
+ queued rwlocks:--------. | | | | |
+ numa balancing:-. | | | | | |
+ | | | | | | |
+--------------------------------------------------------------------
+ alpha | TODO | TODO | TODO | ok | TODO | TODO | TODO |
+ arc | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ arm | .. | TODO | TODO | TODO | ok | ok | ok |
+ arm64 | .. | TODO | TODO | TODO | ok | ok | TODO |
+ avr32 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ blackfin | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ c6x | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ cris | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ frv | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ hexagon | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ ia64 | TODO | TODO | TODO | ok | TODO | TODO | TODO |
+ m32r | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ m68k | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ metag | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ microblaze | .. | TODO | TODO | TODO | ok | .. | TODO |
+ mips | TODO | TODO | TODO | TODO | TODO | ok | ok |
+ mn10300 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ nios2 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ openrisc | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ parisc | .. | TODO | TODO | TODO | TODO | TODO | TODO |
+ powerpc | ok | TODO | TODO | TODO | ok | ok | TODO |
+ s390 | .. | TODO | TODO | ok | ok | ok | TODO |
+ score | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ sh | .. | TODO | TODO | ok | ok | .. | TODO |
+ sparc | TODO | TODO | TODO | ok | TODO | ok | TODO |
+ tile | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ um | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ unicore32 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ x86 | ok | ok | ok | ok | ok | ok | ok |
+ xtensa | .. | TODO | TODO | ok | TODO | .. | ok |
+--------------------------------------------------------------------