Skip to contentSkip to conversation

clone: Support passing tls argument via C rather than pt_regs magic

PATCH In review Josh Triplett 13 participants 46 messages May 11, 2015 – Jun 8, 2015

Subsystems (8)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/2 clone: Support passing tls argument via C rather than pt_regs magic

clone with CLONE_SETTLS accepts an argument to set the thread-local storage area for the new thread. sys_clone declares an int argument tls_val in the appropriate point in the argument list (based on the various CLONE_BACKWARDS variants), but doesn't actually use or pass along that argument. Instead, sys_clone calls do_fork, which calls copy_process, which calls the arch-specific copy_thread, and copy_thread pulls the corresponding syscall argument out of the pt_regs captured at kernel entry (knowing what argument of clone that architecture passes tls in).

Apart from being awful and inscrutable, that also only works because only one code path into copy_thread can pass the CLONE_SETTLS flag, and that code path comes from sys_clone with its architecture-specific argument-passing order. This prevents introducing a new version of the clone system call without propagating the same architecture-specific position of the tls argument.

However, there's no reason to pull the argument out of pt_regs when sys_clone could just pass it down via C function call arguments.

Introduce a new CONFIG_HAVE_COPY_THREAD_TLS for architectures to opt into, and a new copy_thread_tls that accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down to copy_thread_tls.

Architectures that don't opt into copy_thread_tls will continue to ignore the C argument to sys_clone in favor of the pt_regs captured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.

Patch co-authored by Josh Triplett and Thiago Macieira.

---
 arch/Kconfig             |  7 ++++++
 include/linux/sched.h    | 14 ++++++++++++
 include/linux/syscalls.h |  6 +++---
 kernel/fork.c            | 55 +++++++++++++++++++++++++++++++-----------------
 4 files changed, 60 insertions(+), 22 deletions(-)
arch/Kconfig +7 -0
index 05d7a8a..4834a58 100644
@@ -484,6 +484,13 @@ config HAVE_IRQ_EXIT_ON_IRQ_STACK
 	  This spares a stack switch and improves cache usage on softirq
 	  processing.
 
+config HAVE_COPY_THREAD_TLS
+	bool
+	help
+	  Architecture provides copy_thread_tls to accept tls argument via
+	  normal C parameter passing, rather than extracting the syscall
+	  argument from pt_regs.
+
 #
 # ABI hall of shame
 #
include/linux/sched.h +14 -0
index a419b65..2cc88c6 100644
@@ -2480,8 +2480,22 @@ extern struct mm_struct *mm_access(struct task_struct *task, unsigned int mode);
 /* Remove the current tasks stale references to the old mm_struct */
 extern void mm_release(struct task_struct *, struct mm_struct *);
 
+#ifdef CONFIG_HAVE_COPY_THREAD_TLS
+extern int copy_thread_tls(unsigned long, unsigned long, unsigned long,
+			struct task_struct *, unsigned long);
+#else
 extern int copy_thread(unsigned long, unsigned long, unsigned long,
 			struct task_struct *);
+
+/* Architectures that haven't opted into copy_thread_tls get the tls argument
+ * via pt_regs, so ignore the tls argument passed via C. */
+static inline int copy_thread_tls(
+		unsigned long clone_flags, unsigned long sp, unsigned long arg,
+		struct task_struct *p, unsigned long tls)
+{
+	return copy_thread(clone_flags, sp, arg, p);
+}
+#endif
 extern void flush_thread(void);
 extern void exit_thread(void);
 
include/linux/syscalls.h +3 -3
index 76d1e38..bb51bec 100644
@@ -827,15 +827,15 @@ asmlinkage long sys_syncfs(int fd);
 asmlinkage long sys_fork(void);
 asmlinkage long sys_vfork(void);
 #ifdef CONFIG_CLONE_BACKWARDS
-asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, int,
+asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, unsigned long,
 	       int __user *);
 #else
 #ifdef CONFIG_CLONE_BACKWARDS3
 asmlinkage long sys_clone(unsigned long, unsigned long, int, int __user *,
-			  int __user *, int);
+			  int __user *, unsigned long);
 #else
 asmlinkage long sys_clone(unsigned long, unsigned long, int __user *,
-	       int __user *, int);
+	       int __user *, unsigned long);
 #endif
 #endif
 
kernel/fork.c +36 -19

130 lines not on this page · raw message

Signature · 1 line
2.1.4
maintainer
#1 lore raw
Quoted 10 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:

Introduce a new CONFIG_HAVE_COPY_THREAD_TLS for architectures to opt into, and a new copy_thread_tls that accepts the tls parameter as an additional unsigned long (syscall-argument-sized) argument. Change sys_clone's tls argument to an unsigned long (which does not change the ABI), and pass that down to copy_thread_tls.

Architectures that don't opt into copy_thread_tls will continue to ignore the C argument to sys_clone in favor of the pt_regs captured at kernel entry, and thus will be unable to introduce new versions of the clone syscall.

What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html

I'm thinking we should find a way to do this better. One way might be to maintain a Documentation/arch-todo which identifies each item, has a little list of what-to-do instructions and perhaps a list of the not-yet-done architectures. Basically a way for everyone to communicate at the arch maintainers.

maintainer
#2 lore raw
Quoted 19 lines · Andrew Morton
Quoted 10 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <[email protected]> wrote:

Introduce a new CONFIG_HAVE_COPY_THREAD_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

Quoted 5 lines

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

maintainer
#3 lore raw
Quoted 6 lines · On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra…
Quoted 6 lines

What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html

Quoted 8 lines
Quoted 5 lines

I'm thinking we should find a way to do this better. One way might be to maintain a Documentation/arch-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.

#4 lore raw

RFC PATCH 1/1 Documentation/arch: Add Documentation/arch-TODO

Quoted 17 lines · Andrew Morton
Quoted 6 lines · On Tue, 12 May 2015 23:38:43 +0200 Peter Zijlstra…
Quoted 6 lines

with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg,
http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html

Quoted 8 lines
Quoted 5 lines

I'm thinking we should find a way to do this better. One way might be to maintain a Documentation/arch-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 :-)

Quoted 8 lines

It was I who got linux-arch established, so I'm fairly familiar with it. (12 years ago, gad).

I don't think it's been very successful, particularly for this purpose. A whole pile of randomly cc'ed lkml overflow which we're relying on each individual maintainer to sift through and pluck out particular action items then later remember to implement them. It's disorganized and has too many cracks for things to fall through.

Yes, a mailing list is indeed not a very good TODO list.

We need a persistent post-it, and Documentation/arch-TODO (note the capital letters, we might as well shout?) sounds like a good place.

I'd suggest making it tabular, as per the patch below.

If it gets too large we can split it into multiple tables.

I'd like people to have a good look whether I messed up any entry, and I'd be happy to add new items as well.

Thanks,

Ingo

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

Quoted 1 line

From 33a487046b16971564d323079f66fb63aa870f4d Mon Sep 17 00:00:00 2001

From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO

Add a TODO list for missing/incomplete architecture support for generic kernel features.

---
 Documentation/arch-TODO | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
Documentation/arch-TODO new file +47 -0
new file mode 100644
index 000000000000..bfa289639b1c
@@ -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 |
+----------------------------------------------------------------------------------
+
#5 lore raw

RFC PATCH v2 1/1 Documentation/arch: Add Documentation/arch-TODO

Added a second table with more features listed.

Thanks,

Ingo

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

Quoted 1 line

From 32acc8a058a166d177346cfe59b6bc930f9e6471 Mon Sep 17 00:00:00 2001

From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO

Add a TODO list for missing/incomplete architecture support for generic kernel features.

---
 Documentation/arch-TODO | 89 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)
Documentation/arch-TODO new file +89 -0
new file mode 100644
index 000000000000..adf05e4c353f
@@ -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 |
+----------------------------------------------------------------------------------
#6 lore raw

RFC PATCH v3 1/1 Documentation/arch: Add Documentation/arch-TODO

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

Thanks,

Ingo

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

Quoted 1 line

From c6170954222f839b039f202bea46a85491b0c067 Mon Sep 17 00:00:00 2001

From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO

Add a TODO list for missing/incomplete architecture support for generic kernel features.

---
 Documentation/arch-TODO | 134 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 134 insertions(+)
Documentation/arch-TODO new file +134 -0
new file mode 100644
index 000000000000..a577b185c293
@@ -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 |
+----------------------------------------------------------------------------------
#7 lore raw

Re: [RFC PATCH v3] Documentation/arch: Add Documentation/arch-TODO

So this is the final version for now:

- add a fourth table

- fix errors in earlier tables, in particular I missed some PowerPC Kconfigs

- introduce the '..' denotion (in the final table) to show features that cannot be supported by an architecture due to hardware dependencies:

gcov-profile-all:---------------.
THP:--------. |
irq-time-acct:-. | |
| | |
----------------------------------------
alpha | TODO | TODO | TODO |
arc | TODO | .. | TODO |
arm | ok | ok | ok |
arm64 | TODO | ok | ok |
avr32 | TODO | .. | TODO |
blackfin | TODO | .. | TODO |
c6x | TODO | .. | TODO |

so in the 'THP' column, if an architecture could in theory support THP, it's listed as 'TODO', if it cannot, it's listed as '..'.

Please let me know about errors in these tables, and I can also add more features/facilities as well if I missed any.

Thanks,

Ingo

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

Quoted 1 line

From a44b9e91788a2628e1223d143024de4572a924c3 Mon Sep 17 00:00:00 2001

From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO

Add a TODO list for missing/incomplete architecture support for generic kernel features.

---
 Documentation/arch-TODO | 169 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)
Documentation/arch-TODO new file +169 -0
new file mode 100644
index 000000000000..0880914e1eaf
@@ -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 |
+----------------------------------------
#8 lore raw

RFC PATCH v5 1/1 Documentation/arch: Add Documentation/arch-TODO

(fixed the subject.)

So this is the final version for now:

- add a fourth table

- fix errors in earlier tables, in particular I missed some PowerPC Kconfigs

- introduce the '..' denotion (in the final table) to show features that cannot be supported by an architecture due to hardware dependencies:

gcov-profile-all:---------------.
THP:--------. |
irq-time-acct:-. | |
| | |
----------------------------------------
alpha | TODO | TODO | TODO |
arc | TODO | .. | TODO |
arm | ok | ok | ok |
arm64 | TODO | ok | ok |
avr32 | TODO | .. | TODO |
blackfin | TODO | .. | TODO |
c6x | TODO | .. | TODO |

so in the 'THP' column, if an architecture could in theory support THP, it's listed as 'TODO', if it cannot, it's listed as '..'.

Please let me know about errors in these tables, and I can also add more features/facilities as well if I missed any.

Thanks,

Ingo

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

Quoted 1 line

From a44b9e91788a2628e1223d143024de4572a924c3 Mon Sep 17 00:00:00 2001

From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-TODO

Add a TODO list for missing/incomplete architecture support for generic kernel features.

---
 Documentation/arch-TODO | 169 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)
Documentation/arch-TODO new file +169 -0
new file mode 100644
index 000000000000..0880914e1eaf
@@ -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 |
+----------------------------------------
#9 lore raw

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

Quoted 17 lines · Ingo Molnar

- introduce the '..' denotion (in the final table) to show features that cannot be supported by an architecture due to hardware dependencies:

gcov-profile-all:---------------.
THP:--------. |
irq-time-acct:-. | |
| | |
----------------------------------------
alpha | TODO | TODO | TODO |
arc | TODO | .. | TODO |
arm | ok | ok | ok |
arm64 | TODO | ok | ok |
avr32 | TODO | .. | TODO |
blackfin | TODO | .. | TODO |
c6x | TODO | .. | TODO |

Quoted 2 lines

so in the 'THP' column, if an architecture could in theory support THP, it's listed as 'TODO', if it cannot, it's listed as '..'.

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

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

+----------------------------------------------------------------------------------
+  alpha           |      |      |      |      |      |      |  ok  |  ok  |      |
+  arc             |  ok  |      |      |      |      |  ok  |  ok  |  ok  |      |
+  arm             |  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |      |  ok  |  ok  |

...

Signature · 5 lines
Regards/Gruss,
    Boris.

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

RFC PATCH v6 1/1 Documentation/arch: Add Documentation/arch-features.txt

Quoted 18 lines · Borislav Petkov
Quoted 17 lines · Ingo Molnar

- introduce the '..' denotion (in the final table) to show features that cannot be supported by an architecture due to hardware dependencies:

gcov-profile-all:---------------.
THP:--------. |
irq-time-acct:-. | |
| | |
----------------------------------------
alpha | TODO | TODO | TODO |
arc | TODO | .. | TODO |
arm | ok | ok | ok |
arm64 | TODO | ok | ok |
avr32 | TODO | .. | TODO |
blackfin | TODO | .. | TODO |
c6x | TODO | .. | TODO |

Quoted 4 lines
Quoted 2 lines

so in the 'THP' column, if an architecture could in theory support THP, it's listed as 'TODO', if it cannot, it's listed as '..'.

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

Yeah, indeed, added it.

Quoted 1 line

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

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

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

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

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

Thanks,

Ingo

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

Quoted 1 line

From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001

From: Ingo Molnar <[email protected]>
Date: Wed, 13 May 2015 10:30:11 +0200
Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt

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

---
 Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 222 insertions(+)
Documentation/arch-features.txt new file +222 -0
new file mode 100644
index 000000000000..4f6430bc552b
@@ -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  |
+--------------------------------------------------------------------
#11 lore raw

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

Quoted 9 lines · Ingo Molnar

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

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

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.

Quoted 231 lines
 Documentation/arch-features.txt | 222 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 222 insertions(+)
Documentation/arch-features.txt new file +222 -0
new file mode 100644
index 000000000000..4f6430bc552b
@@ -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  |
+--------------------------------------------------------------------
#12 lore raw

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

Quoted 11 lines · Josh Triplett

How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?

Is there any way we can *generate* this file from Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information 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

#13 lore raw

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

Quoted 15 lines · Josh Triplett
Quoted 7 lines · Josh Triplett

How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?

Quoted 5 lines

Is there any way we can *generate* this file from Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information from Kconfig, and together with the list of symbols for features needing architecture support, generate the table?

Quoted 3 lines

Just tried this. Looks like it's pretty trivial for most of these
features: just make ARCH=thearch allyesconfig, then look for the config symbol in the result.

No, that's not nearly enough to do a correct support matrix, for example due to subarchitectures that aren't included in an allyesconfig. There are also many #define driven features.

Thanks,

Ingo

#14 lore raw

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

Quoted 18 lines · Ingo Molnar
Quoted 15 lines · Josh Triplett
Quoted 12 lines · Josh Triplett

How likely is this to get out of date? Are people going to remember to patch this when they add a feature to their architecture? If they found out they had work to do by reading this file, which is the goal, then they'll likely remember to edit the file; however, if they find the feature and fix it without knowing about the file, will someone notice?

Is there any way we can *generate* this file from Kconfig? Can we extract the necessary "this is possible to enable" or "this arch selects this symbol" information from Kconfig, and together with the list of symbols for features needing architecture support, generate the table?

