2015-05-11 19:29:55

by Josh Triplett

[permalink] [raw]
Subject: [PATCHv2 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.

Signed-off-by: Josh Triplett <[email protected]>
Acked-by: Andy Lutomirski <[email protected]>
---
arch/Kconfig | 7 ++++++
include/linux/sched.h | 14 ++++++++++++
include/linux/syscalls.h | 6 +++---
kernel/fork.c | 55 +++++++++++++++++++++++++++++++-----------------
4 files changed, 60 insertions(+), 22 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 05d7a8a..4834a58 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -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
#
diff --git a/include/linux/sched.h b/include/linux/sched.h
index a419b65..2cc88c6 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -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);

diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 76d1e38..bb51bec 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -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

diff --git a/kernel/fork.c b/kernel/fork.c
index cf65139..b3dadf4 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1192,7 +1192,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
unsigned long stack_size,
int __user *child_tidptr,
struct pid *pid,
- int trace)
+ int trace,
+ unsigned long tls)
{
int retval;
struct task_struct *p;
@@ -1401,7 +1402,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
retval = copy_io(clone_flags, p);
if (retval)
goto bad_fork_cleanup_namespaces;
- retval = copy_thread(clone_flags, stack_start, stack_size, p);
+ retval = copy_thread_tls(clone_flags, stack_start, stack_size, p, tls);
if (retval)
goto bad_fork_cleanup_io;

@@ -1613,7 +1614,7 @@ static inline void init_idle_pids(struct pid_link *links)
struct task_struct *fork_idle(int cpu)
{
struct task_struct *task;
- task = copy_process(CLONE_VM, 0, 0, NULL, &init_struct_pid, 0);
+ task = copy_process(CLONE_VM, 0, 0, NULL, &init_struct_pid, 0, 0);
if (!IS_ERR(task)) {
init_idle_pids(task->pids);
init_idle(task, cpu);
@@ -1628,11 +1629,13 @@ 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.
*/
-long do_fork(unsigned long clone_flags,
- unsigned long stack_start,
- unsigned long stack_size,
- int __user *parent_tidptr,
- int __user *child_tidptr)
+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)
{
struct task_struct *p;
int trace = 0;
@@ -1657,7 +1660,7 @@ long do_fork(unsigned long clone_flags,
}

p = copy_process(clone_flags, stack_start, stack_size,
- child_tidptr, NULL, trace);
+ child_tidptr, NULL, trace, tls);
/*
* Do this prior waking up the new thread - the thread pointer
* might get invalid after that point, if the thread exits quickly.
@@ -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. */
+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
+
/*
* Create a kernel thread.
*/
pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
- return do_fork(flags|CLONE_VM|CLONE_UNTRACED, (unsigned long)fn,
- (unsigned long)arg, NULL, NULL);
+ return _do_fork(flags|CLONE_VM|CLONE_UNTRACED, (unsigned long)fn,
+ (unsigned long)arg, NULL, NULL, 0);
}

#ifdef __ARCH_WANT_SYS_FORK
SYSCALL_DEFINE0(fork)
{
#ifdef CONFIG_MMU
- return do_fork(SIGCHLD, 0, 0, NULL, NULL);
+ return _do_fork(SIGCHLD, 0, 0, NULL, NULL, 0);
#else
/* can not support in nommu mode */
return -EINVAL;
@@ -1722,8 +1739,8 @@ SYSCALL_DEFINE0(fork)
#ifdef __ARCH_WANT_SYS_VFORK
SYSCALL_DEFINE0(vfork)
{
- return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0,
- 0, NULL, NULL);
+ return _do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0,
+ 0, NULL, NULL, 0);
}
#endif

@@ -1731,27 +1748,27 @@ SYSCALL_DEFINE0(vfork)
#ifdef CONFIG_CLONE_BACKWARDS
SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
int __user *, parent_tidptr,
- int, tls_val,
+ unsigned long, tls,
int __user *, child_tidptr)
#elif defined(CONFIG_CLONE_BACKWARDS2)
SYSCALL_DEFINE5(clone, unsigned long, newsp, unsigned long, clone_flags,
int __user *, parent_tidptr,
int __user *, child_tidptr,
- int, tls_val)
+ unsigned long, tls)
#elif defined(CONFIG_CLONE_BACKWARDS3)
SYSCALL_DEFINE6(clone, unsigned long, clone_flags, unsigned long, newsp,
int, stack_size,
int __user *, parent_tidptr,
int __user *, child_tidptr,
- int, tls_val)
+ unsigned long, tls)
#else
SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
int __user *, parent_tidptr,
int __user *, child_tidptr,
- int, tls_val)
+ unsigned long, tls)
#endif
{
- return do_fork(clone_flags, newsp, 0, parent_tidptr, child_tidptr);
+ return _do_fork(clone_flags, newsp, 0, parent_tidptr, child_tidptr, tls);
}
#endif

--
2.1.4


2015-05-12 21:22:54

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic

On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:

> 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.

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.

2015-05-12 21:39:53

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic

On Tue, May 12, 2015 at 02:22:50PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:
>
> > 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.
>
> 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.

If only there was a linux-arch list to which arch maintainers should
subscribe... oh wait :-)

2015-05-12 21:49:16

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic

On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <[email protected]> wrote:

> > 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.
>
> 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.

2015-05-13 00:53:49

by Josh Triplett

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic

On Tue, May 12, 2015 at 02:22:50PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:
>
> > 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.
>
> 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

2015-05-13 08:34:52

by Ingo Molnar

[permalink] [raw]
Subject: [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO


* Andrew Morton <[email protected]> wrote:

> On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <[email protected]> wrote:
>
> > > 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.
> >
> > 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.

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

=======================>
>From 33a487046b16971564d323079f66fb63aa870f4d Mon 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.

Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/arch-TODO | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)

diff --git a/Documentation/arch-TODO b/Documentation/arch-TODO
new file mode 100644
index 000000000000..bfa289639b1c
--- /dev/null
+++ b/Documentation/arch-TODO
@@ -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 |
+----------------------------------------------------------------------------------
+

2015-05-13 08:58:26

by Ingo Molnar

[permalink] [raw]
Subject: [RFC PATCH v2] Documentation/arch: Add Documentation/arch-TODO


Added a second table with more features listed.

Thanks,

Ingo

=======================>
>From 32acc8a058a166d177346cfe59b6bc930f9e6471 Mon 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.

Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/arch-TODO | 89 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 89 insertions(+)

diff --git a/Documentation/arch-TODO b/Documentation/arch-TODO
new file mode 100644
index 000000000000..adf05e4c353f
--- /dev/null
+++ b/Documentation/arch-TODO
@@ -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 |
+----------------------------------------------------------------------------------

2015-05-13 09:24:32

by Ingo Molnar

