All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-11 19:29 ` Josh Triplett
  0 siblings, 0 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-11 19:29 UTC (permalink / raw)
  To: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86

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 <josh@joshtriplett.org>
Acked-by: Andy Lutomirski <luto@kernel.org>
---
 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


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-11 19:29 ` Josh Triplett
  0 siblings, 0 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-11 19:29 UTC (permalink / raw)
  To: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A

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 <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org>
Acked-by: Andy Lutomirski <luto-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
  2015-05-11 19:29 ` Josh Triplett
  (?)
@ 2015-05-12 21:22 ` Andrew Morton
  2015-05-12 21:38   ` Peter Zijlstra
  2015-05-13  0:53     ` josh-iaAMLnmF4UmaiuxdJuQwMA
  -1 siblings, 2 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-12 21:22 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86

On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh@joshtriplett.org> 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.

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
  2015-05-12 21:22 ` Andrew Morton
@ 2015-05-12 21:38   ` Peter Zijlstra
  2015-05-12 21:49       ` Andrew Morton
  2015-05-13  0:53     ` josh-iaAMLnmF4UmaiuxdJuQwMA
  1 sibling, 1 reply; 87+ messages in thread
From: Peter Zijlstra @ 2015-05-12 21:38 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch

On Tue, May 12, 2015 at 02:22:50PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh@joshtriplett.org> 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 :-)

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-12 21:49       ` Andrew Morton
  0 siblings, 0 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-12 21:49 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch

On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <peterz@infradead.org> 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.



^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-12 21:49       ` Andrew Morton
  0 siblings, 0 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-12 21:49 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 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.

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-13  0:53     ` josh-iaAMLnmF4UmaiuxdJuQwMA
  0 siblings, 0 replies; 87+ messages in thread
From: josh @ 2015-05-13  0:53 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86

On Tue, May 12, 2015 at 02:22:50PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh@joshtriplett.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-13  0:53     ` josh-iaAMLnmF4UmaiuxdJuQwMA
  0 siblings, 0 replies; 87+ messages in thread
From: josh-iaAMLnmF4UmaiuxdJuQwMA @ 2015-05-13  0:53 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A

On Tue, May 12, 2015 at 02:22:50PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  8:34         ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:34 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Andrew Morton, Borislav Petkov


* Andrew Morton <akpm@linux-foundation.org> wrote:

> On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <peterz@infradead.org> 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 <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------------------------------------------------
+


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  8:34         ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:34 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Andrew Morton,
	Borislav Petkov


* Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> wrote:

> On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+----------------------------------------------------------------------------------
+

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  8:34         ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:34 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Andrew Morton,
	Borislav Petkov


* Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> wrote:

> On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+----------------------------------------------------------------------------------
+

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  8:34         ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:34 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


* Andrew Morton <akpm@linux-foundation.org> wrote:

> On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra <peterz@infradead.org> 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

=======================>

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [RFC PATCH v2] Documentation/arch: Add Documentation/arch-TODO
  2015-05-13  8:34         ` Ingo Molnar
  (?)
@ 2015-05-13  8:56           ` Ingo Molnar
  -1 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:56 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


Added a second table with more features listed.

Thanks,

	Ingo

=======================>
>From 32acc8a058a166d177346cfe59b6bc930f9e6471 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v2] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  8:56           ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:56 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


Added a second table with more features listed.

Thanks,

	Ingo

=======================>
From 32acc8a058a166d177346cfe59b6bc930f9e6471 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v2] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  8:56           ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  8:56 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


Added a second table with more features listed.

Thanks,

	Ingo

=======================>

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:24             ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:24 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


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 <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:24             ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:24 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Borislav Petkov


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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+----------------------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:24             ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:24 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Borislav Petkov


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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+----------------------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:24             ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:24 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


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

Thanks,

	Ingo