Quoted 7 lines
Quoted 3 lines

Just tried this. Looks like it's pretty trivial for most of these
features: just make ARCH=thearch allyesconfig, then look for the config symbol in the result.

No, that's not nearly enough to do a correct support matrix, for example due to subarchitectures that aren't included in an allyesconfig.

Still feasible to automate with a bit more scripting.

Quoted 1 line

There are also many #define driven features.

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

- Josh Triplett

maintainer
#15 lore raw

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

In reply to Josh Triplett
Quoted 5 lines · On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett…

If we can't generate this, then the ASCII-art style and right-aligned feature names seems *really* likely to produce spurious conflicts, especially when adding a feature to the list. Even though it would produce a much longer file, would you consider dropping the tables and just having a section per feature?

me2. The patch conflicts are going to be pretty bad.

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.

#16 lore raw

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

Quoted 10 lines · Andrew Morton
Quoted 5 lines · On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett…

If we can't generate this, then the ASCII-art style and right-aligned feature names seems *really* likely to produce spurious conflicts, especially when adding a feature to the list. Even though it would produce a much longer file, would you consider dropping the tables and just having a section per feature?

me2. The patch conflicts are going to be pretty bad.

Quoted 8 lines

I'd also prefer a format which allows us to add useful notes - it's a bit hostile to say "thou shalt implement X" without providing any info about how to do so. Where do we tell maintainers that there's a handy test app in tools/testing/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.

Quoted 2 lines

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

Yes.

Quoted 4 lines

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

HAVE_ARCH_KASAN

Ok, added.

Quoted 1 line

__HAVE_ARCH_PMDP_SPLITTING_FLUSH

Ok, added.

Quoted 1 line

__HAVE_ARCH_PTE_SPECIAL

Ok, added.

Quoted 1 line

__HAVE_ARCH_GATE_AREA

So this does not appear to be a feature per se: architectures that don't define __HAVE_ARCH_GATE_AREA fall back to the generic one. Or is it expected for every architecture to provide its own?

Quoted 1 line

ARCH_HAVE_ELF_ASLR

Does not seem to be upstream.

Quoted 1 line

ARCH_HAS_GCOV_PROFILE_ALL

Yeah, that's already included in v6.

Quoted 1 line

CONFIG_ARCH_USE_BUILTIN_BSWAP

So AFAICS this feature is an arch opt-in, on the basis of whether GCC does the right thing or not.

We'd need a separate config switch: ARCH_DONT_USE_BUILTIN_BSWAP to make a distinction between architectures that have made an informed decision to not support it, versus architectures that have not bothered so far.

Quoted 1 line

HAVE_ARCH_HUGE_VMAP

Ok, added.

Quoted 1 line

ARCH_HAS_SG_CHAIN

Ok, added.

Quoted 1 line

__HAVE_ARCH_STRNCASECMP

So, no architecture supports this yet- but added.

Quoted 1 line

ARCH_HAS_ELF_RANDOMIZE

Agreed and v6 already includes this.

Quoted 1 line

CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID

So this isn't really a feature, but a facility that an architecture might have to provide if it has a quirk. Only ia64 has that at the moment.

Quoted 1 line

ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT

Not upstream yet it appears.

Quoted 1 line

CONFIG_ARCH_USES_PG_UNCACHED

Ok, added.

Quoted 1 line

CONFIG_ARCH_HAS_WALK_MEMORY

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

Quoted 3 lines

and things which don't contain ARCH

HAVE_GENERIC_RCU_GUP

So this is a generic, RCU based fast-GUP facility - but architectures may implement their own get_user_pages_fast() facilites, such as x86 which does it lock-less.

So I'm not sure what to flag here: perhaps architectures that don't offer get_user_pages_fast() at all?

Quoted 1 line

HAVE_RCU_TABLE_FREE

So this is related to HAVE_GENERIC_RCU_GUP: architectures that do RCU based GUP will want to use HAVE_RCU_TABLE_FREE.

Quoted 1 line

HAVE_GENERIC_RCU_GUP

double ;-)

Quoted 1 line

CONFIG_HAVE_CLK

So I think the generic clock framework first needs to be integrated with core timekeeping before we start requiring it from architectures.

Quoted 1 line

CONFIG_HAVE_IOREMAP_PROT

Agreed - already in -v6.

Quoted 1 line

CONFIG_HAVE_MEMBLOCK_NODE_MAP

Ok, added.

Quoted 20 lines

And then there's the increasingly common

arch/include/asm/foo.h:

	static inline void wibble(...)
	{
		...
	}
	#define wibble wibble

include/linux/foo.h:

	#ifndef wibble
	static inline void wibble(...)
	{
		...
	}
	#define wibble
	#endif
Quoted 1 line

which is going to be hard to grep for....

Hm, yes. If you give me a rough list then I can try to map them out as well.

Once we have the initial feature collection done it will be a lot easier going forward: anything missing or inaccurate can be added to or fixed in its own file.

Quoted 4 lines

ugh, this thing's going to be enormous. People will go insane reading it, so each section should have a sentence describing what the feature does so maintainers can make quick decisions about whether they should bother.

I hope you'll like the structure of -v7 better :-)

Thanks,

Ingo

#17 lore raw

PATCH 1/1 Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

In reply to Andrew Morton

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.

---
 Documentation/features/BPF-JIT/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/ELF-ASLR/arch-support.txt   | 39 ++++++++++++++++++++++
 Documentation/features/KASAN/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/PG_uncached/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/THP/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/arch-support.txt            | 11 ++++++
 .../features/arch-tick-broadcast/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/clockevents/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/cmpxchg-local/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/context-tracking/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/dma-api-debug/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/dma-contiguous/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/dma_map_attrs/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/gcov-profile-all/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/generic-idle-thread/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/huge-vmap/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/ioremap_prot/arch-support.txt         | 39 ++++++++++++++++++++++
 .../features/irq-time-acct/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/jump-labels/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/kgdb/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/kprobes-event/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/kprobes-on-ftrace/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kretprobes/arch-support.txt | 39 ++++++++++++++++++++++
 Documentation/features/lockdep/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/modern-timekeeping/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/numa-balancing/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/numa-memblock/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/optprobes/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/perf-regs/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/perf-stackdump/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/pmdp_splitting_flush/arch-support.txt | 39 ++++++++++++++++++++++
 .../features/pte_special/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/queued-rwlocks/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/queued-spinlocks/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/rwsem-optimized/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/seccomp-filter/arch-support.txt       | 39 ++++++++++++++++++++++
 Documentation/features/sg-chain/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/stackprotector/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/strncasecmp/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/tracehook/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/uprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/user-ret-profiler/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/virt-cpuacct/arch-support.txt         | 39 ++++++++++++++++++++++
 44 files changed, 1688 insertions(+)
Documentation/features/BPF-JIT/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..e412c18cc87e
@@ -0,0 +1,39 @@
+#
+# Feature name:          BPF-JIT
+#         Kconfig:       HAVE_BPF_JIT
+#         description:   arch supports BPF JIT optimizations
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/ELF-ASLR/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..1b7322b15ca0
@@ -0,0 +1,39 @@
+#
+# Feature name:          ELF-ASLR
+#         Kconfig:       ARCH_HAS_ELF_RANDOMIZE
+#         description:   arch randomizes the stack, heap and binary images of ELF binaries
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/KASAN/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..90d82cbc5f02
@@ -0,0 +1,39 @@
+#
+# Feature name:          KASAN
+#         Kconfig:       HAVE_ARCH_KASAN
+#         description:   arch supports the KASAN runtime memory checker
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/PG_uncached/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..a3a0ecf49788
@@ -0,0 +1,39 @@
+#
+# Feature name:          PG_uncached
+#         Kconfig:       ARCH_USES_PG_UNCACHED
+#         description:   arch supports the PG_uncached page flag
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/THP/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..88da2621216b
@@ -0,0 +1,39 @@
+#
+# Feature name:          THP
+#         Kconfig:       HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
+#         description:   arch supports transparent hugepages
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: | TODO |
+    |        m32r: |  ..  |
+    |        m68k: |  ..  |
+    |       metag: |  ..  |
+    |  microblaze: |  ..  |
+    |        mips: |  ok  |
+    |     mn10300: |  ..  |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ..  |
+    |          sh: |  ..  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/arch-support.txt new file +11 -0
new file mode 100644
index 000000000000..d22a1095e661
@@ -0,0 +1,11 @@
+
+For generic kernel features that need architecture support, the
+arch-support.txt file in each feature directory shows the arch
+support matrix, for all upstream Linux architectures.
+
+The meaning of entries in the tables is:
+
+    | ok |  # feature supported by the architecture
+    |TODO|  # feature not yet supported by the architecture
+    | .. |  # feature cannot be supported by the hardware
+
Documentation/features/arch-tick-broadcast/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..d6798417428b
@@ -0,0 +1,39 @@
+#
+# Feature name:          arch-tick-broadcast
+#         Kconfig:       ARCH_HAS_TICK_BROADCAST
+#         description:   arch provides tick_broadcast()
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: | TODO |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/clockevents/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..8ba7fb83825b
@@ -0,0 +1,39 @@
+#
+# Feature name:          clockevents
+#         Kconfig:       GENERIC_CLOCKEVENTS
+#         description:   arch support generic clock events
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: |  ok  |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: |  ok  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/cmpxchg-local/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..364482dc1340
@@ -0,0 +1,39 @@
+#
+# Feature name:          cmpxchg-local
+#         Kconfig:       HAVE_CMPXCHG_LOCAL
+#         description:   arch supports the this_cpu_cmpxchg() API
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/context-tracking/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..47a15d997694
@@ -0,0 +1,39 @@
+#
+# Feature name:          context-tracking
+#         Kconfig:       HAVE_CONTEXT_TRACKING
+#         description:   arch supports context tracking for NO_HZ_FULL
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/dma-api-debug/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..cfd6bcf41b8a
@@ -0,0 +1,39 @@
+#
+# Feature name:          dma-api-debug
+#         Kconfig:       HAVE_DMA_API_DEBUG
+#         description:   arch supports DMA debug facilities
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/dma-contiguous/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..a775a06ed2af
@@ -0,0 +1,39 @@
+#
+# Feature name:          dma-contiguous
+#         Kconfig:       HAVE_DMA_CONTIGUOUS
+#         description:   arch supports the DMA CMA (continuous memory allocator)
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/dma_map_attrs/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..c6296a6354ac
@@ -0,0 +1,39 @@
+#
+# Feature name:          dma_map_attrs
+#         Kconfig:       HAVE_DMA_ATTRS
+#         description:   arch provides dma_*map*_attrs() APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/gcov-profile-all/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..27961d93b4f7
@@ -0,0 +1,39 @@
+#
+# Feature name:          gcov-profile-all
+#         Kconfig:       ARCH_HAS_GCOV_PROFILE_ALL
+#         description:   arch supports whole-kernel GCOV code coverage profiling
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/generic-idle-thread/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..30315627905d
@@ -0,0 +1,39 @@
+#
+# Feature name:          generic-idle-thread
+#         Kconfig:       GENERIC_SMP_IDLE_THREAD
+#         description:   arch makes use of the generic SMP idle thread facility
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/huge-vmap/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..8784e30b1734
@@ -0,0 +1,39 @@
+#
+# Feature name:          huge-vmap
+#         Kconfig:       HAVE_ARCH_HUGE_VMAP
+#         description:   arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/ioremap_prot/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..2094b77d924b
@@ -0,0 +1,39 @@
+#
+# Feature name:          ioremap_prot
+#         Kconfig:       HAVE_IOREMAP_PROT
+#         description:   arch has ioremap_prot()
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/irq-time-acct/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..15a85ecb7700
@@ -0,0 +1,39 @@
+#
+# Feature name:          irq-time-acct
+#         Kconfig:       HAVE_IRQ_TIME_ACCOUNTING
+#         description:   arch supports precise IRQ time accounting
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/jump-labels/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..f1c1c72653d6
@@ -0,0 +1,39 @@
+#
+# Feature name:          jump-labels
+#         Kconfig:       HAVE_ARCH_JUMP_LABEL
+#         description:   arch supports live patched high efficiency branches
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kgdb/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..f384b75f1251
@@ -0,0 +1,39 @@
+#
+# Feature name:          kgdb
+#         Kconfig:       HAVE_ARCH_KGDB
+#         description:   arch supports the kGDB kernel debugger
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kprobes-event/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..f8cf1d54d100
@@ -0,0 +1,39 @@
+#
+# Feature name:          kprobes-event
+#         Kconfig:       HAVE_REGS_AND_STACK_ACCESS_API
+#         description:   arch supports kprobes with perf events
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kprobes-on-ftrace/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..0f4a8c8df472
@@ -0,0 +1,39 @@
+#
+# Feature name:          kprobes-on-ftrace
+#         Kconfig:       HAVE_KPROBES_ON_FTRACE
+#         description:   arch supports combined kprobes and ftrace live patching
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..d5518f7fc567
@@ -0,0 +1,39 @@
+#
+# Feature name:          kprobes
+#         Kconfig:       HAVE_KPROBES
+#         description:   arch supports live patched kernel probe
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: |  ok  |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kretprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..13960c4cbe61
@@ -0,0 +1,39 @@
+#
+# Feature name:          kretprobes
+#         Kconfig:       HAVE_KRETPROBES
+#         description:   arch supports kernel function-return probes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/lockdep/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..5bfbb7d64fe0
@@ -0,0 +1,39 @@
+#
+# Feature name:          lockdep
+#         Kconfig:       LOCKDEP_SUPPORT
+#         description:   arch supports the runtime locking correctness debug facility
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/modern-timekeeping/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..14422649183d
@@ -0,0 +1,39 @@
+#
+# Feature name:          modern-timekeeping
+#         Kconfig:       !ARCH_USES_GETTIMEOFFSET
+#         description:   arch does not use arch_gettimeoffset() anymore
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: | TODO |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: | TODO |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/numa-balancing/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..791ceb82b16a
@@ -0,0 +1,39 @@
+#
+# Feature name:          numa-balancing
+#         Kconfig:       ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA
+#         description:   arch supports NUMA balancing
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ..  |
+    |       arm64: |  ..  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: | TODO |
+    |        m32r: |  ..  |
+    |        m68k: |  ..  |
+    |       metag: |  ..  |
+    |  microblaze: |  ..  |
+    |        mips: | TODO |
+    |     mn10300: |  ..  |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: |  ..  |
+    |     powerpc: |  ok  |
+    |        s390: |  ..  |
+    |       score: |  ..  |
+    |          sh: |  ..  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/numa-memblock/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..477df392fee1
@@ -0,0 +1,39 @@
+#
+# Feature name:          numa-memblock
+#         Kconfig:       HAVE_MEMBLOCK_NODE_MAP
+#         description:   arch supports NUMA aware memblocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ..  |
+    |       arm64: |  ..  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: |  ..  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: |  ..  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/optprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..33907b6f5775
@@ -0,0 +1,39 @@
+#
+# Feature name:          optprobes
+#         Kconfig:       HAVE_OPTPROBES
+#         description:   arch supports live patched optprobes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/perf-regs/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..c820ebab4328
@@ -0,0 +1,39 @@
+#
+# Feature name:          perf-regs
+#         Kconfig:       HAVE_PERF_REGS
+#         description:   arch supports perf events register access
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/perf-stackdump/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..cf42a6fab4e2
@@ -0,0 +1,39 @@
+#
+# Feature name:          perf-stackdump
+#         Kconfig:       HAVE_PERF_USER_STACK_DUMP
+#         description:   arch supports perf events stack dumps
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/pmdp_splitting_flush/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..930c6f0095e7
@@ -0,0 +1,39 @@
+#
+# Feature name:          pmdp_splitting_flush
+#         Kconfig:       #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH
+#         description:   arch supports the pmdp_splitting_flush() VM API
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/pte_special/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..0ca26d144c04
@@ -0,0 +1,39 @@
+#
+# Feature name:          pte_special
+#         Kconfig:       #define __HAVE_ARCH_PTE_SPECIAL
+#         description:   arch supports the pte_special()/pte_mkspecial() VM APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/queued-rwlocks/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..abaffd1b3b84
@@ -0,0 +1,39 @@
+#
+# Feature name:          queued-rwlocks
+#         Kconfig:       ARCH_USE_QUEUED_RWLOCKS
+#         description:   arch supports queued rwlocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/queued-spinlocks/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..480e9e657039
@@ -0,0 +1,39 @@
+#
+# Feature name:          queued-spinlocks
+#         Kconfig:       ARCH_USE_QUEUED_SPINLOCKS
+#         description:   arch supports queued spinlocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/rwsem-optimized/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..1572c7a75bb0
@@ -0,0 +1,39 @@
+#
+# Feature name:          rwsem-optimized
+#         Kconfig:       Optimized asm/rwsem.h
+#         description:   arch provides optimized rwsem APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: |  ok  |
+    |         frv: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: |  ok  |
+    |        m68k: |  ok  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/seccomp-filter/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..1d242a40f195
@@ -0,0 +1,39 @@
+#
+# Feature name:          seccomp-filter
+#         Kconfig:       HAVE_ARCH_SECCOMP_FILTER
+#         description:   arch supports seccomp filters
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/sg-chain/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..8aff17488ae0
@@ -0,0 +1,39 @@
+#
+# Feature name:          sg-chain
+#         Kconfig:       ARCH_HAS_SG_CHAIN
+#         description:   arch supports chained scatter-gather lists
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/stackprotector/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..543b41d36520
@@ -0,0 +1,39 @@
+#
+# Feature name:          stackprotector
+#         Kconfig:       HAVE_CC_STACKPROTECTOR
+#         description:   arch supports compiler driven stack overflow protection
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/strncasecmp/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..9ea6e4d4baed
@@ -0,0 +1,39 @@
+#
+# Feature name:          strncasecmp
+#         Kconfig:       __HAVE_ARCH_STRNCASECMP
+#         description:   arch provides an optimized strncasecmp() function
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: | TODO |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/tracehook/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..05e9de795733
@@ -0,0 +1,39 @@
+#
+# Feature name:          tracehook
+#         Kconfig:       HAVE_ARCH_TRACEHOOK
+#         description:   arch supports tracehook (ptrace) register handling APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/uprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..7c633b846f65
@@ -0,0 +1,39 @@
+#
+# Feature name:          uprobes
+#         Kconfig:       ARCH_SUPPORTS_UPROBES
+#         description:   arch supports live patched user probes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/user-ret-profiler/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..6ba4d07ff641
@@ -0,0 +1,39 @@
+#
+# Feature name:          user-ret-profiler
+#         Kconfig:       HAVE_USER_RETURN_NOTIFIER
+#         description:   arch supports user-space return from system call profiler
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/virt-cpuacct/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..c9374d33b8ac
@@ -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 |
+    -----------------------
#18 lore raw