[permalink] [raw]
Subject: [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO


The feature support matrix now includes a third table as well.

Thanks,

Ingo

======================>
>From c6170954222f839b039f202bea46a85491b0c067 Mon 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.

Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/arch-TODO | 134 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 134 insertions(+)

diff --git a/Documentation/arch-TODO b/Documentation/arch-TODO
new file mode 100644
index 000000000000..a577b185c293
--- /dev/null
+++ b/Documentation/arch-TODO
@@ -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 |
+----------------------------------------------------------------------------------

2015-05-13 09:46:32

by Ingo Molnar

[permalink] [raw]
Subject: 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

==========================>
>From a44b9e91788a2628e1223d143024de4572a924c3 Mon 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.

Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/arch-TODO | 169 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 169 insertions(+)

diff --git a/Documentation/arch-TODO b/Documentation/arch-TODO
new file mode 100644
index 000000000000..0880914e1eaf
--- /dev/null
+++ b/Documentation/arch-TODO
@@ -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 |
+----------------------------------------

2015-05-13 09:48:05

by Ingo Molnar

[permalink] [raw]
Subject: [RFC PATCH v5] 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

==========================>
>From a44b9e91788a2628e1223d143024de4572a924c3 Mon 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.

Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/arch-TODO | 169 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 169 insertions(+)

diff --git a/Documentation/arch-TODO b/Documentation/arch-TODO
new file mode 100644
index 000000000000..0880914e1eaf
--- /dev/null
+++ b/Documentation/arch-TODO
@@ -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 |
+----------------------------------------

2015-05-13 13:18:46

by Borislav Petkov

[permalink] [raw]
Subject: Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO

On Wed, May 13, 2015 at 11:47:56AM +0200, Ingo Molnar wrote:
> - introduce the '..' denotion (in the final table) to show features
> that cannot be supported by an architecture due to hardware
> dependencies:
>
> gcov-profile-all:---------------.
> THP:--------. |
> irq-time-acct:-. | |
> | | |
> ----------------------------------------
> alpha | TODO | TODO | TODO |
> arc | TODO | .. | TODO |
> arm | ok | ok | ok |
> arm64 | TODO | ok | ok |
> avr32 | TODO | .. | TODO |
> blackfin | TODO | .. | TODO |
> c6x | TODO | .. | TODO |
>
> so in the 'THP' column, if an architecture could in theory support
> THP, it's listed as 'TODO', if it cannot, it's listed as '..'.

Shouldn't exactly that explanation be in the text file itself too?

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 |
...

--
Regards/Gruss,
Boris.

ECO tip #101: Trim your mails when you reply.
--

2015-05-13 13:48:52

by Ingo Molnar

[permalink] [raw]
Subject: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt


* Borislav Petkov <[email protected]> wrote:

> On Wed, May 13, 2015 at 11:47:56AM +0200, Ingo Molnar wrote:
> > - introduce the '..' denotion (in the final table) to show features
> > that cannot be supported by an architecture due to hardware
> > dependencies:
> >
> > gcov-profile-all:---------------.
> > THP:--------. |
> > irq-time-acct:-. | |
> > | | |
> > ----------------------------------------
> > alpha | TODO | TODO | TODO |
> > arc | TODO | .. | TODO |
> > arm | ok | ok | ok |
> > arm64 | TODO | ok | ok |
> > avr32 | TODO | .. | TODO |
> > blackfin | TODO | .. | TODO |
> > c6x | TODO | .. | TODO |
> >
> > so in the 'THP' column, if an architecture could in theory support
> > THP, it's listed as 'TODO', if it cannot, it's listed as '..'.
>
> Shouldn't exactly that explanation be in the text file itself too?

Yeah, indeed, added it.

> Also, how about s/TODO//g for less clutter:

No, I'd like there to be a very visible 'TODO' item for missing
features.

The 'clutter' shows how badly our generic kernel features are
propagating :-/ We hope to reduce this clutter in the future.

Updated patch attached - I've added a few more features to the last
table, and restructured the explanations, now every feature
description also lists the Kconfig variable that it's tracking, e.g.:

irq time acct: HAVE_IRQ_TIME_ACCOUNTING
THP: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
gcov profile all: ARCH_HAS_GCOV_PROFILE_ALL
rwsem optimized: Optimized asm/rwsem.h
queued spinlocks: ARCH_USE_QUEUED_SPINLOCKS
queued rwlocks: ARCH_USE_QUEUED_RWLOCKS
numa balancing: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA

Thanks,

Ingo

=========================================>
>From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[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.

Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 222 insertions(+)

diff --git a/Documentation/arch-features.txt b/Documentation/arch-features.txt
new file mode 100644
index 000000000000..4f6430bc552b
--- /dev/null
+++ b/Documentation/arch-features.txt
@@ -0,0 +1,222 @@
+
+For generic kernel features that need architecture support, this is
+the feature support matrix, for all upstream Linux architectures.
+
+Meaning of entries in the tables:
+
+ ' ok ': feature supported by the architecture
+ 'TODO': feature not yet supported by the architecture
+ ' .. ': feature cannot be supported by the hardware
+
+
+
+ lockdep: LOCKDEP_SUPPORT
+ stackprotector: HAVE_CC_STACKPROTECTOR
+ jump labels: HAVE_ARCH_JUMP_LABEL
+ seccomp filter: HAVE_ARCH_SECCOMP_FILTER
+ context tracking: HAVE_CONTEXT_TRACKING
+ kgdb: HAVE_ARCH_KGDB
+ modern timekeeping: !ARCH_USES_GETTIMEOFFSET
+ clockevents: GENERIC_CLOCKEVENTS
+ ELF ASLR: ARCH_HAS_ELF_RANDOMIZE
+
+ lockdep:---------------------------------------------------------.
+ stackprotector:--------------------------------------------------. |
+ jump labels:-------------------------------------------. | |
+ seccomp filter:------------------------------------. | | |
+ context tracking:-----------------------------. | | | |
+ kgdb:----------------------. | | | | |
+ modern timekeeping:---------------. | | | | | |
+ clockevents:--------. | | | | | | |
+ ELF ASLR:-. | | | | | | | |
+ | | | | | | | | |
+----------------------------------------------------------------------------------
+ alpha | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ arc | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
+ arm | ok | ok | TODO | ok | ok | ok | ok | ok | ok |
+ arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ avr32 | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ blackfin | TODO | ok | TODO | ok | TODO | TODO | TODO | TODO | ok |
+ c6x | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ cris | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ frv | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ hexagon | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
+ ia64 | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ m68k | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ metag | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ microblaze | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
+ mips | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ mn10300 | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | TODO |
+ nios2 | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | TODO |
+ openrisc | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ parisc | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
+ powerpc | ok | ok | ok | ok | ok | TODO | ok | TODO | ok |
+ s390 | ok | ok | ok | TODO | TODO | ok | ok | TODO | ok |
+ score | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ sh | TODO | ok | ok | ok | TODO | TODO | TODO | ok | ok |
+ sparc | TODO | ok | ok | ok | ok | TODO | ok | TODO | ok |
+ tile | TODO | ok | ok | ok | ok | TODO | TODO | TODO | ok |
+ um | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ unicore32 | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+ x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ xtensa | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
+----------------------------------------------------------------------------------
+
+
+arch tick broadcast: ARCH_HAS_TICK_BROADCAST
+ kprobes: HAVE_KPROBES
+ optprobes: HAVE_OPTPROBES
+ kprobes on ftrace: HAVE_KPROBES_ON_FTRACE
+ uprobes: ARCH_SUPPORTS_UPROBES
+ kretprobes: HAVE_KRETPROBES
+ user ret profiler: HAVE_USER_RETURN_NOTIFIER
+ ioremap_prot(): HAVE_IOREMAP_PROT
+ tracehook: HAVE_ARCH_TRACEHOOK
+
+arch tick broadcast:---------------------------------------------------------.
+ kprobes:--------------------------------------------------. |
+ optprobes:-------------------------------------------. | |
+ kprobes on ftrace:------------------------------------. | | |
+ uprobes:-----------------------------. | | | |
+ kretprobes:----------------------. | | | | |
+ user ret profiler:---------------. | | | | | |
+ ioremap_prot():--------. | | | | | | |
+ tracehook:-. | | | | | | | |
+ | | | | | | | | |
+----------------------------------------------------------------------------------
+ alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ arc | ok | ok | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ arm | ok | TODO | TODO | ok | ok | TODO | ok | ok | ok |
+ arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
+ blackfin | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ c6x | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ frv | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ hexagon | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ ia64 | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ metag | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ microblaze | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ mips | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | ok |
+ mn10300 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ nios2 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ openrisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ powerpc | ok | ok | TODO | ok | ok | TODO | TODO | ok | ok |
+ s390 | ok | TODO | TODO | ok | ok | TODO | TODO | ok | TODO |
+ score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ sh | ok | ok | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ sparc | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | TODO |
+ tile | ok | ok | ok | ok | TODO | TODO | ok | ok | TODO |
+ um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ x86 | ok | ok | ok | ok | ok | ok | ok | ok | TODO |
+ xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+----------------------------------------------------------------------------------
+
+
+generic idle thread: GENERIC_SMP_IDLE_THREAD
+ dma_*map*_attrs(): HAVE_DMA_ATTRS
+ dma contiguous: HAVE_DMA_CONTIGUOUS
+ kprobes event: HAVE_REGS_AND_STACK_ACCESS_API
+ dma api debug: HAVE_DMA_API_DEBUG
+ perf regs: HAVE_PERF_REGS
+ perf stackdump: HAVE_PERF_USER_STACK_DUMP
+ cmpxchg local: HAVE_CMPXCHG_LOCAL
+ virt cpuacct: HAVE_VIRT_CPU_ACCOUNTING || 64BIT
+
+generic idle thread:---------------------------------------------------------.
+ dma_*map*_attrs():--------------------------------------------------. |
+ dma contiguous:-------------------------------------------. | |
+ kprobes event:------------------------------------. | | |
+ dma api debug:-----------------------------. | | | |
+ perf regs:----------------------. | | | | |
+ perf stackdump:---------------. | | | | | |
+ cmpxchg local:--------. | | | | | | |
+ virt cpuacct:-. | | | | | | | |
+ | | | | | | | | |
+----------------------------------------------------------------------------------
+ alpha | ok | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok |
+ arc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ arm | ok | TODO | ok | ok | ok | ok | ok | ok | ok |
+ arm64 | ok | TODO | ok | ok | ok | TODO | ok | ok | ok |
+ avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ c6x | TODO | TODO | TODO | TODO | ok | TODO | TODO | TODO | TODO |
+ cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ hexagon | TODO | TODO | TODO | TODO | TODO | ok | TODO | ok | ok |
+ ia64 | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | ok |
+ m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ metag | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ microblaze | TODO | TODO | TODO | TODO | ok | TODO | TODO | ok | TODO |
+ mips | ok | TODO | TODO | TODO | ok | TODO | ok | ok | ok |
+ mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
+ parisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+ powerpc | ok | TODO | TODO | TODO | ok | ok | TODO | ok | ok |
+ s390 | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok |
+ score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ sh | TODO | TODO | TODO | TODO | ok | ok | TODO | ok | ok |
+ sparc | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | ok |
+ tile | ok | TODO | TODO | TODO | ok | ok | TODO | ok | TODO |
+ um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
+ x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
+ xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
+----------------------------------------------------------------------------------
+
+
+ irq time acct: HAVE_IRQ_TIME_ACCOUNTING
+ THP: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
+ gcov profile all: ARCH_HAS_GCOV_PROFILE_ALL
+ rwsem optimized: Optimized asm/rwsem.h
+ queued spinlocks: ARCH_USE_QUEUED_SPINLOCKS
+ queued rwlocks: ARCH_USE_QUEUED_RWLOCKS
+ numa balancing: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA
+
+ irq time acct:-------------------------------------------.
+ THP:------------------------------------. |
+ gcov profile all:-----------------------------. | |
+ rwsem optimized:----------------------. | | |
+ queued spinlocks:---------------. | | | |
+ queued rwlocks:--------. | | | | |
+ numa balancing:-. | | | | | |
+ | | | | | | |
+--------------------------------------------------------------------
+ alpha | TODO | TODO | TODO | ok | TODO | TODO | TODO |
+ arc | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ arm | .. | TODO | TODO | TODO | ok | ok | ok |
+ arm64 | .. | TODO | TODO | TODO | ok | ok | TODO |
+ avr32 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ blackfin | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ c6x | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ cris | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ frv | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ hexagon | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ ia64 | TODO | TODO | TODO | ok | TODO | TODO | TODO |
+ m32r | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ m68k | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ metag | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ microblaze | .. | TODO | TODO | TODO | ok | .. | TODO |
+ mips | TODO | TODO | TODO | TODO | TODO | ok | ok |
+ mn10300 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ nios2 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ openrisc | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ parisc | .. | TODO | TODO | TODO | TODO | TODO | TODO |
+ powerpc | ok | TODO | TODO | TODO | ok | ok | TODO |
+ s390 | .. | TODO | TODO | ok | ok | ok | TODO |
+ score | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ sh | .. | TODO | TODO | ok | ok | .. | TODO |
+ sparc | TODO | TODO | TODO | ok | TODO | ok | TODO |
+ tile | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
+ um | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ unicore32 | .. | TODO | TODO | TODO | TODO | .. | TODO |
+ x86 | ok | ok | ok | ok | ok | ok | ok |
+ xtensa | .. | TODO | TODO | ok | TODO | .. | ok |
+--------------------------------------------------------------------

2015-05-13 14:09:58

by Michele Curti

[permalink] [raw]
Subject: Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO

On Wed, May 13, 2015 at 11:47:56AM +0200, Ingo Molnar wrote:
>
> (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,
>

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

2015-05-13 14:42:49

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO

On Wed, May 13, 2015 at 4:09 PM, Michele Curti <[email protected]> wrote:
> 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

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

2015-05-13 16:28:16

by Josh Triplett

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt

On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
> From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon 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.
>
> 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 pages
HAVE_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 pages
HAVE_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.

> Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 222 insertions(+)
>
> diff --git a/Documentation/arch-features.txt b/Documentation/arch-features.txt
> new file mode 100644
> index 000000000000..4f6430bc552b
> --- /dev/null
> +++ b/Documentation/arch-features.txt
> @@ -0,0 +1,222 @@
> +
> +For generic kernel features that need architecture support, this is
> +the feature support matrix, for all upstream Linux architectures.
> +
> +Meaning of entries in the tables:
> +
> + ' ok ': feature supported by the architecture
> + 'TODO': feature not yet supported by the architecture
> + ' .. ': feature cannot be supported by the hardware
> +
> +
> +
> + lockdep: LOCKDEP_SUPPORT
> + stackprotector: HAVE_CC_STACKPROTECTOR
> + jump labels: HAVE_ARCH_JUMP_LABEL
> + seccomp filter: HAVE_ARCH_SECCOMP_FILTER
> + context tracking: HAVE_CONTEXT_TRACKING
> + kgdb: HAVE_ARCH_KGDB
> + modern timekeeping: !ARCH_USES_GETTIMEOFFSET
> + clockevents: GENERIC_CLOCKEVENTS
> + ELF ASLR: ARCH_HAS_ELF_RANDOMIZE
> +
> + lockdep:---------------------------------------------------------.
> + stackprotector:--------------------------------------------------. |
> + jump labels:-------------------------------------------. | |
> + seccomp filter:------------------------------------. | | |
> + context tracking:-----------------------------. | | | |
> + kgdb:----------------------. | | | | |
> + modern timekeeping:---------------. | | | | | |
> + clockevents:--------. | | | | | | |
> + ELF ASLR:-. | | | | | | | |
> + | | | | | | | | |
> +----------------------------------------------------------------------------------
> + alpha | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
> + arc | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
> + arm | ok | ok | TODO | ok | ok | ok | ok | ok | ok |
> + arm64 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
> + avr32 | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
> + blackfin | TODO | ok | TODO | ok | TODO | TODO | TODO | TODO | ok |
> + c6x | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
> + cris | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + frv | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
> + hexagon | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
> + ia64 | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
> + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + m68k | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + metag | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
> + microblaze | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | ok |
> + mips | ok | ok | ok | ok | ok | ok | ok | ok | ok |
> + mn10300 | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | TODO |
> + nios2 | TODO | ok | ok | ok | TODO | TODO | TODO | TODO | TODO |
> + openrisc | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | TODO |
> + parisc | TODO | TODO | ok | TODO | TODO | TODO | TODO | TODO | TODO |
> + powerpc | ok | ok | ok | ok | ok | TODO | ok | TODO | ok |
> + s390 | ok | ok | ok | TODO | TODO | ok | ok | TODO | ok |
> + score | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
> + sh | TODO | ok | ok | ok | TODO | TODO | TODO | ok | ok |
> + sparc | TODO | ok | ok | ok | ok | TODO | ok | TODO | ok |
> + tile | TODO | ok | ok | ok | ok | TODO | TODO | TODO | ok |
> + um | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
> + unicore32 | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
> + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
> + xtensa | TODO | ok | ok | TODO | TODO | TODO | TODO | TODO | ok |
> +----------------------------------------------------------------------------------
> +
> +
> +arch tick broadcast: ARCH_HAS_TICK_BROADCAST
> + kprobes: HAVE_KPROBES
> + optprobes: HAVE_OPTPROBES
> + kprobes on ftrace: HAVE_KPROBES_ON_FTRACE
> + uprobes: ARCH_SUPPORTS_UPROBES
> + kretprobes: HAVE_KRETPROBES
> + user ret profiler: HAVE_USER_RETURN_NOTIFIER
> + ioremap_prot(): HAVE_IOREMAP_PROT
> + tracehook: HAVE_ARCH_TRACEHOOK
> +
> +arch tick broadcast:---------------------------------------------------------.
> + kprobes:--------------------------------------------------. |
> + optprobes:-------------------------------------------. | |
> + kprobes on ftrace:------------------------------------. | | |
> + uprobes:-----------------------------. | | | |
> + kretprobes:----------------------. | | | | |
> + user ret profiler:---------------. | | | | | |
> + ioremap_prot():--------. | | | | | | |
> + tracehook:-. | | | | | | | |
> + | | | | | | | | |
> +----------------------------------------------------------------------------------
> + alpha | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + arc | ok | ok | TODO | ok | TODO | TODO | TODO | ok | TODO |
> + arm | ok | TODO | TODO | ok | ok | TODO | ok | ok | ok |
> + arm64 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
> + avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
> + blackfin | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + c6x | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + frv | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + hexagon | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + ia64 | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | TODO |
> + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + metag | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + microblaze | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + mips | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | ok |
> + mn10300 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + nios2 | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + openrisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + parisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + powerpc | ok | ok | TODO | ok | ok | TODO | TODO | ok | ok |
> + s390 | ok | TODO | TODO | ok | ok | TODO | TODO | ok | TODO |
> + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + sh | ok | ok | TODO | ok | TODO | TODO | TODO | ok | TODO |
> + sparc | ok | TODO | TODO | ok | TODO | TODO | TODO | ok | TODO |
> + tile | ok | ok | ok | ok | TODO | TODO | ok | ok | TODO |
> + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + x86 | ok | ok | ok | ok | ok | ok | ok | ok | TODO |
> + xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> +----------------------------------------------------------------------------------
> +
> +
> +generic idle thread: GENERIC_SMP_IDLE_THREAD
> + dma_*map*_attrs(): HAVE_DMA_ATTRS
> + dma contiguous: HAVE_DMA_CONTIGUOUS
> + kprobes event: HAVE_REGS_AND_STACK_ACCESS_API
> + dma api debug: HAVE_DMA_API_DEBUG
> + perf regs: HAVE_PERF_REGS
> + perf stackdump: HAVE_PERF_USER_STACK_DUMP
> + cmpxchg local: HAVE_CMPXCHG_LOCAL
> + virt cpuacct: HAVE_VIRT_CPU_ACCOUNTING || 64BIT
> +
> +generic idle thread:---------------------------------------------------------.
> + dma_*map*_attrs():--------------------------------------------------. |
> + dma contiguous:-------------------------------------------. | |
> + kprobes event:------------------------------------. | | |
> + dma api debug:-----------------------------. | | | |
> + perf regs:----------------------. | | | | |
> + perf stackdump:---------------. | | | | | |
> + cmpxchg local:--------. | | | | | | |
> + virt cpuacct:-. | | | | | | | |
> + | | | | | | | | |
> +----------------------------------------------------------------------------------
> + alpha | ok | TODO | TODO | TODO | TODO | TODO | TODO | ok | ok |
> + arc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
> + arm | ok | TODO | ok | ok | ok | ok | ok | ok | ok |
> + arm64 | ok | TODO | ok | ok | ok | TODO | ok | ok | ok |
> + avr32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + blackfin | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
> + c6x | TODO | TODO | TODO | TODO | ok | TODO | TODO | TODO | TODO |
> + cris | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + frv | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + hexagon | TODO | TODO | TODO | TODO | TODO | ok | TODO | ok | ok |
> + ia64 | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | ok |
> + m32r | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + m68k | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + metag | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
> + microblaze | TODO | TODO | TODO | TODO | ok | TODO | TODO | ok | TODO |
> + mips | ok | TODO | TODO | TODO | ok | TODO | ok | ok | ok |
> + mn10300 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + nios2 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + openrisc | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
> + parisc | ok | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
> + powerpc | ok | TODO | TODO | TODO | ok | ok | TODO | ok | ok |
> + s390 | ok | ok | TODO | TODO | ok | ok | TODO | ok | ok |
> + score | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + sh | TODO | TODO | TODO | TODO | ok | ok | TODO | ok | ok |
> + sparc | ok | TODO | TODO | TODO | ok | TODO | TODO | ok | ok |
> + tile | ok | TODO | TODO | TODO | ok | ok | TODO | ok | TODO |
> + um | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + unicore32 | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok | TODO |
> + x86 | ok | ok | ok | ok | ok | ok | ok | ok | ok |
> + xtensa | TODO | TODO | TODO | TODO | TODO | TODO | TODO | TODO | ok |
> +----------------------------------------------------------------------------------
> +
> +
> + irq time acct: HAVE_IRQ_TIME_ACCOUNTING
> + THP: HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
> + gcov profile all: ARCH_HAS_GCOV_PROFILE_ALL
> + rwsem optimized: Optimized asm/rwsem.h
> + queued spinlocks: ARCH_USE_QUEUED_SPINLOCKS
> + queued rwlocks: ARCH_USE_QUEUED_RWLOCKS
> + numa balancing: ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA
> +
> + irq time acct:-------------------------------------------.
> + THP:------------------------------------. |
> + gcov profile all:-----------------------------. | |
> + rwsem optimized:----------------------. | | |
> + queued spinlocks:---------------. | | | |
> + queued rwlocks:--------. | | | | |
> + numa balancing:-. | | | | | |
> + | | | | | | |
> +--------------------------------------------------------------------
> + alpha | TODO | TODO | TODO | ok | TODO | TODO | TODO |
> + arc | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + arm | .. | TODO | TODO | TODO | ok | ok | ok |
> + arm64 | .. | TODO | TODO | TODO | ok | ok | TODO |
> + avr32 | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + blackfin | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + c6x | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + cris | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + frv | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + hexagon | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + ia64 | TODO | TODO | TODO | ok | TODO | TODO | TODO |
> + m32r | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + m68k | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + metag | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + microblaze | .. | TODO | TODO | TODO | ok | .. | TODO |
> + mips | TODO | TODO | TODO | TODO | TODO | ok | ok |
> + mn10300 | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + nios2 | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + openrisc | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + parisc | .. | TODO | TODO | TODO | TODO | TODO | TODO |
> + powerpc | ok | TODO | TODO | TODO | ok | ok | TODO |
> + s390 | .. | TODO | TODO | ok | ok | ok | TODO |
> + score | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + sh | .. | TODO | TODO | ok | ok | .. | TODO |
> + sparc | TODO | TODO | TODO | ok | TODO | ok | TODO |
> + tile | TODO | TODO | TODO | TODO | TODO | TODO | TODO |
> + um | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + unicore32 | .. | TODO | TODO | TODO | TODO | .. | TODO |
> + x86 | ok | ok | ok | ok | ok | ok | ok |
> + xtensa | .. | TODO | TODO | ok | TODO | .. | ok |
> +--------------------------------------------------------------------

2015-05-13 16:54:11

by Josh Triplett

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt

On Wed, May 13, 2015 at 09:27:57AM -0700, Josh Triplett wrote:
> 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?

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

2015-05-13 22:05:30

by Andrew Morton

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt

On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <[email protected]> wrote:

> 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_AREA
ARCH_HAVE_ELF_ASLR
ARCH_HAS_GCOV_PROFILE_ALL
CONFIG_ARCH_USE_BUILTIN_BSWAP
HAVE_ARCH_HUGE_VMAP
ARCH_HAS_SG_CHAIN
__HAVE_ARCH_STRNCASECMP
ARCH_HAS_ELF_RANDOMIZE
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
CONFIG_ARCH_USES_PG_UNCACHED
CONFIG_ARCH_HAS_WALK_MEMORY

and things which don't contain ARCH

HAVE_GENERIC_RCU_GUP
HAVE_RCU_TABLE_FREE
HAVE_GENERIC_RCU_GUP
CONFIG_HAVE_CLK
CONFIG_HAVE_IOREMAP_PROT
CONFIG_HAVE_MEMBLOCK_NODE_MAP

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

which 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.

2015-05-13 22:56:33

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic

On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:

> 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.
>
> ...
>
> @@ -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. */
> +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'.

2015-05-13 23:25:17

by Josh Triplett

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic

On Wed, May 13, 2015 at 03:56:28PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:
>
> > 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.
> >
> > ...
> >
> > @@ -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. */
> > +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'.

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< ---
>From fd599319630b33b829dc50b4f3c88016e715cd76 Mon 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.

Reported-by: Andrew Morton <[email protected]>
Signed-off-by: Josh Triplett <[email protected]>
---
drivers/misc/kgdbts.c | 2 +-
include/linux/sched.h | 1 +
kernel/fork.c | 13 ++++++-------
3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
index 36f5d52..9a60bd4 100644
--- a/drivers/misc/kgdbts.c
+++ b/drivers/misc/kgdbts.c
@@ -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);
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 2cc88c6..9686abe 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -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);
diff --git a/kernel/fork.c b/kernel/fork.c
index b3dadf4..b493aba 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -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;
--
2.1.4

2015-05-14 03:55:43

by Paul Mackerras

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt

On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
>
> 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

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.

2015-05-14 07:03:00

by Ingo Molnar

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt


* Paul Mackerras <[email protected]> wrote:

> On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
> >
> > 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
>
> 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".

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

2015-05-14 07:08:26

by Ingo Molnar

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt


* Josh Triplett <[email protected]> wrote:

> On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
> > From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon 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.
> >
> > 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

2015-05-14 07:22:26

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <[email protected]> wrote:
>> 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
>
> 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

2015-05-14 07:22:28

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <[email protected]> wrote:
>> 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
>
> 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

2015-05-14 10:02:40

by Ingo Molnar

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt


* Andrew Morton <[email protected]> wrote:

> On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <[email protected]> wrote:
>
> > 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.

Ok, agreed, I've solved these problems by creating a per feature
broken out directory hieararchy, see my next patch submission.

> And there's a ton of stuff which can go in here, much of it not
> immediately apparent.

Yes.

> Just grepping 9 months worth of the stuff I've handled, I'm seeing
> things like
>
> HAVE_ARCH_KASAN

Ok, added.

> __HAVE_ARCH_PMDP_SPLITTING_FLUSH

Ok, added.

> __HAVE_ARCH_PTE_SPECIAL

Ok, added.

> __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?

> ARCH_HAVE_ELF_ASLR

Does not seem to be upstream.

> ARCH_HAS_GCOV_PROFILE_ALL

Yeah, that's already included in v6.

> 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.

> HAVE_ARCH_HUGE_VMAP

Ok, added.

> ARCH_HAS_SG_CHAIN

Ok, added.

> __HAVE_ARCH_STRNCASECMP

So, no architecture supports this yet- but added.

> ARCH_HAS_ELF_RANDOMIZE

Agreed and v6 already includes this.

> 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.

> ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT

Not upstream yet it appears.

> CONFIG_ARCH_USES_PG_UNCACHED

Ok, added.

> CONFIG_ARCH_HAS_WALK_MEMORY

So this too is a quirk, for PowerPC, which does not maintain the
memory layout in the resource tree.

> 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?

> 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.

> HAVE_GENERIC_RCU_GUP

double ;-)