======================>

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
  2015-05-13  9:24             ` Ingo Molnar
  (?)
@ 2015-05-13  9:46               ` Ingo Molnar
  -1 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:46 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


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 <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:46               ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:46 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


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 <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:46               ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:46 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


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

==========================>

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:47                 ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:47 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


(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 <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+----------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:47                 ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:47 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Borislav Petkov


(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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+----------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:47                 ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:47 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Borislav Petkov


(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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+----------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13  9:47                 ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13  9:47 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Peter Zijlstra, Josh Triplett, Andy Lutomirski, Ingo Molnar,
	H. Peter Anvin, Thomas Gleixner, Linus Torvalds, linux-api,
	linux-kernel, x86, linux-arch, Borislav Petkov


(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

==========================>

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
  2015-05-13  9:47                 ` Ingo Molnar
                                   ` (2 preceding siblings ...)
  (?)
@ 2015-05-13 13:18                 ` Borislav Petkov
  2015-05-13 13:48                     ` Ingo Molnar
  -1 siblings, 1 reply; 87+ messages in thread
From: Borislav Petkov @ 2015-05-13 13:18 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-13 13:48                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13 13:48 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Borislav Petkov <bp@alien8.de> wrote:

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

Yeah, indeed, added it.

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

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

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

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

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

Thanks,

	Ingo

=========================================>
>From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt

Add a support matrix for various generic kernel features that need
architecture support.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 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  |
+--------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-13 13:48                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13 13:48 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Borislav Petkov <bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org> wrote:

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

Yeah, indeed, added it.

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

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

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

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

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

Thanks,

	Ingo

=========================================>
>From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt

Add a support matrix for various generic kernel features that need
architecture support.

Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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  |
+--------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-13 13:48                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13 13:48 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Borislav Petkov <bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org> wrote:

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

Yeah, indeed, added it.

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

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

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

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

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

Thanks,

	Ingo

=========================================>
From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt

Add a support matrix for various generic kernel features that need
architecture support.

Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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  |
+--------------------------------------------------------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-13 13:48                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-13 13:48 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Borislav Petkov <bp@alien8.de> 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

=========================================>

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13 14:09                   ` Michele Curti
  0 siblings, 0 replies; 87+ messages in thread
From: Michele Curti @ 2015-05-13 14:09 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch,
	Borislav Petkov

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-13 14:09                   ` Michele Curti
  0 siblings, 0 replies; 87+ messages in thread
From: Michele Curti @ 2015-05-13 14:09 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Jonathan Corbet, Peter Zijlstra, Josh Triplett,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Borislav Petkov

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
  2015-05-13 14:09                   ` Michele Curti
  (?)
@ 2015-05-13 14:42                   ` Geert Uytterhoeven
  2015-05-14  7:21                       ` H. Peter Anvin
  2015-05-14  7:21                     ` H. Peter Anvin
  -1 siblings, 2 replies; 87+ messages in thread
From: Geert Uytterhoeven @ 2015-05-13 14:42 UTC (permalink / raw)
  To: Michele Curti
  Cc: Ingo Molnar, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel,
	the arch/x86 maintainers, Linux-Arch, Borislav Petkov

On Wed, May 13, 2015 at 4:09 PM, Michele Curti <michele.curti@gmail.com> 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 -- geert@linux-m68k.org

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-13 13:48                     ` Ingo Molnar
                                       ` (2 preceding siblings ...)
  (?)
@ 2015-05-13 16:27                     ` Josh Triplett
  2015-05-13 16:53                         ` Josh Triplett
                                         ` (2 more replies)
  -1 siblings, 3 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-13 16:27 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

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 <mingo@kernel.org>
> Date: Wed, 13 May 2015 10:30:11 +0200
> Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt
> 
> Add a support matrix for various generic kernel features that need
> architecture support.
> 
> Signed-off-by: Ingo Molnar <mingo@kernel.org>

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-13 16:27                     ` Josh Triplett
@ 2015-05-13 16:53                         ` Josh Triplett
  2015-05-13 22:05                         ` Andrew Morton
  2015-05-14  7:08                       ` [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt Ingo Molnar
  2 siblings, 0 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-13 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-13 16:53                         ` Josh Triplett
  0 siblings, 0 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-13 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-13 16:27                     ` Josh Triplett
@ 2015-05-13 22:05                         ` Andrew Morton
  2015-05-13 22:05                         ` Andrew Morton
  2015-05-14  7:08                       ` [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt Ingo Molnar
  2 siblings, 0 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-13 22:05 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Ingo Molnar, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <josh@joshtriplett.org> 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.

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-13 22:05                         ` Andrew Morton
  0 siblings, 0 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-13 22:05 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Ingo Molnar, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> 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.

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
  2015-05-11 19:29 ` Josh Triplett
@ 2015-05-13 22:56   ` Andrew Morton
  -1 siblings, 0 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-13 22:56 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86

On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh@joshtriplett.org> 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'.


^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-13 22:56   ` Andrew Morton
  0 siblings, 0 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-13 22:56 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A

On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> 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'.

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-13 23:25     ` josh-iaAMLnmF4UmaiuxdJuQwMA
  0 siblings, 0 replies; 87+ messages in thread
From: josh @ 2015-05-13 23:25 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86

On Wed, May 13, 2015 at 03:56:28PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh@joshtriplett.org> 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 <josh@joshtriplett.org>
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 <akpm@linux-foundation.org>
Signed-off-by: Josh Triplett <josh@joshtriplett.org>
---
 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


^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
@ 2015-05-13 23:25     ` josh-iaAMLnmF4UmaiuxdJuQwMA
  0 siblings, 0 replies; 87+ messages in thread
From: josh-iaAMLnmF4UmaiuxdJuQwMA @ 2015-05-13 23:25 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A

On Wed, May 13, 2015 at 03:56:28PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> 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 <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org>
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 <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Signed-off-by: Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org>
---
 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

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-13 13:48                     ` Ingo Molnar
                                       ` (3 preceding siblings ...)
  (?)
@ 2015-05-14  3:55                     ` Paul Mackerras
  2015-05-14  7:02                       ` Ingo Molnar
  -1 siblings, 1 reply; 87+ messages in thread
From: Paul Mackerras @ 2015-05-14  3:55 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch

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.

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-14  3:55                     ` Paul Mackerras
@ 2015-05-14  7:02                       ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14  7:02 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch


* Paul Mackerras <paulus@samba.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-13 16:27                     ` Josh Triplett
  2015-05-13 16:53                         ` Josh Triplett
  2015-05-13 22:05                         ` Andrew Morton
@ 2015-05-14  7:08                       ` Ingo Molnar
  2 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14  7:08 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Josh Triplett <josh@joshtriplett.org> 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 <mingo@kernel.org>
> > Date: Wed, 13 May 2015 10:30:11 +0200
> > Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt
> > 
> > Add a support matrix for various generic kernel features that need
> > architecture support.
> > 
> > Signed-off-by: Ingo Molnar <mingo@kernel.org>
> 
> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-14  7:21                       ` H. Peter Anvin
  0 siblings, 0 replies; 87+ messages in thread
From: H. Peter Anvin @ 2015-05-14  7:21 UTC (permalink / raw)
  To: Geert Uytterhoeven, Michele Curti
  Cc: Ingo Molnar, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel,
	the arch/x86 maintainers, Linux-Arch, Borislav Petkov

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <michele.curti@gmail.com> 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



^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
@ 2015-05-14  7:21                       ` H. Peter Anvin
  0 siblings, 0 replies; 87+ messages in thread
From: H. Peter Anvin @ 2015-05-14  7:21 UTC (permalink / raw)
  To: Geert Uytterhoeven, Michele Curti
  Cc: Ingo Molnar, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, the arch/x86 maintainers,
	Linux-Arch, Borislav Petkov

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <michele.curti-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
  2015-05-13 14:42                   ` Geert Uytterhoeven
  2015-05-14  7:21                       ` H. Peter Anvin
@ 2015-05-14  7:21                     ` H. Peter Anvin
  1 sibling, 0 replies; 87+ messages in thread
From: H. Peter Anvin @ 2015-05-14  7:21 UTC (permalink / raw)
  To: Geert Uytterhoeven, Michele Curti
  Cc: Ingo Molnar, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel,
	the arch/x86 maintainers, Linux-Arch, Borislav Petkov

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <michele.curti@gmail.com> 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



^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-14 10:02                           ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:02 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Andrew Morton <akpm@linux-foundation.org> wrote:

> On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <josh@joshtriplett.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-14 10:02                           ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:02 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> wrote:

> On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 10:15                           ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:15 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


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 <mingo@kernel.org>
---
 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 |
+    -----------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 10:15                           ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:15 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+    -----------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
  2015-05-13 16:53                         ` Josh Triplett
  (?)
@ 2015-05-14 10:16                         ` Ingo Molnar
  2015-05-14 10:31                             ` Josh Triplett
  -1 siblings, 1 reply; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:16 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Josh Triplett <josh@joshtriplett.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-14 10:31                             ` Josh Triplett
  0 siblings, 0 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-14 10:31 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

On Thu, May 14, 2015 at 12:16:15PM +0200, Ingo Molnar wrote:
> 
> * Josh Triplett <josh@joshtriplett.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
@ 2015-05-14 10:31                             ` Josh Triplett
  0 siblings, 0 replies; 87+ messages in thread
From: Josh Triplett @ 2015-05-14 10:31 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

On Thu, May 14, 2015 at 12:16:15PM +0200, Ingo Molnar wrote:
> 
> * Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 10:35                             ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Ingo Molnar <mingo@kernel.org> 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 <mingo@kernel.org>
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 <mingo@kernel.org>
---
 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 |
+    -----------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 10:35                             ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 10:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
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 <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 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 |
+    -----------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
  2015-05-14 10:35                             ` Ingo Molnar
  (?)
@ 2015-05-14 19:38                             ` Andrew Morton
  2015-05-14 19:59                               ` Ingo Molnar
                                                 ` (2 more replies)
  -1 siblings, 3 replies; 87+ messages in thread
From: Andrew Morton @ 2015-05-14 19:38 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
  2015-05-14 19:38                             ` Andrew Morton
@ 2015-05-14 19:59                               ` Ingo Molnar
  2015-05-14 22:33                                   ` Stephen Rothwell
  2015-05-15  9:37                                 ` Ingo Molnar
  2015-05-14 20:34                                 ` Richard Weinberger
  2015-05-14 22:57                                 ` Michael Ellerman
  2 siblings, 2 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-14 19:59 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Andrew Morton <akpm@linux-foundation.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 20:34                                 ` Richard Weinberger
  0 siblings, 0 replies; 87+ messages in thread
From: Richard Weinberger @ 2015-05-14 20:34 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, open list:ABI/API, LKML, x86,
	Linux-Arch

On Thu, May 14, 2015 at 9:38 PM, Andrew Morton
<akpm@linux-foundation.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 20:34                                 ` Richard Weinberger
  0 siblings, 0 replies; 87+ messages in thread
From: Richard Weinberger @ 2015-05-14 20:34 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, open list:ABI/API, LKML,
	x86-DgEjT+Ai2ygdnm+yROfE0A, Linux-Arch

On Thu, May 14, 2015 at 9:38 PM, Andrew Morton
<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 22:33                                   ` Stephen Rothwell
  0 siblings, 0 replies; 87+ messages in thread
From: Stephen Rothwell @ 2015-05-14 22:33 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch, Yoshinori Sato

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

Hi Ingo,

Thanks for this.  The concept is certainly good.

On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <mingo@kernel.org> 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                    sfr@canb.auug.org.au

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 22:33                                   ` Stephen Rothwell
  0 siblings, 0 replies; 87+ messages in thread
From: Stephen Rothwell @ 2015-05-14 22:33 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Yoshinori Sato

[-- Attachment #1: Type: text/plain, Size: 537 bytes --]

Hi Ingo,

Thanks for this.  The concept is certainly good.

On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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                    sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 22:57                                 ` Michael Ellerman
  0 siblings, 0 replies; 87+ messages in thread
From: Michael Ellerman @ 2015-05-14 22:57 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch

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



^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-14 22:57                                 ` Michael Ellerman
  0 siblings, 0 replies; 87+ messages in thread
From: Michael Ellerman @ 2015-05-14 22:57 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-15  7:38                                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  7:38 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch, Yoshinori Sato


* Stephen Rothwell <sfr@canb.auug.org.au> wrote:

> Hi Ingo,
> 
> Thanks for this.  The concept is certainly good.
> 
> On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-15  7:38                                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  7:38 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Yoshinori Sato


* Stephen Rothwell <sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org> wrote:

> Hi Ingo,
> 
> Thanks for this.  The concept is certainly good.
> 
> On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-15  7:49                                   ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  7:49 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch


* Michael Ellerman <mpe@ellerman.id.au> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-15  7:49                                   ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  7:49 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-15  7:51                                       ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  7:51 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch, Yoshinori Sato


* Ingo Molnar <mingo@kernel.org> wrote:

> 
> * Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> 
> > Hi Ingo,
> > 
> > Thanks for this.  The concept is certainly good.
> > 
> > On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-15  7:51                                       ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  7:51 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Yoshinori Sato


* Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:

> 
> * Stephen Rothwell <sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org> wrote:
> 
> > Hi Ingo,
> > 
> > Thanks for this.  The concept is certainly good.
> > 
> > On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
  2015-05-14 19:59                               ` Ingo Molnar
  2015-05-14 22:33                                   ` Stephen Rothwell
@ 2015-05-15  9:37                                 ` Ingo Molnar
  1 sibling, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-15  9:37 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
  2015-05-15  7:49                                   ` Ingo Molnar
  (?)
@ 2015-05-18  1:37                                   ` Michael Ellerman
  2015-05-18  8:54                                       ` Ingo Molnar
  -1 siblings, 1 reply; 87+ messages in thread
From: Michael Ellerman @ 2015-05-18  1:37 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch

On Fri, 2015-05-15 at 09:49 +0200, Ingo Molnar wrote:
> * Michael Ellerman <mpe@ellerman.id.au> 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



^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-18  8:54                                       ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-18  8:54 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch


* Michael Ellerman <mpe@ellerman.id.au> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-18  8:54                                       ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-18  8:54 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-19  2:02                                         ` Michael Ellerman
  0 siblings, 0 replies; 87+ messages in thread
From: Michael Ellerman @ 2015-05-19  2:02 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch

On Mon, 2015-05-18 at 10:54 +0200, Ingo Molnar wrote:
> * Michael Ellerman <mpe@ellerman.id.au> 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



^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-19  2:02                                         ` Michael Ellerman
  0 siblings, 0 replies; 87+ messages in thread
From: Michael Ellerman @ 2015-05-19  2:02 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Jonathan Corbet,
	Peter Zijlstra, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

On Mon, 2015-05-18 at 10:54 +0200, Ingo Molnar wrote:
> * Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-22 15:49                               ` Jonathan Corbet
  0 siblings, 0 replies; 87+ messages in thread
From: Jonathan Corbet @ 2015-05-22 15:49 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

On Thu, 14 May 2015 12:35:44 +0200
Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-22 15:49                               ` Jonathan Corbet
  0 siblings, 0 replies; 87+ messages in thread
From: Jonathan Corbet @ 2015-05-22 15:49 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA

On Thu, 14 May 2015 12:35:44 +0200
Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-23  8:07                                 ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-23  8:07 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch


* Jonathan Corbet <corbet@lwn.net> wrote:

> On Thu, 14 May 2015 12:35:44 +0200
> Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
@ 2015-05-23  8:07                                 ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-05-23  8:07 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA


* Jonathan Corbet <corbet-T1hC0tSOHrs@public.gmane.org> wrote:

> On Thu, 14 May 2015 12:35:44 +0200
> Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
  2015-05-23  8:07                                 ` Ingo Molnar
  (?)
@ 2015-05-24 18:44                                 ` Jonathan Corbet
  2015-06-03 11:03                                     ` Ingo Molnar
  -1 siblings, 1 reply; 87+ messages in thread
From: Jonathan Corbet @ 2015-05-24 18:44 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch

On Sat, 23 May 2015 10:07:05 +0200
Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/
@ 2015-06-03 11:03                                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-06-03 11:03 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch,
	Peter Zijlstra


* Jonathan Corbet <corbet@lwn.net> wrote:

> On Sat, 23 May 2015 10:07:05 +0200
> Ingo Molnar <mingo@kernel.org> 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 |
+    -----------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/
@ 2015-06-03 11:03                                     ` Ingo Molnar
  0 siblings, 0 replies; 87+ messages in thread
From: Ingo Molnar @ 2015-06-03 11:03 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Peter Zijlstra


* Jonathan Corbet <corbet-T1hC0tSOHrs@public.gmane.org> wrote:

> On Sat, 23 May 2015 10:07:05 +0200
> Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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 |
+    -----------------------

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* Re: [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/
@ 2015-06-08 23:08                                       ` Jonathan Corbet
  0 siblings, 0 replies; 87+ messages in thread
From: Jonathan Corbet @ 2015-06-08 23:08 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch,
	Peter Zijlstra

On Wed, 3 Jun 2015 13:03:55 +0200
Ingo Molnar <mingo@kernel.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

* Re: [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files under Documentation/features/
@ 2015-06-08 23:08                                       ` Jonathan Corbet
  0 siblings, 0 replies; 87+ messages in thread
From: Jonathan Corbet @ 2015-06-08 23:08 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Josh Triplett, Borislav Petkov, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Peter Zijlstra

On Wed, 3 Jun 2015 13:03:55 +0200
Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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

^ permalink raw reply	[flat|nested] 87+ messages in thread

end of thread, other threads:[~2015-06-08 23:08 UTC | newest]

Thread overview: 87+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-11 19:29 [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic Josh Triplett
2015-05-11 19:29 ` Josh Triplett
2015-05-12 21:22 ` Andrew Morton
2015-05-12 21:38   ` Peter Zijlstra
2015-05-12 21:49     ` Andrew Morton
2015-05-12 21:49       ` Andrew Morton
2015-05-13  8:34       ` [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO Ingo Molnar
2015-05-13  8:34         ` Ingo Molnar
2015-05-13  8:34         ` Ingo Molnar
2015-05-13  8:34         ` Ingo Molnar
2015-05-13  8:56         ` [RFC PATCH v2] " Ingo Molnar
2015-05-13  8:56           ` Ingo Molnar
2015-05-13  8:56           ` Ingo Molnar
2015-05-13  9:24           ` [RFC PATCH v3] " Ingo Molnar
2015-05-13  9:24             ` Ingo Molnar
2015-05-13  9:24             ` Ingo Molnar
2015-05-13  9:24             ` Ingo Molnar
2015-05-13  9:46             ` Ingo Molnar
2015-05-13  9:46               ` Ingo Molnar
2015-05-13  9:46               ` Ingo Molnar
2015-05-13  9:47               ` [RFC PATCH v5] " Ingo Molnar
2015-05-13  9:47                 ` Ingo Molnar
2015-05-13  9:47                 ` Ingo Molnar
2015-05-13  9:47                 ` Ingo Molnar
2015-05-13 13:18                 ` Borislav Petkov
2015-05-13 13:48                   ` [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt Ingo Molnar
2015-05-13 13:48                     ` Ingo Molnar
2015-05-13 13:48                     ` Ingo Molnar
2015-05-13 13:48                     ` Ingo Molnar
2015-05-13 16:27                     ` Josh Triplett
2015-05-13 16:53                       ` Josh Triplett
2015-05-13 16:53                         ` Josh Triplett
2015-05-14 10:16                         ` Ingo Molnar
2015-05-14 10:31                           ` Josh Triplett
2015-05-14 10:31                             ` Josh Triplett
2015-05-13 22:05                       ` Andrew Morton
2015-05-13 22:05                         ` Andrew Morton
2015-05-14 10:02                         ` Ingo Molnar
2015-05-14 10:02                           ` Ingo Molnar
2015-05-14 10:15                         ` [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/ Ingo Molnar
2015-05-14 10:15                           ` Ingo Molnar
2015-05-14 10:35                           ` [PATCH v2] " Ingo Molnar
2015-05-14 10:35                             ` Ingo Molnar
2015-05-14 19:38                             ` Andrew Morton
2015-05-14 19:59                               ` Ingo Molnar
2015-05-14 22:33                                 ` Stephen Rothwell
2015-05-14 22:33                                   ` Stephen Rothwell
2015-05-15  7:38                                   ` Ingo Molnar
2015-05-15  7:38                                     ` Ingo Molnar
2015-05-15  7:51                                     ` Ingo Molnar
2015-05-15  7:51                                       ` Ingo Molnar
2015-05-15  9:37                                 ` Ingo Molnar
2015-05-14 20:34                               ` Richard Weinberger
2015-05-14 20:34                                 ` Richard Weinberger
2015-05-14 22:57                               ` Michael Ellerman
2015-05-14 22:57                                 ` Michael Ellerman
2015-05-15  7:49                                 ` Ingo Molnar
2015-05-15  7:49                                   ` Ingo Molnar
2015-05-18  1:37                                   ` Michael Ellerman
2015-05-18  8:54                                     ` Ingo Molnar
2015-05-18  8:54                                       ` Ingo Molnar
2015-05-19  2:02                                       ` Michael Ellerman
2015-05-19  2:02                                         ` Michael Ellerman
2015-05-22 15:49                             ` Jonathan Corbet
2015-05-22 15:49                               ` Jonathan Corbet
2015-05-23  8:07                               ` Ingo Molnar
2015-05-23  8:07                                 ` Ingo Molnar
2015-05-24 18:44                                 ` Jonathan Corbet
2015-06-03 11:03                                   ` [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files " Ingo Molnar
2015-06-03 11:03                                     ` Ingo Molnar
2015-06-08 23:08                                     ` Jonathan Corbet
2015-06-08 23:08                                       ` Jonathan Corbet
2015-05-14  7:08                       ` [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt Ingo Molnar
2015-05-14  3:55                     ` Paul Mackerras
2015-05-14  7:02                       ` Ingo Molnar
2015-05-13 14:09                 ` [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO Michele Curti
2015-05-13 14:09                   ` Michele Curti
2015-05-13 14:42                   ` Geert Uytterhoeven
2015-05-14  7:21                     ` H. Peter Anvin
2015-05-14  7:21                       ` H. Peter Anvin
2015-05-14  7:21                     ` H. Peter Anvin
2015-05-13  0:53   ` [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic josh
2015-05-13  0:53     ` josh-iaAMLnmF4UmaiuxdJuQwMA
2015-05-13 22:56 ` Andrew Morton
2015-05-13 22:56   ` Andrew Morton
2015-05-13 23:25   ` josh
2015-05-13 23:25     ` josh-iaAMLnmF4UmaiuxdJuQwMA

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.