PATCH v2 1/1 Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

Quoted 10 lines · Ingo Molnar

To list an architecture's unsupported features, just do something like:

  $ git grep -lE 'x86.*TODO' Documentation/features/*/arch-support.txt

Documentation/features/arch-tick-broadcast/arch-support.txt Documentation/features/strncasecmp/arch-support.txt

which prints the list of features not yet supported by the architecture.

Another way to visualize the feature support status of an architecture, would be to use the simple script I've put into Documentation/features/list-arch.sh:

triton:~/tip> Documentation/features/list-arch.sh #
# Kernel feature support matrix of architecture 'x86':
#

           arch-tick-broadcast:     |         x86: | TODO |
                       BPF-JIT:     |         x86: |  ok  |
                   clockevents:     |         x86: |  ok  |
                 cmpxchg-local:     |         x86: |  ok  |
              context-tracking:     |         x86: |  ok  |
                 dma-api-debug:     |         x86: |  ok  |
                dma-contiguous:     |         x86: |  ok  |
                 dma_map_attrs:     |         x86: |  ok  |
                      ELF-ASLR:     |         x86: |  ok  |
              gcov-profile-all:     |         x86: |  ok  |
           generic-idle-thread:     |         x86: |  ok  |
                     huge-vmap:     |         x86: |  ok  |
                  ioremap_prot:     |         x86: |  ok  |
                 irq-time-acct:     |         x86: |  ok  |
                   jump-labels:     |         x86: |  ok  |
                         KASAN:     |         x86: |  ok  |
                          kgdb:     |         x86: |  ok  |
                       kprobes:     |         x86: |  ok  |
                 kprobes-event:     |         x86: |  ok  |
             kprobes-on-ftrace:     |         x86: |  ok  |
                    kretprobes:     |         x86: |  ok  |
                       lockdep:     |         x86: |  ok  |
            modern-timekeeping:     |         x86: |  ok  |
                numa-balancing:     |         x86: |  ok  |
                 numa-memblock:     |         x86: |  ok  |
                     optprobes:     |         x86: |  ok  |
                     perf-regs:     |         x86: |  ok  |
                perf-stackdump:     |         x86: |  ok  |
                   PG_uncached:     |         x86: |  ok  |
          pmdp_splitting_flush:     |         x86: |  ok  |
                   pte_special:     |         x86: |  ok  |
                queued-rwlocks:     |         x86: |  ok  |
              queued-spinlocks:     |         x86: |  ok  |
               rwsem-optimized:     |         x86: |  ok  |
                seccomp-filter:     |         x86: |  ok  |
                      sg-chain:     |         x86: |  ok  |
                stackprotector:     |         x86: |  ok  |
                   strncasecmp:     |         x86: | TODO |
                           THP:     |         x86: |  ok  |
                     tracehook:     |         x86: |  ok  |
                       uprobes:     |         x86: |  ok  |
             user-ret-profiler:     |         x86: |  ok  |
                  virt-cpuacct:     |         x86: |  ok  |

Updated patch attached.

This way we can avoid the conflicts by generating the visualization on the fly.

Thanks,

Ingo

===============================>
From: Ingo Molnar <[email protected]>
Date: Thu, 14 May 2015 12:04:00 +0200
Subject: [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

Add arch support matrices for more than 40 generic kernel features that need per architecture support.

Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.

For example, lockdep support is shown the following way:

triton:~/tip> cat Documentation/features/lockdep/arch-support.txt #
# Feature name: lockdep
# Kconfig: LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
| alpha: | TODO |
| arc: | ok |
| arm: | ok |
| arm64: | ok |
| avr32: | ok |
| blackfin: | ok |
| c6x: | TODO |
| cris: | TODO |
| frv: | TODO |
| hexagon: | ok |
| ia64: | TODO |
| m32r: | TODO |
| m68k: | TODO |
| metag: | ok |
| microblaze: | ok |
| mips: | ok |
| mn10300: | TODO |
| nios2: | TODO |
| openrisc: | TODO |
| parisc: | TODO |
| powerpc: | ok |
| s390: | ok |
| score: | ok |
| sh: | ok |
| sparc: | ok |
| tile: | ok |
| um: | ok |
| unicore32: | ok |
| x86: | ok |
| xtensa: | ok |
-----------------------

For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.

The meaning of entries in the tables is:

    | ok |  # feature supported by the architecture
    |TODO|  # feature not yet supported by the architecture
    | .. |  # feature cannot be supported by the hardware

This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.

The Documentation/features/ hierarchy may also include generic kernel features that works on every architecture, in that case the arch-support.txt file will list every architecture as supported.

To list an architecture's unsupported features, just do something like:

  $ git grep -lE 'x86.*TODO' Documentation/features/*/arch-support.txt
  Documentation/features/arch-tick-broadcast/arch-support.txt
  Documentation/features/strncasecmp/arch-support.txt

which will print the list of not yet supported features.

The Documentation/features/list-arch.sh script will print the current support matrix of one architecture:

triton:~/tip> Documentation/features/list-arch.sh #
# Kernel feature support matrix of architecture 'x86':
#

           arch-tick-broadcast:     |         x86: | TODO |
                       BPF-JIT:     |         x86: |  ok  |
                   clockevents:     |         x86: |  ok  |
                 cmpxchg-local:     |         x86: |  ok  |
              context-tracking:     |         x86: |  ok  |
                 dma-api-debug:     |         x86: |  ok  |
                dma-contiguous:     |         x86: |  ok  |
                 dma_map_attrs:     |         x86: |  ok  |
                      ELF-ASLR:     |         x86: |  ok  |
              gcov-profile-all:     |         x86: |  ok  |
           generic-idle-thread:     |         x86: |  ok  |
                     huge-vmap:     |         x86: |  ok  |
                  ioremap_prot:     |         x86: |  ok  |
                 irq-time-acct:     |         x86: |  ok  |
                   jump-labels:     |         x86: |  ok  |
                         KASAN:     |         x86: |  ok  |
                          kgdb:     |         x86: |  ok  |
                       kprobes:     |         x86: |  ok  |
                 kprobes-event:     |         x86: |  ok  |
             kprobes-on-ftrace:     |         x86: |  ok  |
                    kretprobes:     |         x86: |  ok  |
                       lockdep:     |         x86: |  ok  |
            modern-timekeeping:     |         x86: |  ok  |
                numa-balancing:     |         x86: |  ok  |
                 numa-memblock:     |         x86: |  ok  |
                     optprobes:     |         x86: |  ok  |
                     perf-regs:     |         x86: |  ok  |
                perf-stackdump:     |         x86: |  ok  |
                   PG_uncached:     |         x86: |  ok  |
          pmdp_splitting_flush:     |         x86: |  ok  |
                   pte_special:     |         x86: |  ok  |
                queued-rwlocks:     |         x86: |  ok  |
              queued-spinlocks:     |         x86: |  ok  |
               rwsem-optimized:     |         x86: |  ok  |
                seccomp-filter:     |         x86: |  ok  |
                      sg-chain:     |         x86: |  ok  |
                stackprotector:     |         x86: |  ok  |
                   strncasecmp:     |         x86: | TODO |
                           THP:     |         x86: |  ok  |
                     tracehook:     |         x86: |  ok  |
                       uprobes:     |         x86: |  ok  |
             user-ret-profiler:     |         x86: |  ok  |
                  virt-cpuacct:     |         x86: |  ok  |
---
 Documentation/features/BPF-JIT/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/ELF-ASLR/arch-support.txt   | 39 ++++++++++++++++++++++
 Documentation/features/KASAN/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/PG_uncached/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/THP/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/arch-support.txt            | 11 ++++++
 .../features/arch-tick-broadcast/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/clockevents/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/cmpxchg-local/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/context-tracking/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/dma-api-debug/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/dma-contiguous/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/dma_map_attrs/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/gcov-profile-all/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/generic-idle-thread/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/huge-vmap/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/ioremap_prot/arch-support.txt         | 39 ++++++++++++++++++++++
 .../features/irq-time-acct/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/jump-labels/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/kgdb/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/kprobes-event/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/kprobes-on-ftrace/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kretprobes/arch-support.txt | 39 ++++++++++++++++++++++
 Documentation/features/list-arch.sh                | 21 ++++++++++++
 Documentation/features/lockdep/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/modern-timekeeping/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/numa-balancing/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/numa-memblock/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/optprobes/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/perf-regs/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/perf-stackdump/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/pmdp_splitting_flush/arch-support.txt | 39 ++++++++++++++++++++++
 .../features/pte_special/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/queued-rwlocks/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/queued-spinlocks/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/rwsem-optimized/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/seccomp-filter/arch-support.txt       | 39 ++++++++++++++++++++++
 Documentation/features/sg-chain/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/stackprotector/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/strncasecmp/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/tracehook/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/uprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/user-ret-profiler/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/virt-cpuacct/arch-support.txt         | 39 ++++++++++++++++++++++
 45 files changed, 1709 insertions(+)