> 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.

> CONFIG_HAVE_IOREMAP_PROT

Agreed - already in -v6.

> CONFIG_HAVE_MEMBLOCK_NODE_MAP

Ok, added.

> 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
>
> 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.

> 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

2015-05-14 10:15:31

by Ingo Molnar

[permalink] [raw]
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 hardware

This 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.

Signed-off-by: Ingo Molnar <[email protected]>
---
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(+)

diff --git a/Documentation/features/BPF-JIT/arch-support.txt b/Documentation/features/BPF-JIT/arch-support.txt
new file mode 100644
index 000000000000..e412c18cc87e
--- /dev/null
+++ b/Documentation/features/BPF-JIT/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/ELF-ASLR/arch-support.txt b/Documentation/features/ELF-ASLR/arch-support.txt
new file mode 100644
index 000000000000..1b7322b15ca0
--- /dev/null
+++ b/Documentation/features/ELF-ASLR/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/KASAN/arch-support.txt b/Documentation/features/KASAN/arch-support.txt
new file mode 100644
index 000000000000..90d82cbc5f02
--- /dev/null
+++ b/Documentation/features/KASAN/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/PG_uncached/arch-support.txt b/Documentation/features/PG_uncached/arch-support.txt
new file mode 100644
index 000000000000..a3a0ecf49788
--- /dev/null
+++ b/Documentation/features/PG_uncached/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/THP/arch-support.txt b/Documentation/features/THP/arch-support.txt
new file mode 100644
index 000000000000..88da2621216b
--- /dev/null
+++ b/Documentation/features/THP/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/arch-support.txt b/Documentation/features/arch-support.txt
new file mode 100644
index 000000000000..d22a1095e661
--- /dev/null
+++ b/Documentation/features/arch-support.txt
@@ -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
+
diff --git a/Documentation/features/arch-tick-broadcast/arch-support.txt b/Documentation/features/arch-tick-broadcast/arch-support.txt
new file mode 100644
index 000000000000..d6798417428b
--- /dev/null
+++ b/Documentation/features/arch-tick-broadcast/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/clockevents/arch-support.txt b/Documentation/features/clockevents/arch-support.txt
new file mode 100644
index 000000000000..8ba7fb83825b
--- /dev/null
+++ b/Documentation/features/clockevents/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/cmpxchg-local/arch-support.txt b/Documentation/features/cmpxchg-local/arch-support.txt
new file mode 100644
index 000000000000..364482dc1340
--- /dev/null
+++ b/Documentation/features/cmpxchg-local/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/context-tracking/arch-support.txt b/Documentation/features/context-tracking/arch-support.txt
new file mode 100644
index 000000000000..47a15d997694
--- /dev/null
+++ b/Documentation/features/context-tracking/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/dma-api-debug/arch-support.txt b/Documentation/features/dma-api-debug/arch-support.txt
new file mode 100644
index 000000000000..cfd6bcf41b8a
--- /dev/null
+++ b/Documentation/features/dma-api-debug/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/dma-contiguous/arch-support.txt b/Documentation/features/dma-contiguous/arch-support.txt
new file mode 100644
index 000000000000..a775a06ed2af
--- /dev/null
+++ b/Documentation/features/dma-contiguous/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/dma_map_attrs/arch-support.txt b/Documentation/features/dma_map_attrs/arch-support.txt
new file mode 100644
index 000000000000..c6296a6354ac
--- /dev/null
+++ b/Documentation/features/dma_map_attrs/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/gcov-profile-all/arch-support.txt b/Documentation/features/gcov-profile-all/arch-support.txt
new file mode 100644
index 000000000000..27961d93b4f7
--- /dev/null
+++ b/Documentation/features/gcov-profile-all/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/generic-idle-thread/arch-support.txt b/Documentation/features/generic-idle-thread/arch-support.txt
new file mode 100644
index 000000000000..30315627905d
--- /dev/null
+++ b/Documentation/features/generic-idle-thread/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/huge-vmap/arch-support.txt b/Documentation/features/huge-vmap/arch-support.txt
new file mode 100644
index 000000000000..8784e30b1734
--- /dev/null
+++ b/Documentation/features/huge-vmap/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/ioremap_prot/arch-support.txt b/Documentation/features/ioremap_prot/arch-support.txt
new file mode 100644
index 000000000000..2094b77d924b
--- /dev/null
+++ b/Documentation/features/ioremap_prot/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/irq-time-acct/arch-support.txt b/Documentation/features/irq-time-acct/arch-support.txt
new file mode 100644
index 000000000000..15a85ecb7700
--- /dev/null
+++ b/Documentation/features/irq-time-acct/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/jump-labels/arch-support.txt b/Documentation/features/jump-labels/arch-support.txt
new file mode 100644
index 000000000000..f1c1c72653d6
--- /dev/null
+++ b/Documentation/features/jump-labels/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kgdb/arch-support.txt b/Documentation/features/kgdb/arch-support.txt
new file mode 100644
index 000000000000..f384b75f1251
--- /dev/null
+++ b/Documentation/features/kgdb/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kprobes-event/arch-support.txt b/Documentation/features/kprobes-event/arch-support.txt
new file mode 100644
index 000000000000..f8cf1d54d100
--- /dev/null
+++ b/Documentation/features/kprobes-event/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kprobes-on-ftrace/arch-support.txt b/Documentation/features/kprobes-on-ftrace/arch-support.txt
new file mode 100644
index 000000000000..0f4a8c8df472
--- /dev/null
+++ b/Documentation/features/kprobes-on-ftrace/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kprobes/arch-support.txt b/Documentation/features/kprobes/arch-support.txt
new file mode 100644
index 000000000000..d5518f7fc567
--- /dev/null
+++ b/Documentation/features/kprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kretprobes/arch-support.txt b/Documentation/features/kretprobes/arch-support.txt
new file mode 100644
index 000000000000..13960c4cbe61
--- /dev/null
+++ b/Documentation/features/kretprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/lockdep/arch-support.txt b/Documentation/features/lockdep/arch-support.txt
new file mode 100644
index 000000000000..5bfbb7d64fe0
--- /dev/null
+++ b/Documentation/features/lockdep/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/modern-timekeeping/arch-support.txt b/Documentation/features/modern-timekeeping/arch-support.txt
new file mode 100644
index 000000000000..14422649183d
--- /dev/null
+++ b/Documentation/features/modern-timekeeping/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/numa-balancing/arch-support.txt b/Documentation/features/numa-balancing/arch-support.txt
new file mode 100644
index 000000000000..791ceb82b16a
--- /dev/null
+++ b/Documentation/features/numa-balancing/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/numa-memblock/arch-support.txt b/Documentation/features/numa-memblock/arch-support.txt
new file mode 100644
index 000000000000..477df392fee1
--- /dev/null
+++ b/Documentation/features/numa-memblock/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/optprobes/arch-support.txt b/Documentation/features/optprobes/arch-support.txt
new file mode 100644
index 000000000000..33907b6f5775
--- /dev/null
+++ b/Documentation/features/optprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf-regs/arch-support.txt b/Documentation/features/perf-regs/arch-support.txt
new file mode 100644
index 000000000000..c820ebab4328
--- /dev/null
+++ b/Documentation/features/perf-regs/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf-stackdump/arch-support.txt b/Documentation/features/perf-stackdump/arch-support.txt
new file mode 100644
index 000000000000..cf42a6fab4e2
--- /dev/null
+++ b/Documentation/features/perf-stackdump/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/pmdp_splitting_flush/arch-support.txt b/Documentation/features/pmdp_splitting_flush/arch-support.txt
new file mode 100644
index 000000000000..930c6f0095e7
--- /dev/null
+++ b/Documentation/features/pmdp_splitting_flush/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/pte_special/arch-support.txt b/Documentation/features/pte_special/arch-support.txt
new file mode 100644
index 000000000000..0ca26d144c04
--- /dev/null
+++ b/Documentation/features/pte_special/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/queued-rwlocks/arch-support.txt b/Documentation/features/queued-rwlocks/arch-support.txt
new file mode 100644
index 000000000000..abaffd1b3b84
--- /dev/null
+++ b/Documentation/features/queued-rwlocks/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/queued-spinlocks/arch-support.txt b/Documentation/features/queued-spinlocks/arch-support.txt
new file mode 100644
index 000000000000..480e9e657039
--- /dev/null
+++ b/Documentation/features/queued-spinlocks/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/rwsem-optimized/arch-support.txt b/Documentation/features/rwsem-optimized/arch-support.txt
new file mode 100644
index 000000000000..1572c7a75bb0
--- /dev/null
+++ b/Documentation/features/rwsem-optimized/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/seccomp-filter/arch-support.txt b/Documentation/features/seccomp-filter/arch-support.txt
new file mode 100644
index 000000000000..1d242a40f195
--- /dev/null
+++ b/Documentation/features/seccomp-filter/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/sg-chain/arch-support.txt b/Documentation/features/sg-chain/arch-support.txt
new file mode 100644
index 000000000000..8aff17488ae0
--- /dev/null
+++ b/Documentation/features/sg-chain/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/stackprotector/arch-support.txt b/Documentation/features/stackprotector/arch-support.txt
new file mode 100644
index 000000000000..543b41d36520
--- /dev/null
+++ b/Documentation/features/stackprotector/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/strncasecmp/arch-support.txt b/Documentation/features/strncasecmp/arch-support.txt
new file mode 100644
index 000000000000..9ea6e4d4baed
--- /dev/null
+++ b/Documentation/features/strncasecmp/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/tracehook/arch-support.txt b/Documentation/features/tracehook/arch-support.txt
new file mode 100644
index 000000000000..05e9de795733
--- /dev/null
+++ b/Documentation/features/tracehook/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/uprobes/arch-support.txt b/Documentation/features/uprobes/arch-support.txt
new file mode 100644
index 000000000000..7c633b846f65
--- /dev/null
+++ b/Documentation/features/uprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/user-ret-profiler/arch-support.txt b/Documentation/features/user-ret-profiler/arch-support.txt
new file mode 100644
index 000000000000..6ba4d07ff641
--- /dev/null
+++ b/Documentation/features/user-ret-profiler/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/virt-cpuacct/arch-support.txt b/Documentation/features/virt-cpuacct/arch-support.txt
new file mode 100644
index 000000000000..c9374d33b8ac
--- /dev/null
+++ b/Documentation/features/virt-cpuacct/arch-support.txt
@@ -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 |
+ -----------------------

