clone: Support passing tls argument via C rather than pt_regs magic
Subsystems (8)
PATCH v2 1/2 clone: Support passing tls argument via C rather than pt_regs magic
clone with CLONE_SETTLS accepts an argument to set the thread-local storage area for the new thread. sys_clone declares an int argument tls_val in the appropriate point in the argument list (based on the various CLONE_BACKWARDS variants), but doesn't actually use or pass along that argument. Instead, sys_clone calls do_fork, which calls copy_process, which calls the arch-specific copy_thread, and copy_thread pulls the corresponding syscall argument out of the pt_regs captured at kernel entry (knowing what argument of clone that architecture passes tls in).
Apart from being awful and inscrutable, that also only works because only one code path into copy_thread can pass the CLONE_SETTLS flag, and that code path comes from sys_clone with its architecture-specific argument-passing order. This prevents introducing a new version of the clone system call without propagating the same architecture-specific position of the tls argument.
However, there's no reason to pull the argument out of pt_regs when sys_clone could just pass it down via C function call arguments.
Introduce a new CONFIG_HAVE_COPY_THREAD_TLS for architectures to opt into, and a new copy_thread_tls that accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down to copy_thread_tls.
Architectures that don't opt into copy_thread_tls will continue to ignore the C argument to sys_clone in favor of the pt_regs captured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.
Patch co-authored by Josh Triplett and Thiago Macieira.
--- arch/Kconfig | 7 ++++++ include/linux/sched.h | 14 ++++++++++++ include/linux/syscalls.h | 6 +++--- kernel/fork.c | 55 +++++++++++++++++++++++++++++++----------------- 4 files changed, 60 insertions(+), 22 deletions(-)
arch/Kconfig +7 -0
@@ -484,6 +484,13 @@ config HAVE_IRQ_EXIT_ON_IRQ_STACK This spares a stack switch and improves cache usage on softirq processing. +config HAVE_COPY_THREAD_TLS + bool + help + Architecture provides copy_thread_tls to accept tls argument via + normal C parameter passing, rather than extracting the syscall + argument from pt_regs. + # # ABI hall of shame #
include/linux/sched.h +14 -0
@@ -2480,8 +2480,22 @@ extern struct mm_struct *mm_access(struct task_struct *task, unsigned int mode);/* Remove the current tasks stale references to the old mm_struct */ extern void mm_release (struct task_struct *,struct mm_struct *); +#ifdef CONFIG_HAVE_COPY_THREAD_TLS +extern int copy_thread_tls (unsigned long ,unsigned long ,unsigned long , +struct task_struct *,unsigned long ); +#else extern int copy_thread (unsigned long ,unsigned long ,unsigned long ,struct task_struct *); + +/* Architectures that haven't opted into copy_thread_tls get the tls argument +* via pt_regs, so ignore the tls argument passed via C. */ +static inline int copy_thread_tls ( +unsigned long clone_flags,unsigned long sp,unsigned long arg, +struct task_struct *p,unsigned long tls) +{ +return copy_thread (clone_flags, sp, arg, p); +} +#endif extern void flush_thread (void );extern void exit_thread (void );
include/linux/syscalls.h +3 -3
@@ -827,15 +827,15 @@ asmlinkage long sys_syncfs(int fd);asmlinkage long sys_fork (void );asmlinkage long sys_vfork (void );#ifdef CONFIG_CLONE_BACKWARDS -asmlinkage long sys_clone (unsigned long ,unsigned long ,int __user *,int , +asmlinkage long sys_clone (unsigned long ,unsigned long ,int __user *,unsigned long ,int __user *);#else #ifdef CONFIG_CLONE_BACKWARDS3 asmlinkage long sys_clone (unsigned long ,unsigned long ,int ,int __user *, -int __user *,int ); +int __user *,unsigned long );#else asmlinkage long sys_clone (unsigned long ,unsigned long ,int __user *, -int __user *,int ); +int __user *,unsigned long );#endif #endif
kernel/fork.c +36 -19
130 lines not on this page · raw message
Signature · 1 line
2.1.4
Andrew Morton
maintainerQuoted 10 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:
Introduce a new
CONFIG_HAVE_COPY_THREAD_TLSfor architectures to opt into, and a newcopy_thread_tlsthat accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down tocopy_thread_tls.Architectures that don't opt into
copy_thread_tlswill continue to ignore the C argument tosys_clonein favor of thept_regscaptured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.
What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html
I'm thinking we should find a way to do this better. One way might be to maintain a Documentation/arch-todo which identifies each item, has a little list of what-to-do instructions and perhaps a list of the not-yet-done architectures. Basically a way for everyone to communicate at the arch maintainers.
Peter Zijlstra
maintainerQuoted 19 lines · Andrew Morton
Quoted 10 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:
Introduce a new
CONFIG_HAVE_COPY_THREAD_TLSfor architectures to opt into, and a newcopy_thread_tlsthat accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down tocopy_thread_tls.Architectures that don't opt into
copy_thread_tlswill continue to ignore the C argument tosys_clonein favor of thept_regscaptured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html
Quoted 5 lines
I'm thinking we should find a way to do this better. One way might be to maintain a
Documentation/arch-todowhich identifies each item, has a little list of what-to-do instructions and perhaps a list of the not-yet-done architectures. Basically a way for everyone to communicate at the arch maintainers.
If only there was a linux-arch list to which arch maintainers should subscribe... oh wait :-)
Andrew Morton
maintainerQuoted 6 lines · On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra…
Quoted 6 lines
What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html
Quoted 8 lines
Quoted 5 lines
I'm thinking we should find a way to do this better. One way might be to maintain a
Documentation/arch-todowhich identifies each item, has a little list of what-to-do instructions and perhaps a list of the not-yet-done architectures. Basically a way for everyone to communicate at the arch maintainers.If only there was a linux-arch list to which arch maintainers should subscribe... oh wait :-)
It was I who got linux-arch established, so I'm fairly familiar with it. (12 years ago, gad).
I don't think it's been very successful, particularly for this purpose. A whole pile of randomly cc'ed lkml overflow which we're relying on each individual maintainer to sift through and pluck out particular action items then later remember to implement them. It's disorganized and has too many cracks for things to fall through.
RFC PATCH 1/1 Documentation/arch: Add Documentation/arch-TODO
Quoted 17 lines · Andrew Morton
Quoted 6 lines · On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra…
Quoted 6 lines
with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg,
http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.htmlQuoted 8 lines
Quoted 5 lines
I'm thinking we should find a way to do this better. One way might be to maintain a
Documentation/arch-todowhich identifies each item, has a little list of what-to-do instructions and perhaps a list of the not-yet-done architectures. Basically a way for everyone to communicate at the arch maintainers.If only there was a linux-arch list to which arch maintainers should subscribe... oh wait :-)
Quoted 8 lines
It was I who got linux-arch established, so I'm fairly familiar with it. (12 years ago, gad).
I don't think it's been very successful, particularly for this purpose. A whole pile of randomly cc'ed lkml overflow which we're relying on each individual maintainer to sift through and pluck out particular action items then later remember to implement them. It's disorganized and has too many cracks for things to fall through.
Yes, a mailing list is indeed not a very good TODO list.
We need a persistent post-it, and Documentation/arch-TODO (note the capital letters, we might as well shout?) sounds like a good place.
I'd suggest making it tabular, as per the patch below.
If it gets too large we can split it into multiple tables.
I'd like people to have a good look whether I messed up any entry, and I'd be happy to add new items as well.
Thanks,
Ingo
=======================>
Quoted 1 line
From
33a487046b16971564d323079f66fb63aa870f4dMon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO
Add a TODO list for missing/incomplete architecture support for generic kernel features.
--- Documentation/arch-TODO | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+)
Documentation/arch-TODO new file +47 -0
@@ -0,0 +1,47 @@ + +For generic kernel features that need architecture support, this is +the feature support matrix, for all upstream Linux architectures: + + ELF-ASLR:----------------------------------------------------------. + clockevents:---------------------------------------------------. | +modern-timekeeping:--------------------------------------------. | | + kgdb:-------------------------------------. | | | + context-tracking:------------------------------. | | | | + seccomp-filter:-----------------------. | | | | | + jump-labels:----------------. | | | | | | + stackprotector:---------. | | | | | | | + lockdep:--. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + arc | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + arm | ok | ok | ok | ok | ok | ok | TODO | ok | ok | + arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + avr32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | ok | TODO | ok | TODO | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + hexagon | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + ia64 | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + metag | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + microblaze | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + mips | ok | ok | ok | ok | ok | ok | ok | ok | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + powerpc | ok | TODO | ok | TODO | TODO | ok | ok | ok | ok | + s390 | ok | TODO | ok | ok | TODO | TODO | ok | ok | ok | + score | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + sh | ok | ok | TODO | TODO | TODO | ok | ok | ok | TODO | + sparc | ok | TODO | ok | TODO | ok | ok | ok | ok | TODO | + tile | ok | TODO | TODO | TODO | ok | ok | ok | ok | TODO | + um | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + unicore32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | +---------------------------------------------------------------------------------- +
RFC PATCH v2 1/1 Documentation/arch: Add Documentation/arch-TODO
Added a second table with more features listed.
Thanks,
Ingo
=======================>
Quoted 1 line
From
32acc8a058a166d177346cfe59b6bc930f9e6471Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO
Add a TODO list for missing/incomplete architecture support for generic kernel features.
--- Documentation/arch-TODO | 89 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+)
Documentation/arch-TODO new file +89 -0
@@ -0,0 +1,89 @@ + +For generic kernel features that need architecture support, this is +the feature support matrix, for all upstream Linux architectures: + + ELF-ASLR:---------------------------------------------------------. + clockevents:--------------------------------------------------. | + modern-timekeeping:-------------------------------------------. | | + kgdb:------------------------------------. | | | + context-tracking:-----------------------------. | | | | + seccomp-filter:----------------------. | | | | | + jump-labels:---------------. | | | | | | + stackprotector:--------. | | | | | | | + lockdep:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + arc | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + arm | ok | ok | ok | ok | ok | ok | TODO | ok | ok | + arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + avr32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | ok | TODO | ok | TODO | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + hexagon | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + ia64 | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + metag | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + microblaze | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + mips | ok | ok | ok | ok | ok | ok | ok | ok | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + powerpc | ok | TODO | ok | TODO | TODO | ok | ok | ok | ok | + s390 | ok | TODO | ok | ok | TODO | TODO | ok | ok | ok | + score | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + sh | ok | ok | TODO | TODO | TODO | ok | ok | ok | TODO | + sparc | ok | TODO | ok | TODO | ok | ok | ok | ok | TODO | + tile | ok | TODO | TODO | TODO | ok | ok | ok | ok | TODO | + um | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + unicore32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | +---------------------------------------------------------------------------------- + + tracehook:---------------------------------------------------------. + ioremap_prot():--------------------------------------------------. | + user-ret-profiler:-------------------------------------------. | | + kretprobes:------------------------------------. | | | + uprobes:-----------------------------. | | | | + kprobes-on-ftrace:----------------------. | | | | | + optprobes:---------------. | | | | | | + kprobes:--------. | | | | | | | +arch-tick-broadcast:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arc | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + arm | ok | ok | ok | TODO | ok | ok | TODO | TODO | ok | + arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + avr32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + hexagon | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + ia64 | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | 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 | TODO | TODO | TODO | TODO | TODO | + mips | ok | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + powerpc | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok | + s390 | TODO | ok | TODO | TODO | ok | ok | TODO | TODO | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + sparc | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + tile | TODO | ok | ok | TODO | TODO | ok | ok | ok | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | TODO | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +----------------------------------------------------------------------------------
RFC PATCH v3 1/1 Documentation/arch: Add Documentation/arch-TODO
The feature support matrix now includes a third table as well.
Thanks,
Ingo
======================>
Quoted 1 line
From
c6170954222f839b039f202bea46a85491b0c067Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO
Add a TODO list for missing/incomplete architecture support for generic kernel features.
--- Documentation/arch-TODO | 134 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+)
Documentation/arch-TODO new file +134 -0
@@ -0,0 +1,134 @@ + +For generic kernel features that need architecture support, this is +the feature support matrix, for all upstream Linux architectures: + + ELF-ASLR:---------------------------------------------------------. + clockevents:--------------------------------------------------. | + modern-timekeeping:-------------------------------------------. | | + kgdb:------------------------------------. | | | + context-tracking:-----------------------------. | | | | + seccomp-filter:----------------------. | | | | | + jump-labels:---------------. | | | | | | + stackprotector:--------. | | | | | | | + lockdep:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + arc | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + arm | ok | ok | ok | ok | ok | ok | TODO | ok | ok | + arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + avr32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | ok | TODO | ok | TODO | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + hexagon | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + ia64 | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + metag | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + microblaze | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + mips | ok | ok | ok | ok | ok | ok | ok | ok | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + powerpc | ok | TODO | ok | TODO | TODO | ok | ok | ok | ok | + s390 | ok | TODO | ok | ok | TODO | TODO | ok | ok | ok | + score | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + sh | ok | ok | TODO | TODO | TODO | ok | ok | ok | TODO | + sparc | ok | TODO | ok | TODO | ok | ok | ok | ok | TODO | + tile | ok | TODO | TODO | TODO | ok | ok | ok | ok | TODO | + um | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + unicore32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | +---------------------------------------------------------------------------------- + + tracehook:---------------------------------------------------------. + ioremap_prot():--------------------------------------------------. | + user-ret-profiler:-------------------------------------------. | | + kretprobes:------------------------------------. | | | + uprobes:-----------------------------. | | | | + kprobes-on-ftrace:----------------------. | | | | | + optprobes:---------------. | | | | | | + kprobes:--------. | | | | | | | +arch-tick-broadcast:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arc | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + arm | ok | ok | ok | TODO | ok | ok | TODO | TODO | ok | + arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + avr32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + hexagon | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + ia64 | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | 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 | TODO | TODO | TODO | TODO | TODO | + mips | ok | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + powerpc | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok | + s390 | TODO | ok | TODO | TODO | ok | ok | TODO | TODO | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + sparc | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + tile | TODO | ok | ok | TODO | TODO | ok | ok | ok | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | TODO | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +---------------------------------------------------------------------------------- + + + + virt-cpuacct:---------------------------------------------------------. + cmpxchg-local:--------------------------------------------------. | + perf-stackdump:-------------------------------------------. | | + perf-regs:------------------------------------. | | | + dma-api-debug:-----------------------------. | | | | + kprobes-event:----------------------. | | | | | + dma-contiguous:---------------. | | | | | | + dma_*map*_attrs():--------. | | | | | | | +generic-idle-thread:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO | ok | + arc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arm | ok | ok | ok | ok | ok | ok | ok | TODO | ok | + arm64 | ok | ok | ok | TODO | ok | ok | ok | TODO | ok | + avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + 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 | ok | ok | TODO | ok | TODO | TODO | TODO | TODO | TODO | + ia64 | ok | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | + 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 | ok | TODO | TODO | ok | TODO | TODO | TODO | TODO | + mips | ok | ok | ok | TODO | ok | TODO | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + openrisc | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + parisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + powerpc | ok | ok | TODO | ok | ok | TODO | TODO | TODO | ok | + s390 | ok | ok | TODO | ok | ok | TODO | TODO | ok | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | ok | ok | TODO | ok | ok | TODO | TODO | TODO | TODO | + sparc | ok | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | + tile | TODO | ok | TODO | ok | ok | TODO | TODO | TODO | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +----------------------------------------------------------------------------------
Re: [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
So this is the final version for now:
- add a fourth table
- fix errors in earlier tables, in particular I missed some PowerPC Kconfigs
- 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 '..'.
Please let me know about errors in these tables, and I can also add more features/facilities as well if I missed any.
Thanks,
Ingo
==========================>
Quoted 1 line
From
a44b9e91788a2628e1223d143024de4572a924c3Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO
Add a TODO list for missing/incomplete architecture support for generic kernel features.
--- Documentation/arch-TODO | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+)
Documentation/arch-TODO new file +169 -0
@@ -0,0 +1,169 @@ + +For generic kernel features that need architecture support, this is +the feature support matrix, for all upstream Linux architectures: + + ELF-ASLR:---------------------------------------------------------. + clockevents:--------------------------------------------------. | + modern-timekeeping:-------------------------------------------. | | + kgdb:------------------------------------. | | | + context-tracking:-----------------------------. | | | | + seccomp-filter:----------------------. | | | | | + jump-labels:---------------. | | | | | | + stackprotector:--------. | | | | | | | + lockdep:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + arc | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + arm | ok | ok | ok | ok | ok | ok | TODO | ok | ok | + arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + avr32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | ok | TODO | ok | TODO | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + hexagon | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + ia64 | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + metag | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + microblaze | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + mips | ok | ok | ok | ok | ok | ok | ok | ok | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + powerpc | ok | TODO | ok | TODO | ok | ok | ok | ok | ok | + s390 | ok | TODO | ok | ok | TODO | TODO | ok | ok | ok | + score | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + sh | ok | ok | TODO | TODO | TODO | ok | ok | ok | TODO | + sparc | ok | TODO | ok | TODO | ok | ok | ok | ok | TODO | + tile | ok | TODO | TODO | TODO | ok | ok | ok | ok | TODO | + um | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + unicore32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | +---------------------------------------------------------------------------------- + + tracehook:---------------------------------------------------------. + ioremap_prot():--------------------------------------------------. | + user-ret-profiler:-------------------------------------------. | | + kretprobes:------------------------------------. | | | + uprobes:-----------------------------. | | | | + kprobes-on-ftrace:----------------------. | | | | | + optprobes:---------------. | | | | | | + kprobes:--------. | | | | | | | +arch-tick-broadcast:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arc | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + arm | ok | ok | ok | TODO | ok | ok | TODO | TODO | ok | + arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + avr32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + hexagon | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + ia64 | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | 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 | TODO | TODO | TODO | TODO | TODO | + mips | ok | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + powerpc | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok | + s390 | TODO | ok | TODO | TODO | ok | ok | TODO | TODO | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + sparc | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + tile | TODO | ok | ok | TODO | TODO | ok | ok | ok | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | TODO | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +---------------------------------------------------------------------------------- + + virt-cpuacct:---------------------------------------------------------. + cmpxchg-local:--------------------------------------------------. | + perf-stackdump:-------------------------------------------. | | + perf-regs:------------------------------------. | | | + dma-api-debug:-----------------------------. | | | | + kprobes-event:----------------------. | | | | | + dma-contiguous:---------------. | | | | | | + dma_*map*_attrs():--------. | | | | | | | +generic-idle-thread:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO | ok | + arc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arm | ok | ok | ok | ok | ok | ok | ok | TODO | ok | + arm64 | ok | ok | ok | TODO | ok | ok | ok | TODO | ok | + avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + 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 | ok | ok | TODO | ok | TODO | TODO | TODO | TODO | TODO | + ia64 | ok | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | + 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 | ok | TODO | TODO | ok | TODO | TODO | TODO | TODO | + mips | ok | ok | ok | TODO | ok | TODO | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + openrisc | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + parisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + powerpc | ok | ok | TODO | ok | ok | TODO | TODO | TODO | ok | + s390 | ok | ok | TODO | ok | ok | TODO | TODO | ok | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | ok | ok | TODO | ok | ok | TODO | TODO | TODO | TODO | + sparc | ok | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | + tile | TODO | ok | TODO | ok | ok | TODO | TODO | TODO | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +---------------------------------------------------------------------------------- + + 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 | + cris | TODO | .. | TODO | + frv | TODO | .. | TODO | + hexagon | TODO | .. | TODO | + ia64 | TODO | TODO | TODO | + m32r | TODO | .. | TODO | + m68k | TODO | .. | TODO | + metag | TODO | .. | TODO | + microblaze | TODO | .. | ok | + mips | ok | ok | TODO | + mn10300 | TODO | .. | TODO | + nios2 | TODO | .. | TODO | + openrisc | TODO | .. | TODO | + parisc | TODO | TODO | TODO | + powerpc | TODO | ok | ok | + s390 | TODO | ok | ok | + score | TODO | .. | TODO | + sh | TODO | .. | ok | + sparc | TODO | ok | TODO | + tile | TODO | TODO | TODO | + um | TODO | .. | TODO | + unicore32 | TODO | .. | TODO | + x86 | ok | ok | ok | + xtensa | ok | .. | TODO | +----------------------------------------
RFC PATCH v5 1/1 Documentation/arch: Add Documentation/arch-TODO
(fixed the subject.)
So this is the final version for now:
- add a fourth table
- fix errors in earlier tables, in particular I missed some PowerPC Kconfigs
- 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 '..'.
Please let me know about errors in these tables, and I can also add more features/facilities as well if I missed any.
Thanks,
Ingo
==========================>
Quoted 1 line
From
a44b9e91788a2628e1223d143024de4572a924c3Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO
Add a TODO list for missing/incomplete architecture support for generic kernel features.
--- Documentation/arch-TODO | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+)
Documentation/arch-TODO new file +169 -0
@@ -0,0 +1,169 @@ + +For generic kernel features that need architecture support, this is +the feature support matrix, for all upstream Linux architectures: + + ELF-ASLR:---------------------------------------------------------. + clockevents:--------------------------------------------------. | + modern-timekeeping:-------------------------------------------. | | + kgdb:------------------------------------. | | | + context-tracking:-----------------------------. | | | | + seccomp-filter:----------------------. | | | | | + jump-labels:---------------. | | | | | | + stackprotector:--------. | | | | | | | + lockdep:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + arc | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + arm | ok | ok | ok | ok | ok | ok | TODO | ok | ok | + arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + avr32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | ok | TODO | ok | TODO | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + hexagon | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + ia64 | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | + metag | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + microblaze | ok | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + mips | ok | ok | ok | ok | ok | ok | ok | ok | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | ok | ok | ok | TODO | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO | TODO | + powerpc | ok | TODO | ok | TODO | ok | ok | ok | ok | ok | + s390 | ok | TODO | ok | ok | TODO | TODO | ok | ok | ok | + score | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + sh | ok | ok | TODO | TODO | TODO | ok | ok | ok | TODO | + sparc | ok | TODO | ok | TODO | ok | ok | ok | ok | TODO | + tile | ok | TODO | TODO | TODO | ok | ok | ok | ok | TODO | + um | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + unicore32 | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | ok | ok | TODO | +---------------------------------------------------------------------------------- + + tracehook:---------------------------------------------------------. + ioremap_prot():--------------------------------------------------. | + user-ret-profiler:-------------------------------------------. | | + kretprobes:------------------------------------. | | | + uprobes:-----------------------------. | | | | + kprobes-on-ftrace:----------------------. | | | | | + optprobes:---------------. | | | | | | + kprobes:--------. | | | | | | | +arch-tick-broadcast:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arc | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + arm | ok | ok | ok | TODO | ok | ok | TODO | TODO | ok | + arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + avr32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + c6x | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + hexagon | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + ia64 | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | 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 | TODO | TODO | TODO | TODO | TODO | + mips | ok | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + powerpc | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok | + s390 | TODO | ok | TODO | TODO | ok | ok | TODO | TODO | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | TODO | ok | TODO | TODO | TODO | ok | TODO | ok | ok | + sparc | TODO | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | + tile | TODO | ok | ok | TODO | TODO | ok | ok | ok | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | TODO | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +---------------------------------------------------------------------------------- + + virt-cpuacct:---------------------------------------------------------. + cmpxchg-local:--------------------------------------------------. | + perf-stackdump:-------------------------------------------. | | + perf-regs:------------------------------------. | | | + dma-api-debug:-----------------------------. | | | | + kprobes-event:----------------------. | | | | | + dma-contiguous:---------------. | | | | | | + dma_*map*_attrs():--------. | | | | | | | +generic-idle-thread:-. | | | | | | | | + | | | | | | | | | +---------------------------------------------------------------------------------- + alpha | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO | ok | + arc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + arm | ok | ok | ok | ok | ok | ok | ok | TODO | ok | + arm64 | ok | ok | ok | TODO | ok | ok | ok | TODO | ok | + avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + blackfin | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + 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 | ok | ok | TODO | ok | TODO | TODO | TODO | TODO | TODO | + ia64 | ok | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | + 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 | ok | TODO | TODO | ok | TODO | TODO | TODO | TODO | + mips | ok | ok | ok | TODO | ok | TODO | TODO | TODO | ok | + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + openrisc | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + parisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | + powerpc | ok | ok | TODO | ok | ok | TODO | TODO | TODO | ok | + s390 | ok | ok | TODO | ok | ok | TODO | TODO | ok | ok | + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + sh | ok | ok | TODO | ok | ok | TODO | TODO | TODO | TODO | + sparc | ok | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | + tile | TODO | ok | TODO | ok | ok | TODO | TODO | TODO | ok | + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + unicore32 | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok | + xtensa | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | +---------------------------------------------------------------------------------- + + 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 | + cris | TODO | .. | TODO | + frv | TODO | .. | TODO | + hexagon | TODO | .. | TODO | + ia64 | TODO | TODO | TODO | + m32r | TODO | .. | TODO | + m68k | TODO | .. | TODO | + metag | TODO | .. | TODO | + microblaze | TODO | .. | ok | + mips | ok | ok | TODO | + mn10300 | TODO | .. | TODO | + nios2 | TODO | .. | TODO | + openrisc | TODO | .. | TODO | + parisc | TODO | TODO | TODO | + powerpc | TODO | ok | ok | + s390 | TODO | ok | ok | + score | TODO | .. | TODO | + sh | TODO | .. | ok | + sparc | TODO | ok | TODO | + tile | TODO | TODO | TODO | + um | TODO | .. | TODO | + unicore32 | TODO | .. | TODO | + x86 | ok | ok | ok | + xtensa | ok | .. | TODO | +----------------------------------------
Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
Quoted 17 lines · Ingo Molnar
- 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 |
Quoted 2 lines
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?
Also, how about s/TODO//g for less clutter:
+---------------------------------------------------------------------------------- + alpha | | | | | | | ok | ok | | + arc | ok | | | | | ok | ok | ok | | + arm | ok | ok | ok | ok | ok | ok | | ok | ok |
...
Signature · 5 lines
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.
--RFC PATCH v6 1/1 Documentation/arch: Add Documentation/arch-features.txt
Quoted 18 lines · Borislav Petkov
Quoted 17 lines · Ingo Molnar
- 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 |
Quoted 4 lines
Quoted 2 lines
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.
Quoted 1 line
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
=========================================>
Quoted 1 line
From
93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aaMon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
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.
--- Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+)
Documentation/arch-features.txt new file +222 -0
@@ -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 | +--------------------------------------------------------------------
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
Quoted 9 lines · Ingo Molnar
From
93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aaMon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH]Documentation/arch: AddDocumentation/arch-features.txtAdd a support matrix for various generic kernel features that need architecture support.
Signed-off-by Ingo Molnar <[email protected]>
Could you add a column for the bpf JIT?
Should this file track syscalls not wired up on architectures?
How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?
Is there any way we can *generate* this file from Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information from Kconfig, and together with the list of symbols for features needing architecture support, generate the table?
If we can't generate this, then the ASCII-art style and right-aligned feature names seems *really* likely to produce spurious conflicts, especially when adding a feature to the list. Even though it would produce a much longer file, would you consider dropping the tables and just having a section per feature? That also avoids the need to abbreviate as much. For instance:
Transparent huge pagesHAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
alpha TODO
arc ..
arm ok
arm64 ok
avr32 ..
blackfin ..
c6x ..
cris ..
frv ..
hexagon ..
ia64 TODO
m32r ..
m68k ..
metag ..
microblaze ..
mips ok
mn10300 ..
nios2 ..
openrisc ..
parisc TODO
powerpc ok
s390 ok
score ..
sh ..
sparc ok
tile TODO
um ..
unicore32 ..
x86 ok
xtensa ..
Or alternatively:
Transparent huge pagesHAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
TODO:
alpha
ia64
parisc
tile
Done:
arm
arm64
mips
powerpc
s390
sparc
x86
Not possible:
arc
avr32
blackfin
c6x
cris
frv
hexagon
m32r
m68k
metag
microblaze
mn10300
nios2
openrisc
score
sh
um
unicore32
xtensa
After all, the point of this document isn't to look at, it's to use as a TODO list and actively edit. So anything that makes it prettier but more painful to edit seems like a bug.
Quoted 231 lines
Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+)Documentation/arch-features.txt new file +222
-0@@ -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 | +--------------------------------------------------------------------
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
Quoted 11 lines · Josh Triplett
How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?
Is there any way we can *generate* this file from
Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information fromKconfig, and together with the list of symbols for features needing architecture support, generate the table?
Just tried this. Looks like it's pretty trivial for most of these
features: just make ARCH=thearch allyesconfig, then look for the config symbol in the result.
For instance, after doing "make ARCH=alpha allyesconfig":
~/src/linux$ grep -x 'CONFIG_ARCH_HAS_ELF_RANDOMIZE=y' .config || echo TODO TODO
~/src/linux$ grep -x 'CONFIG_GENERIC_CLOCKEVENTS=y' .config || echo TODO CONFIG_GENERIC_CLOCKEVENTS=y
This seems easy to turn into a shell script or Python script, given a list of feature descriptions and corresponding config symbols, as well as a list of architectures.
- Josh Triplett
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
Quoted 15 lines · Josh Triplett
Quoted 7 lines · Josh Triplett
How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?
Quoted 5 lines
Is there any way we can *generate* this file from
Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information fromKconfig, and together with the list of symbols for features needing architecture support, generate the table?
Quoted 3 lines
Just tried this. Looks like it's pretty trivial for most of these
features: just make ARCH=thearch allyesconfig, then look for the config symbol in the result.
No, that's not nearly enough to do a correct support matrix, for example due to subarchitectures that aren't included in an allyesconfig. There are also many #define driven features.
Thanks,
Ingo
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
Quoted 18 lines · Ingo Molnar
Quoted 15 lines · Josh Triplett
Quoted 12 lines · Josh Triplett
How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?
Is there any way we can *generate* this file from
Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information fromKconfig, and together with the list of symbols for features needing architecture support, generate the table?
Quoted 7 lines
Quoted 3 lines
Just tried this. Looks like it's pretty trivial for most of these
features: just make ARCH=thearch allyesconfig, then look for the config symbol in the result.No, that's not nearly enough to do a correct support matrix, for example due to subarchitectures that aren't included in an allyesconfig.
Still feasible to automate with a bit more scripting.
Quoted 1 line
There are also many #define driven features.
It'd be nice to move those over to Kconfig.
- Josh Triplett
Andrew Morton
maintainerRe: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
In reply to Josh TriplettQuoted 5 lines · On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett…
If we can't generate this, then the ASCII-art style and right-aligned feature names seems *really* likely to produce spurious conflicts, especially when adding a feature to the list. Even though it would produce a much longer file, would you consider dropping the tables and just having a section per feature?
me2. The patch conflicts are going to be pretty bad.
I'd also prefer a format which allows us to add useful notes - it's a bit hostile to say "thou shalt implement X" without providing any info about how to do so. Where do we tell maintainers that there's a handy test app in tools/testing/selftests which they should use?
This way, I can bug patch submitters with "hey, you forgot to update Documentation/arch-features.txt" and they will add useful info while it's all still hot in their minds.
And there's a ton of stuff which can go in here, much of it not immediately apparent.
Just grepping 9 months worth of the stuff I've handled, I'm seeing things like
HAVE_ARCH_KASAN__HAVE_ARCH_PMDP_SPLITTING_FLUSH__HAVE_ARCH_PTE_SPECIAL__HAVE_ARCH_GATE_AREAARCH_HAVE_ELF_ASLRARCH_HAS_GCOV_PROFILE_ALLCONFIG_ARCH_USE_BUILTIN_BSWAPHAVE_ARCH_HUGE_VMAPARCH_HAS_SG_CHAIN__HAVE_ARCH_STRNCASECMPARCH_HAS_ELF_RANDOMIZECONFIG_HAVE_ARCH_EARLY_PFN_TO_NIDARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INITCONFIG_ARCH_USES_PG_UNCACHEDCONFIG_ARCH_HAS_WALK_MEMORY
and things which don't contain ARCH
HAVE_GENERIC_RCU_GUPHAVE_RCU_TABLE_FREEHAVE_GENERIC_RCU_GUPCONFIG_HAVE_CLKCONFIG_HAVE_IOREMAP_PROTCONFIG_HAVE_MEMBLOCK_NODE_MAP
And then there's the increasingly common
arch/include/asm/foo.h:
static inline void wibble(...)
{
...
}
#define wibble wibbleinclude/linux/foo.h:
#ifndef wibble
static inline void wibble(...)
{
...
}
#define wibble
#endifwhich is going to be hard to grep for....
ugh, this thing's going to be enormous. People will go insane reading it, so each section should have a sentence describing what the feature does so maintainers can make quick decisions about whether they should bother.
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
Quoted 10 lines · Andrew Morton
Quoted 5 lines · On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett…
If we can't generate this, then the ASCII-art style and right-aligned feature names seems *really* likely to produce spurious conflicts, especially when adding a feature to the list. Even though it would produce a much longer file, would you consider dropping the tables and just having a section per feature?
me2. The patch conflicts are going to be pretty bad.
Quoted 8 lines
I'd also prefer a format which allows us to add useful notes - it's a bit hostile to say "thou shalt implement X" without providing any info about how to do so. Where do we tell maintainers that there's a handy test app in
tools/testing/selftestswhich they should use?This way, I can bug patch submitters with "hey, you forgot to update
Documentation/arch-features.txt" and they will add useful info while it's all still hot in their minds.
Ok, agreed, I've solved these problems by creating a per feature broken out directory hieararchy, see my next patch submission.
Quoted 2 lines
And there's a ton of stuff which can go in here, much of it not immediately apparent.
Yes.
Quoted 4 lines
Just grepping 9 months worth of the stuff I've handled, I'm seeing things like
HAVE_ARCH_KASAN
Ok, added.
Quoted 1 line
__HAVE_ARCH_PMDP_SPLITTING_FLUSH
Ok, added.
Quoted 1 line
__HAVE_ARCH_PTE_SPECIAL
Ok, added.
Quoted 1 line
__HAVE_ARCH_GATE_AREA
So this does not appear to be a feature per se: architectures that don't define __HAVE_ARCH_GATE_AREA fall back to the generic one. Or is it expected for every architecture to provide its own?
Quoted 1 line
ARCH_HAVE_ELF_ASLR
Does not seem to be upstream.
Quoted 1 line
ARCH_HAS_GCOV_PROFILE_ALL
Yeah, that's already included in v6.
Quoted 1 line
CONFIG_ARCH_USE_BUILTIN_BSWAP
So AFAICS this feature is an arch opt-in, on the basis of whether GCC does the right thing or not.
We'd need a separate config switch: ARCH_DONT_USE_BUILTIN_BSWAP to make a distinction between architectures that have made an informed decision to not support it, versus architectures that have not bothered so far.
Quoted 1 line
HAVE_ARCH_HUGE_VMAP
Ok, added.
Quoted 1 line
ARCH_HAS_SG_CHAIN
Ok, added.
Quoted 1 line
__HAVE_ARCH_STRNCASECMP
So, no architecture supports this yet- but added.
Quoted 1 line
ARCH_HAS_ELF_RANDOMIZE
Agreed and v6 already includes this.
Quoted 1 line
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
So this isn't really a feature, but a facility that an architecture might have to provide if it has a quirk. Only ia64 has that at the moment.
Quoted 1 line
ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
Not upstream yet it appears.
Quoted 1 line
CONFIG_ARCH_USES_PG_UNCACHED
Ok, added.
Quoted 1 line
CONFIG_ARCH_HAS_WALK_MEMORY
So this too is a quirk, for PowerPC, which does not maintain the memory layout in the resource tree.
Quoted 3 lines
and things which don't contain ARCH
HAVE_GENERIC_RCU_GUP
So this is a generic, RCU based fast-GUP facility - but architectures may implement their own get_user_pages_fast() facilites, such as x86 which does it lock-less.
So I'm not sure what to flag here: perhaps architectures that don't offer get_user_pages_fast() at all?
Quoted 1 line
HAVE_RCU_TABLE_FREE
So this is related to HAVE_GENERIC_RCU_GUP: architectures that do RCU based GUP will want to use HAVE_RCU_TABLE_FREE.
Quoted 1 line
HAVE_GENERIC_RCU_GUP
double ;-)
Quoted 1 line
CONFIG_HAVE_CLK
So I think the generic clock framework first needs to be integrated with core timekeeping before we start requiring it from architectures.
Quoted 1 line
CONFIG_HAVE_IOREMAP_PROT
Agreed - already in -v6.
Quoted 1 line
CONFIG_HAVE_MEMBLOCK_NODE_MAP
Ok, added.
Quoted 20 lines
And then there's the increasingly common
arch/include/asm/foo.h:static inline void wibble(...) { ... } #define wibble wibble
include/linux/foo.h:#ifndef wibble static inline void wibble(...) { ... } #define wibble #endif
Quoted 1 line
which is going to be hard to grep for....
Hm, yes. If you give me a rough list then I can try to map them out as well.
Once we have the initial feature collection done it will be a lot easier going forward: anything missing or inaccurate can be added to or fixed in its own file.
Quoted 4 lines
ugh, this thing's going to be enormous. People will go insane reading it, so each section should have a sentence describing what the feature does so maintainers can make quick decisions about whether they should bother.
I hope you'll like the structure of -v7 better :-)
Thanks,
Ingo
PATCH 1/1 Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
In reply to Andrew MortonAdd arch support matrices for more than 40 generic kernel features that need per architecture support.
Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.
For example, lockdep support is shown the following way:
triton:~/tip> cat Documentation/features/lockdep/arch-support.txt #
# Feature name: lockdep
# Kconfig: LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
| alpha: | TODO |
| arc: | ok |
| arm: | ok |
| arm64: | ok |
| avr32: | ok |
| blackfin: | ok |
| c6x: | TODO |
| cris: | TODO |
| frv: | TODO |
| hexagon: | ok |
| ia64: | TODO |
| m32r: | TODO |
| m68k: | TODO |
| metag: | ok |
| microblaze: | ok |
| mips: | ok |
| mn10300: | TODO |
| nios2: | TODO |
| openrisc: | TODO |
| parisc: | TODO |
| powerpc: | ok |
| s390: | ok |
| score: | ok |
| sh: | ok |
| sparc: | ok |
| tile: | ok |
| um: | ok |
| unicore32: | ok |
| x86: | ok |
| xtensa: | ok |
-----------------------
For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.
The meaning of entries in the tables is:
| ok | # feature supported by the architecture
|TODO| # feature not yet supported by the architecture
| .. | # feature cannot be supported by the hardwareThis directory structure can be used in the future to add other files - such as porting guides, testing description, etc.
The Documentation/features/ hierarchy may also include generic kernel features that works on every architecture, in that case the arch-support.txt file will list every architecture as supported.
To list an architecture's unsupported features, just do something like:
$ git grep -lE 'x86.*TODO' Documentation/features/*/arch-support.txt
Documentation/features/arch-tick-broadcast/arch-support.txt Documentation/features/strncasecmp/arch-support.txt
which prints the list of features not yet supported by the architecture.
--- Documentation/features/BPF-JIT/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/ELF-ASLR/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/KASAN/arch-support.txt | 39 ++++++++++++++++++++++ .../features/PG_uncached/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/THP/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/arch-support.txt | 11 ++++++ .../features/arch-tick-broadcast/arch-support.txt | 39 ++++++++++++++++++++++ .../features/clockevents/arch-support.txt | 39 ++++++++++++++++++++++ .../features/cmpxchg-local/arch-support.txt | 39 ++++++++++++++++++++++ .../features/context-tracking/arch-support.txt | 39 ++++++++++++++++++++++ .../features/dma-api-debug/arch-support.txt | 39 ++++++++++++++++++++++ .../features/dma-contiguous/arch-support.txt | 39 ++++++++++++++++++++++ .../features/dma_map_attrs/arch-support.txt | 39 ++++++++++++++++++++++ .../features/gcov-profile-all/arch-support.txt | 39 ++++++++++++++++++++++ .../features/generic-idle-thread/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/huge-vmap/arch-support.txt | 39 ++++++++++++++++++++++ .../features/ioremap_prot/arch-support.txt | 39 ++++++++++++++++++++++ .../features/irq-time-acct/arch-support.txt | 39 ++++++++++++++++++++++ .../features/jump-labels/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/kgdb/arch-support.txt | 39 ++++++++++++++++++++++ .../features/kprobes-event/arch-support.txt | 39 ++++++++++++++++++++++ .../features/kprobes-on-ftrace/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/kprobes/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/kretprobes/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/lockdep/arch-support.txt | 39 ++++++++++++++++++++++ .../features/modern-timekeeping/arch-support.txt | 39 ++++++++++++++++++++++ .../features/numa-balancing/arch-support.txt | 39 ++++++++++++++++++++++ .../features/numa-memblock/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/optprobes/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/perf-regs/arch-support.txt | 39 ++++++++++++++++++++++ .../features/perf-stackdump/arch-support.txt | 39 ++++++++++++++++++++++ .../features/pmdp_splitting_flush/arch-support.txt | 39 ++++++++++++++++++++++ .../features/pte_special/arch-support.txt | 39 ++++++++++++++++++++++ .../features/queued-rwlocks/arch-support.txt | 39 ++++++++++++++++++++++ .../features/queued-spinlocks/arch-support.txt | 39 ++++++++++++++++++++++ .../features/rwsem-optimized/arch-support.txt | 39 ++++++++++++++++++++++ .../features/seccomp-filter/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/sg-chain/arch-support.txt | 39 ++++++++++++++++++++++ .../features/stackprotector/arch-support.txt | 39 ++++++++++++++++++++++ .../features/strncasecmp/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/tracehook/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/uprobes/arch-support.txt | 39 ++++++++++++++++++++++ .../features/user-ret-profiler/arch-support.txt | 39 ++++++++++++++++++++++ .../features/virt-cpuacct/arch-support.txt | 39 ++++++++++++++++++++++ 44 files changed, 1688 insertions(+)
Documentation/features/BPF-JIT/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: BPF-JIT +# Kconfig: HAVE_BPF_JIT +# description: arch supports BPF JIT optimizations +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/ELF-ASLR/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: ELF-ASLR +# Kconfig: ARCH_HAS_ELF_RANDOMIZE +# description: arch randomizes the stack, heap and binary images of ELF binaries +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/KASAN/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: KASAN +# Kconfig: HAVE_ARCH_KASAN +# description: arch supports the KASAN runtime memory checker +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/PG_uncached/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: PG_uncached +# Kconfig: ARCH_USES_PG_UNCACHED +# description: arch supports the PG_uncached page flag +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/THP/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: THP +# Kconfig: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT +# description: arch supports transparent hugepages +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | ok | + | arm64: | ok | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | hexagon: | .. | + | ia64: | TODO | + | m32r: | .. | + | m68k: | .. | + | metag: | .. | + | microblaze: | .. | + | mips: | ok | + | mn10300: | .. | + | nios2: | .. | + | openrisc: | .. | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | .. | + | sh: | .. | + | sparc: | ok | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/arch-support.txt new file +11 -0
@@ -0,0 +1,11 @@ + +For generic kernel features that need architecture support, the +arch-support.txt file in each feature directory shows the arch +support matrix, for all upstream Linux architectures. + +The meaning of entries in the tables is: + + | ok | # feature supported by the architecture + |TODO| # feature not yet supported by the architecture + | .. | # feature cannot be supported by the hardware +
Documentation/features/arch-tick-broadcast/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: arch-tick-broadcast +# Kconfig: ARCH_HAS_TICK_BROADCAST +# description: arch provides tick_broadcast() +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | TODO | + | xtensa: | TODO | + -----------------------
Documentation/features/clockevents/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: clockevents +# Kconfig: GENERIC_CLOCKEVENTS +# description: arch support generic clock events +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | ok | + | cris: | ok | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | ok | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/cmpxchg-local/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: cmpxchg-local +# Kconfig: HAVE_CMPXCHG_LOCAL +# description: arch supports the this_cpu_cmpxchg() API +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/context-tracking/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: context-tracking +# Kconfig: HAVE_CONTEXT_TRACKING +# description: arch supports context tracking for NO_HZ_FULL +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/dma-api-debug/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: dma-api-debug +# Kconfig: HAVE_DMA_API_DEBUG +# description: arch supports DMA debug facilities +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | ok | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/dma-contiguous/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: dma-contiguous +# Kconfig: HAVE_DMA_CONTIGUOUS +# description: arch supports the DMA CMA (continuous memory allocator) +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/dma_map_attrs/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: dma_map_attrs +# Kconfig: HAVE_DMA_ATTRS +# description: arch provides dma_*map*_attrs() APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | ok | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/gcov-profile-all/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: gcov-profile-all +# Kconfig: ARCH_HAS_GCOV_PROFILE_ALL +# description: arch supports whole-kernel GCOV code coverage profiling +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/generic-idle-thread/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: generic-idle-thread +# Kconfig: GENERIC_SMP_IDLE_THREAD +# description: arch makes use of the generic SMP idle thread facility +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/huge-vmap/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: huge-vmap +# Kconfig: HAVE_ARCH_HUGE_VMAP +# description: arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/ioremap_prot/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: ioremap_prot +# Kconfig: HAVE_IOREMAP_PROT +# description: arch has ioremap_prot() +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/irq-time-acct/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: irq-time-acct +# Kconfig: HAVE_IRQ_TIME_ACCOUNTING +# description: arch supports precise IRQ time accounting +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/jump-labels/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: jump-labels +# Kconfig: HAVE_ARCH_JUMP_LABEL +# description: arch supports live patched high efficiency branches +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kgdb/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kgdb +# Kconfig: HAVE_ARCH_KGDB +# description: arch supports the kGDB kernel debugger +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kprobes-event/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kprobes-event +# Kconfig: HAVE_REGS_AND_STACK_ACCESS_API +# description: arch supports kprobes with perf events +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kprobes-on-ftrace/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kprobes-on-ftrace +# Kconfig: HAVE_KPROBES_ON_FTRACE +# description: arch supports combined kprobes and ftrace live patching +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kprobes +# Kconfig: HAVE_KPROBES +# description: arch supports live patched kernel probe +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | TODO | + | avr32: | ok | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kretprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kretprobes +# Kconfig: HAVE_KRETPROBES +# description: arch supports kernel function-return probes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/lockdep/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: lockdep +# Kconfig: LOCKDEP_SUPPORT +# description: arch supports the runtime locking correctness debug facility +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/modern-timekeeping/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: modern-timekeeping +# Kconfig: !ARCH_USES_GETTIMEOFFSET +# description: arch does not use arch_gettimeoffset() anymore +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | TODO | + | arm64: | ok | + | avr32: | ok | + | blackfin: | TODO | + | c6x: | ok | + | cris: | TODO | + | frv: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/numa-balancing/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: numa-balancing +# Kconfig: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA +# description: arch supports NUMA balancing +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | .. | + | arm64: | .. | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | hexagon: | .. | + | ia64: | TODO | + | m32r: | .. | + | m68k: | .. | + | metag: | .. | + | microblaze: | .. | + | mips: | TODO | + | mn10300: | .. | + | nios2: | .. | + | openrisc: | .. | + | parisc: | .. | + | powerpc: | ok | + | s390: | .. | + | score: | .. | + | sh: | .. | + | sparc: | TODO | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/numa-memblock/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: numa-memblock +# Kconfig: HAVE_MEMBLOCK_NODE_MAP +# description: arch supports NUMA aware memblocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | .. | + | arm64: | .. | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | hexagon: | .. | + | ia64: | ok | + | m32r: | TODO | + | m68k: | .. | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | .. | + | openrisc: | .. | + | parisc: | .. | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/optprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: optprobes +# Kconfig: HAVE_OPTPROBES +# description: arch supports live patched optprobes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/perf-regs/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: perf-regs +# Kconfig: HAVE_PERF_REGS +# description: arch supports perf events register access +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/perf-stackdump/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: perf-stackdump +# Kconfig: HAVE_PERF_USER_STACK_DUMP +# description: arch supports perf events stack dumps +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/pmdp_splitting_flush/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: pmdp_splitting_flush +# Kconfig: #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH +# description: arch supports the pmdp_splitting_flush() VM API +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/pte_special/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: pte_special +# Kconfig: #define __HAVE_ARCH_PTE_SPECIAL +# description: arch supports the pte_special()/pte_mkspecial() VM APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/queued-rwlocks/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: queued-rwlocks +# Kconfig: ARCH_USE_QUEUED_RWLOCKS +# description: arch supports queued rwlocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/queued-spinlocks/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: queued-spinlocks +# Kconfig: ARCH_USE_QUEUED_SPINLOCKS +# description: arch supports queued spinlocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/rwsem-optimized/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: rwsem-optimized +# Kconfig: Optimized asm/rwsem.h +# description: arch provides optimized rwsem APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | ok | + | cris: | ok | + | frv: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | ok | + | m68k: | ok | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/seccomp-filter/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: seccomp-filter +# Kconfig: HAVE_ARCH_SECCOMP_FILTER +# description: arch supports seccomp filters +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/sg-chain/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: sg-chain +# Kconfig: ARCH_HAS_SG_CHAIN +# description: arch supports chained scatter-gather lists +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/stackprotector/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: stackprotector +# Kconfig: HAVE_CC_STACKPROTECTOR +# description: arch supports compiler driven stack overflow protection +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/strncasecmp/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: strncasecmp +# Kconfig: __HAVE_ARCH_STRNCASECMP +# description: arch provides an optimized strncasecmp() function +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | TODO | + | xtensa: | TODO | + -----------------------
Documentation/features/tracehook/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: tracehook +# Kconfig: HAVE_ARCH_TRACEHOOK +# description: arch supports tracehook (ptrace) register handling APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | ok | + | cris: | TODO | + | frv: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/uprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: uprobes +# Kconfig: ARCH_SUPPORTS_UPROBES +# description: arch supports live patched user probes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/user-ret-profiler/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: user-ret-profiler +# Kconfig: HAVE_USER_RETURN_NOTIFIER +# description: arch supports user-space return from system call profiler +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/virt-cpuacct/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: virt-cpuacct +# Kconfig: HAVE_VIRT_CPU_ACCOUNTING || 64BIT +# description: arch supports precise virtual CPU time accounting +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
PATCH v2 1/1 Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 10 lines · Ingo Molnar
To list an architecture's unsupported features, just do something like:
$ git grep -lE 'x86.*TODO' Documentation/features/*/arch-support.txt
Documentation/features/arch-tick-broadcast/arch-support.txtDocumentation/features/strncasecmp/arch-support.txtwhich prints the list of features not yet supported by the architecture.
Another way to visualize the feature support status of an architecture, would be to use the simple script I've put into Documentation/features/list-arch.sh:
triton:~/tip> Documentation/features/list-arch.sh #
# Kernel feature support matrix of architecture 'x86':
#
arch-tick-broadcast: | x86: | TODO |
BPF-JIT: | x86: | ok |
clockevents: | x86: | ok |
cmpxchg-local: | x86: | ok |
context-tracking: | x86: | ok |
dma-api-debug: | x86: | ok |
dma-contiguous: | x86: | ok |
dma_map_attrs: | x86: | ok |
ELF-ASLR: | x86: | ok |
gcov-profile-all: | x86: | ok |
generic-idle-thread: | x86: | ok |
huge-vmap: | x86: | ok |
ioremap_prot: | x86: | ok |
irq-time-acct: | x86: | ok |
jump-labels: | x86: | ok |
KASAN: | x86: | ok |
kgdb: | x86: | ok |
kprobes: | x86: | ok |
kprobes-event: | x86: | ok |
kprobes-on-ftrace: | x86: | ok |
kretprobes: | x86: | ok |
lockdep: | x86: | ok |
modern-timekeeping: | x86: | ok |
numa-balancing: | x86: | ok |
numa-memblock: | x86: | ok |
optprobes: | x86: | ok |
perf-regs: | x86: | ok |
perf-stackdump: | x86: | ok |
PG_uncached: | x86: | ok |
pmdp_splitting_flush: | x86: | ok |
pte_special: | x86: | ok |
queued-rwlocks: | x86: | ok |
queued-spinlocks: | x86: | ok |
rwsem-optimized: | x86: | ok |
seccomp-filter: | x86: | ok |
sg-chain: | x86: | ok |
stackprotector: | x86: | ok |
strncasecmp: | x86: | TODO |
THP: | x86: | ok |
tracehook: | x86: | ok |
uprobes: | x86: | ok |
user-ret-profiler: | x86: | ok |
virt-cpuacct: | x86: | ok |Updated patch attached.
This way we can avoid the conflicts by generating the visualization on the fly.
Thanks,
Ingo
===============================>
From: Ingo Molnar <[email protected]>
Date: Thu, 14 May 2015 12:04:00 +0200
Subject: [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Add arch support matrices for more than 40 generic kernel features that need per architecture support.
Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.
For example, lockdep support is shown the following way:
triton:~/tip> cat Documentation/features/lockdep/arch-support.txt #
# Feature name: lockdep
# Kconfig: LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
| alpha: | TODO |
| arc: | ok |
| arm: | ok |
| arm64: | ok |
| avr32: | ok |
| blackfin: | ok |
| c6x: | TODO |
| cris: | TODO |
| frv: | TODO |
| hexagon: | ok |
| ia64: | TODO |
| m32r: | TODO |
| m68k: | TODO |
| metag: | ok |
| microblaze: | ok |
| mips: | ok |
| mn10300: | TODO |
| nios2: | TODO |
| openrisc: | TODO |
| parisc: | TODO |
| powerpc: | ok |
| s390: | ok |
| score: | ok |
| sh: | ok |
| sparc: | ok |
| tile: | ok |
| um: | ok |
| unicore32: | ok |
| x86: | ok |
| xtensa: | ok |
-----------------------
For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.
The meaning of entries in the tables is:
| ok | # feature supported by the architecture
|TODO| # feature not yet supported by the architecture
| .. | # feature cannot be supported by the hardwareThis directory structure can be used in the future to add other files - such as porting guides, testing description, etc.
The Documentation/features/ hierarchy may also include generic kernel features that works on every architecture, in that case the arch-support.txt file will list every architecture as supported.
To list an architecture's unsupported features, just do something like:
$ git grep -lE 'x86.*TODO' Documentation/features/*/arch-support.txt Documentation/features/arch-tick-broadcast/arch-support.txt Documentation/features/strncasecmp/arch-support.txt
which will print the list of not yet supported features.
The Documentation/features/list-arch.sh script will print the current support matrix of one architecture:
triton:~/tip> Documentation/features/list-arch.sh #
# Kernel feature support matrix of architecture 'x86':
#
arch-tick-broadcast: | x86: | TODO |
BPF-JIT: | x86: | ok |
clockevents: | x86: | ok |
cmpxchg-local: | x86: | ok |
context-tracking: | x86: | ok |
dma-api-debug: | x86: | ok |
dma-contiguous: | x86: | ok |
dma_map_attrs: | x86: | ok |
ELF-ASLR: | x86: | ok |
gcov-profile-all: | x86: | ok |
generic-idle-thread: | x86: | ok |
huge-vmap: | x86: | ok |
ioremap_prot: | x86: | ok |
irq-time-acct: | x86: | ok |
jump-labels: | x86: | ok |
KASAN: | x86: | ok |
kgdb: | x86: | ok |
kprobes: | x86: | ok |
kprobes-event: | x86: | ok |
kprobes-on-ftrace: | x86: | ok |
kretprobes: | x86: | ok |
lockdep: | x86: | ok |
modern-timekeeping: | x86: | ok |
numa-balancing: | x86: | ok |
numa-memblock: | x86: | ok |
optprobes: | x86: | ok |
perf-regs: | x86: | ok |
perf-stackdump: | x86: | ok |
PG_uncached: | x86: | ok |
pmdp_splitting_flush: | x86: | ok |
pte_special: | x86: | ok |
queued-rwlocks: | x86: | ok |
queued-spinlocks: | x86: | ok |
rwsem-optimized: | x86: | ok |
seccomp-filter: | x86: | ok |
sg-chain: | x86: | ok |
stackprotector: | x86: | ok |
strncasecmp: | x86: | TODO |
THP: | x86: | ok |
tracehook: | x86: | ok |
uprobes: | x86: | ok |
user-ret-profiler: | x86: | ok |
virt-cpuacct: | x86: | ok |--- Documentation/features/BPF-JIT/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/ELF-ASLR/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/KASAN/arch-support.txt | 39 ++++++++++++++++++++++ .../features/PG_uncached/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/THP/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/arch-support.txt | 11 ++++++ .../features/arch-tick-broadcast/arch-support.txt | 39 ++++++++++++++++++++++ .../features/clockevents/arch-support.txt | 39 ++++++++++++++++++++++ .../features/cmpxchg-local/arch-support.txt | 39 ++++++++++++++++++++++ .../features/context-tracking/arch-support.txt | 39 ++++++++++++++++++++++ .../features/dma-api-debug/arch-support.txt | 39 ++++++++++++++++++++++ .../features/dma-contiguous/arch-support.txt | 39 ++++++++++++++++++++++ .../features/dma_map_attrs/arch-support.txt | 39 ++++++++++++++++++++++ .../features/gcov-profile-all/arch-support.txt | 39 ++++++++++++++++++++++ .../features/generic-idle-thread/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/huge-vmap/arch-support.txt | 39 ++++++++++++++++++++++ .../features/ioremap_prot/arch-support.txt | 39 ++++++++++++++++++++++ .../features/irq-time-acct/arch-support.txt | 39 ++++++++++++++++++++++ .../features/jump-labels/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/kgdb/arch-support.txt | 39 ++++++++++++++++++++++ .../features/kprobes-event/arch-support.txt | 39 ++++++++++++++++++++++ .../features/kprobes-on-ftrace/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/kprobes/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/kretprobes/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/list-arch.sh | 21 ++++++++++++ Documentation/features/lockdep/arch-support.txt | 39 ++++++++++++++++++++++ .../features/modern-timekeeping/arch-support.txt | 39 ++++++++++++++++++++++ .../features/numa-balancing/arch-support.txt | 39 ++++++++++++++++++++++ .../features/numa-memblock/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/optprobes/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/perf-regs/arch-support.txt | 39 ++++++++++++++++++++++ .../features/perf-stackdump/arch-support.txt | 39 ++++++++++++++++++++++ .../features/pmdp_splitting_flush/arch-support.txt | 39 ++++++++++++++++++++++ .../features/pte_special/arch-support.txt | 39 ++++++++++++++++++++++ .../features/queued-rwlocks/arch-support.txt | 39 ++++++++++++++++++++++ .../features/queued-spinlocks/arch-support.txt | 39 ++++++++++++++++++++++ .../features/rwsem-optimized/arch-support.txt | 39 ++++++++++++++++++++++ .../features/seccomp-filter/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/sg-chain/arch-support.txt | 39 ++++++++++++++++++++++ .../features/stackprotector/arch-support.txt | 39 ++++++++++++++++++++++ .../features/strncasecmp/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/tracehook/arch-support.txt | 39 ++++++++++++++++++++++ Documentation/features/uprobes/arch-support.txt | 39 ++++++++++++++++++++++ .../features/user-ret-profiler/arch-support.txt | 39 ++++++++++++++++++++++ .../features/virt-cpuacct/arch-support.txt | 39 ++++++++++++++++++++++ 45 files changed, 1709 insertions(+)
Documentation/features/BPF-JIT/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: BPF-JIT +# Kconfig: HAVE_BPF_JIT +# description: arch supports BPF JIT optimizations +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/ELF-ASLR/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: ELF-ASLR +# Kconfig: ARCH_HAS_ELF_RANDOMIZE +# description: arch randomizes the stack, heap and binary images of ELF binaries +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/KASAN/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: KASAN +# Kconfig: HAVE_ARCH_KASAN +# description: arch supports the KASAN runtime memory checker +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/PG_uncached/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: PG_uncached +# Kconfig: ARCH_USES_PG_UNCACHED +# description: arch supports the PG_uncached page flag +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/THP/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: THP +# Kconfig: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT +# description: arch supports transparent hugepages +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | ok | + | arm64: | ok | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | hexagon: | .. | + | ia64: | TODO | + | m32r: | .. | + | m68k: | .. | + | metag: | .. | + | microblaze: | .. | + | mips: | ok | + | mn10300: | .. | + | nios2: | .. | + | openrisc: | .. | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | .. | + | sh: | .. | + | sparc: | ok | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/arch-support.txt new file +11 -0
@@ -0,0 +1,11 @@ + +For generic kernel features that need architecture support, the +arch-support.txt file in each feature directory shows the arch +support matrix, for all upstream Linux architectures. + +The meaning of entries in the tables is: + + | ok | # feature supported by the architecture + |TODO| # feature not yet supported by the architecture + | .. | # feature cannot be supported by the hardware +
Documentation/features/arch-tick-broadcast/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: arch-tick-broadcast +# Kconfig: ARCH_HAS_TICK_BROADCAST +# description: arch provides tick_broadcast() +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | TODO | + | xtensa: | TODO | + -----------------------
Documentation/features/clockevents/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: clockevents +# Kconfig: GENERIC_CLOCKEVENTS +# description: arch support generic clock events +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | ok | + | cris: | ok | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | ok | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/cmpxchg-local/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: cmpxchg-local +# Kconfig: HAVE_CMPXCHG_LOCAL +# description: arch supports the this_cpu_cmpxchg() API +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/context-tracking/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: context-tracking +# Kconfig: HAVE_CONTEXT_TRACKING +# description: arch supports context tracking for NO_HZ_FULL +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/dma-api-debug/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: dma-api-debug +# Kconfig: HAVE_DMA_API_DEBUG +# description: arch supports DMA debug facilities +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | ok | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/dma-contiguous/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: dma-contiguous +# Kconfig: HAVE_DMA_CONTIGUOUS +# description: arch supports the DMA CMA (continuous memory allocator) +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/dma_map_attrs/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: dma_map_attrs +# Kconfig: HAVE_DMA_ATTRS +# description: arch provides dma_*map*_attrs() APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | ok | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/gcov-profile-all/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: gcov-profile-all +# Kconfig: ARCH_HAS_GCOV_PROFILE_ALL +# description: arch supports whole-kernel GCOV code coverage profiling +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/generic-idle-thread/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: generic-idle-thread +# Kconfig: GENERIC_SMP_IDLE_THREAD +# description: arch makes use of the generic SMP idle thread facility +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/huge-vmap/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: huge-vmap +# Kconfig: HAVE_ARCH_HUGE_VMAP +# description: arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/ioremap_prot/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: ioremap_prot +# Kconfig: HAVE_IOREMAP_PROT +# description: arch has ioremap_prot() +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/irq-time-acct/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: irq-time-acct +# Kconfig: HAVE_IRQ_TIME_ACCOUNTING +# description: arch supports precise IRQ time accounting +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/jump-labels/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: jump-labels +# Kconfig: HAVE_ARCH_JUMP_LABEL +# description: arch supports live patched high efficiency branches +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kgdb/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kgdb +# Kconfig: HAVE_ARCH_KGDB +# description: arch supports the kGDB kernel debugger +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kprobes-event/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kprobes-event +# Kconfig: HAVE_REGS_AND_STACK_ACCESS_API +# description: arch supports kprobes with perf events +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kprobes-on-ftrace/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kprobes-on-ftrace +# Kconfig: HAVE_KPROBES_ON_FTRACE +# description: arch supports combined kprobes and ftrace live patching +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kprobes +# Kconfig: HAVE_KPROBES +# description: arch supports live patched kernel probe +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | TODO | + | avr32: | ok | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/kretprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: kretprobes +# Kconfig: HAVE_KRETPROBES +# description: arch supports kernel function-return probes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/list-arch.sh new file +21 -0
@@ -0,0 +1,21 @@ +# +# Small script that visualizes the kernel feature support status +# of an architecture. +# +# (If no arguments are given then it will print the host architecture's status.) +# + +[ $# = 0 ] && ARCH=$(arch | sed 's/x86_64/x86/' | sed 's/i386/x86/') + +cd $(dirname $0) +echo "#" +echo "# Kernel feature support matrix of architecture '$ARCH':" +echo "#" + +for F in */arch-support.txt; do + N=$(git grep -h "Feature name" $F | cut -d: -f2) + S=$(git grep -hw $ARCH $F) + + printf "%30s: %s\n" "$N" "$S" +done +
Documentation/features/lockdep/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: lockdep +# Kconfig: LOCKDEP_SUPPORT +# description: arch supports the runtime locking correctness debug facility +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/modern-timekeeping/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: modern-timekeeping +# Kconfig: !ARCH_USES_GETTIMEOFFSET +# description: arch does not use arch_gettimeoffset() anymore +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | TODO | + | arm64: | ok | + | avr32: | ok | + | blackfin: | TODO | + | c6x: | ok | + | cris: | TODO | + | frv: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/numa-balancing/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: numa-balancing +# Kconfig: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA +# description: arch supports NUMA balancing +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | .. | + | arm64: | .. | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | hexagon: | .. | + | ia64: | TODO | + | m32r: | .. | + | m68k: | .. | + | metag: | .. | + | microblaze: | .. | + | mips: | TODO | + | mn10300: | .. | + | nios2: | .. | + | openrisc: | .. | + | parisc: | .. | + | powerpc: | ok | + | s390: | .. | + | score: | .. | + | sh: | .. | + | sparc: | TODO | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/numa-memblock/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: numa-memblock +# Kconfig: HAVE_MEMBLOCK_NODE_MAP +# description: arch supports NUMA aware memblocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | .. | + | arm64: | .. | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | hexagon: | .. | + | ia64: | ok | + | m32r: | TODO | + | m68k: | .. | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | .. | + | openrisc: | .. | + | parisc: | .. | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/optprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: optprobes +# Kconfig: HAVE_OPTPROBES +# description: arch supports live patched optprobes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/perf-regs/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: perf-regs +# Kconfig: HAVE_PERF_REGS +# description: arch supports perf events register access +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/perf-stackdump/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: perf-stackdump +# Kconfig: HAVE_PERF_USER_STACK_DUMP +# description: arch supports perf events stack dumps +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/pmdp_splitting_flush/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: pmdp_splitting_flush +# Kconfig: #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH +# description: arch supports the pmdp_splitting_flush() VM API +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/pte_special/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: pte_special +# Kconfig: #define __HAVE_ARCH_PTE_SPECIAL +# description: arch supports the pte_special()/pte_mkspecial() VM APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/queued-rwlocks/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: queued-rwlocks +# Kconfig: ARCH_USE_QUEUED_RWLOCKS +# description: arch supports queued rwlocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/queued-spinlocks/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: queued-spinlocks +# Kconfig: ARCH_USE_QUEUED_SPINLOCKS +# description: arch supports queued spinlocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/rwsem-optimized/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: rwsem-optimized +# Kconfig: Optimized asm/rwsem.h +# description: arch provides optimized rwsem APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | ok | + | cris: | ok | + | frv: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | ok | + | m68k: | ok | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/seccomp-filter/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: seccomp-filter +# Kconfig: HAVE_ARCH_SECCOMP_FILTER +# description: arch supports seccomp filters +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/sg-chain/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: sg-chain +# Kconfig: ARCH_HAS_SG_CHAIN +# description: arch supports chained scatter-gather lists +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/stackprotector/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: stackprotector +# Kconfig: HAVE_CC_STACKPROTECTOR +# description: arch supports compiler driven stack overflow protection +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/strncasecmp/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: strncasecmp +# Kconfig: __HAVE_ARCH_STRNCASECMP +# description: arch provides an optimized strncasecmp() function +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | TODO | + | xtensa: | TODO | + -----------------------
Documentation/features/tracehook/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: tracehook +# Kconfig: HAVE_ARCH_TRACEHOOK +# description: arch supports tracehook (ptrace) register handling APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | ok | + | cris: | TODO | + | frv: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/uprobes/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: uprobes +# Kconfig: ARCH_SUPPORTS_UPROBES +# description: arch supports live patched user probes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/user-ret-profiler/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: user-ret-profiler +# Kconfig: HAVE_USER_RETURN_NOTIFIER +# description: arch supports user-space return from system call profiler +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/virt-cpuacct/arch-support.txt new file +39 -0
@@ -0,0 +1,39 @@ +# +# Feature name: virt-cpuacct +# Kconfig: HAVE_VIRT_CPU_ACCOUNTING || 64BIT +# description: arch supports precise virtual CPU time accounting +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Andrew Morton
maintainerRe: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 25 lines
Add arch support matrices for more than 40 generic kernel features that need per architecture support.
Each feature has its own directory under
Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.For example, lockdep support is shown the following way:
triton:~/tip> cat
Documentation/features/lockdep/arch-support.txt#
# Feature name: lockdep
#Kconfig:LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
...
| xtensa: | ok |
-----------------------For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.
Quoted 5 lines
The meaning of entries in the tables is:
| ok | # feature supported by the architecture |TODO| # feature not yet supported by the architecture | .. | # feature cannot be supported by the hardware
Presumably there will be instances where the maintainer decides "we shall not implement that".
Quoted 2 lines
This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.
I suppose so. Having a great bunch of directories, each containing a single file is a bit odd.
It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.
But still, let's not overdo it - get something in there, see how well it works, evolve it over time.
I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 25 lines · Andrew Morton
Quoted 25 lines
Add arch support matrices for more than 40 generic kernel features that need per architecture support.
Each feature has its own directory under
Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.For example, lockdep support is shown the following way:
triton:~/tip> cat
Documentation/features/lockdep/arch-support.txt#
# Feature name: lockdep
#Kconfig:LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
...
| xtensa: | ok |
-----------------------For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.
Quoted 8 lines
Quoted 5 lines
The meaning of entries in the tables is:
| ok | # feature supported by the architecture |TODO| # feature not yet supported by the architecture | .. | # feature cannot be supported by the hardwarePresumably there will be instances where the maintainer decides "we shall not implement that".
So I tried to limit the list of features to those that represent the overall progress of the generic kernel and are recommended on all architectures that are able to support it.
There are certainly features that are opt-in. We could still list them here as well, because this is a convenient central index, but would mark them not with 'TODO' but with a low-key '..' marking?
On the other end of the spectrum we could also define 'must have' features for new architectures. For example modern-timekeeping and clockevents.
The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.
Quoted 5 lines
Quoted 2 lines
This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.
I suppose so. Having a great bunch of directories, each containing a single file is a bit odd.
It's a starting point and nicely extensible. I was thinking about one more intermediate level:
Documentation/features/locking/lockdep/ Documentation/features/locking/rwsem-optimized/ Documentation/features/locking/queued-rwlocks/ Documentation/features/locking/queued-spinlocks/
...
Documentation/features/vm/PG_uncached/ Documentation/features/vm/pmdp_splitting_flush/ Documentation/features/vm/pte_special/
...
The advantage of this, beyond more structure, would be that I'd probably move most of the Documentation/locking/*.txt files into Documentation/features/locking/, for example lockdep-design.txt would go into Documentation/features/locking/lockdep/.
I'd keep the hierarchy at a predictable depth though, i.e.:
Documentation/features/<subsystem>/<feature_name>/
Quoted 3 lines
It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.
Ok.
Quoted 2 lines
But still, let's not overdo it - get something in there, see how well it works, evolve it over time.
Yeah.
Quoted 2 lines
I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.
I think we god some feedback from the PowerPC side, but yeah, would be nice to get more reactions.
Thanks,
Ingo
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Hi Ingo,
Thanks for this. The concept is certainly good.
Quoted 3 lines · On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar…
The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.
If you want to test how hard that is (and what sort of patch it produces), the h8300 architecture was added to linux-next recently.
Signature · 2 lines
Cheers, Stephen Rothwell [email protected]
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 11 lines · Stephen Rothwell
Hi Ingo,
Thanks for this. The concept is certainly good.
Quoted 3 lines · On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar…
The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.
If you want to test how hard that is (and what sort of patch it produces), the h8300 architecture was added to linux-next recently.
I tried this out, this is the resulting feature support matrix for the new h8300 architecture:
#
# Kernel feature support matrix of architecture 'h8300':
#
arch-tick-broadcast: | h8300: | TODO |
BPF-JIT: | h8300: | TODO |
clockevents: | h8300: | ok |
cmpxchg-local: | h8300: | TODO |
context-tracking: | h8300: | TODO |
dma-api-debug: | h8300: | TODO |
dma-contiguous: | h8300: | TODO |
dma_map_attrs: | h8300: | ok |
ELF-ASLR: | h8300: | TODO |
gcov-profile-all: | h8300: | TODO |
generic-idle-thread: | h8300: | TODO |
huge-vmap: | h8300: | TODO |
ioremap_prot: | h8300: | TODO |
irq-time-acct: | h8300: | TODO |
jump-labels: | h8300: | TODO |
KASAN: | h8300: | TODO |
kgdb: | h8300: | TODO |
kprobes: | h8300: | TODO |
kprobes-event: | h8300: | TODO |
kprobes-on-ftrace: | h8300: | TODO |
kretprobes: | h8300: | TODO |
lockdep: | h8300: | TODO |
modern-timekeeping: | h8300: | ok |
numa-balancing: | h8300: | .. |
numa-memblock: | h8300: | .. |
optprobes: | h8300: | TODO |
perf-regs: | h8300: | TODO |
perf-stackdump: | h8300: | TODO |
PG_uncached: | h8300: | TODO |
pmdp_splitting_flush: | h8300: | TODO |
pte_special: | h8300: | TODO |
queued-rwlocks: | h8300: | TODO |
queued-spinlocks: | h8300: | TODO |
rwsem-optimized: | h8300: | ok |
seccomp-filter: | h8300: | TODO |
sg-chain: | h8300: | TODO |
stackprotector: | h8300: | TODO |
strncasecmp: | h8300: | TODO |
THP: | h8300: | .. |
tracehook: | h8300: | TODO |
uprobes: | h8300: | TODO |
user-ret-profiler: | h8300: | TODO |
virt-cpuacct: | h8300: | TODO |Thanks,
Ingo
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 15 lines · Ingo Molnar
Quoted 11 lines · Stephen Rothwell
Hi Ingo,
Thanks for this. The concept is certainly good.
Quoted 3 lines · On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar…
The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.
If you want to test how hard that is (and what sort of patch it produces), the h8300 architecture was added to linux-next recently.
Quoted 8 lines
I tried this out, this is the resulting feature support matrix for the new h8300 architecture:
#
# Kernel feature support matrix of architecture 'h8300':
#arch-tick-broadcast: | h8300: | TODO | BPF-JIT: | h8300: | TODO |
Perhaps the more verbose table is more useful:
#
# Kernel feature support matrix of architecture 'h8300':
#
arch-tick-broadcast: | TODO | ARCH_HAS_TICK_BROADCAST # arch provides tick_broadcast()
BPF-JIT: | TODO | HAVE_BPF_JIT # arch supports BPF JIT optimizations
clockevents: | ok | GENERIC_CLOCKEVENTS # arch support generic clock events
cmpxchg-local: | TODO | HAVE_CMPXCHG_LOCAL # arch supports the this_cpu_cmpxchg() API
context-tracking: | TODO | HAVE_CONTEXT_TRACKING # arch supports context tracking for NO_HZ_FULL
dma-api-debug: | TODO | HAVE_DMA_API_DEBUG # arch supports DMA debug facilities
dma-contiguous: | TODO | HAVE_DMA_CONTIGUOUS # arch supports the DMA CMA (continuous memory allocator)
dma_map_attrs: | ok | HAVE_DMA_ATTRS # arch provides dma_*map*_attrs() APIs
ELF-ASLR: | TODO | ARCH_HAS_ELF_RANDOMIZE # arch randomizes the stack, heap and binary images of ELF binaries
gcov-profile-all: | TODO | ARCH_HAS_GCOV_PROFILE_ALL # arch supports whole-kernel GCOV code coverage profiling
generic-idle-thread: | TODO | GENERIC_SMP_IDLE_THREAD # arch makes use of the generic SMP idle thread facility
huge-vmap: | TODO | HAVE_ARCH_HUGE_VMAP # arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
ioremap_prot: | TODO | HAVE_IOREMAP_PROT # arch has ioremap_prot()
irq-time-acct: | TODO | HAVE_IRQ_TIME_ACCOUNTING # arch supports precise IRQ time accounting
jump-labels: | TODO | HAVE_ARCH_JUMP_LABEL # arch supports live patched high efficiency branches
KASAN: | TODO | HAVE_ARCH_KASAN # arch supports the KASAN runtime memory checker
kgdb: | TODO | HAVE_ARCH_KGDB # arch supports the kGDB kernel debugger
kprobes: | TODO | HAVE_KPROBES # arch supports live patched kernel probe
kprobes-event: | TODO | HAVE_REGS_AND_STACK_ACCESS_API # arch supports kprobes with perf events
kprobes-on-ftrace: | TODO | HAVE_KPROBES_ON_FTRACE # arch supports combined kprobes and ftrace live patching
kretprobes: | TODO | HAVE_KRETPROBES # arch supports kernel function-return probes
lockdep: | TODO | LOCKDEP_SUPPORT # arch supports the runtime locking correctness debug facility
modern-timekeeping: | ok | !ARCH_USES_GETTIMEOFFSET # arch does not use arch_gettimeoffset() anymore
numa-balancing: | .. | ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA # arch supports NUMA balancing
numa-memblock: | .. | HAVE_MEMBLOCK_NODE_MAP # arch supports NUMA aware memblocks
optprobes: | TODO | HAVE_OPTPROBES # arch supports live patched optprobes
perf-regs: | TODO | HAVE_PERF_REGS # arch supports perf events register access
perf-stackdump: | TODO | HAVE_PERF_USER_STACK_DUMP # arch supports perf events stack dumps
PG_uncached: | TODO | ARCH_USES_PG_UNCACHED # arch supports the PG_uncached page flag
pmdp_splitting_flush: | TODO | #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH # arch supports the pmdp_splitting_flush() VM API
pte_special: | TODO | #define __HAVE_ARCH_PTE_SPECIAL # arch supports the pte_special()/pte_mkspecial() VM APIs
queued-rwlocks: | TODO | ARCH_USE_QUEUED_RWLOCKS # arch supports queued rwlocks
queued-spinlocks: | TODO | ARCH_USE_QUEUED_SPINLOCKS # arch supports queued spinlocks
rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem APIs
seccomp-filter: | TODO | HAVE_ARCH_SECCOMP_FILTER # arch supports seccomp filters
sg-chain: | TODO | ARCH_HAS_SG_CHAIN # arch supports chained scatter-gather lists
stackprotector: | TODO | HAVE_CC_STACKPROTECTOR # arch supports compiler driven stack overflow protection
strncasecmp: | TODO | __HAVE_ARCH_STRNCASECMP # arch provides an optimized strncasecmp() function
THP: | .. | HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT # arch supports transparent hugepages
tracehook: | TODO | HAVE_ARCH_TRACEHOOK # arch supports tracehook (ptrace) register handling APIs
uprobes: | TODO | ARCH_SUPPORTS_UPROBES # arch supports live patched user probes
user-ret-profiler: | TODO | HAVE_USER_RETURN_NOTIFIER # arch supports user-space return from system call profiler
virt-cpuacct: | TODO | HAVE_VIRT_CPU_ACCOUNTING || 64BIT # arch supports precise virtual CPU time accountingThanks,
Ingo
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
In reply to Ingo MolnarQuoted 20 lines · Ingo Molnar
Quoted 5 lines
Quoted 2 lines
This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.
I suppose so. Having a great bunch of directories, each containing a single file is a bit odd.
It's a starting point and nicely extensible. I was thinking about one more intermediate level:
Documentation/features/locking/lockdep/ Documentation/features/locking/rwsem-optimized/ Documentation/features/locking/queued-rwlocks/ Documentation/features/locking/queued-spinlocks/ ... Documentation/features/vm/PG_uncached/ Documentation/features/vm/pmdp_splitting_flush/ Documentation/features/vm/pte_special/ ...
Quoted 8 lines
The advantage of this, beyond more structure, would be that I'd probably move most of the
Documentation/locking/*.txtfiles intoDocumentation/features/locking/, for example lockdep-design.txt would go intoDocumentation/features/locking/lockdep/.I'd keep the hierarchy at a predictable depth though, i.e.:
Documentation/features/<subsystem>/<feature_name>/
So I've implemented this, the high level structure now looks like this:
triton:~/tip/Documentation/features> ls -l
total 48
-rw-rw-r-- 1 mingo mingo 396 May 15 11:26 arch-support.txt drwxrwxr-x 6 mingo mingo 4096 May 15 11:26 core drwxrwxr-x 12 mingo mingo 4096 May 15 11:26 debug
drwxrwxr-x 6 mingo mingo 4096 May 15 11:26 io drwxrwxr-x 3 mingo mingo 4096 May 15 11:26 lib -rwxrwxr-x 1 mingo mingo 692 May 15 11:31 list-arch.sh drwxrwxr-x 7 mingo mingo 4096 May 15 11:26 locking drwxrwxr-x 5 mingo mingo 4096 May 15 11:26 perf drwxrwxr-x 3 mingo mingo 4096 May 15 11:26 sched drwxrwxr-x 3 mingo mingo 4096 May 15 11:26 seccomp drwxrwxr-x 8 mingo mingo 4096 May 15 11:26 time
drwxrwxr-x 10 mingo mingo 4096 May 15 11:26 vm
triton:~/tip/Documentation/features>
triton:~/tip/Documentation/features> ls -l locking/ total 20
drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 cmpxchg-local drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 lockdep drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 queued-rwlocks drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 queued-spinlocks drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 rwsem-optimized
triton:~/tip/Documentation/features> ls -l vm/
total 32
drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 ELF-ASLR drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 huge-vmap drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 ioremap_prot drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 numa-memblock drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 PG_uncached drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 pmdp_splitting_flush drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 pte_special drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 THP
And this structure, beyond making it easier to navigate, can be utilized to improve the visualization output as well:
triton:~/tip/Documentation/features> ./list-arch.sh #
# Kernel feature support matrix of the 'x86' architecture:
#
core/ BPF-JIT : ok | HAVE_BPF_JIT # arch supports BPF JIT optimizations
core/ generic-idle-thread : ok | GENERIC_SMP_IDLE_THREAD # arch makes use of the generic SMP idle thread facility
core/ jump-labels : ok | HAVE_ARCH_JUMP_LABEL # arch supports live patched, high efficiency branches
core/ tracehook : ok | HAVE_ARCH_TRACEHOOK # arch supports tracehook (ptrace) register handling APIs
debug/ gcov-profile-all : ok | ARCH_HAS_GCOV_PROFILE_ALL # arch supports whole-kernel GCOV code coverage profiling
debug/ KASAN : ok | HAVE_ARCH_KASAN # arch supports the KASAN runtime memory checker
debug/ kgdb : ok | HAVE_ARCH_KGDB # arch supports the kGDB kernel debugger
debug/ kprobes : ok | HAVE_KPROBES # arch supports live patched kernel probe
debug/ kprobes-on-ftrace : ok | HAVE_KPROBES_ON_FTRACE # arch supports combined kprobes and ftrace live patching
debug/ kretprobes : ok | HAVE_KRETPROBES # arch supports kernel function-return probes
debug/ optprobes : ok | HAVE_OPTPROBES # arch supports live patched optprobes
debug/ stackprotector : ok | HAVE_CC_STACKPROTECTOR # arch supports compiler driven stack overflow protection
debug/ uprobes : ok | ARCH_SUPPORTS_UPROBES # arch supports live patched user probes
debug/ user-ret-profiler : ok | HAVE_USER_RETURN_NOTIFIER # arch supports user-space return from system call profiler
io/ dma-api-debug : ok | HAVE_DMA_API_DEBUG # arch supports DMA debug facilities
io/ dma-contiguous : ok | HAVE_DMA_CONTIGUOUS # arch supports the DMA CMA (continuous memory allocator)
io/ dma_map_attrs : ok | HAVE_DMA_ATTRS # arch provides dma_*map*_attrs() APIs
io/ sg-chain : ok | ARCH_HAS_SG_CHAIN # arch supports chained scatter-gather lists
lib/ strncasecmp : TODO | __HAVE_ARCH_STRNCASECMP # arch provides an optimized strncasecmp() function
locking/ cmpxchg-local : ok | HAVE_CMPXCHG_LOCAL # arch supports the this_cpu_cmpxchg() API
locking/ lockdep : ok | LOCKDEP_SUPPORT # arch supports the runtime locking correctness debug facility
locking/ queued-rwlocks : ok | ARCH_USE_QUEUED_RWLOCKS # arch supports queued rwlocks
locking/ queued-spinlocks : ok | ARCH_USE_QUEUED_SPINLOCKS # arch supports queued spinlocks
locking/ rwsem-optimized : ok | Optimized asm/rwsem.h # arch provides optimized rwsem APIs
perf/ kprobes-event : ok | HAVE_REGS_AND_STACK_ACCESS_API # arch supports kprobes with perf events
perf/ perf-regs : ok | HAVE_PERF_REGS # arch supports perf events register access
perf/ perf-stackdump : ok | HAVE_PERF_USER_STACK_DUMP # arch supports perf events stack dumps
sched/ numa-balancing : ok | ARCH_SUPPORTS_NUMA_BALANCING # arch supports NUMA balancing
seccomp/ seccomp-filter : ok | HAVE_ARCH_SECCOMP_FILTER # arch supports seccomp filters
time/ arch-tick-broadcast : TODO | ARCH_HAS_TICK_BROADCAST # arch provides tick_broadcast()
time/ clockevents : ok | GENERIC_CLOCKEVENTS # arch support generic clock events
time/ context-tracking : ok | HAVE_CONTEXT_TRACKING # arch supports context tracking for NO_HZ_FULL
time/ irq-time-acct : ok | HAVE_IRQ_TIME_ACCOUNTING # arch supports precise IRQ time accounting
time/ modern-timekeeping : ok | !ARCH_USES_GETTIMEOFFSET # arch does not use arch_gettimeoffset() anymore
time/ virt-cpuacct : ok | HAVE_VIRT_CPU_ACCOUNTING # arch supports precise virtual CPU time accounting
vm/ ELF-ASLR : ok | ARCH_HAS_ELF_RANDOMIZE # arch randomizes the stack, heap and binary images of ELF binaries
vm/ huge-vmap : ok | HAVE_ARCH_HUGE_VMAP # arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
vm/ ioremap_prot : ok | HAVE_IOREMAP_PROT # arch has ioremap_prot()
vm/ numa-memblock : ok | HAVE_MEMBLOCK_NODE_MAP # arch supports NUMA aware memblocks
vm/ PG_uncached : ok | ARCH_USES_PG_UNCACHED # arch supports the PG_uncached page flag
vm/ pmdp_splitting_flush : ok | __HAVE_ARCH_PMDP_SPLITTING_FLUSH # arch supports the pmdp_splitting_flush() VM API
vm/ pte_special : ok | __HAVE_ARCH_PTE_SPECIAL # arch supports the pte_special()/pte_mkspecial() VM APIs
vm/ THP : ok | HAVE_ARCH_TRANSPARENT_HUGEPAGE # arch supports transparent hugepagesSee the first column, the subsystem prefixes - this organizes the feature list in a natural way as well, per subsystem.
Seems to work out well.
Thanks,
Ingo
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
In reply to Andrew MortonQuoted 2 lines · Andrew Morton
I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.
I like it. :-)
Signature · 2 lines
Thanks, //richard
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
In reply to Andrew MortonQuoted 9 lines · Andrew Morton
Quoted 5 lines
Add arch support matrices for more than 40 generic kernel features that need per architecture support.
Each feature has its own directory under
Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.
+1 on patch titles.
Quoted 5 lines
But still, let's not overdo it - get something in there, see how well it works, evolve it over time.
I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.
Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.
I'd like to see more description in the individual files of what the feature is, and preferably some pointers to what's needed to implement it.
The kconfig for HAVE_ARCH_SECCOMP_FILTER is a good example of what I mean.
I realise retrofitting that for all these existing features is quite time consuming, but for new features hopefully the bar can be raised a little in terms of that description.
cheers
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 4 lines · Michael Ellerman
Quoted 3 lines · Andrew Morton
Quoted 3 lines
Add arch support matrices for more than 40 generic kernel features that need per architecture support.
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
Each feature has its own directory under
Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.
+1 on patch titles.
Ok, I'll solve this.
Quoted 8 lines
Quoted 5 lines
But still, let's not overdo it - get something in there, see how well it works, evolve it over time.
I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.
Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.
Please double check the PowerPC support matrix for correctness (if you haven't yet):
#
# Kernel feature support matrix of architecture 'powerpc':
#
arch-tick-broadcast: | ok | ARCH_HAS_TICK_BROADCAST # arch provides tick_broadcast()
BPF-JIT: | ok | HAVE_BPF_JIT # arch supports BPF JIT optimizations
clockevents: | ok | GENERIC_CLOCKEVENTS # arch support generic clock events
cmpxchg-local: | TODO | HAVE_CMPXCHG_LOCAL # arch supports the this_cpu_cmpxchg() API
context-tracking: | ok | HAVE_CONTEXT_TRACKING # arch supports context tracking for NO_HZ_FULL
dma-api-debug: | ok | HAVE_DMA_API_DEBUG # arch supports DMA debug facilities
dma-contiguous: | TODO | HAVE_DMA_CONTIGUOUS # arch supports the DMA CMA (continuous memory allocator)
dma_map_attrs: | ok | HAVE_DMA_ATTRS # arch provides dma_*map*_attrs() APIs
ELF-ASLR: | ok | ARCH_HAS_ELF_RANDOMIZE # arch randomizes the stack, heap and binary images of ELF binaries
gcov-profile-all: | ok | ARCH_HAS_GCOV_PROFILE_ALL # arch supports whole-kernel GCOV code coverage profiling
generic-idle-thread: | ok | GENERIC_SMP_IDLE_THREAD # arch makes use of the generic SMP idle thread facility
huge-vmap: | TODO | HAVE_ARCH_HUGE_VMAP # arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
ioremap_prot: | ok | HAVE_IOREMAP_PROT # arch has ioremap_prot()
irq-time-acct: | ok | HAVE_IRQ_TIME_ACCOUNTING # arch supports precise IRQ time accounting
jump-labels: | ok | HAVE_ARCH_JUMP_LABEL # arch supports live patched high efficiency branches
KASAN: | TODO | HAVE_ARCH_KASAN # arch supports the KASAN runtime memory checker
kgdb: | ok | HAVE_ARCH_KGDB # arch supports the kGDB kernel debugger
kprobes: | ok | HAVE_KPROBES # arch supports live patched kernel probe
kprobes-event: | ok | HAVE_REGS_AND_STACK_ACCESS_API # arch supports kprobes with perf events
kprobes-on-ftrace: | TODO | HAVE_KPROBES_ON_FTRACE # arch supports combined kprobes and ftrace live patching
kretprobes: | ok | HAVE_KRETPROBES # arch supports kernel function-return probes
lockdep: | ok | LOCKDEP_SUPPORT # arch supports the runtime locking correctness debug facility
modern-timekeeping: | ok | !ARCH_USES_GETTIMEOFFSET # arch does not use arch_gettimeoffset() anymore
numa-balancing: | ok | ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA # arch supports NUMA balancing
numa-memblock: | ok | HAVE_MEMBLOCK_NODE_MAP # arch supports NUMA aware memblocks
optprobes: | TODO | HAVE_OPTPROBES # arch supports live patched optprobes
perf-regs: | TODO | HAVE_PERF_REGS # arch supports perf events register access
perf-stackdump: | TODO | HAVE_PERF_USER_STACK_DUMP # arch supports perf events stack dumps
PG_uncached: | TODO | ARCH_USES_PG_UNCACHED # arch supports the PG_uncached page flag
pmdp_splitting_flush: | ok | #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH # arch supports the pmdp_splitting_flush() VM API
pte_special: | ok | #define __HAVE_ARCH_PTE_SPECIAL # arch supports the pte_special()/pte_mkspecial() VM APIs
queued-rwlocks: | TODO | ARCH_USE_QUEUED_RWLOCKS # arch supports queued rwlocks
queued-spinlocks: | TODO | ARCH_USE_QUEUED_SPINLOCKS # arch supports queued spinlocks
rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem APIs
seccomp-filter: | TODO | HAVE_ARCH_SECCOMP_FILTER # arch supports seccomp filters
sg-chain: | ok | ARCH_HAS_SG_CHAIN # arch supports chained scatter-gather lists
stackprotector: | TODO | HAVE_CC_STACKPROTECTOR # arch supports compiler driven stack overflow protection
strncasecmp: | TODO | __HAVE_ARCH_STRNCASECMP # arch provides an optimized strncasecmp() function
THP: | ok | HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT # arch supports transparent hugepages
tracehook: | ok | HAVE_ARCH_TRACEHOOK # arch supports tracehook (ptrace) register handling APIs
uprobes: | ok | ARCH_SUPPORTS_UPROBES # arch supports live patched user probes
user-ret-profiler: | TODO | HAVE_USER_RETURN_NOTIFIER # arch supports user-space return from system call profiler
virt-cpuacct: | ok | HAVE_VIRT_CPU_ACCOUNTING || 64BIT # arch supports precise virtual CPU time accountingQuoted 3 lines
I'd like to see more description in the individual files of what the feature is, and preferably some pointers to what's needed to implement it.
Yeah, so I tried to add a short description to the feature file itself, and for many of these features that single sentence is the only documentation we have in the kernel source ...
More comprehensive description can be added both to the Kconfig and to the feature description as well, by the maintainers of the individual features.
Quoted 2 lines
The kconfig for
HAVE_ARCH_SECCOMP_FILTERis a good example of what I mean.
Yes, that's a positive example. It's the exception.
Quoted 3 lines
I realise retrofitting that for all these existing features is quite time consuming, but for new features hopefully the bar can be raised a little in terms of that description.
Yeah.
Thanks,
Ingo
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 9 lines · Ingo Molnar
Quoted 7 lines · Michael Ellerman
Quoted 6 lines · Andrew Morton
Quoted 5 lines
Add arch support matrices for more than 40 generic kernel features that need per architecture support.
Each feature has its own directory under
Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.
+1 on patch titles.
Ok, I'll solve this.
Thanks.
Quoted 11 lines
Quoted 8 lines
Quoted 5 lines
But still, let's not overdo it - get something in there, see how well it works, evolve it over time.
I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.
Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.
Please double check the PowerPC support matrix for correctness (if you haven't yet):
It looks good except for:
Quoted 1 line
rwsem-optimized: | ok | Optimized
asm/rwsem.h# arch provides optimized rwsem APIs
I don't see an rwsem.h in powerpc anywhere?
And this is correct but a bit confusing:
Quoted 1 line
irq-time-acct: | ok |
HAVE_IRQ_TIME_ACCOUNTING# arch supports precise IRQ time accounting
I think you and Paul agreed it's "ok" on powerpc because we have VIRT_CPU_ACCOUNTING instead, but that's not obvious.
Quoted 7 lines
Quoted 3 lines
I'd like to see more description in the individual files of what the feature is, and preferably some pointers to what's needed to implement it.
Yeah, so I tried to add a short description to the feature file itself, and for many of these features that single sentence is the only documentation we have in the kernel source ...
Yep, so that's better than what we had, and we can always improve it.
cheers
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 11 lines · Michael Ellerman
Quoted 5 lines
Quoted 2 lines
Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.
Please double check the PowerPC support matrix for correctness (if you haven't yet):
It looks good except for:
Quoted 1 line
rwsem-optimized: | ok | Optimized
asm/rwsem.h# arch provides optimized rwsem APIsI don't see an
rwsem.hin powerpc anywhere?
Indeed, that slipped through. I fixed it to:
triton:~/tip> cat Documentation/features/locking/rwsem-optimized/arch-support.txt #
# Feature name: rwsem-optimized
# Kconfig: Optimized asm/rwsem.h
# description: arch provides optimized rwsem APIs
#
-----------------------
| arch |status|
-----------------------
| alpha: | ok |
| arc: | TODO |
| arm: | TODO |
| arm64: | TODO |
| avr32: | TODO |
| blackfin: | TODO |
| c6x: | TODO |
| cris: | TODO |
| frv: | TODO |
| hexagon: | TODO |
| ia64: | ok |
| m32r: | TODO |
| m68k: | TODO |
| metag: | TODO |
| microblaze: | TODO |
| mips: | TODO |
| mn10300: | TODO |
| nios2: | TODO |
| openrisc: | TODO |
| parisc: | TODO |
| powerpc: | TODO |
| s390: | ok |
| score: | TODO |
| sh: | ok |
| sparc: | ok |
| tile: | TODO |
| um: | TODO |
| unicore32: | TODO |
| x86: | ok |
| xtensa: | ok |
-----------------------
Quoted 6 lines
And this is correct but a bit confusing:
Quoted 1 line
irq-time-acct: | ok |
HAVE_IRQ_TIME_ACCOUNTING# arch supports precise IRQ time accountingI think you and Paul agreed it's "ok" on powerpc because we have
VIRT_CPU_ACCOUNTINGinstead, but that's not obvious.
Ok, so I modified it to print '..' instead:
triton:~/tip> cat Documentation/features/time/irq-time-acct/arch-support.txt #
# Feature name: irq-time-acct
# Kconfig: HAVE_IRQ_TIME_ACCOUNTING
# description: arch supports precise IRQ time accounting
#
-----------------------
| arch |status|
-----------------------
| alpha: | .. |
| arc: | TODO |
| arm: | ok |
| arm64: | .. |
| avr32: | TODO |
| blackfin: | TODO |
| c6x: | TODO |
| cris: | TODO |
| frv: | TODO |
| hexagon: | TODO |
| ia64: | .. |
| m32r: | TODO |
| m68k: | TODO |
| metag: | TODO |
| microblaze: | TODO |
| mips: | ok |
| mn10300: | TODO |
| nios2: | TODO |
| openrisc: | TODO |
| parisc: | .. |
| powerpc: | .. |
| s390: | .. |
| score: | TODO |
| sh: | TODO |
| sparc: | .. |
| tile: | .. |
| um: | TODO |
| unicore32: | TODO |
| x86: | ok |
| xtensa: | ok |
-----------------------
i.e. it's not marked as TODO, but not as supported either which would be misleading.
Thanks,
Ingo
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 32 lines · Ingo Molnar
Quoted 11 lines · Michael Ellerman
Quoted 5 lines
Quoted 2 lines
Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.
Please double check the PowerPC support matrix for correctness (if you haven't yet):
It looks good except for:
Quoted 1 line
rwsem-optimized: | ok | Optimized
asm/rwsem.h# arch provides optimized rwsem APIsI don't see an
rwsem.hin powerpc anywhere?Indeed, that slipped through. I fixed it to:
triton:~/tip> cat
Documentation/features/locking/rwsem-optimized/arch-support.txt#
# Feature name: rwsem-optimized
#Kconfig: Optimizedasm/rwsem.h
# description: arch provides optimized rwsem APIs
#
| powerpc: | TODO |triton:~/tip> cat
Documentation/features/time/irq-time-acct/arch-support.txt#
# Feature name: irq-time-acct
#Kconfig:HAVE_IRQ_TIME_ACCOUNTING
# description: arch supports precise IRQ time accounting
#
| powerpc: | .. |
Quoted 2 lines
i.e. it's not marked as TODO, but not as supported either which would be misleading.
Great thanks.
cheers
Jonathan Corbet
maintainerRe: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
In reply to Ingo MolnarQuoted 1 line · On Thu, 14 May 2015 12:35:44 +0200 Ingo Molnar <[email protected]> wrote:
Updated patch attached.
This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. It can be replaced, though, should you decide to completely rework the format again...:)
Thanks,
jon
Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 7 lines · Jonathan Corbet
Quoted 1 line · On Thu, 14 May 2015 12:35:44 +0200 Ingo Molnar…
Updated patch attached.
This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. [...]
Please don't, I've got a different structure for it, so that the Git log becomes a lot more usable. I'll post it after the weekend.
Thanks,
Ingo
Jonathan Corbet
maintainerRe: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Quoted 5 lines · On Sat, 23 May 2015 10:07:05 +0200 Ingo Molnar <[email protected]> wrote:
Quoted 2 lines
This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. [...]
Please don't, I've got a different structure for it, so that the Git log becomes a lot more usable. I'll post it after the weekend.
OK, fine, dropped.
Thanks,
jon
[GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/
Quoted 10 lines · Jonathan Corbet
Quoted 5 lines · On Sat, 23 May 2015 10:07:05 +0200 Ingo Molnar…
Quoted 2 lines
This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. [...]
Please don't, I've got a different structure for it, so that the Git log becomes a lot more usable. I'll post it after the weekend.
OK, fine, dropped.
Thanks!
A week late but I managed to complete it all and moved it into Git, for better structure and easy pulling.
Changes relative to the last submission:
- Added higher level subsystem directories to collect features by subsystem:
triton:~/tip> ls Documentation/features/
arch-support.txt core debug io lib list-arch.sh locking perf sched seccomp time vm
each subsystem directory contains the feature directories. For example locking has:
triton:~/tip> ls Documentation/features/locking/ cmpxchg-local lockdep queued-rwlocks queued-spinlocks rwsem-optimized
It's all pretty straightforward to navigate. Advantages are better visualization, plus git log is able to list changes per subsystem.
- Prettified the visualization some more.
- Improved/corrected the support matrices based on feedback to earlier submissions.
- Updated the support matrices to today's linux-next, so that by the time this shows up in upstream in the next merge window it's really recent. Most notably there's a new architecture in linux-next (h8300).
This structure should address all feedback that I got and should minimize the maintenance overhead (chance of conflicts).
Please pull it all from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/documentation
# HEAD: ce2073b138515f2da6bebf62277c8d069d1c9589 Documentation/features: Explain kernel feature descriptions and add visualization script
The -tip commits should appear soon as well, if anyone would like to take a look at the individual patches.
There's also a combo patch attached to this mail.
Thanks!
Ingo
------------------>
Ingo Molnar (44):
Documentation/features/vm: Add feature description and arch support status file for 'numa-memblock' Documentation/features/vm: Add feature description and arch support status file for 'PG_uncached' Documentation/features/lib: Add feature description and arch support status file for 'strncasecmp' Documentation/features/io: Add feature description and arch support status file for 'sg-chain' Documentation/features/vm: Add feature description and arch support status file for 'huge-vmap' Documentation/features/vm: Add feature description and arch support status file for 'pte_special' Documentation/features/vm: Add feature description and arch support status file for 'pmdp_splitting_flush' Documentation/features/debug: Add feature description and arch support status file for 'KASAN' Documentation/features/time: Add feature description and arch support status file for 'modern-timekeeping' Documentation/features/time: Add feature description and arch support status file for 'virt-cpuacct' Documentation/features/time: Add feature description and arch support status file for 'irq-time-acct' Documentation/features/vm: Add feature description and arch support status file for 'THP' Documentation/features/locking: Add feature description and arch support status file for 'rwsem-optimized' Documentation/features/sched: Add feature description and arch support status file for 'numa-balancing' Documentation/features/io: Add feature description and arch support status file for 'dma-contiguous' Documentation/features/io: Add feature description and arch support status file for 'dma_map_attrs' Documentation/features/core: Add feature description and arch support status file for 'tracehook' Documentation/features/vm: Add feature description and arch support status file for 'ioremap_prot' Documentation/features/locking: Add feature description and arch support status file for 'lockdep' Documentation/features/debug: Add feature description and arch support status file for 'stackprotector' Documentation/features/core: Add feature description and arch support status file for 'jump-labels' Documentation/features/seccomp: Add feature description and arch support status file for 'seccomp-filter' Documentation/features/time: Add feature description and arch support status file for 'context-tracking' Documentation/features/debug: Add feature description and arch support status file for 'kgdb' Documentation/features/time: Add feature description and arch support status file for 'clockevents' Documentation/features/vm: Add feature description and arch support status file for 'ELF-ASLR' Documentation/features/time: Add feature description and arch support status file for 'arch-tick-broadcast' Documentation/features/debug: Add feature description and arch support status file for 'kprobes' Documentation/features/debug: Add feature description and arch support status file for 'optprobes' Documentation/features/debug: Add feature description and arch support status file for 'kprobes-on-ftrace' Documentation/features/debug: Add feature description and arch support status file for 'uprobes' Documentation/features/debug: Add feature description and arch support status file for 'kretprobes' Documentation/features/debug: Add feature description and arch support status file for 'user-ret-profiler' Documentation/features/core: Add feature description and arch support status file for 'generic-idle-thread' Documentation/features/perf: Add feature description and arch support status file for 'kprobes-event' Documentation/features/io: Add feature description and arch support status file for 'dma-api-debug' Documentation/features/perf: Add feature description and arch support status file for 'perf-regs' Documentation/features/perf: Add feature description and arch support status file for 'perf-stackdump' Documentation/features/locking: Add feature description and arch support status file for 'cmpxchg-local' Documentation/features/debug: Add feature description and arch support status file for 'gcov-profile-all' Documentation/features/locking: Add feature description and arch support status file for 'queued-spinlocks' Documentation/features/locking: Add feature description and arch support status file for 'queued-rwlocks' Documentation/features/core: Add feature description and arch support status file for 'BPF-JIT' Documentation/features: Explain kernel feature descriptions and add visualization script
Documentation/features/arch-support.txt | 11 ++++++ .../features/core/BPF-JIT/arch-support.txt | 40 ++++++++++++++++++++++ .../core/generic-idle-thread/arch-support.txt | 40 ++++++++++++++++++++++ .../features/core/jump-labels/arch-support.txt | 40 ++++++++++++++++++++++ .../features/core/tracehook/arch-support.txt | 40 ++++++++++++++++++++++ .../features/debug/KASAN/arch-support.txt | 40 ++++++++++++++++++++++ .../debug/gcov-profile-all/arch-support.txt | 40 ++++++++++++++++++++++ Documentation/features/debug/kgdb/arch-support.txt | 40 ++++++++++++++++++++++ .../debug/kprobes-on-ftrace/arch-support.txt | 40 ++++++++++++++++++++++ .../features/debug/kprobes/arch-support.txt | 40 ++++++++++++++++++++++ .../features/debug/kretprobes/arch-support.txt | 40 ++++++++++++++++++++++ .../features/debug/optprobes/arch-support.txt | 40 ++++++++++++++++++++++ .../features/debug/stackprotector/arch-support.txt | 40 ++++++++++++++++++++++ .../features/debug/uprobes/arch-support.txt | 40 ++++++++++++++++++++++ .../debug/user-ret-profiler/arch-support.txt | 40 ++++++++++++++++++++++ .../features/io/dma-api-debug/arch-support.txt | 40 ++++++++++++++++++++++ .../features/io/dma-contiguous/arch-support.txt | 40 ++++++++++++++++++++++ .../features/io/dma_map_attrs/arch-support.txt | 40 ++++++++++++++++++++++ .../features/io/sg-chain/arch-support.txt | 40 ++++++++++++++++++++++ .../features/lib/strncasecmp/arch-support.txt | 40 ++++++++++++++++++++++ Documentation/features/list-arch.sh | 24 +++++++++++++ .../locking/cmpxchg-local/arch-support.txt | 40 ++++++++++++++++++++++ .../features/locking/lockdep/arch-support.txt | 40 ++++++++++++++++++++++ .../locking/queued-rwlocks/arch-support.txt | 40 ++++++++++++++++++++++ .../locking/queued-spinlocks/arch-support.txt | 40 ++++++++++++++++++++++ .../locking/rwsem-optimized/arch-support.txt | 40 ++++++++++++++++++++++ .../features/perf/kprobes-event/arch-support.txt | 40 ++++++++++++++++++++++ .../features/perf/perf-regs/arch-support.txt | 40 ++++++++++++++++++++++ .../features/perf/perf-stackdump/arch-support.txt | 40 ++++++++++++++++++++++ .../features/sched/numa-balancing/arch-support.txt | 40 ++++++++++++++++++++++ .../seccomp/seccomp-filter/arch-support.txt | 40 ++++++++++++++++++++++ .../time/arch-tick-broadcast/arch-support.txt | 40 ++++++++++++++++++++++ .../features/time/clockevents/arch-support.txt | 40 ++++++++++++++++++++++ .../time/context-tracking/arch-support.txt | 40 ++++++++++++++++++++++ .../features/time/irq-time-acct/arch-support.txt | 40 ++++++++++++++++++++++ .../time/modern-timekeeping/arch-support.txt | 40 ++++++++++++++++++++++ .../features/time/virt-cpuacct/arch-support.txt | 40 ++++++++++++++++++++++ .../features/vm/ELF-ASLR/arch-support.txt | 40 ++++++++++++++++++++++ .../features/vm/PG_uncached/arch-support.txt | 40 ++++++++++++++++++++++ Documentation/features/vm/THP/arch-support.txt | 40 ++++++++++++++++++++++ .../features/vm/huge-vmap/arch-support.txt | 40 ++++++++++++++++++++++ .../features/vm/ioremap_prot/arch-support.txt | 40 ++++++++++++++++++++++ .../features/vm/numa-memblock/arch-support.txt | 40 ++++++++++++++++++++++ .../vm/pmdp_splitting_flush/arch-support.txt | 40 ++++++++++++++++++++++ .../features/vm/pte_special/arch-support.txt | 40 ++++++++++++++++++++++ 45 files changed, 1755 insertions(+) create mode 100644 Documentation/features/arch-support.txt create mode 100644 Documentation/features/core/BPF-JIT/arch-support.txt create mode 100644 Documentation/features/core/generic-idle-thread/arch-support.txt create mode 100644 Documentation/features/core/jump-labels/arch-support.txt create mode 100644 Documentation/features/core/tracehook/arch-support.txt create mode 100644 Documentation/features/debug/KASAN/arch-support.txt create mode 100644 Documentation/features/debug/gcov-profile-all/arch-support.txt create mode 100644 Documentation/features/debug/kgdb/arch-support.txt create mode 100644 Documentation/features/debug/kprobes-on-ftrace/arch-support.txt create mode 100644 Documentation/features/debug/kprobes/arch-support.txt create mode 100644 Documentation/features/debug/kretprobes/arch-support.txt create mode 100644 Documentation/features/debug/optprobes/arch-support.txt create mode 100644 Documentation/features/debug/stackprotector/arch-support.txt create mode 100644 Documentation/features/debug/uprobes/arch-support.txt create mode 100644 Documentation/features/debug/user-ret-profiler/arch-support.txt create mode 100644 Documentation/features/io/dma-api-debug/arch-support.txt create mode 100644 Documentation/features/io/dma-contiguous/arch-support.txt create mode 100644 Documentation/features/io/dma_map_attrs/arch-support.txt create mode 100644 Documentation/features/io/sg-chain/arch-support.txt create mode 100644 Documentation/features/lib/strncasecmp/arch-support.txt create mode 100644 Documentation/features/list-arch.sh create mode 100644 Documentation/features/locking/cmpxchg-local/arch-support.txt create mode 100644 Documentation/features/locking/lockdep/arch-support.txt create mode 100644 Documentation/features/locking/queued-rwlocks/arch-support.txt create mode 100644 Documentation/features/locking/queued-spinlocks/arch-support.txt create mode 100644 Documentation/features/locking/rwsem-optimized/arch-support.txt create mode 100644 Documentation/features/perf/kprobes-event/arch-support.txt create mode 100644 Documentation/features/perf/perf-regs/arch-support.txt create mode 100644 Documentation/features/perf/perf-stackdump/arch-support.txt create mode 100644 Documentation/features/sched/numa-balancing/arch-support.txt create mode 100644 Documentation/features/seccomp/seccomp-filter/arch-support.txt create mode 100644 Documentation/features/time/arch-tick-broadcast/arch-support.txt create mode 100644 Documentation/features/time/clockevents/arch-support.txt create mode 100644 Documentation/features/time/context-tracking/arch-support.txt create mode 100644 Documentation/features/time/irq-time-acct/arch-support.txt create mode 100644 Documentation/features/time/modern-timekeeping/arch-support.txt create mode 100644 Documentation/features/time/virt-cpuacct/arch-support.txt create mode 100644 Documentation/features/vm/ELF-ASLR/arch-support.txt create mode 100644 Documentation/features/vm/PG_uncached/arch-support.txt create mode 100644 Documentation/features/vm/THP/arch-support.txt create mode 100644 Documentation/features/vm/huge-vmap/arch-support.txt create mode 100644 Documentation/features/vm/ioremap_prot/arch-support.txt create mode 100644 Documentation/features/vm/numa-memblock/arch-support.txt create mode 100644 Documentation/features/vm/pmdp_splitting_flush/arch-support.txt create mode 100644 Documentation/features/vm/pte_special/arch-support.txt
Documentation/features/arch-support.txt new file +11 -0
@@ -0,0 +1,11 @@ + +For generic kernel features that need architecture support, the +arch-support.txt file in each feature directory shows the arch +support matrix, for all upstream Linux architectures. + +The meaning of entries in the tables is: + + | ok | # feature supported by the architecture + |TODO| # feature not yet supported by the architecture + | .. | # feature cannot be supported by the hardware +
Documentation/features/core/BPF-JIT/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: BPF-JIT +# Kconfig: HAVE_BPF_JIT +# description: arch supports BPF JIT optimizations +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/core/generic-idle-thread/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: generic-idle-thread +# Kconfig: GENERIC_SMP_IDLE_THREAD +# description: arch makes use of the generic SMP idle thread facility +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/core/jump-labels/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: jump-labels +# Kconfig: HAVE_ARCH_JUMP_LABEL +# description: arch supports live patched, high efficiency branches +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/core/tracehook/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: tracehook +# Kconfig: HAVE_ARCH_TRACEHOOK +# description: arch supports tracehook (ptrace) register handling APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | ok | + | cris: | TODO | + | frv: | ok | + | h8300: | TODO | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/KASAN/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: KASAN +# Kconfig: HAVE_ARCH_KASAN +# description: arch supports the KASAN runtime memory checker +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/gcov-profile-all/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: gcov-profile-all +# Kconfig: ARCH_HAS_GCOV_PROFILE_ALL +# description: arch supports whole-kernel GCOV code coverage profiling +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/kgdb/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: kgdb +# Kconfig: HAVE_ARCH_KGDB +# description: arch supports the kGDB kernel debugger +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/kprobes-on-ftrace/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: kprobes-on-ftrace +# Kconfig: HAVE_KPROBES_ON_FTRACE +# description: arch supports combined kprobes and ftrace live patching +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/kprobes/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: kprobes +# Kconfig: HAVE_KPROBES +# description: arch supports live patched kernel probe +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | TODO | + | avr32: | ok | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/kretprobes/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: kretprobes +# Kconfig: HAVE_KRETPROBES +# description: arch supports kernel function-return probes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/optprobes/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: optprobes +# Kconfig: HAVE_OPTPROBES +# description: arch supports live patched optprobes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/stackprotector/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: stackprotector +# Kconfig: HAVE_CC_STACKPROTECTOR +# description: arch supports compiler driven stack overflow protection +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/uprobes/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: uprobes +# Kconfig: ARCH_SUPPORTS_UPROBES +# description: arch supports live patched user probes +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/debug/user-ret-profiler/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: user-ret-profiler +# Kconfig: HAVE_USER_RETURN_NOTIFIER +# description: arch supports user-space return from system call profiler +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/io/dma-api-debug/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: dma-api-debug +# Kconfig: HAVE_DMA_API_DEBUG +# description: arch supports DMA debug facilities +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | ok | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/io/dma-contiguous/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: dma-contiguous +# Kconfig: HAVE_DMA_CONTIGUOUS +# description: arch supports the DMA CMA (continuous memory allocator) +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/io/dma_map_attrs/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: dma_map_attrs +# Kconfig: HAVE_DMA_ATTRS +# description: arch provides dma_*map*_attrs() APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | ok | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/io/sg-chain/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: sg-chain +# Kconfig: ARCH_HAS_SG_CHAIN +# description: arch supports chained scatter-gather lists +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/lib/strncasecmp/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: strncasecmp +# Kconfig: __HAVE_ARCH_STRNCASECMP +# description: arch provides an optimized strncasecmp() function +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | TODO | + | xtensa: | TODO | + -----------------------
Documentation/features/list-arch.sh new file +24 -0
@@ -0,0 +1,24 @@ +# +# Small script that visualizes the kernel feature support status +# of an architecture. +# +# (If no arguments are given then it will print the host architecture's status.) +# + +ARCH=${1:-$(arch | sed 's/x86_64/x86/' | sed 's/i386/x86/')} + +cd $(dirname $0) +echo "#" +echo "# Kernel feature support matrix of the '$ARCH' architecture:" +echo "#" + +for F in */*/arch-support.txt; do + SUBSYS=$(echo $F | cut -d/ -f1) + N=$(grep -h "^# Feature name:" $F | cut -c25-) + C=$(grep -h "^# Kconfig:" $F | cut -c25-) + D=$(grep -h "^# description:" $F | cut -c25-) + S=$(grep -hw $ARCH $F | cut -d\| -f3) + + printf "%10s/%-22s:%s| %35s # %s\n" "$SUBSYS" "$N" "$S" "$C" "$D" +done +
Documentation/features/locking/cmpxchg-local/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: cmpxchg-local +# Kconfig: HAVE_CMPXCHG_LOCAL +# description: arch supports the this_cpu_cmpxchg() API +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/locking/lockdep/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: lockdep +# Kconfig: LOCKDEP_SUPPORT +# description: arch supports the runtime locking correctness debug facility +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/locking/queued-rwlocks/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: queued-rwlocks +# Kconfig: ARCH_USE_QUEUED_RWLOCKS +# description: arch supports queued rwlocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/locking/queued-spinlocks/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: queued-spinlocks +# Kconfig: ARCH_USE_QUEUED_SPINLOCKS +# description: arch supports queued spinlocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/locking/rwsem-optimized/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: rwsem-optimized +# Kconfig: Optimized asm/rwsem.h +# description: arch provides optimized rwsem APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/perf/kprobes-event/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: kprobes-event +# Kconfig: HAVE_REGS_AND_STACK_ACCESS_API +# description: arch supports kprobes with perf events +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/perf/perf-regs/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: perf-regs +# Kconfig: HAVE_PERF_REGS +# description: arch supports perf events register access +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/perf/perf-stackdump/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: perf-stackdump +# Kconfig: HAVE_PERF_USER_STACK_DUMP +# description: arch supports perf events stack dumps +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/sched/numa-balancing/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: numa-balancing +# Kconfig: ARCH_SUPPORTS_NUMA_BALANCING +# description: arch supports NUMA balancing +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | .. | + | arm64: | .. | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | h8300: | .. | + | hexagon: | .. | + | ia64: | TODO | + | m32r: | .. | + | m68k: | .. | + | metag: | .. | + | microblaze: | .. | + | mips: | TODO | + | mn10300: | .. | + | nios2: | .. | + | openrisc: | .. | + | parisc: | .. | + | powerpc: | ok | + | s390: | .. | + | score: | .. | + | sh: | .. | + | sparc: | TODO | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/seccomp/seccomp-filter/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: seccomp-filter +# Kconfig: HAVE_ARCH_SECCOMP_FILTER +# description: arch supports seccomp filters +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/time/arch-tick-broadcast/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: arch-tick-broadcast +# Kconfig: ARCH_HAS_TICK_BROADCAST +# description: arch provides tick_broadcast() +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | TODO | + | xtensa: | TODO | + -----------------------
Documentation/features/time/clockevents/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: clockevents +# Kconfig: GENERIC_CLOCKEVENTS +# description: arch support generic clock events +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | ok | + | arm64: | ok | + | avr32: | ok | + | blackfin: | ok | + | c6x: | ok | + | cris: | ok | + | frv: | TODO | + | h8300: | ok | + | hexagon: | ok | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | ok | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/time/context-tracking/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: context-tracking +# Kconfig: HAVE_CONTEXT_TRACKING +# description: arch supports context tracking for NO_HZ_FULL +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/time/irq-time-acct/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: irq-time-acct +# Kconfig: HAVE_IRQ_TIME_ACCOUNTING +# description: arch supports precise IRQ time accounting +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | .. | + | arc: | TODO | + | arm: | ok | + | arm64: | .. | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | .. | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | .. | + | powerpc: | .. | + | s390: | .. | + | score: | TODO | + | sh: | TODO | + | sparc: | .. | + | tile: | .. | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/time/modern-timekeeping/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: modern-timekeeping +# Kconfig: !ARCH_USES_GETTIMEOFFSET +# description: arch does not use arch_gettimeoffset() anymore +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | ok | + | arm: | TODO | + | arm64: | ok | + | avr32: | ok | + | blackfin: | TODO | + | c6x: | ok | + | cris: | TODO | + | frv: | ok | + | h8300: | ok | + | hexagon: | ok | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | ok | + | nios2: | ok | + | openrisc: | ok | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | ok | + | um: | ok | + | unicore32: | ok | + | x86: | ok | + | xtensa: | ok | + -----------------------
Documentation/features/time/virt-cpuacct/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: virt-cpuacct +# Kconfig: HAVE_VIRT_CPU_ACCOUNTING +# description: arch supports precise virtual CPU time accounting +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | ok | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | ok | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | ok | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/vm/ELF-ASLR/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: ELF-ASLR +# Kconfig: ARCH_HAS_ELF_RANDOMIZE +# description: arch randomizes the stack, heap and binary images of ELF binaries +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/vm/PG_uncached/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: PG_uncached +# Kconfig: ARCH_USES_PG_UNCACHED +# description: arch supports the PG_uncached page flag +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | ok | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/vm/THP/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: THP +# Kconfig: HAVE_ARCH_TRANSPARENT_HUGEPAGE +# description: arch supports transparent hugepages +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | ok | + | arm64: | ok | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | h8300: | .. | + | hexagon: | .. | + | ia64: | TODO | + | m32r: | .. | + | m68k: | .. | + | metag: | .. | + | microblaze: | .. | + | mips: | ok | + | mn10300: | .. | + | nios2: | .. | + | openrisc: | .. | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | .. | + | sh: | .. | + | sparc: | ok | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/vm/huge-vmap/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: huge-vmap +# Kconfig: HAVE_ARCH_HUGE_VMAP +# description: arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/vm/ioremap_prot/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: ioremap_prot +# Kconfig: HAVE_IOREMAP_PROT +# description: arch has ioremap_prot() +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | ok | + | arm: | TODO | + | arm64: | TODO | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | TODO | + | score: | TODO | + | sh: | ok | + | sparc: | TODO | + | tile: | ok | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/vm/numa-memblock/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: numa-memblock +# Kconfig: HAVE_MEMBLOCK_NODE_MAP +# description: arch supports NUMA aware memblocks +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | .. | + | arm: | .. | + | arm64: | .. | + | avr32: | .. | + | blackfin: | .. | + | c6x: | .. | + | cris: | .. | + | frv: | .. | + | h8300: | .. | + | hexagon: | .. | + | ia64: | ok | + | m32r: | TODO | + | m68k: | .. | + | metag: | ok | + | microblaze: | ok | + | mips: | ok | + | mn10300: | TODO | + | nios2: | .. | + | openrisc: | .. | + | parisc: | .. | + | powerpc: | ok | + | s390: | ok | + | score: | ok | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | .. | + | unicore32: | .. | + | x86: | ok | + | xtensa: | .. | + -----------------------
Documentation/features/vm/pmdp_splitting_flush/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: pmdp_splitting_flush +# Kconfig: __HAVE_ARCH_PMDP_SPLITTING_FLUSH +# description: arch supports the pmdp_splitting_flush() VM API +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | ok | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Documentation/features/vm/pte_special/arch-support.txt new file +40 -0
@@ -0,0 +1,40 @@ +# +# Feature name: pte_special +# Kconfig: __HAVE_ARCH_PTE_SPECIAL +# description: arch supports the pte_special()/pte_mkspecial() VM APIs +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | ok | + | arm64: | ok | + | avr32: | TODO | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | ok | + | s390: | ok | + | score: | TODO | + | sh: | ok | + | sparc: | ok | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + -----------------------
Jonathan Corbet
maintainerRe: [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/
Quoted 2 lines · On Wed, 3 Jun 2015 13:03:55 +0200 Ingo Molnar <[email protected]> wrote:
A week late but I managed to complete it all and moved it into Git, for better structure and easy pulling.
Pulled into the docs tree - thanks!
jon
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
In reply to Josh TriplettQuoted 6 lines · Josh Triplett
Quoted 5 lines · Ingo Molnar
From
93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aaMon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH]Documentation/arch: AddDocumentation/arch-features.txt
Quoted 6 lines
Quoted 4 lines
Add a support matrix for various generic kernel features that need architecture support.
Signed-off-by Ingo Molnar <[email protected]>Could you add a column for the bpf JIT?
Added it, it now looks like this (see it in the first column):
...
BPF JIT: HAVE_BPF_JIT
irq time acct:--------------------------------------------------.
THP:-------------------------------------------. |
gcov profile all:------------------------------------. | |
rwsem optimized:-----------------------------. | | |
queued spinlocks:----------------------. | | | |
queued rwlocks:---------------. | | | | |
numa balancing:--------. | | | | | |
BPF JIT:-. | | | | | | |
| | | | | | | |
---------------------------------------------------------------------------
alpha | TODO | TODO | TODO | TODO | ok | TODO | TODO | ok |
arc | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
arm | ok | .. | TODO | TODO | TODO | ok | ok | ok |
arm64 | ok | .. | TODO | TODO | TODO | ok | ok | ok |
avr32 | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
blackfin | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
c6x | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
cris | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
frv | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
hexagon | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
ia64 | TODO | TODO | TODO | TODO | ok | TODO | TODO | ok |
m32r | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
m68k | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
metag | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
microblaze | TODO | .. | TODO | TODO | TODO | ok | .. | TODO |
mips | ok | TODO | TODO | TODO | TODO | TODO | ok | ok |
mn10300 | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
nios2 | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
openrisc | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
parisc | TODO | .. | TODO | TODO | TODO | TODO | TODO | ok |
powerpc | ok | ok | TODO | TODO | TODO | ok | ok | ok |
s390 | ok | .. | TODO | TODO | ok | ok | ok | ok |
score | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
sh | TODO | .. | TODO | TODO | ok | ok | .. | TODO |
sparc | ok | TODO | TODO | TODO | ok | TODO | ok | ok |
tile | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
um | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
unicore32 | TODO | .. | TODO | TODO | TODO | TODO | .. | TODO |
x86 | ok | ok | ok | ok | ok | ok | ok | ok |
xtensa | TODO | .. | TODO | TODO | ok | TODO | .. | ok |---------------------------------------------------------------------------
Thanks,
Ingo
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
In reply to Ingo MolnarQuoted 6 lines · Ingo Molnar
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
Kconfigvariable that it's tracking, e.g.:irq time acct:
HAVE_IRQ_TIME_ACCOUNTING
Regarding that one specifically, as far as I can see, HAVE_IRQ_TIME_ACCOUNTING is only relevant for tick-based time accounting. If you have CONFIG_VIRT_CPU_ACCOUNTING you get accurate irq time accounting with or without HAVE_IRQ_TIME_ACCOUNTING. So how about making this one:
irq time acct: HAVE_IRQ_TIME_ACCOUNTING || VIRT_CPU_ACCOUNTING
That would make the "irq time acct" entry for powerpc be "ok".
Paul.
Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
Quoted 14 lines · Paul Mackerras
Quoted 6 lines · Ingo Molnar
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
Kconfigvariable that it's tracking, e.g.:irq time acct:
HAVE_IRQ_TIME_ACCOUNTINGRegarding that one specifically, as far as I can see,
HAVE_IRQ_TIME_ACCOUNTINGis only relevant for tick-based time accounting. If you haveCONFIG_VIRT_CPU_ACCOUNTINGyou get accurate irq time accounting with or withoutHAVE_IRQ_TIME_ACCOUNTING. So how about making this one:
Quoted 3 lines
irq time acct: HAVE_IRQ_TIME_ACCOUNTING || VIRT_CPU_ACCOUNTINGThat would make the "irq time acct" entry for powerpc be "ok".
Yeah, indeed.
I fixed that, PowerPC now looks like this:
irq time acct:-------------------------------------------.
THP:------------------------------------. |
gcov profile all:-----------------------------. | |
rwsem optimized:----------------------. | | |
queued spinlocks:---------------. | | | |
queued rwlocks:--------. | | | | |
numa balancing:-. | | | | | |
| | | | | | |--------------------------------------------------------------------
powerpc | ok | TODO | TODO | TODO | ok | ok | ok |
Thanks,
Ingo
Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
In reply to Ingo MolnarQuoted 27 lines · Ingo Molnar
(fixed the subject.)
So this is the final version for now:
- add a fourth table
- fix errors in earlier tables, in particular I missed some PowerPC Kconfigs
- 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 |
Quoted 8 lines
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 '..'.
Please let me know about errors in these tables, and I can also add more features/facilities as well if I missed any.
Thanks,
Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p
m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
context-tracking T T K K T T T T T T T T T T T K T T T T K T T T K K T T K T
kgdb T K K K T K T T T K T T T T K K K K T T K T T K K K T T K T
modern-timekeeping K K T K K T K T K K K T T K K K K K K K K K K K K K K K K K
clockevents K K K K K K K K T K T T K K K K K K K T K K K K K K K K K K
ELF-ASLR T T K K T T T T T T T T T T T K T T T T K K T T T T T T K T
arch-tick-broadcast T T K K T T T T T T T T T T T K T T T T K T T T T T T T T T
kprobes T K K T K T T T T T K T T T T K T T T T K K T K K K T T K T
optprobes T T K T T T T T T T T T T T T T T T T T T T T T T K T T K T
kprobes-on-ftrace T T T T T T T T T T T T T T T T T T T T T T T T T T T T K T
uprobes T T K T T T T T T T T T T T T T T T T T K K T T T T T T K T
kretprobes T K K T T T T T T T K T T T T K T T T T K K T K K K T T K T
user-ret-profiler T T T T T T T T T T T T T T T T T T T T T T T T T K T T K T
ioremap_prot() T K T T T T T T T T T T T T T T T T T T K T T K T K T T K T
tracehook T K K K T K K T K K K T T K T K K K K T K K T K K K T T K T
generic-idle-thread K K K K T K T T T K K T T K T K T T T K K K T K K T T T K K
dma_*map*_attrs() K T K K T T T T T K K T T T K K T T K T K K T K K K T K K T
dma-contiguous T T K K T T T T T T T T T T T K T T T T T T T T T T T T K T
kprobes-event T T K T T T T T T K T T T T T T T T T T K K T K T K T T K T dma-api-debug T T K K T T K T T T K T T T K K T T T T K K T K K K T T K T
perf-regs T T K K T T T T T T T T T T T T T T T T T T T T T T T T K T
perf-stackdump T T K K T T T T T T T T T T T T T T T T T T T T T T T T K T
cmpxchg-local T T T T T T T T T T T T T T T T T T T T T K T T T T T T K T
virt-cpuacct K T K K T T T T T T K T T T T K T T T K K K T T K K T T K T
irq-time-acct T T K T T T T T T T T T T T T K T T T T T T T T T T T T K K
THP T - K K - - - - - - T - - - - K - - - T K K - - K T - - K -
gcov-profile-all T T K K T T T T T T T T T T K T T T T T K K T K T T T T K T
Legend:
K = ok
T = TODO
- = cannot
Michele
Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
Quoted 5 lines · Michele Curti
Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p
Quoted 15 lines
m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
I thought about that, too, as there are more (not fully implemented) features than architectures. But I expect more merge conflicts with the transposed version.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
Quoted 22 lines · Geert Uytterhoeven
Quoted 5 lines · Michele Curti
Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p
Quoted 15 lines
m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
Quoted 4 lines
I thought about that, too, as there are more (not fully implemented) features than architectures. But I expect more merge conflicts with the transposed version.
There is another reason for the transposed version, which is that it makes adding features to the list much easier. At the same time, plain ASCII is horrific for maintaining tables...
-hpa
Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
In reply to Geert UytterhoevenQuoted 22 lines · Geert Uytterhoeven
Quoted 5 lines · Michele Curti
Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p
Quoted 15 lines
m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
Quoted 4 lines
I thought about that, too, as there are more (not fully implemented) features than architectures. But I expect more merge conflicts with the transposed version.
There is another reason for the transposed version, which is that it makes adding features to the list much easier. At the same time, plain ASCII is horrific for maintaining tables...
-hpa
Quoted 13 lines · Andrew Morton
Quoted 10 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett…
Introduce a new
CONFIG_HAVE_COPY_THREAD_TLSfor architectures to opt into, and a newcopy_thread_tlsthat accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down tocopy_thread_tls.Architectures that don't opt into
copy_thread_tlswill continue to ignore the C argument tosys_clonein favor of thept_regscaptured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.
Quoted 5 lines
What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html
In this case, there will be a very clear incentive to switch to CONFIG_HAVE_COPY_THREAD_TLS: if you don't, you can't enable new syscalls.
- Josh Triplett
Andrew Morton
maintainerQuoted 42 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett…
clone with
CLONE_SETTLSaccepts an argument to set the thread-local storage area for the new thread.sys_clonedeclares an int argumenttls_valin the appropriate point in the argument list (based on the variousCLONE_BACKWARDSvariants), but doesn't actually use or pass along that argument. Instead,sys_clonecallsdo_fork, which callscopy_process, which calls the arch-specificcopy_thread, andcopy_threadpulls the corresponding syscall argument out of thept_regscaptured at kernel entry (knowing what argument of clone that architecture passes tls in).Apart from being awful and inscrutable, that also only works because only one code path into
copy_threadcan pass theCLONE_SETTLSflag, and that code path comes fromsys_clonewith its architecture-specific argument-passing order. This prevents introducing a new version of the clone system call without propagating the same architecture-specific position of the tls argument.However, there's no reason to pull the argument out of
pt_regswhensys_clonecould just pass it down via C function call arguments.Introduce a new
CONFIG_HAVE_COPY_THREAD_TLSfor architectures to opt into, and a newcopy_thread_tlsthat accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down tocopy_thread_tls.Architectures that don't opt into
copy_thread_tlswill continue to ignore the C argument tosys_clonein favor of thept_regscaptured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.Patch co-authored by Josh Triplett and Thiago Macieira.
...
kernel/fork.c +3
-0@@ -1698,20 +1701,34 @@ long do_fork(unsigned long clone_flags,return nr; } +#ifndef CONFIG_HAVE_COPY_THREAD_TLS +/* For compatibility with architectures that call do_fork directly rather than +* using the syscall entry points below. */
kernel/fork.c long do_fork(unsigned long clone_flags, · line 1716
Quoted 10 lines
kernel/fork.c +10
-0+long do_fork (unsigned long clone_flags, +unsigned long stack_start, +unsigned long stack_size, +int __user *parent_tidptr, +int __user *child_tidptr) +{ +return _do_fork (clone_flags, stack_start, stack_size, + parent_tidptr, child_tidptr,0 ); +} +#endif
drivers/misc/kgdbts.c:lookup_addr() has a reference to do_fork(). Doesn't link, with a basic `make allmodconfig'.
Quoted 41 lines · Andrew Morton
Quoted 39 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett…
clone with
CLONE_SETTLSaccepts an argument to set the thread-local storage area for the new thread.sys_clonedeclares an int argumenttls_valin the appropriate point in the argument list (based on the variousCLONE_BACKWARDSvariants), but doesn't actually use or pass along that argument. Instead,sys_clonecallsdo_fork, which callscopy_process, which calls the arch-specificcopy_thread, andcopy_threadpulls the corresponding syscall argument out of thept_regscaptured at kernel entry (knowing what argument of clone that architecture passes tls in).Apart from being awful and inscrutable, that also only works because only one code path into
copy_threadcan pass theCLONE_SETTLSflag, and that code path comes fromsys_clonewith its architecture-specific argument-passing order. This prevents introducing a new version of the clone system call without propagating the same architecture-specific position of the tls argument.However, there's no reason to pull the argument out of
pt_regswhensys_clonecould just pass it down via C function call arguments.Introduce a new
CONFIG_HAVE_COPY_THREAD_TLSfor architectures to opt into, and a newcopy_thread_tlsthat accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down tocopy_thread_tls.Architectures that don't opt into
copy_thread_tlswill continue to ignore the C argument tosys_clonein favor of thept_regscaptured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.Patch co-authored by Josh Triplett and Thiago Macieira.
...
(quoted diff) +0
-0@@ -1698,20 +1701,34 @@ long do_fork(unsigned long clone_flags, return nr; }
Quoted 16 lines
Review long do_fork(unsigned long clone_flags, · line 1716
Quoted 13 lines
(quoted diff) +13
-0+#ifndef CONFIG_HAVE_COPY_THREAD_TLS +/* For compatibility with architectures that call do_fork directly rather than + * using the syscall entry points below. */ +long do_fork(unsigned long clone_flags, + unsigned long stack_start, + unsigned long stack_size, + int __user *parent_tidptr, + int __user *child_tidptr) +{ + return _do_fork(clone_flags, stack_start, stack_size, + parent_tidptr, child_tidptr, 0); +} +#endifdrivers/misc/kgdbts.c:lookup_addr() has a reference to
do_fork(). Doesn't link, with a basic `make allmodconfig'.
Odd; not sure how it built with allyesconfig at the time (which I did test).
However, dropping the #ifndef is the wrong fix. do_fork will go away *completely* once all architectures opt into CONFIG_HAVE_COPY_THREAD_TLS, and architectures that opt in won't pass through do_fork. kgdb wants to capture forks, so it wants _do_fork. The right fix is to make _do_fork non-static (which makes me sad, but oh well), and make kgdb reference _do_fork instead of do_fork (though the string should remain "do_fork" for compatibility):
Here's an incremental patch for that, to be squashed into the first of the two patches per your standard procedure for -mm; does this fix the issue you observed?
--- 8< ---
Quoted 1 line
From
fd599319630b33b829dc50b4f3c88016e715cd76Mon Sep 17 00:00:00 2001
From: Josh Triplett <[email protected]>
Date: Wed, 13 May 2015 08:18:47 -0700
Subject: [PATCH] Fix "clone: Support passing tls argument via C rather than pt_regs magic" for kgdb
Should be squashed into "clone: Support passing tls argument via C rather than pt_regs magic". kgdb wants to reference the real fork function, which is now _do_fork.
--- drivers/misc/kgdbts.c | 2 +- include/linux/sched.h | 1 + kernel/fork.c | 13 ++++++------- 3 files changed, 8 insertions(+), 8 deletions(-)
drivers/misc/kgdbts.c +1 -1
@@ -220,7 +220,7 @@ static unsigned long lookup_addr(char *arg)else if (!strcmp (arg,"sys_open" )) addr = (unsigned long )do_sys_open;else if (!strcmp (arg,"do_fork" )) - addr = (unsigned long )do_fork; + addr = (unsigned long )_do_fork;else if (!strcmp (arg,"hw_break_val" )) addr = (unsigned long )&hw_break_val; addr = (unsigned long )dereference_function_descriptor ((void *)addr);
include/linux/sched.h +1 -0
@@ -2514,6 +2514,7 @@ extern int do_execveat(int, struct filename *, const char __user * const __user *, const char __user * const __user *, int); +extern long _do_fork (unsigned long ,unsigned long ,unsigned long ,int __user *,int __user *,unsigned long );extern long do_fork (unsigned long ,unsigned long ,unsigned long ,int __user *,int __user *);struct task_struct *fork_idle (int );extern pid_t kernel_thread (int (*fn)(void *),void *arg,unsigned long flags);
kernel/fork.c +6 -7
@@ -1629,13 +1629,12 @@ struct task_struct *fork_idle(int cpu)* It copies the process, and if successful kick-starts * it and waits for it to finish using the VM if required. */ -static long _do_fork ( -unsigned long clone_flags, -unsigned long stack_start, -unsigned long stack_size, -int __user *parent_tidptr, -int __user *child_tidptr, -unsigned long tls) +long _do_fork (unsigned long clone_flags, +unsigned long stack_start, +unsigned long stack_size, +int __user *parent_tidptr, +int __user *child_tidptr, +unsigned long tls) {struct task_struct *p;int trace =0 ;
Signature · 1 line
2.1.4