Documentation/features/BPF-JIT/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..e412c18cc87e
@@ -0,0 +1,39 @@
+#
+# Feature name:          BPF-JIT
+#         Kconfig:       HAVE_BPF_JIT
+#         description:   arch supports BPF JIT optimizations
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/ELF-ASLR/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..1b7322b15ca0
@@ -0,0 +1,39 @@
+#
+# Feature name:          ELF-ASLR
+#         Kconfig:       ARCH_HAS_ELF_RANDOMIZE
+#         description:   arch randomizes the stack, heap and binary images of ELF binaries
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/KASAN/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..90d82cbc5f02
@@ -0,0 +1,39 @@
+#
+# Feature name:          KASAN
+#         Kconfig:       HAVE_ARCH_KASAN
+#         description:   arch supports the KASAN runtime memory checker
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/PG_uncached/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..a3a0ecf49788
@@ -0,0 +1,39 @@
+#
+# Feature name:          PG_uncached
+#         Kconfig:       ARCH_USES_PG_UNCACHED
+#         description:   arch supports the PG_uncached page flag
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/THP/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..88da2621216b
@@ -0,0 +1,39 @@
+#
+# Feature name:          THP
+#         Kconfig:       HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT
+#         description:   arch supports transparent hugepages
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: | TODO |
+    |        m32r: |  ..  |
+    |        m68k: |  ..  |
+    |       metag: |  ..  |
+    |  microblaze: |  ..  |
+    |        mips: |  ok  |
+    |     mn10300: |  ..  |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ..  |
+    |          sh: |  ..  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/arch-support.txt new file +11 -0
new file mode 100644
index 000000000000..d22a1095e661
@@ -0,0 +1,11 @@
+
+For generic kernel features that need architecture support, the
+arch-support.txt file in each feature directory shows the arch
+support matrix, for all upstream Linux architectures.
+
+The meaning of entries in the tables is:
+
+    | ok |  # feature supported by the architecture
+    |TODO|  # feature not yet supported by the architecture
+    | .. |  # feature cannot be supported by the hardware
+
Documentation/features/arch-tick-broadcast/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..d6798417428b
@@ -0,0 +1,39 @@
+#
+# Feature name:          arch-tick-broadcast
+#         Kconfig:       ARCH_HAS_TICK_BROADCAST
+#         description:   arch provides tick_broadcast()
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: | TODO |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/clockevents/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..8ba7fb83825b
@@ -0,0 +1,39 @@
+#
+# Feature name:          clockevents
+#         Kconfig:       GENERIC_CLOCKEVENTS
+#         description:   arch support generic clock events
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: |  ok  |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: |  ok  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/cmpxchg-local/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..364482dc1340
@@ -0,0 +1,39 @@
+#
+# Feature name:          cmpxchg-local
+#         Kconfig:       HAVE_CMPXCHG_LOCAL
+#         description:   arch supports the this_cpu_cmpxchg() API
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/context-tracking/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..47a15d997694
@@ -0,0 +1,39 @@
+#
+# Feature name:          context-tracking
+#         Kconfig:       HAVE_CONTEXT_TRACKING
+#         description:   arch supports context tracking for NO_HZ_FULL
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/dma-api-debug/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..cfd6bcf41b8a
@@ -0,0 +1,39 @@
+#
+# Feature name:          dma-api-debug
+#         Kconfig:       HAVE_DMA_API_DEBUG
+#         description:   arch supports DMA debug facilities
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/dma-contiguous/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..a775a06ed2af
@@ -0,0 +1,39 @@
+#
+# Feature name:          dma-contiguous
+#         Kconfig:       HAVE_DMA_CONTIGUOUS
+#         description:   arch supports the DMA CMA (continuous memory allocator)
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/dma_map_attrs/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..c6296a6354ac
@@ -0,0 +1,39 @@
+#
+# Feature name:          dma_map_attrs
+#         Kconfig:       HAVE_DMA_ATTRS
+#         description:   arch provides dma_*map*_attrs() APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/gcov-profile-all/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..27961d93b4f7
@@ -0,0 +1,39 @@
+#
+# Feature name:          gcov-profile-all
+#         Kconfig:       ARCH_HAS_GCOV_PROFILE_ALL
+#         description:   arch supports whole-kernel GCOV code coverage profiling
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/generic-idle-thread/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..30315627905d
@@ -0,0 +1,39 @@
+#
+# Feature name:          generic-idle-thread
+#         Kconfig:       GENERIC_SMP_IDLE_THREAD
+#         description:   arch makes use of the generic SMP idle thread facility
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/huge-vmap/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..8784e30b1734
@@ -0,0 +1,39 @@
+#
+# Feature name:          huge-vmap
+#         Kconfig:       HAVE_ARCH_HUGE_VMAP
+#         description:   arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/ioremap_prot/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..2094b77d924b
@@ -0,0 +1,39 @@
+#
+# Feature name:          ioremap_prot
+#         Kconfig:       HAVE_IOREMAP_PROT
+#         description:   arch has ioremap_prot()
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/irq-time-acct/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..15a85ecb7700
@@ -0,0 +1,39 @@
+#
+# Feature name:          irq-time-acct
+#         Kconfig:       HAVE_IRQ_TIME_ACCOUNTING
+#         description:   arch supports precise IRQ time accounting
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/jump-labels/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..f1c1c72653d6
@@ -0,0 +1,39 @@
+#
+# Feature name:          jump-labels
+#         Kconfig:       HAVE_ARCH_JUMP_LABEL
+#         description:   arch supports live patched high efficiency branches
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kgdb/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..f384b75f1251
@@ -0,0 +1,39 @@
+#
+# Feature name:          kgdb
+#         Kconfig:       HAVE_ARCH_KGDB
+#         description:   arch supports the kGDB kernel debugger
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kprobes-event/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..f8cf1d54d100
@@ -0,0 +1,39 @@
+#
+# Feature name:          kprobes-event
+#         Kconfig:       HAVE_REGS_AND_STACK_ACCESS_API
+#         description:   arch supports kprobes with perf events
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kprobes-on-ftrace/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..0f4a8c8df472
@@ -0,0 +1,39 @@
+#
+# Feature name:          kprobes-on-ftrace
+#         Kconfig:       HAVE_KPROBES_ON_FTRACE
+#         description:   arch supports combined kprobes and ftrace live patching
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..d5518f7fc567
@@ -0,0 +1,39 @@
+#
+# Feature name:          kprobes
+#         Kconfig:       HAVE_KPROBES
+#         description:   arch supports live patched kernel probe
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: |  ok  |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/kretprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..13960c4cbe61
@@ -0,0 +1,39 @@
+#
+# Feature name:          kretprobes
+#         Kconfig:       HAVE_KRETPROBES
+#         description:   arch supports kernel function-return probes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/list-arch.sh new file +21 -0
new file mode 100755
index 000000000000..aa53da231a26
@@ -0,0 +1,21 @@
+#
+# Small script that visualizes the kernel feature support status
+# of an architecture.
+#
+# (If no arguments are given then it will print the host architecture's status.)
+#
+
+[ $# = 0 ] && ARCH=$(arch | sed 's/x86_64/x86/' | sed 's/i386/x86/')
+
+cd $(dirname $0)
+echo "#"
+echo "# Kernel feature support matrix of architecture '$ARCH':"
+echo "#"
+
+for F in */arch-support.txt; do
+  N=$(git grep -h "Feature name" $F | cut -d: -f2)
+  S=$(git grep -hw $ARCH $F)
+
+  printf "%30s: %s\n" "$N" "$S"
+done
+
Documentation/features/lockdep/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..5bfbb7d64fe0
@@ -0,0 +1,39 @@
+#
+# Feature name:          lockdep
+#         Kconfig:       LOCKDEP_SUPPORT
+#         description:   arch supports the runtime locking correctness debug facility
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/modern-timekeeping/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..14422649183d
@@ -0,0 +1,39 @@
+#
+# Feature name:          modern-timekeeping
+#         Kconfig:       !ARCH_USES_GETTIMEOFFSET
+#         description:   arch does not use arch_gettimeoffset() anymore
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: | TODO |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: | TODO |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/numa-balancing/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..791ceb82b16a
@@ -0,0 +1,39 @@
+#
+# Feature name:          numa-balancing
+#         Kconfig:       ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA
+#         description:   arch supports NUMA balancing
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ..  |
+    |       arm64: |  ..  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: | TODO |
+    |        m32r: |  ..  |
+    |        m68k: |  ..  |
+    |       metag: |  ..  |
+    |  microblaze: |  ..  |
+    |        mips: | TODO |
+    |     mn10300: |  ..  |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: |  ..  |
+    |     powerpc: |  ok  |
+    |        s390: |  ..  |
+    |       score: |  ..  |
+    |          sh: |  ..  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/numa-memblock/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..477df392fee1
@@ -0,0 +1,39 @@
+#
+# Feature name:          numa-memblock
+#         Kconfig:       HAVE_MEMBLOCK_NODE_MAP
+#         description:   arch supports NUMA aware memblocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ..  |
+    |       arm64: |  ..  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: |  ..  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: |  ..  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/optprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..33907b6f5775
@@ -0,0 +1,39 @@
+#
+# Feature name:          optprobes
+#         Kconfig:       HAVE_OPTPROBES
+#         description:   arch supports live patched optprobes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/perf-regs/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..c820ebab4328
@@ -0,0 +1,39 @@
+#
+# Feature name:          perf-regs
+#         Kconfig:       HAVE_PERF_REGS
+#         description:   arch supports perf events register access
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/perf-stackdump/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..cf42a6fab4e2
@@ -0,0 +1,39 @@
+#
+# Feature name:          perf-stackdump
+#         Kconfig:       HAVE_PERF_USER_STACK_DUMP
+#         description:   arch supports perf events stack dumps
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/pmdp_splitting_flush/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..930c6f0095e7
@@ -0,0 +1,39 @@
+#
+# Feature name:          pmdp_splitting_flush
+#         Kconfig:       #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH
+#         description:   arch supports the pmdp_splitting_flush() VM API
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/pte_special/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..0ca26d144c04
@@ -0,0 +1,39 @@
+#
+# Feature name:          pte_special
+#         Kconfig:       #define __HAVE_ARCH_PTE_SPECIAL
+#         description:   arch supports the pte_special()/pte_mkspecial() VM APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/queued-rwlocks/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..abaffd1b3b84
@@ -0,0 +1,39 @@
+#
+# Feature name:          queued-rwlocks
+#         Kconfig:       ARCH_USE_QUEUED_RWLOCKS
+#         description:   arch supports queued rwlocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/queued-spinlocks/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..480e9e657039
@@ -0,0 +1,39 @@
+#
+# Feature name:          queued-spinlocks
+#         Kconfig:       ARCH_USE_QUEUED_SPINLOCKS
+#         description:   arch supports queued spinlocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/rwsem-optimized/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..1572c7a75bb0
@@ -0,0 +1,39 @@
+#
+# Feature name:          rwsem-optimized
+#         Kconfig:       Optimized asm/rwsem.h
+#         description:   arch provides optimized rwsem APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: |  ok  |
+    |         frv: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: |  ok  |
+    |        m68k: |  ok  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/seccomp-filter/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..1d242a40f195
@@ -0,0 +1,39 @@
+#
+# Feature name:          seccomp-filter
+#         Kconfig:       HAVE_ARCH_SECCOMP_FILTER
+#         description:   arch supports seccomp filters
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/sg-chain/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..8aff17488ae0
@@ -0,0 +1,39 @@
+#
+# Feature name:          sg-chain
+#         Kconfig:       ARCH_HAS_SG_CHAIN
+#         description:   arch supports chained scatter-gather lists
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/stackprotector/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..543b41d36520
@@ -0,0 +1,39 @@
+#
+# Feature name:          stackprotector
+#         Kconfig:       HAVE_CC_STACKPROTECTOR
+#         description:   arch supports compiler driven stack overflow protection
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/strncasecmp/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..9ea6e4d4baed
@@ -0,0 +1,39 @@
+#
+# Feature name:          strncasecmp
+#         Kconfig:       __HAVE_ARCH_STRNCASECMP
+#         description:   arch provides an optimized strncasecmp() function
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: | TODO |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/tracehook/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..05e9de795733
@@ -0,0 +1,39 @@
+#
+# Feature name:          tracehook
+#         Kconfig:       HAVE_ARCH_TRACEHOOK
+#         description:   arch supports tracehook (ptrace) register handling APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/uprobes/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..7c633b846f65
@@ -0,0 +1,39 @@
+#
+# Feature name:          uprobes
+#         Kconfig:       ARCH_SUPPORTS_UPROBES
+#         description:   arch supports live patched user probes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/user-ret-profiler/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..6ba4d07ff641
@@ -0,0 +1,39 @@
+#
+# Feature name:          user-ret-profiler
+#         Kconfig:       HAVE_USER_RETURN_NOTIFIER
+#         description:   arch supports user-space return from system call profiler
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/virt-cpuacct/arch-support.txt new file +39 -0
new file mode 100644
index 000000000000..c9374d33b8ac
@@ -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 |
+    -----------------------
maintainer
#19 lore raw

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

Quoted 25 lines

Add arch support matrices for more than 40 generic kernel features that need per architecture support.

Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.

For example, lockdep support is shown the following way:

triton:~/tip> cat Documentation/features/lockdep/arch-support.txt #
# Feature name: lockdep
# Kconfig: LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
...
| xtensa: | ok |
-----------------------

For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.

Quoted 5 lines

The meaning of entries in the tables is:

    | ok |  # feature supported by the architecture
    |TODO|  # feature not yet supported by the architecture
    | .. |  # feature cannot be supported by the hardware

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

Quoted 2 lines

This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.

I suppose so. Having a great bunch of directories, each containing a single file is a bit odd.

It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.

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

I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.

#20 lore raw

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

Quoted 25 lines · Andrew Morton
Quoted 25 lines

Add arch support matrices for more than 40 generic kernel features that need per architecture support.

Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.

For example, lockdep support is shown the following way:

triton:~/tip> cat Documentation/features/lockdep/arch-support.txt #
# Feature name: lockdep
# Kconfig: LOCKDEP_SUPPORT
# description: arch supports the runtime locking correctness debug facility
#
-----------------------
| arch |status|
-----------------------
...
| xtensa: | ok |
-----------------------

For generic kernel features that need architecture support, the arch-support.txt file in each feature directory shows the arch support matrix, for all upstream Linux architectures.

Quoted 8 lines
Quoted 5 lines

The meaning of entries in the tables is:

    | ok |  # feature supported by the architecture
    |TODO|  # feature not yet supported by the architecture
    | .. |  # feature cannot be supported by the 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.

Quoted 5 lines
Quoted 2 lines

This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.

I suppose so. Having a great bunch of directories, each containing a single file is a bit odd.

It's a starting point and nicely extensible. I was thinking about one more intermediate level:

Documentation/features/locking/lockdep/ Documentation/features/locking/rwsem-optimized/ Documentation/features/locking/queued-rwlocks/ Documentation/features/locking/queued-spinlocks/
...

Documentation/features/vm/PG_uncached/ Documentation/features/vm/pmdp_splitting_flush/ Documentation/features/vm/pte_special/
...

The advantage of this, beyond more structure, would be that I'd probably move most of the Documentation/locking/*.txt files into Documentation/features/locking/, for example lockdep-design.txt would go into Documentation/features/locking/lockdep/.

I'd keep the hierarchy at a predictable depth though, i.e.:

Documentation/features/<subsystem>/<feature_name>/

Quoted 3 lines

It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.

Ok.

Quoted 2 lines

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

Yeah.

Quoted 2 lines

I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.

I think we god some feedback from the PowerPC side, but yeah, would be nice to get more reactions.

Thanks,

Ingo

#21 lore raw

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

Hi Ingo,

Thanks for this. The concept is certainly good.

Quoted 3 lines · On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar…

The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.

If you want to test how hard that is (and what sort of patch it produces), the h8300 architecture was added to linux-next recently.

Signature · 2 lines
Cheers,
Stephen Rothwell                    [email protected]
#22 lore raw

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

Quoted 11 lines · Stephen Rothwell

Hi Ingo,

Thanks for this. The concept is certainly good.

Quoted 3 lines · On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar…

The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.

If you want to test how hard that is (and what sort of patch it produces), the h8300 architecture was added to linux-next recently.

I tried this out, this is the resulting feature support matrix for the new h8300 architecture:

#
# Kernel feature support matrix of architecture 'h8300':
#

           arch-tick-broadcast:     |       h8300: | TODO |
                       BPF-JIT:     |       h8300: | TODO |
                   clockevents:     |       h8300: |  ok  |
                 cmpxchg-local:     |       h8300: | TODO |
              context-tracking:     |       h8300: | TODO |
                 dma-api-debug:     |       h8300: | TODO |
                dma-contiguous:     |       h8300: | TODO |
                 dma_map_attrs:     |       h8300: |  ok  |
                      ELF-ASLR:     |       h8300: | TODO |
              gcov-profile-all:     |       h8300: | TODO |
           generic-idle-thread:     |       h8300: | TODO |
                     huge-vmap:     |       h8300: | TODO |
                  ioremap_prot:     |       h8300: | TODO |
                 irq-time-acct:     |       h8300: | TODO |
                   jump-labels:     |       h8300: | TODO |
                         KASAN:     |       h8300: | TODO |
                          kgdb:     |       h8300: | TODO |
                       kprobes:     |       h8300: | TODO |
                 kprobes-event:     |       h8300: | TODO |
             kprobes-on-ftrace:     |       h8300: | TODO |
                    kretprobes:     |       h8300: | TODO |
                       lockdep:     |       h8300: | TODO |
            modern-timekeeping:     |       h8300: |  ok  |
                numa-balancing:     |       h8300: |  ..  |
                 numa-memblock:     |       h8300: |  ..  |
                     optprobes:     |       h8300: | TODO |
                     perf-regs:     |       h8300: | TODO |
                perf-stackdump:     |       h8300: | TODO |
                   PG_uncached:     |       h8300: | TODO |
          pmdp_splitting_flush:     |       h8300: | TODO |
                   pte_special:     |       h8300: | TODO |
                queued-rwlocks:     |       h8300: | TODO |
              queued-spinlocks:     |       h8300: | TODO |
               rwsem-optimized:     |       h8300: |  ok  |
                seccomp-filter:     |       h8300: | TODO |
                      sg-chain:     |       h8300: | TODO |
                stackprotector:     |       h8300: | TODO |
                   strncasecmp:     |       h8300: | TODO |
                           THP:     |       h8300: |  ..  |
                     tracehook:     |       h8300: | TODO |
                       uprobes:     |       h8300: | TODO |
             user-ret-profiler:     |       h8300: | TODO |
                  virt-cpuacct:     |       h8300: | TODO |

Thanks,

Ingo

#23 lore raw

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

Quoted 15 lines · Ingo Molnar
Quoted 11 lines · Stephen Rothwell

Hi Ingo,

Thanks for this. The concept is certainly good.

Quoted 3 lines · On Thu, 14 May 2015 21:59:25 +0200 Ingo Molnar…

The patch that adds a new architecture to all these files would give us a good overview about how complete an initial port is.

If you want to test how hard that is (and what sort of patch it produces), the h8300 architecture was added to linux-next recently.

Quoted 8 lines

I tried this out, this is the resulting feature support matrix for the new h8300 architecture:

#
# Kernel feature support matrix of architecture 'h8300':
#

           arch-tick-broadcast:     |       h8300: | TODO |
                       BPF-JIT:     |       h8300: | TODO |

Perhaps the more verbose table is more useful:

#
# Kernel feature support matrix of architecture 'h8300':
#

   arch-tick-broadcast:  | TODO |                            ARCH_HAS_TICK_BROADCAST #  arch provides tick_broadcast()
               BPF-JIT:  | TODO |                                       HAVE_BPF_JIT #  arch supports BPF JIT optimizations
           clockevents:  |  ok  |                                GENERIC_CLOCKEVENTS #  arch support generic clock events
         cmpxchg-local:  | TODO |                                 HAVE_CMPXCHG_LOCAL #  arch supports the this_cpu_cmpxchg() API
      context-tracking:  | TODO |                              HAVE_CONTEXT_TRACKING #  arch supports context tracking for NO_HZ_FULL
         dma-api-debug:  | TODO |                                 HAVE_DMA_API_DEBUG #  arch supports DMA debug facilities
        dma-contiguous:  | TODO |                                HAVE_DMA_CONTIGUOUS #  arch supports the DMA CMA (continuous memory allocator)
         dma_map_attrs:  |  ok  |                                     HAVE_DMA_ATTRS #  arch provides dma_*map*_attrs() APIs
              ELF-ASLR:  | TODO |                             ARCH_HAS_ELF_RANDOMIZE #  arch randomizes the stack, heap and binary images of ELF binaries
      gcov-profile-all:  | TODO |                          ARCH_HAS_GCOV_PROFILE_ALL #  arch supports whole-kernel GCOV code coverage profiling
   generic-idle-thread:  | TODO |                            GENERIC_SMP_IDLE_THREAD #  arch makes use of the generic SMP idle thread facility
             huge-vmap:  | TODO |                                HAVE_ARCH_HUGE_VMAP #  arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
          ioremap_prot:  | TODO |                                  HAVE_IOREMAP_PROT #  arch has ioremap_prot()
         irq-time-acct:  | TODO |                           HAVE_IRQ_TIME_ACCOUNTING #  arch supports precise IRQ time accounting
           jump-labels:  | TODO |                               HAVE_ARCH_JUMP_LABEL #  arch supports live patched high efficiency branches
                 KASAN:  | TODO |                                    HAVE_ARCH_KASAN #  arch supports the KASAN runtime memory checker
                  kgdb:  | TODO |                                     HAVE_ARCH_KGDB #  arch supports the kGDB kernel debugger
               kprobes:  | TODO |                                       HAVE_KPROBES #  arch supports live patched kernel probe
         kprobes-event:  | TODO |                     HAVE_REGS_AND_STACK_ACCESS_API #  arch supports kprobes with perf events
     kprobes-on-ftrace:  | TODO |                             HAVE_KPROBES_ON_FTRACE #  arch supports combined kprobes and ftrace live patching
            kretprobes:  | TODO |                                    HAVE_KRETPROBES #  arch supports kernel function-return probes
               lockdep:  | TODO |                                    LOCKDEP_SUPPORT #  arch supports the runtime locking correctness debug facility
    modern-timekeeping:  |  ok  |                           !ARCH_USES_GETTIMEOFFSET #  arch does not use arch_gettimeoffset() anymore
        numa-balancing:  |  ..  |      ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA #  arch supports NUMA balancing
         numa-memblock:  |  ..  |                             HAVE_MEMBLOCK_NODE_MAP #  arch supports NUMA aware memblocks
             optprobes:  | TODO |                                     HAVE_OPTPROBES #  arch supports live patched optprobes
             perf-regs:  | TODO |                                     HAVE_PERF_REGS #  arch supports perf events register access
        perf-stackdump:  | TODO |                          HAVE_PERF_USER_STACK_DUMP #  arch supports perf events stack dumps
           PG_uncached:  | TODO |                              ARCH_USES_PG_UNCACHED #  arch supports the PG_uncached page flag
  pmdp_splitting_flush:  | TODO |           #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH #  arch supports the pmdp_splitting_flush() VM API
           pte_special:  | TODO |                    #define __HAVE_ARCH_PTE_SPECIAL #  arch supports the pte_special()/pte_mkspecial() VM APIs
        queued-rwlocks:  | TODO |                            ARCH_USE_QUEUED_RWLOCKS #  arch supports queued rwlocks
      queued-spinlocks:  | TODO |                          ARCH_USE_QUEUED_SPINLOCKS #  arch supports queued spinlocks
       rwsem-optimized:  |  ok  |                              Optimized asm/rwsem.h #  arch provides optimized rwsem APIs
        seccomp-filter:  | TODO |                           HAVE_ARCH_SECCOMP_FILTER #  arch supports seccomp filters
              sg-chain:  | TODO |                                  ARCH_HAS_SG_CHAIN #  arch supports chained scatter-gather lists
        stackprotector:  | TODO |                             HAVE_CC_STACKPROTECTOR #  arch supports compiler driven stack overflow protection
           strncasecmp:  | TODO |                            __HAVE_ARCH_STRNCASECMP #  arch provides an optimized strncasecmp() function
                   THP:  |  ..  |            HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT #  arch supports transparent hugepages
             tracehook:  | TODO |                                HAVE_ARCH_TRACEHOOK #  arch supports tracehook (ptrace) register handling APIs
               uprobes:  | TODO |                              ARCH_SUPPORTS_UPROBES #  arch supports live patched user probes
     user-ret-profiler:  | TODO |                          HAVE_USER_RETURN_NOTIFIER #  arch supports user-space return from system call profiler
          virt-cpuacct:  | TODO |                  HAVE_VIRT_CPU_ACCOUNTING || 64BIT #  arch supports precise virtual CPU time accounting

Thanks,

Ingo

#24 lore raw

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

In reply to Ingo Molnar
Quoted 20 lines · Ingo Molnar
Quoted 5 lines
Quoted 2 lines

This directory structure can be used in the future to add other files - such as porting guides, testing description, etc.

I suppose so. Having a great bunch of directories, each containing a single file is a bit odd.

It's a starting point and nicely extensible. I was thinking about one more intermediate level:

   Documentation/features/locking/lockdep/
   Documentation/features/locking/rwsem-optimized/
   Documentation/features/locking/queued-rwlocks/
   Documentation/features/locking/queued-spinlocks/
   ...

   Documentation/features/vm/PG_uncached/
   Documentation/features/vm/pmdp_splitting_flush/
   Documentation/features/vm/pte_special/
   ...
Quoted 8 lines

The advantage of this, beyond more structure, would be that I'd probably move most of the Documentation/locking/*.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

#25 lore raw

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

In reply to Andrew Morton
Quoted 2 lines · Andrew Morton

I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.

I like it. :-)