2015-05-14 10:16:26

by Ingo Molnar

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt


* Josh Triplett <[email protected]> wrote:

> On Wed, May 13, 2015 at 09:27:57AM -0700, Josh Triplett wrote:
>
> > 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?
>
> 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

2015-05-14 10:31:15

by Josh Triplett

[permalink] [raw]
Subject: Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt

On Thu, May 14, 2015 at 12:16:15PM +0200, Ingo Molnar wrote:
>
> * Josh Triplett <[email protected]> wrote:
>
> > On Wed, May 13, 2015 at 09:27:57AM -0700, Josh Triplett wrote:
> >
> > > 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?
> >
> > 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.

> There are also many #define driven features.

It'd be nice to move those over to Kconfig.

- Josh Triplett

2015-05-14 10:35:53

by Ingo Molnar

[permalink] [raw]
Subject: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Ingo Molnar <[email protected]> wrote:

> 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.

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 hardware

This 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 |

Signed-off-by: Ingo Molnar <[email protected]>
---
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(+)

diff --git a/Documentation/features/BPF-JIT/arch-support.txt b/Documentation/features/BPF-JIT/arch-support.txt
new file mode 100644
index 000000000000..e412c18cc87e
--- /dev/null
+++ b/Documentation/features/BPF-JIT/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/ELF-ASLR/arch-support.txt b/Documentation/features/ELF-ASLR/arch-support.txt
new file mode 100644
index 000000000000..1b7322b15ca0
--- /dev/null
+++ b/Documentation/features/ELF-ASLR/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/KASAN/arch-support.txt b/Documentation/features/KASAN/arch-support.txt
new file mode 100644
index 000000000000..90d82cbc5f02
--- /dev/null
+++ b/Documentation/features/KASAN/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/PG_uncached/arch-support.txt b/Documentation/features/PG_uncached/arch-support.txt
new file mode 100644
index 000000000000..a3a0ecf49788
--- /dev/null
+++ b/Documentation/features/PG_uncached/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/THP/arch-support.txt b/Documentation/features/THP/arch-support.txt
new file mode 100644
index 000000000000..88da2621216b
--- /dev/null
+++ b/Documentation/features/THP/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/arch-support.txt b/Documentation/features/arch-support.txt
new file mode 100644
index 000000000000..d22a1095e661
--- /dev/null
+++ b/Documentation/features/arch-support.txt
@@ -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
+
diff --git a/Documentation/features/arch-tick-broadcast/arch-support.txt b/Documentation/features/arch-tick-broadcast/arch-support.txt
new file mode 100644
index 000000000000..d6798417428b
--- /dev/null
+++ b/Documentation/features/arch-tick-broadcast/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/clockevents/arch-support.txt b/Documentation/features/clockevents/arch-support.txt
new file mode 100644
index 000000000000..8ba7fb83825b
--- /dev/null
+++ b/Documentation/features/clockevents/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/cmpxchg-local/arch-support.txt b/Documentation/features/cmpxchg-local/arch-support.txt
new file mode 100644
index 000000000000..364482dc1340
--- /dev/null
+++ b/Documentation/features/cmpxchg-local/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/context-tracking/arch-support.txt b/Documentation/features/context-tracking/arch-support.txt
new file mode 100644
index 000000000000..47a15d997694
--- /dev/null
+++ b/Documentation/features/context-tracking/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/dma-api-debug/arch-support.txt b/Documentation/features/dma-api-debug/arch-support.txt
new file mode 100644
index 000000000000..cfd6bcf41b8a
--- /dev/null
+++ b/Documentation/features/dma-api-debug/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/dma-contiguous/arch-support.txt b/Documentation/features/dma-contiguous/arch-support.txt
new file mode 100644
index 000000000000..a775a06ed2af
--- /dev/null
+++ b/Documentation/features/dma-contiguous/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/dma_map_attrs/arch-support.txt b/Documentation/features/dma_map_attrs/arch-support.txt
new file mode 100644
index 000000000000..c6296a6354ac
--- /dev/null
+++ b/Documentation/features/dma_map_attrs/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/gcov-profile-all/arch-support.txt b/Documentation/features/gcov-profile-all/arch-support.txt
new file mode 100644
index 000000000000..27961d93b4f7
--- /dev/null
+++ b/Documentation/features/gcov-profile-all/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/generic-idle-thread/arch-support.txt b/Documentation/features/generic-idle-thread/arch-support.txt
new file mode 100644
index 000000000000..30315627905d
--- /dev/null
+++ b/Documentation/features/generic-idle-thread/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/huge-vmap/arch-support.txt b/Documentation/features/huge-vmap/arch-support.txt
new file mode 100644
index 000000000000..8784e30b1734
--- /dev/null
+++ b/Documentation/features/huge-vmap/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/ioremap_prot/arch-support.txt b/Documentation/features/ioremap_prot/arch-support.txt
new file mode 100644
index 000000000000..2094b77d924b
--- /dev/null
+++ b/Documentation/features/ioremap_prot/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/irq-time-acct/arch-support.txt b/Documentation/features/irq-time-acct/arch-support.txt
new file mode 100644
index 000000000000..15a85ecb7700
--- /dev/null
+++ b/Documentation/features/irq-time-acct/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/jump-labels/arch-support.txt b/Documentation/features/jump-labels/arch-support.txt
new file mode 100644
index 000000000000..f1c1c72653d6
--- /dev/null
+++ b/Documentation/features/jump-labels/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kgdb/arch-support.txt b/Documentation/features/kgdb/arch-support.txt
new file mode 100644
index 000000000000..f384b75f1251
--- /dev/null
+++ b/Documentation/features/kgdb/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kprobes-event/arch-support.txt b/Documentation/features/kprobes-event/arch-support.txt
new file mode 100644
index 000000000000..f8cf1d54d100
--- /dev/null
+++ b/Documentation/features/kprobes-event/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kprobes-on-ftrace/arch-support.txt b/Documentation/features/kprobes-on-ftrace/arch-support.txt
new file mode 100644
index 000000000000..0f4a8c8df472
--- /dev/null
+++ b/Documentation/features/kprobes-on-ftrace/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kprobes/arch-support.txt b/Documentation/features/kprobes/arch-support.txt
new file mode 100644
index 000000000000..d5518f7fc567
--- /dev/null
+++ b/Documentation/features/kprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/kretprobes/arch-support.txt b/Documentation/features/kretprobes/arch-support.txt
new file mode 100644
index 000000000000..13960c4cbe61
--- /dev/null
+++ b/Documentation/features/kretprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/list-arch.sh b/Documentation/features/list-arch.sh
new file mode 100755
index 000000000000..aa53da231a26
--- /dev/null
+++ b/Documentation/features/list-arch.sh
@@ -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
+
diff --git a/Documentation/features/lockdep/arch-support.txt b/Documentation/features/lockdep/arch-support.txt
new file mode 100644
index 000000000000..5bfbb7d64fe0
--- /dev/null
+++ b/Documentation/features/lockdep/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/modern-timekeeping/arch-support.txt b/Documentation/features/modern-timekeeping/arch-support.txt
new file mode 100644
index 000000000000..14422649183d
--- /dev/null
+++ b/Documentation/features/modern-timekeeping/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/numa-balancing/arch-support.txt b/Documentation/features/numa-balancing/arch-support.txt
new file mode 100644
index 000000000000..791ceb82b16a
--- /dev/null
+++ b/Documentation/features/numa-balancing/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/numa-memblock/arch-support.txt b/Documentation/features/numa-memblock/arch-support.txt
new file mode 100644
index 000000000000..477df392fee1
--- /dev/null
+++ b/Documentation/features/numa-memblock/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/optprobes/arch-support.txt b/Documentation/features/optprobes/arch-support.txt
new file mode 100644
index 000000000000..33907b6f5775
--- /dev/null
+++ b/Documentation/features/optprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf-regs/arch-support.txt b/Documentation/features/perf-regs/arch-support.txt
new file mode 100644
index 000000000000..c820ebab4328
--- /dev/null
+++ b/Documentation/features/perf-regs/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf-stackdump/arch-support.txt b/Documentation/features/perf-stackdump/arch-support.txt
new file mode 100644
index 000000000000..cf42a6fab4e2
--- /dev/null
+++ b/Documentation/features/perf-stackdump/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/pmdp_splitting_flush/arch-support.txt b/Documentation/features/pmdp_splitting_flush/arch-support.txt
new file mode 100644
index 000000000000..930c6f0095e7
--- /dev/null
+++ b/Documentation/features/pmdp_splitting_flush/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/pte_special/arch-support.txt b/Documentation/features/pte_special/arch-support.txt
new file mode 100644
index 000000000000..0ca26d144c04
--- /dev/null
+++ b/Documentation/features/pte_special/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/queued-rwlocks/arch-support.txt b/Documentation/features/queued-rwlocks/arch-support.txt
new file mode 100644
index 000000000000..abaffd1b3b84
--- /dev/null
+++ b/Documentation/features/queued-rwlocks/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/queued-spinlocks/arch-support.txt b/Documentation/features/queued-spinlocks/arch-support.txt
new file mode 100644
index 000000000000..480e9e657039
--- /dev/null
+++ b/Documentation/features/queued-spinlocks/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/rwsem-optimized/arch-support.txt b/Documentation/features/rwsem-optimized/arch-support.txt
new file mode 100644
index 000000000000..1572c7a75bb0
--- /dev/null
+++ b/Documentation/features/rwsem-optimized/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/seccomp-filter/arch-support.txt b/Documentation/features/seccomp-filter/arch-support.txt
new file mode 100644
index 000000000000..1d242a40f195
--- /dev/null
+++ b/Documentation/features/seccomp-filter/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/sg-chain/arch-support.txt b/Documentation/features/sg-chain/arch-support.txt
new file mode 100644
index 000000000000..8aff17488ae0
--- /dev/null
+++ b/Documentation/features/sg-chain/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/stackprotector/arch-support.txt b/Documentation/features/stackprotector/arch-support.txt
new file mode 100644
index 000000000000..543b41d36520
--- /dev/null
+++ b/Documentation/features/stackprotector/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/strncasecmp/arch-support.txt b/Documentation/features/strncasecmp/arch-support.txt
new file mode 100644
index 000000000000..9ea6e4d4baed
--- /dev/null
+++ b/Documentation/features/strncasecmp/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/tracehook/arch-support.txt b/Documentation/features/tracehook/arch-support.txt
new file mode 100644
index 000000000000..05e9de795733
--- /dev/null
+++ b/Documentation/features/tracehook/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/uprobes/arch-support.txt b/Documentation/features/uprobes/arch-support.txt
new file mode 100644
index 000000000000..7c633b846f65
--- /dev/null
+++ b/Documentation/features/uprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/user-ret-profiler/arch-support.txt b/Documentation/features/user-ret-profiler/arch-support.txt
new file mode 100644
index 000000000000..6ba4d07ff641
--- /dev/null
+++ b/Documentation/features/user-ret-profiler/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/virt-cpuacct/arch-support.txt b/Documentation/features/virt-cpuacct/arch-support.txt
new file mode 100644
index 000000000000..c9374d33b8ac
--- /dev/null
+++ b/Documentation/features/virt-cpuacct/arch-support.txt
@@ -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 |
+ -----------------------

