* Borislav Petkov <bp@xxxxxxxxx> wrote: > On Wed, May 13, 2015 at 11:47:56AM +0200, Ingo Molnar wrote: > > - 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 <mingo@xxxxxxxxxx> 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 <mingo@xxxxxxxxxx> --- 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 | +-------------------------------------------------------------------- -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html