Signature · 2 lines
Thanks,
//richard
#26 lore raw

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

In reply to Andrew Morton
Quoted 9 lines · Andrew Morton
Quoted 5 lines

Add arch support matrices for more than 40 generic kernel features that need per architecture support.

Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.

It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.

+1 on patch titles.

Quoted 5 lines

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

I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.

Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.

I'd like to see more description in the individual files of what the feature is, and preferably some pointers to what's needed to implement it.

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

I realise retrofitting that for all these existing features is quite time consuming, but for new features hopefully the bar can be raised a little in terms of that description.

cheers

#27 lore raw

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

Quoted 4 lines · Michael Ellerman
Quoted 3 lines · Andrew Morton
Quoted 3 lines

Add arch support matrices for more than 40 generic kernel features that need per architecture support.

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.

It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.

+1 on patch titles.

Ok, I'll solve this.

Quoted 8 lines
Quoted 5 lines

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

I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.

Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.

Please double check the PowerPC support matrix for correctness (if you haven't yet):

#
# Kernel feature support matrix of architecture 'powerpc':
#

   arch-tick-broadcast:  |  ok  |                            ARCH_HAS_TICK_BROADCAST #  arch provides tick_broadcast()
               BPF-JIT:  |  ok  |                                       HAVE_BPF_JIT #  arch supports BPF JIT optimizations
           clockevents:  |  ok  |                                GENERIC_CLOCKEVENTS #  arch support generic clock events
         cmpxchg-local:  | TODO |                                 HAVE_CMPXCHG_LOCAL #  arch supports the this_cpu_cmpxchg() API
      context-tracking:  |  ok  |                              HAVE_CONTEXT_TRACKING #  arch supports context tracking for NO_HZ_FULL
         dma-api-debug:  |  ok  |                                 HAVE_DMA_API_DEBUG #  arch supports DMA debug facilities
        dma-contiguous:  | TODO |                                HAVE_DMA_CONTIGUOUS #  arch supports the DMA CMA (continuous memory allocator)
         dma_map_attrs:  |  ok  |                                     HAVE_DMA_ATTRS #  arch provides dma_*map*_attrs() APIs
              ELF-ASLR:  |  ok  |                             ARCH_HAS_ELF_RANDOMIZE #  arch randomizes the stack, heap and binary images of ELF binaries
      gcov-profile-all:  |  ok  |                          ARCH_HAS_GCOV_PROFILE_ALL #  arch supports whole-kernel GCOV code coverage profiling
   generic-idle-thread:  |  ok  |                            GENERIC_SMP_IDLE_THREAD #  arch makes use of the generic SMP idle thread facility
             huge-vmap:  | TODO |                                HAVE_ARCH_HUGE_VMAP #  arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
          ioremap_prot:  |  ok  |                                  HAVE_IOREMAP_PROT #  arch has ioremap_prot()
         irq-time-acct:  |  ok  |                           HAVE_IRQ_TIME_ACCOUNTING #  arch supports precise IRQ time accounting
           jump-labels:  |  ok  |                               HAVE_ARCH_JUMP_LABEL #  arch supports live patched high efficiency branches
                 KASAN:  | TODO |                                    HAVE_ARCH_KASAN #  arch supports the KASAN runtime memory checker
                  kgdb:  |  ok  |                                     HAVE_ARCH_KGDB #  arch supports the kGDB kernel debugger
               kprobes:  |  ok  |                                       HAVE_KPROBES #  arch supports live patched kernel probe
         kprobes-event:  |  ok  |                     HAVE_REGS_AND_STACK_ACCESS_API #  arch supports kprobes with perf events
     kprobes-on-ftrace:  | TODO |                             HAVE_KPROBES_ON_FTRACE #  arch supports combined kprobes and ftrace live patching
            kretprobes:  |  ok  |                                    HAVE_KRETPROBES #  arch supports kernel function-return probes
               lockdep:  |  ok  |                                    LOCKDEP_SUPPORT #  arch supports the runtime locking correctness debug facility
    modern-timekeeping:  |  ok  |                           !ARCH_USES_GETTIMEOFFSET #  arch does not use arch_gettimeoffset() anymore
        numa-balancing:  |  ok  |      ARCH_SUPPORTS_NUMA_BALANCING && 64BIT && NUMA #  arch supports NUMA balancing
         numa-memblock:  |  ok  |                             HAVE_MEMBLOCK_NODE_MAP #  arch supports NUMA aware memblocks
             optprobes:  | TODO |                                     HAVE_OPTPROBES #  arch supports live patched optprobes
             perf-regs:  | TODO |                                     HAVE_PERF_REGS #  arch supports perf events register access
        perf-stackdump:  | TODO |                          HAVE_PERF_USER_STACK_DUMP #  arch supports perf events stack dumps
           PG_uncached:  | TODO |                              ARCH_USES_PG_UNCACHED #  arch supports the PG_uncached page flag
  pmdp_splitting_flush:  |  ok  |           #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH #  arch supports the pmdp_splitting_flush() VM API
           pte_special:  |  ok  |                    #define __HAVE_ARCH_PTE_SPECIAL #  arch supports the pte_special()/pte_mkspecial() VM APIs
        queued-rwlocks:  | TODO |                            ARCH_USE_QUEUED_RWLOCKS #  arch supports queued rwlocks
      queued-spinlocks:  | TODO |                          ARCH_USE_QUEUED_SPINLOCKS #  arch supports queued spinlocks
       rwsem-optimized:  |  ok  |                              Optimized asm/rwsem.h #  arch provides optimized rwsem APIs
        seccomp-filter:  | TODO |                           HAVE_ARCH_SECCOMP_FILTER #  arch supports seccomp filters
              sg-chain:  |  ok  |                                  ARCH_HAS_SG_CHAIN #  arch supports chained scatter-gather lists
        stackprotector:  | TODO |                             HAVE_CC_STACKPROTECTOR #  arch supports compiler driven stack overflow protection
           strncasecmp:  | TODO |                            __HAVE_ARCH_STRNCASECMP #  arch provides an optimized strncasecmp() function
                   THP:  |  ok  |            HAVE_ARCH_TRANSPARENT_HUGEPAGE && 64BIT #  arch supports transparent hugepages
             tracehook:  |  ok  |                                HAVE_ARCH_TRACEHOOK #  arch supports tracehook (ptrace) register handling APIs
               uprobes:  |  ok  |                              ARCH_SUPPORTS_UPROBES #  arch supports live patched user probes
     user-ret-profiler:  | TODO |                          HAVE_USER_RETURN_NOTIFIER #  arch supports user-space return from system call profiler
          virt-cpuacct:  |  ok  |                  HAVE_VIRT_CPU_ACCOUNTING || 64BIT #  arch supports precise virtual CPU time accounting
Quoted 3 lines

I'd like to see more description in the individual files of what the feature is, and preferably some pointers to what's needed to implement it.

Yeah, so I tried to add a short description to the feature file itself, and for many of these features that single sentence is the only documentation we have in the kernel source ...

More comprehensive description can be added both to the Kconfig and to the feature description as well, by the maintainers of the individual features.

Quoted 2 lines

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

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

Quoted 3 lines

I realise retrofitting that for all these existing features is quite time consuming, but for new features hopefully the bar can be raised a little in terms of that description.

Yeah.

Thanks,

Ingo

#28 lore raw

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

Quoted 9 lines · Ingo Molnar
Quoted 7 lines · Michael Ellerman
Quoted 6 lines · Andrew Morton
Quoted 5 lines

Add arch support matrices for more than 40 generic kernel features that need per architecture support.

Each feature has its own directory under Documentation/features/feature_name/, and the arch-support.txt file shows its current arch porting status.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

It would be nice to provide people with commit IDs to look at, but the IDs won't be known at the time the documentation file is created. We could provide patch titles.

+1 on patch titles.

Ok, I'll solve this.

Thanks.

Quoted 11 lines
Quoted 8 lines
Quoted 5 lines

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

I don't think we've heard from any (non-x86) arch maintainers? Do they consider this useful at all? Poke.

Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.

Please double check the PowerPC support matrix for correctness (if you haven't yet):

It looks good except for:

Quoted 1 line

rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem APIs

I don't see an rwsem.h in powerpc anywhere?

And this is correct but a bit confusing:

Quoted 1 line

irq-time-acct: | ok | HAVE_IRQ_TIME_ACCOUNTING # arch supports precise IRQ time accounting

I think you and Paul agreed it's "ok" on powerpc because we have VIRT_CPU_ACCOUNTING instead, but that's not obvious.

Quoted 7 lines
Quoted 3 lines

I'd like to see more description in the individual files of what the feature is, and preferably some pointers to what's needed to implement it.

Yeah, so I tried to add a short description to the feature file itself, and for many of these features that single sentence is the only documentation we have in the kernel source ...

Yep, so that's better than what we had, and we can always improve it.

cheers

#29 lore raw

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

Quoted 11 lines · Michael Ellerman
Quoted 5 lines
Quoted 2 lines

Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.

Please double check the PowerPC support matrix for correctness (if you haven't yet):

It looks good except for:

Quoted 1 line

rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem 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 |
-----------------------

Quoted 6 lines

And this is correct but a bit confusing:

Quoted 1 line

irq-time-acct: | ok | HAVE_IRQ_TIME_ACCOUNTING # arch supports precise IRQ time 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

#30 lore raw

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

Quoted 32 lines · Ingo Molnar
Quoted 11 lines · Michael Ellerman
Quoted 5 lines
Quoted 2 lines

Yes it is. I have my own version I've cobbled together for powerpc, but this is much better.

Please double check the PowerPC support matrix for correctness (if you haven't yet):

It looks good except for:

Quoted 1 line

rwsem-optimized: | ok | Optimized asm/rwsem.h # arch provides optimized rwsem 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: | .. |

Quoted 2 lines

i.e. it's not marked as TODO, but not as supported either which would be misleading.

Great thanks.

cheers

maintainer
#31 lore raw

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

In reply to Ingo Molnar
Quoted 1 line · On Thu, 14 May 2015 12:35:44 +0200 Ingo Molnar <[email protected]> wrote:

Updated patch attached.

This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. It can be replaced, though, should you decide to completely rework the format again...:)

Thanks,

jon

#32 lore raw

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

Quoted 7 lines · Jonathan Corbet
Quoted 1 line · On Thu, 14 May 2015 12:35:44 +0200 Ingo Molnar…

Updated patch attached.

This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. [...]

Please don't, I've got a different structure for it, so that the Git log becomes a lot more usable. I'll post it after the weekend.

Thanks,

Ingo

maintainer
#33 lore raw

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

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

This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. [...]

Please don't, I've got a different structure for it, so that the Git log becomes a lot more usable. I'll post it after the weekend.

OK, fine, dropped.

Thanks,

jon

#34 lore raw

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

Quoted 10 lines · Jonathan Corbet
Quoted 5 lines · On Sat, 23 May 2015 10:07:05 +0200 Ingo Molnar…
Quoted 2 lines

This seems to have slowed down a bit; I've taken the liberty of pulling it into the docs tree. [...]

Please don't, I've got a different structure for it, so that the Git log becomes a lot more usable. I'll post it after the weekend.

OK, fine, dropped.

Thanks!

A week late but I managed to complete it all and moved it into Git, for better structure and easy pulling.

Changes relative to the last submission:

- Added higher level subsystem directories to collect features by subsystem:

triton:~/tip> ls Documentation/features/
arch-support.txt core debug io lib list-arch.sh locking perf sched seccomp time vm

each subsystem directory contains the feature directories. For example locking has:

triton:~/tip> ls Documentation/features/locking/ cmpxchg-local lockdep queued-rwlocks queued-spinlocks rwsem-optimized

It's all pretty straightforward to navigate. Advantages are better visualization, plus git log is able to list changes per subsystem.

- Prettified the visualization some more.

- Improved/corrected the support matrices based on feedback to earlier submissions.

- Updated the support matrices to today's linux-next, so that by the time this shows up in upstream in the next merge window it's really recent. Most notably there's a new architecture in linux-next (h8300).

This structure should address all feedback that I got and should minimize the maintenance overhead (chance of conflicts).

Please pull it all from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/documentation

# HEAD: ce2073b138515f2da6bebf62277c8d069d1c9589 Documentation/features: Explain kernel feature descriptions and add visualization script

The -tip commits should appear soon as well, if anyone would like to take a look at the individual patches.

There's also a combo patch attached to this mail.

Thanks!

Ingo

------------------>
Ingo Molnar (44):
Documentation/features/vm: Add feature description and arch support status file for 'numa-memblock' Documentation/features/vm: Add feature description and arch support status file for 'PG_uncached' Documentation/features/lib: Add feature description and arch support status file for 'strncasecmp' Documentation/features/io: Add feature description and arch support status file for 'sg-chain' Documentation/features/vm: Add feature description and arch support status file for 'huge-vmap' Documentation/features/vm: Add feature description and arch support status file for 'pte_special' Documentation/features/vm: Add feature description and arch support status file for 'pmdp_splitting_flush' Documentation/features/debug: Add feature description and arch support status file for 'KASAN' Documentation/features/time: Add feature description and arch support status file for 'modern-timekeeping' Documentation/features/time: Add feature description and arch support status file for 'virt-cpuacct' Documentation/features/time: Add feature description and arch support status file for 'irq-time-acct' Documentation/features/vm: Add feature description and arch support status file for 'THP' Documentation/features/locking: Add feature description and arch support status file for 'rwsem-optimized' Documentation/features/sched: Add feature description and arch support status file for 'numa-balancing' Documentation/features/io: Add feature description and arch support status file for 'dma-contiguous' Documentation/features/io: Add feature description and arch support status file for 'dma_map_attrs' Documentation/features/core: Add feature description and arch support status file for 'tracehook' Documentation/features/vm: Add feature description and arch support status file for 'ioremap_prot' Documentation/features/locking: Add feature description and arch support status file for 'lockdep' Documentation/features/debug: Add feature description and arch support status file for 'stackprotector' Documentation/features/core: Add feature description and arch support status file for 'jump-labels' Documentation/features/seccomp: Add feature description and arch support status file for 'seccomp-filter' Documentation/features/time: Add feature description and arch support status file for 'context-tracking' Documentation/features/debug: Add feature description and arch support status file for 'kgdb' Documentation/features/time: Add feature description and arch support status file for 'clockevents' Documentation/features/vm: Add feature description and arch support status file for 'ELF-ASLR' Documentation/features/time: Add feature description and arch support status file for 'arch-tick-broadcast' Documentation/features/debug: Add feature description and arch support status file for 'kprobes' Documentation/features/debug: Add feature description and arch support status file for 'optprobes' Documentation/features/debug: Add feature description and arch support status file for 'kprobes-on-ftrace' Documentation/features/debug: Add feature description and arch support status file for 'uprobes' Documentation/features/debug: Add feature description and arch support status file for 'kretprobes' Documentation/features/debug: Add feature description and arch support status file for 'user-ret-profiler' Documentation/features/core: Add feature description and arch support status file for 'generic-idle-thread' Documentation/features/perf: Add feature description and arch support status file for 'kprobes-event' Documentation/features/io: Add feature description and arch support status file for 'dma-api-debug' Documentation/features/perf: Add feature description and arch support status file for 'perf-regs' Documentation/features/perf: Add feature description and arch support status file for 'perf-stackdump' Documentation/features/locking: Add feature description and arch support status file for 'cmpxchg-local' Documentation/features/debug: Add feature description and arch support status file for 'gcov-profile-all' Documentation/features/locking: Add feature description and arch support status file for 'queued-spinlocks' Documentation/features/locking: Add feature description and arch support status file for 'queued-rwlocks' Documentation/features/core: Add feature description and arch support status file for 'BPF-JIT' Documentation/features: Explain kernel feature descriptions and add visualization script

 Documentation/features/arch-support.txt            | 11 ++++++
 .../features/core/BPF-JIT/arch-support.txt         | 40 ++++++++++++++++++++++
 .../core/generic-idle-thread/arch-support.txt      | 40 ++++++++++++++++++++++
 .../features/core/jump-labels/arch-support.txt     | 40 ++++++++++++++++++++++
 .../features/core/tracehook/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/debug/KASAN/arch-support.txt          | 40 ++++++++++++++++++++++
 .../debug/gcov-profile-all/arch-support.txt        | 40 ++++++++++++++++++++++
 Documentation/features/debug/kgdb/arch-support.txt | 40 ++++++++++++++++++++++
 .../debug/kprobes-on-ftrace/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/debug/kprobes/arch-support.txt        | 40 ++++++++++++++++++++++
 .../features/debug/kretprobes/arch-support.txt     | 40 ++++++++++++++++++++++
 .../features/debug/optprobes/arch-support.txt      | 40 ++++++++++++++++++++++
 .../features/debug/stackprotector/arch-support.txt | 40 ++++++++++++++++++++++
 .../features/debug/uprobes/arch-support.txt        | 40 ++++++++++++++++++++++
 .../debug/user-ret-profiler/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/io/dma-api-debug/arch-support.txt     | 40 ++++++++++++++++++++++
 .../features/io/dma-contiguous/arch-support.txt    | 40 ++++++++++++++++++++++
 .../features/io/dma_map_attrs/arch-support.txt     | 40 ++++++++++++++++++++++
 .../features/io/sg-chain/arch-support.txt          | 40 ++++++++++++++++++++++
 .../features/lib/strncasecmp/arch-support.txt      | 40 ++++++++++++++++++++++
 Documentation/features/list-arch.sh                | 24 +++++++++++++
 .../locking/cmpxchg-local/arch-support.txt         | 40 ++++++++++++++++++++++
 .../features/locking/lockdep/arch-support.txt      | 40 ++++++++++++++++++++++
 .../locking/queued-rwlocks/arch-support.txt        | 40 ++++++++++++++++++++++
 .../locking/queued-spinlocks/arch-support.txt      | 40 ++++++++++++++++++++++
 .../locking/rwsem-optimized/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/perf/kprobes-event/arch-support.txt   | 40 ++++++++++++++++++++++
 .../features/perf/perf-regs/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/perf/perf-stackdump/arch-support.txt  | 40 ++++++++++++++++++++++
 .../features/sched/numa-balancing/arch-support.txt | 40 ++++++++++++++++++++++
 .../seccomp/seccomp-filter/arch-support.txt        | 40 ++++++++++++++++++++++
 .../time/arch-tick-broadcast/arch-support.txt      | 40 ++++++++++++++++++++++
 .../features/time/clockevents/arch-support.txt     | 40 ++++++++++++++++++++++
 .../time/context-tracking/arch-support.txt         | 40 ++++++++++++++++++++++
 .../features/time/irq-time-acct/arch-support.txt   | 40 ++++++++++++++++++++++
 .../time/modern-timekeeping/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/time/virt-cpuacct/arch-support.txt    | 40 ++++++++++++++++++++++
 .../features/vm/ELF-ASLR/arch-support.txt          | 40 ++++++++++++++++++++++
 .../features/vm/PG_uncached/arch-support.txt       | 40 ++++++++++++++++++++++
 Documentation/features/vm/THP/arch-support.txt     | 40 ++++++++++++++++++++++
 .../features/vm/huge-vmap/arch-support.txt         | 40 ++++++++++++++++++++++
 .../features/vm/ioremap_prot/arch-support.txt      | 40 ++++++++++++++++++++++
 .../features/vm/numa-memblock/arch-support.txt     | 40 ++++++++++++++++++++++
 .../vm/pmdp_splitting_flush/arch-support.txt       | 40 ++++++++++++++++++++++
 .../features/vm/pte_special/arch-support.txt       | 40 ++++++++++++++++++++++
 45 files changed, 1755 insertions(+)
 create mode 100644 Documentation/features/arch-support.txt
 create mode 100644 Documentation/features/core/BPF-JIT/arch-support.txt
 create mode 100644 Documentation/features/core/generic-idle-thread/arch-support.txt
 create mode 100644 Documentation/features/core/jump-labels/arch-support.txt
 create mode 100644 Documentation/features/core/tracehook/arch-support.txt
 create mode 100644 Documentation/features/debug/KASAN/arch-support.txt
 create mode 100644 Documentation/features/debug/gcov-profile-all/arch-support.txt
 create mode 100644 Documentation/features/debug/kgdb/arch-support.txt
 create mode 100644 Documentation/features/debug/kprobes-on-ftrace/arch-support.txt
 create mode 100644 Documentation/features/debug/kprobes/arch-support.txt
 create mode 100644 Documentation/features/debug/kretprobes/arch-support.txt
 create mode 100644 Documentation/features/debug/optprobes/arch-support.txt
 create mode 100644 Documentation/features/debug/stackprotector/arch-support.txt
 create mode 100644 Documentation/features/debug/uprobes/arch-support.txt
 create mode 100644 Documentation/features/debug/user-ret-profiler/arch-support.txt
 create mode 100644 Documentation/features/io/dma-api-debug/arch-support.txt
 create mode 100644 Documentation/features/io/dma-contiguous/arch-support.txt
 create mode 100644 Documentation/features/io/dma_map_attrs/arch-support.txt
 create mode 100644 Documentation/features/io/sg-chain/arch-support.txt
 create mode 100644 Documentation/features/lib/strncasecmp/arch-support.txt
 create mode 100644 Documentation/features/list-arch.sh
 create mode 100644 Documentation/features/locking/cmpxchg-local/arch-support.txt
 create mode 100644 Documentation/features/locking/lockdep/arch-support.txt
 create mode 100644 Documentation/features/locking/queued-rwlocks/arch-support.txt
 create mode 100644 Documentation/features/locking/queued-spinlocks/arch-support.txt
 create mode 100644 Documentation/features/locking/rwsem-optimized/arch-support.txt
 create mode 100644 Documentation/features/perf/kprobes-event/arch-support.txt
 create mode 100644 Documentation/features/perf/perf-regs/arch-support.txt
 create mode 100644 Documentation/features/perf/perf-stackdump/arch-support.txt
 create mode 100644 Documentation/features/sched/numa-balancing/arch-support.txt
 create mode 100644 Documentation/features/seccomp/seccomp-filter/arch-support.txt
 create mode 100644 Documentation/features/time/arch-tick-broadcast/arch-support.txt
 create mode 100644 Documentation/features/time/clockevents/arch-support.txt
 create mode 100644 Documentation/features/time/context-tracking/arch-support.txt
 create mode 100644 Documentation/features/time/irq-time-acct/arch-support.txt
 create mode 100644 Documentation/features/time/modern-timekeeping/arch-support.txt
 create mode 100644 Documentation/features/time/virt-cpuacct/arch-support.txt
 create mode 100644 Documentation/features/vm/ELF-ASLR/arch-support.txt
 create mode 100644 Documentation/features/vm/PG_uncached/arch-support.txt
 create mode 100644 Documentation/features/vm/THP/arch-support.txt
 create mode 100644 Documentation/features/vm/huge-vmap/arch-support.txt
 create mode 100644 Documentation/features/vm/ioremap_prot/arch-support.txt
 create mode 100644 Documentation/features/vm/numa-memblock/arch-support.txt
 create mode 100644 Documentation/features/vm/pmdp_splitting_flush/arch-support.txt
 create mode 100644 Documentation/features/vm/pte_special/arch-support.txt
Documentation/features/arch-support.txt new file +11 -0
new file mode 100644
index 000000000000..d22a1095e661
@@ -0,0 +1,11 @@
+
+For generic kernel features that need architecture support, the
+arch-support.txt file in each feature directory shows the arch
+support matrix, for all upstream Linux architectures.
+
+The meaning of entries in the tables is:
+
+    | ok |  # feature supported by the architecture
+    |TODO|  # feature not yet supported by the architecture
+    | .. |  # feature cannot be supported by the hardware
+
Documentation/features/core/BPF-JIT/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..c1b4f917238f
@@ -0,0 +1,40 @@
+#
+# Feature name:          BPF-JIT
+#         Kconfig:       HAVE_BPF_JIT
+#         description:   arch supports BPF JIT optimizations
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/core/generic-idle-thread/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..6d930fcbe519
@@ -0,0 +1,40 @@
+#
+# Feature name:          generic-idle-thread
+#         Kconfig:       GENERIC_SMP_IDLE_THREAD
+#         description:   arch makes use of the generic SMP idle thread facility
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/core/jump-labels/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..136868b636e6
@@ -0,0 +1,40 @@
+#
+# Feature name:          jump-labels
+#         Kconfig:       HAVE_ARCH_JUMP_LABEL
+#         description:   arch supports live patched, high efficiency branches
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/core/tracehook/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..728061d763b1
@@ -0,0 +1,40 @@
+#
+# Feature name:          tracehook
+#         Kconfig:       HAVE_ARCH_TRACEHOOK
+#         description:   arch supports tracehook (ptrace) register handling APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: |  ok  |
+    |       h8300: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/KASAN/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..14531da2fb54
@@ -0,0 +1,40 @@
+#
+# Feature name:          KASAN
+#         Kconfig:       HAVE_ARCH_KASAN
+#         description:   arch supports the KASAN runtime memory checker
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/gcov-profile-all/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..38dea8eeba0a
@@ -0,0 +1,40 @@
+#
+# Feature name:          gcov-profile-all
+#         Kconfig:       ARCH_HAS_GCOV_PROFILE_ALL
+#         description:   arch supports whole-kernel GCOV code coverage profiling
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/kgdb/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..862e15d6f79e
@@ -0,0 +1,40 @@
+#
+# Feature name:          kgdb
+#         Kconfig:       HAVE_ARCH_KGDB
+#         description:   arch supports the kGDB kernel debugger
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/kprobes-on-ftrace/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..40f44d041fb4
@@ -0,0 +1,40 @@
+#
+# Feature name:          kprobes-on-ftrace
+#         Kconfig:       HAVE_KPROBES_ON_FTRACE
+#         description:   arch supports combined kprobes and ftrace live patching
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/kprobes/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..a44bfff6940b
@@ -0,0 +1,40 @@
+#
+# Feature name:          kprobes
+#         Kconfig:       HAVE_KPROBES
+#         description:   arch supports live patched kernel probe
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: |  ok  |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/kretprobes/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..d87c1ce24204
@@ -0,0 +1,40 @@
+#
+# Feature name:          kretprobes
+#         Kconfig:       HAVE_KRETPROBES
+#         description:   arch supports kernel function-return probes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/optprobes/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..b8999d8544ca
@@ -0,0 +1,40 @@
+#
+# Feature name:          optprobes
+#         Kconfig:       HAVE_OPTPROBES
+#         description:   arch supports live patched optprobes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/stackprotector/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..0fa423313409
@@ -0,0 +1,40 @@
+#
+# Feature name:          stackprotector
+#         Kconfig:       HAVE_CC_STACKPROTECTOR
+#         description:   arch supports compiler driven stack overflow protection
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/uprobes/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..4efe36c3ace9
@@ -0,0 +1,40 @@
+#
+# Feature name:          uprobes
+#         Kconfig:       ARCH_SUPPORTS_UPROBES
+#         description:   arch supports live patched user probes
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/debug/user-ret-profiler/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..44cc1ff3f603
@@ -0,0 +1,40 @@
+#
+# Feature name:          user-ret-profiler
+#         Kconfig:       HAVE_USER_RETURN_NOTIFIER
+#         description:   arch supports user-space return from system call profiler
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/io/dma-api-debug/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..4f4a3443b114
@@ -0,0 +1,40 @@
+#
+# Feature name:          dma-api-debug
+#         Kconfig:       HAVE_DMA_API_DEBUG
+#         description:   arch supports DMA debug facilities
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/io/dma-contiguous/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..a97e8e3f4ebb
@@ -0,0 +1,40 @@
+#
+# Feature name:          dma-contiguous
+#         Kconfig:       HAVE_DMA_CONTIGUOUS
+#         description:   arch supports the DMA CMA (continuous memory allocator)
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/io/dma_map_attrs/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..51d0f1c02a3e
@@ -0,0 +1,40 @@
+#
+# Feature name:          dma_map_attrs
+#         Kconfig:       HAVE_DMA_ATTRS
+#         description:   arch provides dma_*map*_attrs() APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/io/sg-chain/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..b9b675539b9d
@@ -0,0 +1,40 @@
+#
+# Feature name:          sg-chain
+#         Kconfig:       ARCH_HAS_SG_CHAIN
+#         description:   arch supports chained scatter-gather lists
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/lib/strncasecmp/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..12b1c9358e57
@@ -0,0 +1,40 @@
+#
+# Feature name:          strncasecmp
+#         Kconfig:       __HAVE_ARCH_STRNCASECMP
+#         description:   arch provides an optimized strncasecmp() function
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: | TODO |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/list-arch.sh new file +24 -0
new file mode 100644
index 000000000000..6065124a072f
@@ -0,0 +1,24 @@
+#
+# Small script that visualizes the kernel feature support status
+# of an architecture.
+#
+# (If no arguments are given then it will print the host architecture's status.)
+#
+
+ARCH=${1:-$(arch | sed 's/x86_64/x86/' | sed 's/i386/x86/')}
+
+cd $(dirname $0)
+echo "#"
+echo "# Kernel feature support matrix of the '$ARCH' architecture:"
+echo "#"
+
+for F in */*/arch-support.txt; do
+  SUBSYS=$(echo $F | cut -d/ -f1)
+  N=$(grep -h "^# Feature name:"        $F | cut -c25-)
+  C=$(grep -h "^#         Kconfig:"     $F | cut -c25-)
+  D=$(grep -h "^#         description:" $F | cut -c25-)
+  S=$(grep -hw $ARCH $F | cut -d\| -f3)
+
+  printf "%10s/%-22s:%s| %35s # %s\n" "$SUBSYS" "$N" "$S" "$C" "$D"
+done
+
Documentation/features/locking/cmpxchg-local/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..d9c310889bc1
@@ -0,0 +1,40 @@
+#
+# Feature name:          cmpxchg-local
+#         Kconfig:       HAVE_CMPXCHG_LOCAL
+#         description:   arch supports the this_cpu_cmpxchg() API
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/locking/lockdep/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..cf90635bdcbb
@@ -0,0 +1,40 @@
+#
+# Feature name:          lockdep
+#         Kconfig:       LOCKDEP_SUPPORT
+#         description:   arch supports the runtime locking correctness debug facility
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/locking/queued-rwlocks/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..68c3a5ddd9b9
@@ -0,0 +1,40 @@
+#
+# Feature name:          queued-rwlocks
+#         Kconfig:       ARCH_USE_QUEUED_RWLOCKS
+#         description:   arch supports queued rwlocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/locking/queued-spinlocks/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..e973b1a9572f
@@ -0,0 +1,40 @@
+#
+# Feature name:          queued-spinlocks
+#         Kconfig:       ARCH_USE_QUEUED_SPINLOCKS
+#         description:   arch supports queued spinlocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/locking/rwsem-optimized/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..ac93d7ab66c4
@@ -0,0 +1,40 @@
+#
+# Feature name:          rwsem-optimized
+#         Kconfig:       Optimized asm/rwsem.h
+#         description:   arch provides optimized rwsem APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/perf/kprobes-event/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..9855ad044386
@@ -0,0 +1,40 @@
+#
+# Feature name:          kprobes-event
+#         Kconfig:       HAVE_REGS_AND_STACK_ACCESS_API
+#         description:   arch supports kprobes with perf events
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/perf/perf-regs/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..e2b4a78ec543
@@ -0,0 +1,40 @@
+#
+# Feature name:          perf-regs
+#         Kconfig:       HAVE_PERF_REGS
+#         description:   arch supports perf events register access
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/perf/perf-stackdump/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..3dc24b0673c0
@@ -0,0 +1,40 @@
+#
+# Feature name:          perf-stackdump
+#         Kconfig:       HAVE_PERF_USER_STACK_DUMP
+#         description:   arch supports perf events stack dumps
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/sched/numa-balancing/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..ac7cd6b1502b
@@ -0,0 +1,40 @@
+#
+# Feature name:          numa-balancing
+#         Kconfig:       ARCH_SUPPORTS_NUMA_BALANCING
+#         description:   arch supports NUMA balancing
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ..  |
+    |       arm64: |  ..  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |       h8300: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: | TODO |
+    |        m32r: |  ..  |
+    |        m68k: |  ..  |
+    |       metag: |  ..  |
+    |  microblaze: |  ..  |
+    |        mips: | TODO |
+    |     mn10300: |  ..  |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: |  ..  |
+    |     powerpc: |  ok  |
+    |        s390: |  ..  |
+    |       score: |  ..  |
+    |          sh: |  ..  |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/seccomp/seccomp-filter/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..bea800910342
@@ -0,0 +1,40 @@
+#
+# Feature name:          seccomp-filter
+#         Kconfig:       HAVE_ARCH_SECCOMP_FILTER
+#         description:   arch supports seccomp filters
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/time/arch-tick-broadcast/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..8acb439a4a17
@@ -0,0 +1,40 @@
+#
+# Feature name:          arch-tick-broadcast
+#         Kconfig:       ARCH_HAS_TICK_BROADCAST
+#         description:   arch provides tick_broadcast()
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: | TODO |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/time/clockevents/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..ff670b2207f1
@@ -0,0 +1,40 @@
+#
+# Feature name:          clockevents
+#         Kconfig:       GENERIC_CLOCKEVENTS
+#         description:   arch support generic clock events
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: |  ok  |
+    |         c6x: |  ok  |
+    |        cris: |  ok  |
+    |         frv: | TODO |
+    |       h8300: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: |  ok  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/time/context-tracking/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..a1e3eea7003f
@@ -0,0 +1,40 @@
+#
+# Feature name:          context-tracking
+#         Kconfig:       HAVE_CONTEXT_TRACKING
+#         description:   arch supports context tracking for NO_HZ_FULL
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/time/irq-time-acct/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..e63316239938
@@ -0,0 +1,40 @@
+#
+# Feature name:          irq-time-acct
+#         Kconfig:       HAVE_IRQ_TIME_ACCOUNTING
+#         description:   arch supports precise IRQ time accounting
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ..  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ..  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ..  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ..  |
+    |     powerpc: |  ..  |
+    |        s390: |  ..  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ..  |
+    |        tile: |  ..  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/time/modern-timekeeping/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..17f68a02e84d
@@ -0,0 +1,40 @@
+#
+# Feature name:          modern-timekeeping
+#         Kconfig:       !ARCH_USES_GETTIMEOFFSET
+#         description:   arch does not use arch_gettimeoffset() anymore
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: |  ok  |
+    |         arm: | TODO |
+    |       arm64: |  ok  |
+    |       avr32: |  ok  |
+    |    blackfin: | TODO |
+    |         c6x: |  ok  |
+    |        cris: | TODO |
+    |         frv: |  ok  |
+    |       h8300: |  ok  |
+    |     hexagon: |  ok  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: |  ok  |
+    |       nios2: |  ok  |
+    |    openrisc: |  ok  |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: |  ok  |
+    |   unicore32: |  ok  |
+    |         x86: |  ok  |
+    |      xtensa: |  ok  |
+    -----------------------
Documentation/features/time/virt-cpuacct/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..cf3c3e383d15
@@ -0,0 +1,40 @@
+#
+# Feature name:          virt-cpuacct
+#         Kconfig:       HAVE_VIRT_CPU_ACCOUNTING
+#         description:   arch supports precise virtual CPU time accounting
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: |  ok  |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: |  ok  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: |  ok  |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/vm/ELF-ASLR/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..ec4dd28e1297
@@ -0,0 +1,40 @@
+#
+# Feature name:          ELF-ASLR
+#         Kconfig:       ARCH_HAS_ELF_RANDOMIZE
+#         description:   arch randomizes the stack, heap and binary images of ELF binaries
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/vm/PG_uncached/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..991974275a3e
@@ -0,0 +1,40 @@
+#
+# Feature name:          PG_uncached
+#         Kconfig:       ARCH_USES_PG_UNCACHED
+#         description:   arch supports the PG_uncached page flag
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/vm/THP/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..972d02c2a74c
@@ -0,0 +1,40 @@
+#
+# Feature name:          THP
+#         Kconfig:       HAVE_ARCH_TRANSPARENT_HUGEPAGE
+#         description:   arch supports transparent hugepages
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |       h8300: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: | TODO |
+    |        m32r: |  ..  |
+    |        m68k: |  ..  |
+    |       metag: |  ..  |
+    |  microblaze: |  ..  |
+    |        mips: |  ok  |
+    |     mn10300: |  ..  |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ..  |
+    |          sh: |  ..  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/vm/huge-vmap/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..af6816bccb43
@@ -0,0 +1,40 @@
+#
+# Feature name:          huge-vmap
+#         Kconfig:       HAVE_ARCH_HUGE_VMAP
+#         description:   arch supports the ioremap_pud_enabled() and ioremap_pmd_enabled() VM APIs
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: | TODO |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/vm/ioremap_prot/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..90c53749fde7
@@ -0,0 +1,40 @@
+#
+# Feature name:          ioremap_prot
+#         Kconfig:       HAVE_IOREMAP_PROT
+#         description:   arch has ioremap_prot()
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ok  |
+    |         arm: | TODO |
+    |       arm64: | TODO |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: | TODO |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: | TODO |
+    |       score: | TODO |
+    |          sh: |  ok  |
+    |       sparc: | TODO |
+    |        tile: |  ok  |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/vm/numa-memblock/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..e7c252a0c531
@@ -0,0 +1,40 @@
+#
+# Feature name:          numa-memblock
+#         Kconfig:       HAVE_MEMBLOCK_NODE_MAP
+#         description:   arch supports NUMA aware memblocks
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: |  ..  |
+    |         arm: |  ..  |
+    |       arm64: |  ..  |
+    |       avr32: |  ..  |
+    |    blackfin: |  ..  |
+    |         c6x: |  ..  |
+    |        cris: |  ..  |
+    |         frv: |  ..  |
+    |       h8300: |  ..  |
+    |     hexagon: |  ..  |
+    |        ia64: |  ok  |
+    |        m32r: | TODO |
+    |        m68k: |  ..  |
+    |       metag: |  ok  |
+    |  microblaze: |  ok  |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: |  ..  |
+    |    openrisc: |  ..  |
+    |      parisc: |  ..  |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: |  ok  |
+    |          sh: |  ok  |
+    |       sparc: |  ok  |
+    |        tile: | TODO |
+    |          um: |  ..  |
+    |   unicore32: |  ..  |
+    |         x86: |  ok  |
+    |      xtensa: |  ..  |
+    -----------------------
Documentation/features/vm/pmdp_splitting_flush/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..26f74b457e0b
@@ -0,0 +1,40 @@
+#
+# Feature name:          pmdp_splitting_flush
+#         Kconfig:       __HAVE_ARCH_PMDP_SPLITTING_FLUSH
+#         description:   arch supports the pmdp_splitting_flush() VM API
+#
+    -----------------------
+    |         arch |status|
+    -----------------------
+    |       alpha: | TODO |
+    |         arc: | TODO |
+    |         arm: |  ok  |
+    |       arm64: |  ok  |
+    |       avr32: | TODO |
+    |    blackfin: | TODO |
+    |         c6x: | TODO |
+    |        cris: | TODO |
+    |         frv: | TODO |
+    |       h8300: | TODO |
+    |     hexagon: | TODO |
+    |        ia64: | TODO |
+    |        m32r: | TODO |
+    |        m68k: | TODO |
+    |       metag: | TODO |
+    |  microblaze: | TODO |
+    |        mips: |  ok  |
+    |     mn10300: | TODO |
+    |       nios2: | TODO |
+    |    openrisc: | TODO |
+    |      parisc: | TODO |
+    |     powerpc: |  ok  |
+    |        s390: |  ok  |
+    |       score: | TODO |
+    |          sh: | TODO |
+    |       sparc: | TODO |
+    |        tile: | TODO |
+    |          um: | TODO |
+    |   unicore32: | TODO |
+    |         x86: |  ok  |
+    |      xtensa: | TODO |
+    -----------------------
Documentation/features/vm/pte_special/arch-support.txt new file +40 -0
new file mode 100644
index 000000000000..aaaa21db6226
@@ -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 |
+    -----------------------
maintainer
#35 lore raw

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

Quoted 2 lines · On Wed, 3 Jun 2015 13:03:55 +0200 Ingo Molnar <[email protected]> wrote:

A week late but I managed to complete it all and moved it into Git, for better structure and easy pulling.

Pulled into the docs tree - thanks!

jon

#36 lore raw

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

In reply to Josh Triplett
Quoted 6 lines · Josh Triplett
Quoted 5 lines · Ingo Molnar

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

Quoted 6 lines
Quoted 4 lines

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

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

#37 lore raw

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

In reply to Ingo Molnar
Quoted 6 lines · Ingo Molnar

Updated patch attached - I've added a few more features to the last table, and restructured the explanations, now every feature description also lists the 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.

#38 lore raw

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

Quoted 14 lines · Paul Mackerras
Quoted 6 lines · Ingo Molnar

Updated patch attached - I've added a few more features to the last table, and restructured the explanations, now every feature description also lists the 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:

Quoted 3 lines
	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

#39 lore raw

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

In reply to Ingo Molnar
Quoted 27 lines · Ingo Molnar

(fixed the subject.)

So this is the final version for now:

- add a fourth table

- fix errors in earlier tables, in particular I missed some PowerPC Kconfigs

- introduce the '..' denotion (in the final table) to show features that cannot be supported by an architecture due to hardware dependencies:

gcov-profile-all:---------------.
THP:--------. |
irq-time-acct:-. | |
| | |
----------------------------------------
alpha | TODO | TODO | TODO |
arc | TODO | .. | TODO |
arm | ok | ok | ok |
arm64 | TODO | ok | ok |
avr32 | TODO | .. | TODO |
blackfin | TODO | .. | TODO |
c6x | TODO | .. | TODO |

Quoted 8 lines

so in the 'THP' column, if an architecture could in theory support THP, it's listed as 'TODO', if it cannot, it's listed as '..'.

Please let me know about errors in these tables, and I can also add more features/facilities as well if I missed any.

Thanks,

Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p

m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
context-tracking T T K K T T T T T T T T T T T K T T T T K T T T K K T T K T
kgdb T K K K T K T T T K T T T T K K K K T T K T T K K K T T K T
modern-timekeeping K K T K K T K T K K K T T K K K K K K K K K K K K K K K K K
clockevents K K K K K K K K T K T T K K K K K K K T K K K K K K K K K K
ELF-ASLR T T K K T T T T T T T T T T T K T T T T K K T T T T T T K T
arch-tick-broadcast T T K K T T T T T T T T T T T K T T T T K T T T T T T T T T
kprobes T K K T K T T T T T K T T T T K T T T T K K T K K K T T K T
optprobes T T K T T T T T T T T T T T T T T T T T T T T T T K T T K T
kprobes-on-ftrace T T T T T T T T T T T T T T T T T T T T T T T T T T T T K T
uprobes T T K T T T T T T T T T T T T T T T T T K K T T T T T T K T
kretprobes T K K T T T T T T T K T T T T K T T T T K K T K K K T T K T
user-ret-profiler T T T T T T T T T T T T T T T T T T T T T T T T T K T T K T
ioremap_prot() T K T T T T T T T T T T T T T T T T T T K T T K T K T T K T
tracehook T K K K T K K T K K K T T K T K K K K T K K T K K K T T K T
generic-idle-thread K K K K T K T T T K K T T K T K T T T K K K T K K T T T K K
dma_*map*_attrs() K T K K T T T T T K K T T T K K T T K T K K T K K K T K K T
dma-contiguous T T K K T T T T T T T T T T T K T T T T T T T T T T T T K T
kprobes-event T T K T T T T T T K T T T T T T T T T T K K T K T K T T K T dma-api-debug T T K K T T K T T T K T T T K K T T T T K K T K K K T T K T
perf-regs T T K K T T T T T T T T T T T T T T T T T T T T T T T T K T
perf-stackdump T T K K T T T T T T T T T T T T T T T T T T T T T T T T K T
cmpxchg-local T T T T T T T T T T T T T T T T T T T T T K T T T T T T K T
virt-cpuacct K T K K T T T T T T K T T T T K T T T K K K T T K K T T K T
irq-time-acct T T K T T T T T T T T T T T T K T T T T T T T T T T T T K K
THP T - K K - - - - - - T - - - - K - - - T K K - - K T - - K -
gcov-profile-all T T K K T T T T T T T T T T K T T T T T K K T K T T T T K T

Legend:
K = ok
T = TODO
- = cannot

Michele

#40 lore raw

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

Quoted 5 lines · Michele Curti

Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p

Quoted 15 lines

m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T

I thought about that, too, as there are more (not fully implemented) features than architectures. But I expect more merge conflicts with the transposed version.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#41 lore raw

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

Quoted 22 lines · Geert Uytterhoeven
Quoted 5 lines · Michele Curti

Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p

Quoted 15 lines

m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T

Quoted 4 lines

I thought about that, too, as there are more (not fully implemented) features than architectures. But I expect more merge conflicts with the transposed version.

There is another reason for the transposed version, which is that it makes adding features to the list much easier. At the same time, plain ASCII is horrific for maintaining tables...

-hpa

#42 lore raw

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

In reply to Geert Uytterhoeven
Quoted 22 lines · Geert Uytterhoeven
Quoted 5 lines · Michele Curti

Tried to transpose rows with columns, to avoid architecture name duplication and to get only one table while keeping 80 char width, but result seems less readable :p

Quoted 15 lines

m
i u
b c o n
l h r m p p i
a e o n e p o c x
a a a c x m b 1 n n a w s s o t
l r v k c a i m m e l m 0 i r r e s c p t r e
p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o a i e x n
h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
-------------------------------------------------------------------------------
lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T

Quoted 4 lines

I thought about that, too, as there are more (not fully implemented) features than architectures. But I expect more merge conflicts with the transposed version.

There is another reason for the transposed version, which is that it makes adding features to the list much easier. At the same time, plain ASCII is horrific for maintaining tables...

-hpa

#43 lore raw
In reply to Andrew Morton
Quoted 13 lines · Andrew Morton
Quoted 10 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett…

Introduce a new CONFIG_HAVE_COPY_THREAD_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.

Quoted 5 lines

What happens quite frequently is that we do something for x86 with the expectation that other architectures will follow along, but this doesn't happen. The arch maintainers simply didn't know about it or nobody nags them. Nothing happens and inconsistencies hang around for years. eg, http://lkml.iu.edu/hypermail/linux/kernel/1504.2/04993.html

In this case, there will be a very clear incentive to switch to CONFIG_HAVE_COPY_THREAD_TLS: if you don't, you can't enable new syscalls.

- Josh Triplett

maintainer
#44 lore raw
In reply to Josh Triplett
Quoted 42 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett…

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.

...

kernel/fork.c +3 -0
@@ -1698,20 +1701,34 @@ long do_fork(unsigned long clone_flags,
 	return nr;
 }
 
+#ifndef CONFIG_HAVE_COPY_THREAD_TLS
+/* For compatibility with architectures that call do_fork directly rather than
+ * using the syscall entry points below. */

kernel/fork.c long do_fork(unsigned long clone_flags, · line 1716

Quoted 10 lines
kernel/fork.c +10 -0
+long do_fork(unsigned long clone_flags,
+	      unsigned long stack_start,
+	      unsigned long stack_size,
+	      int __user *parent_tidptr,
+	      int __user *child_tidptr)
+{
+	return _do_fork(clone_flags, stack_start, stack_size,
+			parent_tidptr, child_tidptr, 0);
+}
+#endif

drivers/misc/kgdbts.c:lookup_addr() has a reference to do_fork(). Doesn't link, with a basic `make allmodconfig'.

#45 lore raw
Quoted 41 lines · Andrew Morton
Quoted 39 lines · On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett…

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.

...

(quoted diff) +0 -0
@@ -1698,20 +1701,34 @@ long do_fork(unsigned long clone_flags,
 	return nr;
 }
 
Quoted 16 lines

Review long do_fork(unsigned long clone_flags, · line 1716

Quoted 13 lines
(quoted diff) +13 -0
+#ifndef CONFIG_HAVE_COPY_THREAD_TLS
+/* For compatibility with architectures that call do_fork directly rather than
+ * using the syscall entry points below. */
+long do_fork(unsigned long clone_flags,
+	      unsigned long stack_start,
+	      unsigned long stack_size,
+	      int __user *parent_tidptr,
+	      int __user *child_tidptr)
+{
+	return _do_fork(clone_flags, stack_start, stack_size,
+			parent_tidptr, child_tidptr, 0);
+}
+#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< ---

Quoted 1 line

From fd599319630b33b829dc50b4f3c88016e715cd76 Mon Sep 17 00:00:00 2001

From: Josh Triplett <[email protected]>
Date: Wed, 13 May 2015 08:18:47 -0700
Subject: [PATCH] Fix "clone: Support passing tls argument via C rather than pt_regs magic" for kgdb

Should be squashed into "clone: Support passing tls argument via C rather than pt_regs magic". kgdb wants to reference the real fork function, which is now _do_fork.

---
 drivers/misc/kgdbts.c |  2 +-
 include/linux/sched.h |  1 +
 kernel/fork.c         | 13 ++++++-------
 3 files changed, 8 insertions(+), 8 deletions(-)
drivers/misc/kgdbts.c +1 -1
index 36f5d52..9a60bd4 100644
@@ -220,7 +220,7 @@ static unsigned long lookup_addr(char *arg)
 	else if (!strcmp(arg, "sys_open"))
 		addr = (unsigned long)do_sys_open;
 	else if (!strcmp(arg, "do_fork"))
-		addr = (unsigned long)do_fork;
+		addr = (unsigned long)_do_fork;
 	else if (!strcmp(arg, "hw_break_val"))
 		addr = (unsigned long)&hw_break_val;
 	addr = (unsigned long) dereference_function_descriptor((void *)addr);
include/linux/sched.h +1 -0
index 2cc88c6..9686abe 100644
@@ -2514,6 +2514,7 @@ extern int do_execveat(int, struct filename *,
 		       const char __user * const __user *,
 		       const char __user * const __user *,
 		       int);
+extern long _do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *, unsigned long);
 extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *);
 struct task_struct *fork_idle(int);
 extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
kernel/fork.c +6 -7
index b3dadf4..b493aba 100644
@@ -1629,13 +1629,12 @@ struct task_struct *fork_idle(int cpu)
  * It copies the process, and if successful kick-starts
  * it and waits for it to finish using the VM if required.
  */
-static long _do_fork(
-		unsigned long clone_flags,
-		unsigned long stack_start,
-		unsigned long stack_size,
-		int __user *parent_tidptr,
-		int __user *child_tidptr,
-		unsigned long tls)
+long _do_fork(unsigned long clone_flags,
+	      unsigned long stack_start,
+	      unsigned long stack_size,
+	      int __user *parent_tidptr,
+	      int __user *child_tidptr,
+	      unsigned long tls)
 {
 	struct task_struct *p;
 	int trace = 0;
Signature · 1 line
2.1.4