2015-05-14 19:38:39

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH v2] 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|
> -----------------------
> ...
> | 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 hardware

Presumably there will be instances where the maintainer decides "we
shall not implement that".

> 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.

2015-05-14 20:00:07

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Andrew Morton <[email protected]> wrote:

> > 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.
> >
> > 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".

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.

> > 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>/

> 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.

> But still, let's not overdo it - get something in there, see how
> well it works, evolve it over time.

Yeah.

> 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

2015-05-14 20:34:47

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

On Thu, May 14, 2015 at 9:38 PM, Andrew Morton
<[email protected]> wrote:
> I don't think we've heard from any (non-x86) arch maintainers? Do they
> consider this useful at all? Poke.

I like it. :-)

--
Thanks,
//richard

2015-05-14 22:33:47

by Stephen Rothwell

[permalink] [raw]
Subject: 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.

On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <[email protected]> wrote:
>
> 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.

--
Cheers,
Stephen Rothwell [email protected]


Attachments:
(No filename) (819.00 B)
OpenPGP digital signature

2015-05-14 22:57:32

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

On Thu, 2015-05-14 at 12:38 -0700, Andrew Morton wrote:
> > 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.

> 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

2015-05-15 07:38:16

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Stephen Rothwell <[email protected]> wrote:

> Hi Ingo,
>
> Thanks for this. The concept is certainly good.
>
> On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <[email protected]> wrote:
> >
> > 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

2015-05-15 07:49:59

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Michael Ellerman <[email protected]> wrote:

> On Thu, 2015-05-14 at 12:38 -0700, Andrew Morton wrote:
> > > 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.

Ok, I'll solve this.

> > 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 accounting


> 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.

> The kconfig for HAVE_ARCH_SECCOMP_FILTER is a good example of what I
> mean.

Yes, that's a positive example. It's the exception.

> 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

2015-05-15 07:51:31

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Ingo Molnar <[email protected]> wrote:

>
> * Stephen Rothwell <[email protected]> wrote:
>
> > Hi Ingo,
> >
> > Thanks for this. The concept is certainly good.
> >
> > On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <[email protected]> wrote:
> > >
> > > 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 |

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 accounting

Thanks,

Ingo

2015-05-15 09:38:03

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Ingo Molnar <[email protected]> wrote:

> > > 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>/

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 hugepages

See 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

2015-05-18 01:37:20

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

On Fri, 2015-05-15 at 09:49 +0200, Ingo Molnar wrote:
> * Michael Ellerman <[email protected]> wrote:
>
> > On Thu, 2015-05-14 at 12:38 -0700, Andrew Morton wrote:
> > > > 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.
>
> Ok, I'll solve this.

Thanks.

> > > 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:

> 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:

> 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.

> > 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

2015-05-18 08:54:37

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Michael Ellerman <[email protected]> wrote:

> > > 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:
>
> > rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem APIs
>
> I don't see an rwsem.h in 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 |
-----------------------

> And this is correct but a bit confusing:
>
> > 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.

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

2015-05-19 02:02:16

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

On Mon, 2015-05-18 at 10:54 +0200, Ingo Molnar wrote:
> * Michael Ellerman <[email protected]> wrote:
>
> > > > 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:
> >
> > > rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem APIs
> >
> > I don't see an rwsem.h in 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
> #
> | 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: | .. |
>
> i.e. it's not marked as TODO, but not as supported either which would
> be misleading.

Great thanks.

cheers

2015-05-22 15:47:54

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

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

2015-05-23 08:07:19

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/


* Jonathan Corbet <[email protected]> wrote:

> 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. [...]

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

2015-05-24 18:42:48

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

On Sat, 23 May 2015 10:07:05 +0200
Ingo Molnar <[email protected]> wrote:

> > 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

2015-06-03 11:04:10

by Ingo Molnar

[permalink] [raw]
Subject: [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/


* Jonathan Corbet <[email protected]> wrote:

> On Sat, 23 May 2015 10:07:05 +0200
> Ingo Molnar <[email protected]> wrote:
>
> > > 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

diff --git a/Documentation/features/arch-support.txt b/Documentation/features/arch-support.txt
new file mode 100644
index 000000000000..d22a1095e661
--- /dev/null
+++ b/Documentation/features/arch-support.txt
@@ -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
+
diff --git a/Documentation/features/core/BPF-JIT/arch-support.txt b/Documentation/features/core/BPF-JIT/arch-support.txt
new file mode 100644
index 000000000000..c1b4f917238f
--- /dev/null
+++ b/Documentation/features/core/BPF-JIT/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/core/generic-idle-thread/arch-support.txt b/Documentation/features/core/generic-idle-thread/arch-support.txt
new file mode 100644
index 000000000000..6d930fcbe519
--- /dev/null
+++ b/Documentation/features/core/generic-idle-thread/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/core/jump-labels/arch-support.txt b/Documentation/features/core/jump-labels/arch-support.txt
new file mode 100644
index 000000000000..136868b636e6
--- /dev/null
+++ b/Documentation/features/core/jump-labels/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/core/tracehook/arch-support.txt b/Documentation/features/core/tracehook/arch-support.txt
new file mode 100644
index 000000000000..728061d763b1
--- /dev/null
+++ b/Documentation/features/core/tracehook/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/KASAN/arch-support.txt b/Documentation/features/debug/KASAN/arch-support.txt
new file mode 100644
index 000000000000..14531da2fb54
--- /dev/null
+++ b/Documentation/features/debug/KASAN/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/gcov-profile-all/arch-support.txt b/Documentation/features/debug/gcov-profile-all/arch-support.txt
new file mode 100644
index 000000000000..38dea8eeba0a
--- /dev/null
+++ b/Documentation/features/debug/gcov-profile-all/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/kgdb/arch-support.txt b/Documentation/features/debug/kgdb/arch-support.txt
new file mode 100644
index 000000000000..862e15d6f79e
--- /dev/null
+++ b/Documentation/features/debug/kgdb/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/kprobes-on-ftrace/arch-support.txt b/Documentation/features/debug/kprobes-on-ftrace/arch-support.txt
new file mode 100644
index 000000000000..40f44d041fb4
--- /dev/null
+++ b/Documentation/features/debug/kprobes-on-ftrace/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/kprobes/arch-support.txt b/Documentation/features/debug/kprobes/arch-support.txt
new file mode 100644
index 000000000000..a44bfff6940b
--- /dev/null
+++ b/Documentation/features/debug/kprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/kretprobes/arch-support.txt b/Documentation/features/debug/kretprobes/arch-support.txt
new file mode 100644
index 000000000000..d87c1ce24204
--- /dev/null
+++ b/Documentation/features/debug/kretprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/optprobes/arch-support.txt b/Documentation/features/debug/optprobes/arch-support.txt
new file mode 100644
index 000000000000..b8999d8544ca
--- /dev/null
+++ b/Documentation/features/debug/optprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/stackprotector/arch-support.txt b/Documentation/features/debug/stackprotector/arch-support.txt
new file mode 100644
index 000000000000..0fa423313409
--- /dev/null
+++ b/Documentation/features/debug/stackprotector/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/uprobes/arch-support.txt b/Documentation/features/debug/uprobes/arch-support.txt
new file mode 100644
index 000000000000..4efe36c3ace9
--- /dev/null
+++ b/Documentation/features/debug/uprobes/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/debug/user-ret-profiler/arch-support.txt b/Documentation/features/debug/user-ret-profiler/arch-support.txt
new file mode 100644
index 000000000000..44cc1ff3f603
--- /dev/null
+++ b/Documentation/features/debug/user-ret-profiler/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/io/dma-api-debug/arch-support.txt b/Documentation/features/io/dma-api-debug/arch-support.txt
new file mode 100644
index 000000000000..4f4a3443b114
--- /dev/null
+++ b/Documentation/features/io/dma-api-debug/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/io/dma-contiguous/arch-support.txt b/Documentation/features/io/dma-contiguous/arch-support.txt
new file mode 100644
index 000000000000..a97e8e3f4ebb
--- /dev/null
+++ b/Documentation/features/io/dma-contiguous/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/io/dma_map_attrs/arch-support.txt b/Documentation/features/io/dma_map_attrs/arch-support.txt
new file mode 100644
index 000000000000..51d0f1c02a3e
--- /dev/null
+++ b/Documentation/features/io/dma_map_attrs/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/io/sg-chain/arch-support.txt b/Documentation/features/io/sg-chain/arch-support.txt
new file mode 100644
index 000000000000..b9b675539b9d
--- /dev/null
+++ b/Documentation/features/io/sg-chain/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/lib/strncasecmp/arch-support.txt b/Documentation/features/lib/strncasecmp/arch-support.txt
new file mode 100644
index 000000000000..12b1c9358e57
--- /dev/null
+++ b/Documentation/features/lib/strncasecmp/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/list-arch.sh b/Documentation/features/list-arch.sh
new file mode 100644
index 000000000000..6065124a072f
--- /dev/null
+++ b/Documentation/features/list-arch.sh
@@ -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
+
diff --git a/Documentation/features/locking/cmpxchg-local/arch-support.txt b/Documentation/features/locking/cmpxchg-local/arch-support.txt
new file mode 100644
index 000000000000..d9c310889bc1
--- /dev/null
+++ b/Documentation/features/locking/cmpxchg-local/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/locking/lockdep/arch-support.txt b/Documentation/features/locking/lockdep/arch-support.txt
new file mode 100644
index 000000000000..cf90635bdcbb
--- /dev/null
+++ b/Documentation/features/locking/lockdep/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/locking/queued-rwlocks/arch-support.txt b/Documentation/features/locking/queued-rwlocks/arch-support.txt
new file mode 100644
index 000000000000..68c3a5ddd9b9
--- /dev/null
+++ b/Documentation/features/locking/queued-rwlocks/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/locking/queued-spinlocks/arch-support.txt b/Documentation/features/locking/queued-spinlocks/arch-support.txt
new file mode 100644
index 000000000000..e973b1a9572f
--- /dev/null
+++ b/Documentation/features/locking/queued-spinlocks/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/locking/rwsem-optimized/arch-support.txt b/Documentation/features/locking/rwsem-optimized/arch-support.txt
new file mode 100644
index 000000000000..ac93d7ab66c4
--- /dev/null
+++ b/Documentation/features/locking/rwsem-optimized/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf/kprobes-event/arch-support.txt b/Documentation/features/perf/kprobes-event/arch-support.txt
new file mode 100644
index 000000000000..9855ad044386
--- /dev/null
+++ b/Documentation/features/perf/kprobes-event/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf/perf-regs/arch-support.txt b/Documentation/features/perf/perf-regs/arch-support.txt
new file mode 100644
index 000000000000..e2b4a78ec543
--- /dev/null
+++ b/Documentation/features/perf/perf-regs/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/perf/perf-stackdump/arch-support.txt b/Documentation/features/perf/perf-stackdump/arch-support.txt
new file mode 100644
index 000000000000..3dc24b0673c0
--- /dev/null
+++ b/Documentation/features/perf/perf-stackdump/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/sched/numa-balancing/arch-support.txt b/Documentation/features/sched/numa-balancing/arch-support.txt
new file mode 100644
index 000000000000..ac7cd6b1502b
--- /dev/null
+++ b/Documentation/features/sched/numa-balancing/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/seccomp/seccomp-filter/arch-support.txt b/Documentation/features/seccomp/seccomp-filter/arch-support.txt
new file mode 100644
index 000000000000..bea800910342
--- /dev/null
+++ b/Documentation/features/seccomp/seccomp-filter/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/time/arch-tick-broadcast/arch-support.txt b/Documentation/features/time/arch-tick-broadcast/arch-support.txt
new file mode 100644
index 000000000000..8acb439a4a17
--- /dev/null
+++ b/Documentation/features/time/arch-tick-broadcast/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/time/clockevents/arch-support.txt b/Documentation/features/time/clockevents/arch-support.txt
new file mode 100644
index 000000000000..ff670b2207f1
--- /dev/null
+++ b/Documentation/features/time/clockevents/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/time/context-tracking/arch-support.txt b/Documentation/features/time/context-tracking/arch-support.txt
new file mode 100644
index 000000000000..a1e3eea7003f
--- /dev/null
+++ b/Documentation/features/time/context-tracking/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/time/irq-time-acct/arch-support.txt b/Documentation/features/time/irq-time-acct/arch-support.txt
new file mode 100644
index 000000000000..e63316239938
--- /dev/null
+++ b/Documentation/features/time/irq-time-acct/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/time/modern-timekeeping/arch-support.txt b/Documentation/features/time/modern-timekeeping/arch-support.txt
new file mode 100644
index 000000000000..17f68a02e84d
--- /dev/null
+++ b/Documentation/features/time/modern-timekeeping/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/time/virt-cpuacct/arch-support.txt b/Documentation/features/time/virt-cpuacct/arch-support.txt
new file mode 100644
index 000000000000..cf3c3e383d15
--- /dev/null
+++ b/Documentation/features/time/virt-cpuacct/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/vm/ELF-ASLR/arch-support.txt b/Documentation/features/vm/ELF-ASLR/arch-support.txt
new file mode 100644
index 000000000000..ec4dd28e1297
--- /dev/null
+++ b/Documentation/features/vm/ELF-ASLR/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/vm/PG_uncached/arch-support.txt b/Documentation/features/vm/PG_uncached/arch-support.txt
new file mode 100644
index 000000000000..991974275a3e
--- /dev/null
+++ b/Documentation/features/vm/PG_uncached/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/vm/THP/arch-support.txt b/Documentation/features/vm/THP/arch-support.txt
new file mode 100644
index 000000000000..972d02c2a74c
--- /dev/null
+++ b/Documentation/features/vm/THP/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/vm/huge-vmap/arch-support.txt b/Documentation/features/vm/huge-vmap/arch-support.txt
new file mode 100644
index 000000000000..af6816bccb43
--- /dev/null
+++ b/Documentation/features/vm/huge-vmap/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/vm/ioremap_prot/arch-support.txt b/Documentation/features/vm/ioremap_prot/arch-support.txt
new file mode 100644
index 000000000000..90c53749fde7
--- /dev/null
+++ b/Documentation/features/vm/ioremap_prot/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/vm/numa-memblock/arch-support.txt b/Documentation/features/vm/numa-memblock/arch-support.txt
new file mode 100644
index 000000000000..e7c252a0c531
--- /dev/null
+++ b/Documentation/features/vm/numa-memblock/arch-support.txt
@@ -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: | .. |
+ -----------------------
diff --git a/Documentation/features/vm/pmdp_splitting_flush/arch-support.txt b/Documentation/features/vm/pmdp_splitting_flush/arch-support.txt
new file mode 100644
index 000000000000..26f74b457e0b
--- /dev/null
+++ b/Documentation/features/vm/pmdp_splitting_flush/arch-support.txt
@@ -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 |
+ -----------------------
diff --git a/Documentation/features/vm/pte_special/arch-support.txt b/Documentation/features/vm/pte_special/arch-support.txt
new file mode 100644
index 000000000000..aaaa21db6226
--- /dev/null
+++ b/Documentation/features/vm/pte_special/arch-support.txt
@@ -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 |
+ -----------------------

2015-06-08 23:06:28

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/

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