Linux userland API discussions
 help / color / mirror / Atom feed
* Re: [PATCH v8 14/16] ARM: dts: Introduce STM32F429 MCU
From: Daniel Thompson @ 2015-05-13 19:29 UTC (permalink / raw)
  To: Maxime Coquelin, Arnd Bergmann
  Cc: Uwe Kleine-König, Andreas Färber, Geert Uytterhoeven,
	Rob Herring, Philipp Zabel, Linus Walleij, Stefan Agner,
	Peter Meerwald, Paul Bolle, Peter Hurley, Andy Shevchenko,
	Chanwoo Choi, Russell King, Daniel Lezcano, Joe Perches,
	Vladimir Zapolskiy, Lee Jones, Jonathan Corbet, Pawel Moll,
	Mark Rutland, Ian Campbell
In-Reply-To: <CALszF6CaO_yuNiSDuDV+4d2NRe_+32j=zcSE1HPhB1UH59cW9w@mail.gmail.com>

On 13/05/15 17:54, Maxime Coquelin wrote:
> 2015-05-13 18:37 GMT+02:00 Arnd Bergmann <arnd@arndb.de>:
>> On Wednesday 13 May 2015 18:29:05 Maxime Coquelin wrote:
>>> 2015-05-13 17:28 GMT+02:00 Arnd Bergmann <arnd@arndb.de>:
>>>> On Wednesday 13 May 2015 16:20:34 Daniel Thompson wrote:
>>>>>
>>>>> That would suit me very well (although is the 0x20/0x40 not the 8 that
>>>>> we would need in the middle column).
>>>>
>>>> We don't normally use register offsets in DT. The number 8 here instead
>>>> would indicate block 8, where each block is four bytes wide. Using the
>>>> same index here for reset and clock would also help readability.
>>>
>>> My view is that it makes the bindings usage very complex.
>>> Also, it implies we have a specific compatible for stm32f429, whereas
>>> we didn't need with my earlier proposals.
>>> Indeed, the reset driver will need to know the offset of every reset
>>> registers, because:
>>>    1. The AHB registers start at RCC offset 0x10 (up to 0x18)
>>>    2. The APB registers start at RCC offset 0x20 (up to 0x24).
>>> We have a gap between AHB and APB registers, so how do we map the
>>> index for the block you propose?
>>> Should the gap be considered as a block, or we should skip it?
>>>
>>> I'm afraid it will not be straightforward for a reset user to
>>> understand how to use this bindings.
>>>
>>> Either my v7 or v8 versions would have made possible to use a single
>>> compatible for STM32 series.
>>> If we stick with one of these, we could even think to have a "generic"
>>> reset driver, as it could be compatible with sunxi driver bindings.
>>
>> We should definitely try to use the same compatible string for all of
>> them, and make a binding that is easy to use.
>>
>> I haven't fully understood the requirements for the various parts that
>> are involved here. My understanding so far was that the driver could
>> use the index from the first cell and compute
>>
>>          void __iomem *reset_reg = rcc_base + 0x10 + 4 * index;
>>          void __iomem *clock_reg = rcc_base + 0x30 + 4 * index;
>
> This calculation is true, but we have to take into account there is a
> hole in the middle, between AHB3, and APB1 register:

... and equally importantly, only allows us to use hardware mappings for 
the gated clocks.

> AHB1RSTR : offset = 0x10, index = 0
> AHB2RSTR : offset = 0x14, index = 1
> AHB3RSTR : offset = 0x18, index = 2
> <HOLE >     : offset = 0x1c, index = 3
> APB1RSTR : offset = 0x20, index = 4
> APB2RSTR : offset = 0x24, index = 5
>
> So we have to carefully document this hole in the bindings, maybe by
> listing indexes in the documentation?

The register set has PLL, mux and dividers in the registers at 0x00, 
0x04 and 0x08.

Many of these clocks can be kept out of DT entirely because they are 
only there to feed other parts of the clock tree. However some of the 
dividers flow directly into cells that appear in device tree (such as 
the systick) and so we need to be able to reference them.

In other words the proposed mapping cannot allow us to express the 
dividers properly (because the index would have to be negative):
   void __iomem *clock_reg = rcc_base + 0x30 + 4 * index;

Thus I'd favour using different indexes for reset and clock bindings, 
both using the naive mapping function:
   void __iomem *reg =  rcc_base + 4 * index

I think that its so much easier to check against the datasheet like 
that. Admittedly is we follow the block-of-4-bytes idiom we have to 
divide a hex number by four but thats not so hard and we end up with:

		resets = <&rcc  8 0>;
		clocks = <&rcc 16 0>;

At the end of the day if we say we want to follow the datasheet, lets be 
do it in the most direct way properly.


Daniel.


PS
I've written a custom lookup function to to get from the DT index to an 
offset into the struct clk *array I'm using. That means I don't care 
much about any big holes in the register space.

>> Are there parts that need something else? If the 0x10 offset is
>> different, we probably want a different compatible string, and I'd
>> consider it a different part at that point. If there are chips
>> that do not spread the clock from the reset by exactly 256 bits,
>> we could add a DT property in the rcc node for that.
>
> I will check other chips, to see if this is valid generally.
>
> Thanks for your feedback,
> Maxime
>
>>
>>          Arnd

^ permalink raw reply

* Re: [PATCH v8 14/16] ARM: dts: Introduce STM32F429 MCU
From: Arnd Bergmann @ 2015-05-13 19:37 UTC (permalink / raw)
  To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
  Cc: Daniel Thompson, Maxime Coquelin, Mark Rutland,
	linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Linus Walleij,
	Will Deacon, Stefan Agner, Nikolay Borisov, Peter Meerwald,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Lee Jones,
	Mauro Carvalho Chehab, Linux-Arch, Russell King, Jonathan Corbet,
	Jiri Slaby, Daniel Lezcano, Chanwoo Choi, Andy Shevchenko,
	Antti Palosaari, Geert Uytterhoeven, linux-serial
In-Reply-To: <5553A608.9080402-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

On Wednesday 13 May 2015 20:29:12 Daniel Thompson wrote:
> On 13/05/15 17:54, Maxime Coquelin wrote:
> > 2015-05-13 18:37 GMT+02:00 Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>:
> >>
> >> We should definitely try to use the same compatible string for all of
> >> them, and make a binding that is easy to use.
> >>
> >> I haven't fully understood the requirements for the various parts that
> >> are involved here. My understanding so far was that the driver could
> >> use the index from the first cell and compute
> >>
> >>          void __iomem *reset_reg = rcc_base + 0x10 + 4 * index;
> >>          void __iomem *clock_reg = rcc_base + 0x30 + 4 * index;
> >
> > This calculation is true, but we have to take into account there is a
> > hole in the middle, between AHB3, and APB1 register:
> 
> ... and equally importantly, only allows us to use hardware mappings for 
> the gated clocks.
> 
> > AHB1RSTR : offset = 0x10, index = 0
> > AHB2RSTR : offset = 0x14, index = 1
> > AHB3RSTR : offset = 0x18, index = 2
> > <HOLE >     : offset = 0x1c, index = 3
> > APB1RSTR : offset = 0x20, index = 4
> > APB2RSTR : offset = 0x24, index = 5
> >
> > So we have to carefully document this hole in the bindings, maybe by
> > listing indexes in the documentation?
> 
> The register set has PLL, mux and dividers in the registers at 0x00, 
> 0x04 and 0x08.
> 
> Many of these clocks can be kept out of DT entirely because they are 
> only there to feed other parts of the clock tree. However some of the 
> dividers flow directly into cells that appear in device tree (such as 
> the systick) and so we need to be able to reference them.
> 
> In other words the proposed mapping cannot allow us to express the 
> dividers properly (because the index would have to be negative):
>    void __iomem *clock_reg = rcc_base + 0x30 + 4 * index;
> 
> Thus I'd favour using different indexes for reset and clock bindings, 
> both using the naive mapping function:
>    void __iomem *reg =  rcc_base + 4 * index
> 
> I think that its so much easier to check against the datasheet like 
> that. Admittedly is we follow the block-of-4-bytes idiom we have to 
> divide a hex number by four but thats not so hard and we end up with:
> 
> 		resets = <&rcc  8 0>;
> 		clocks = <&rcc 16 0>;
> 
> At the end of the day if we say we want to follow the datasheet, lets be 
> do it in the most direct way properly.
> 
> 
> PS
> I've written a custom lookup function to to get from the DT index to an 
> offset into the struct clk *array I'm using. That means I don't care 
> much about any big holes in the register space.

How about using the first cell to indicate the type (pll, mux, div, gate)
and the second cell for the number (between 0 and 256)? That way, the
gates numbers would match the reset numbers, and your internal mapping
function would look a bit nicer.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Andrew Morton @ 2015-05-13 22:05 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Ingo Molnar, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20150513162757.GA21894@x>

On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> wrote:

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

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

I'd also prefer a format which allows us to add useful notes - it's a
bit hostile to say "thou shalt implement X" without providing any info
about how to do so.  Where do we tell maintainers that there's a handy
test app in tools/testing/selftests which they should use?

This way, I can bug patch submitters with "hey, you forgot to update
Documentation/arch-features.txt" and they will add useful info while
it's all still hot in their minds.



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

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

HAVE_ARCH_KASAN
__HAVE_ARCH_PMDP_SPLITTING_FLUSH
__HAVE_ARCH_PTE_SPECIAL
__HAVE_ARCH_GATE_AREA
ARCH_HAVE_ELF_ASLR
ARCH_HAS_GCOV_PROFILE_ALL
CONFIG_ARCH_USE_BUILTIN_BSWAP
HAVE_ARCH_HUGE_VMAP
ARCH_HAS_SG_CHAIN
__HAVE_ARCH_STRNCASECMP
ARCH_HAS_ELF_RANDOMIZE
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
CONFIG_ARCH_USES_PG_UNCACHED
CONFIG_ARCH_HAS_WALK_MEMORY

and things which don't contain ARCH

HAVE_GENERIC_RCU_GUP
HAVE_RCU_TABLE_FREE
HAVE_GENERIC_RCU_GUP
CONFIG_HAVE_CLK
CONFIG_HAVE_IOREMAP_PROT
CONFIG_HAVE_MEMBLOCK_NODE_MAP

And then there's the increasingly common

arch/include/asm/foo.h:

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

include/linux/foo.h:

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

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


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

^ permalink raw reply

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
From: Andrew Morton @ 2015-05-13 22:56 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A
In-Reply-To: <20150511192918.GA11361@jtriplet-mobl1>

On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> wrote:

> clone with CLONE_SETTLS accepts an argument to set the thread-local
> storage area for the new thread.  sys_clone declares an int argument
> tls_val in the appropriate point in the argument list (based on the
> various CLONE_BACKWARDS variants), but doesn't actually use or pass
> along that argument.  Instead, sys_clone calls do_fork, which calls
> copy_process, which calls the arch-specific copy_thread, and copy_thread
> pulls the corresponding syscall argument out of the pt_regs captured at
> kernel entry (knowing what argument of clone that architecture passes
> tls in).
> 
> Apart from being awful and inscrutable, that also only works because
> only one code path into copy_thread can pass the CLONE_SETTLS flag, and
> that code path comes from sys_clone with its architecture-specific
> argument-passing order.  This prevents introducing a new version of the
> clone system call without propagating the same architecture-specific
> position of the tls argument.
> 
> However, there's no reason to pull the argument out of pt_regs when
> sys_clone could just pass it down via C function call arguments.
> 
> Introduce a new CONFIG_HAVE_COPY_THREAD_TLS for architectures to opt
> into, and a new copy_thread_tls that accepts the tls parameter as an
> additional unsigned long (syscall-argument-sized) argument.
> Change sys_clone's tls argument to an unsigned long (which does
> not change the ABI), and pass that down to copy_thread_tls.
> 
> Architectures that don't opt into copy_thread_tls will continue to
> ignore the C argument to sys_clone in favor of the pt_regs captured at
> kernel entry, and thus will be unable to introduce new versions of the
> clone syscall.
> 
> Patch co-authored by Josh Triplett and Thiago Macieira.
> 
> ...
>
> @@ -1698,20 +1701,34 @@ long do_fork(unsigned long clone_flags,
>  	return nr;
>  }
>  
> +#ifndef CONFIG_HAVE_COPY_THREAD_TLS
> +/* For compatibility with architectures that call do_fork directly rather than
> + * using the syscall entry points below. */
> +long do_fork(unsigned long clone_flags,
> +	      unsigned long stack_start,
> +	      unsigned long stack_size,
> +	      int __user *parent_tidptr,
> +	      int __user *child_tidptr)
> +{
> +	return _do_fork(clone_flags, stack_start, stack_size,
> +			parent_tidptr, child_tidptr, 0);
> +}
> +#endif

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

^ permalink raw reply

* Re: [PATCH v4 0/6] selftests: Add futex functional tests
From: Shuah Khan @ 2015-05-13 23:22 UTC (permalink / raw)
  To: Darren Hart, Linux Kernel Mailing List
  Cc: linux-api-u79uwXL29TY76Z2rM5mHXA, Ingo Molnar, Peter Zijlstra,
	Thomas Gleixner, Davidlohr Bueso, KOSAKI Motohiro,
	chrubis-AlSwsSmVLrQ, Shuah Khan
In-Reply-To: <cover.1431489408.git.dvhart-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

On 05/12/2015 10:07 PM, Darren Hart wrote:
> Hi Shuah,
> 
> This series begins the process of migrating my futextest tests into kselftest.
> I've started with only the functional tests, as the performance and stress may
> not be appropriate for kselftest as they stand.
> 
> I cleaned up various complaints from checkpatch, but I ignored others that would
> require significant rework of the testcases, such as not using volatile and not
> creating new typedefs.
> 

Daren,

This patch series is good. kselftest run and install
are good. I see the following results. Something you
would expect?? No Issues and I am going to get them
into 4.2 - should show up in linux-kselftest next.

Thanks for adding these.

thanks,
-- Shuah

futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=0 owner=0 timeout=0ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=0 owner=0 timeout=0ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=1 owner=0 timeout=0ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=0 owner=1 timeout=0ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating third party blocker thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=1 owner=0 timeout=0ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=0 owner=1 timeout=0ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating third party blocker thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=1 owner=0 timeout=5000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=1 owner=0 timeout=5000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=1 owner=0 timeout=500000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=1 owner=0 timeout=500000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=0 owner=0 timeout=5000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=0 owner=0 timeout=5000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=0 owner=0 timeout=500000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=0 owner=0 timeout=500000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=0 owner=1 timeout=5000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating third party blocker thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=1 owner=0 timeout=5000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=0 owner=1 timeout=500000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating third party blocker thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=1 owner=0 timeout=500000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=1 locked=1 owner=0 timeout=2000000000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR
futex_requeue_pi: Test requeue functionality
	Arguments: broadcast=0 locked=1 owner=0 timeout=2000000000ns
	ERROR: Operation not permitted: pthread_create
	ERROR: Creating waiting thread failed
Result: ERROR

futex_requeue_pi_mismatched_ops: Detect mismatched requeue_pi operations
Result:  PASS

futex_requeue_pi_signal_restart: Test signal handling during requeue_pi
	Arguments: <none>
	ERROR: Operation not permitted: pthread_create
	ERROR: Unknown error -1: Creating waiting thread failedResult: ERROR

futex_wait_timeout: Block on a futex and wait for timeout
	Arguments: timeout=100000ns
Result:  PASS

futex_wait_wouldblock: Test the unexpected futex value in FUTEX_WAIT
Result:  PASS

futex_wait_uninitialized_heap: Test the uninitialized futex value in
FUTEX_WAIT
Result:  PASS
futex_wait_private_mapped_file: Test the futex value of private file
mappings in FUTEX_WAIT
Result:  PASS


-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org | (970) 217-8978

^ permalink raw reply

* Re: [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic
From: josh-iaAMLnmF4UmaiuxdJuQwMA @ 2015-05-13 23:25 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Peter Zijlstra,
	Thomas Gleixner, Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A
In-Reply-To: <20150513155628.65dc253bea9485cb7910678b-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>

On Wed, May 13, 2015 at 03:56:28PM -0700, Andrew Morton wrote:
> On Mon, 11 May 2015 12:29:19 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> wrote:
> 
> > clone with CLONE_SETTLS accepts an argument to set the thread-local
> > storage area for the new thread.  sys_clone declares an int argument
> > tls_val in the appropriate point in the argument list (based on the
> > various CLONE_BACKWARDS variants), but doesn't actually use or pass
> > along that argument.  Instead, sys_clone calls do_fork, which calls
> > copy_process, which calls the arch-specific copy_thread, and copy_thread
> > pulls the corresponding syscall argument out of the pt_regs captured at
> > kernel entry (knowing what argument of clone that architecture passes
> > tls in).
> > 
> > Apart from being awful and inscrutable, that also only works because
> > only one code path into copy_thread can pass the CLONE_SETTLS flag, and
> > that code path comes from sys_clone with its architecture-specific
> > argument-passing order.  This prevents introducing a new version of the
> > clone system call without propagating the same architecture-specific
> > position of the tls argument.
> > 
> > However, there's no reason to pull the argument out of pt_regs when
> > sys_clone could just pass it down via C function call arguments.
> > 
> > Introduce a new CONFIG_HAVE_COPY_THREAD_TLS for architectures to opt
> > into, and a new copy_thread_tls that accepts the tls parameter as an
> > additional unsigned long (syscall-argument-sized) argument.
> > Change sys_clone's tls argument to an unsigned long (which does
> > not change the ABI), and pass that down to copy_thread_tls.
> > 
> > Architectures that don't opt into copy_thread_tls will continue to
> > ignore the C argument to sys_clone in favor of the pt_regs captured at
> > kernel entry, and thus will be unable to introduce new versions of the
> > clone syscall.
> > 
> > Patch co-authored by Josh Triplett and Thiago Macieira.
> > 
> > ...
> >
> > @@ -1698,20 +1701,34 @@ long do_fork(unsigned long clone_flags,
> >  	return nr;
> >  }
> >  
> > +#ifndef CONFIG_HAVE_COPY_THREAD_TLS
> > +/* For compatibility with architectures that call do_fork directly rather than
> > + * using the syscall entry points below. */
> > +long do_fork(unsigned long clone_flags,
> > +	      unsigned long stack_start,
> > +	      unsigned long stack_size,
> > +	      int __user *parent_tidptr,
> > +	      int __user *child_tidptr)
> > +{
> > +	return _do_fork(clone_flags, stack_start, stack_size,
> > +			parent_tidptr, child_tidptr, 0);
> > +}
> > +#endif
> 
> drivers/misc/kgdbts.c:lookup_addr() has a reference to do_fork(). 
> Doesn't link, with a basic `make allmodconfig'.

Odd; not sure how it built with allyesconfig at the time (which I did
test).

However, dropping the #ifndef is the wrong fix.  do_fork will go away
*completely* once all architectures opt into
CONFIG_HAVE_COPY_THREAD_TLS, and architectures that opt in won't pass
through do_fork.  kgdb wants to capture forks, so it wants _do_fork.
The right fix is to make _do_fork non-static (which makes me sad, but oh
well), and make kgdb reference _do_fork instead of do_fork (though the
string should remain "do_fork" for compatibility):

Here's an incremental patch for that, to be squashed into the first of
the two patches per your standard procedure for -mm; does this fix the
issue you observed?

--- 8< ---
>From fd599319630b33b829dc50b4f3c88016e715cd76 Mon Sep 17 00:00:00 2001
From: Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org>
Date: Wed, 13 May 2015 08:18:47 -0700
Subject: [PATCH] Fix "clone: Support passing tls argument via C rather than pt_regs magic" for kgdb

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

Reported-by: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Signed-off-by: Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org>
---
 drivers/misc/kgdbts.c |  2 +-
 include/linux/sched.h |  1 +
 kernel/fork.c         | 13 ++++++-------
 3 files changed, 8 insertions(+), 8 deletions(-)

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

^ permalink raw reply related

* Re: [PATCH v4 0/6] selftests: Add futex functional tests
From: Darren Hart @ 2015-05-13 23:34 UTC (permalink / raw)
  To: Shuah Khan, Linux Kernel Mailing List
  Cc: linux-api-u79uwXL29TY76Z2rM5mHXA, Ingo Molnar, Peter Zijlstra,
	Thomas Gleixner, Davidlohr Bueso, KOSAKI Motohiro,
	chrubis-AlSwsSmVLrQ
In-Reply-To: <5553DCAE.2010208-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>

On 5/13/15, 4:22 PM, "Shuah Khan" <shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org> wrote:

>On 05/12/2015 10:07 PM, Darren Hart wrote:
>> Hi Shuah,
>> 
>> This series begins the process of migrating my futextest tests into
>>kselftest.
>> I've started with only the functional tests, as the performance and
>>stress may
>> not be appropriate for kselftest as they stand.
>> 
>> I cleaned up various complaints from checkpatch, but I ignored others
>>that would
>> require significant rework of the testcases, such as not using volatile
>>and not
>> creating new typedefs.
>> 
>
>Daren,
>
>This patch series is good. kselftest run and install
>are good. I see the following results. Something you
>would expect??

Yes, that is all expected behavior if you don't run as root and your user
doesn't have the necessary capabilities added -  similar to other tests
with privileged operations.

> No Issues and I am going to get them
>into 4.2 - should show up in linux-kselftest next.

Great, thanks. Perhaps some explicit capabilities tests and clearer error
messages would make sense as a follow-on patch.

Thanks for working with me to get these into the kernel, I think it will
improve futex test exposure and hopefully encourage people to write more
tests to fill some of the gaps.

--
Darren

>
>Thanks for adding these.
>
>thanks,
>-- Shuah
>
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=0 owner=0 timeout=0ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=0 owner=0 timeout=0ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=1 owner=0 timeout=0ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=0 owner=1 timeout=0ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating third party blocker thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=1 owner=0 timeout=0ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=0 owner=1 timeout=0ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating third party blocker thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=1 owner=0 timeout=5000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=1 owner=0 timeout=5000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=1 owner=0 timeout=500000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=1 owner=0 timeout=500000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=0 owner=0 timeout=5000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=0 owner=0 timeout=5000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=0 owner=0 timeout=500000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=0 owner=0 timeout=500000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=0 owner=1 timeout=5000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating third party blocker thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=1 owner=0 timeout=5000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=0 owner=1 timeout=500000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating third party blocker thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=1 owner=0 timeout=500000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=1 locked=1 owner=0 timeout=2000000000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>futex_requeue_pi: Test requeue functionality
>	Arguments: broadcast=0 locked=1 owner=0 timeout=2000000000ns
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Creating waiting thread failed
>Result: ERROR
>
>futex_requeue_pi_mismatched_ops: Detect mismatched requeue_pi operations
>Result:  PASS
>
>futex_requeue_pi_signal_restart: Test signal handling during requeue_pi
>	Arguments: <none>
>	ERROR: Operation not permitted: pthread_create
>	ERROR: Unknown error -1: Creating waiting thread failedResult: ERROR
>
>futex_wait_timeout: Block on a futex and wait for timeout
>	Arguments: timeout=100000ns
>Result:  PASS
>
>futex_wait_wouldblock: Test the unexpected futex value in FUTEX_WAIT
>Result:  PASS
>
>futex_wait_uninitialized_heap: Test the uninitialized futex value in
>FUTEX_WAIT
>Result:  PASS
>futex_wait_private_mapped_file: Test the futex value of private file
>mappings in FUTEX_WAIT
>Result:  PASS
>
>
>-- 
>Shuah Khan
>Sr. Linux Kernel Developer
>Open Source Innovation Group
>Samsung Research America (Silicon Valley)
>shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org | (970) 217-8978
>


-- 
Darren Hart
Intel Open Source Technology Center

^ permalink raw reply

* Re: [PATCH v4 0/6] selftests: Add futex functional tests
From: Shuah Khan @ 2015-05-14  0:40 UTC (permalink / raw)
  To: Darren Hart, Linux Kernel Mailing List
  Cc: linux-api-u79uwXL29TY76Z2rM5mHXA, Ingo Molnar, Peter Zijlstra,
	Thomas Gleixner, Davidlohr Bueso, KOSAKI Motohiro,
	chrubis-AlSwsSmVLrQ, Shuah Khan
In-Reply-To: <D1792C54.CCE05%dvhart-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

On 05/13/2015 05:34 PM, Darren Hart wrote:
> On 5/13/15, 4:22 PM, "Shuah Khan" <shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org> wrote:
> 
>> On 05/12/2015 10:07 PM, Darren Hart wrote:
>>> Hi Shuah,
>>>
>>> This series begins the process of migrating my futextest tests into
>>> kselftest.
>>> I've started with only the functional tests, as the performance and
>>> stress may
>>> not be appropriate for kselftest as they stand.
>>>
>>> I cleaned up various complaints from checkpatch, but I ignored others
>>> that would
>>> require significant rework of the testcases, such as not using volatile
>>> and not
>>> creating new typedefs.
>>>
>>
>> Daren,
>>
>> This patch series is good. kselftest run and install
>> are good. I see the following results. Something you
>> would expect??
> 
> Yes, that is all expected behavior if you don't run as root and your user
> doesn't have the necessary capabilities added -  similar to other tests
> with privileged operations.
> 
>> No Issues and I am going to get them
>> into 4.2 - should show up in linux-kselftest next.
> 
> Great, thanks. Perhaps some explicit capabilities tests and clearer error
> messages would make sense as a follow-on patch.
> 
> Thanks for working with me to get these into the kernel, I think it will
> improve futex test exposure and hopefully encourage people to write more
> tests to fill some of the gaps.
> 

Applied to linux-kselftest next for 4.2

thanks,
-- Shuah


-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org | (970) 217-8978

^ permalink raw reply

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Paul Mackerras @ 2015-05-14  3:55 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch
In-Reply-To: <20150513134842.GA1657@gmail.com>

On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
> 
> Updated patch attached - I've added a few more features to the last 
> table, and restructured the explanations, now every feature 
> description also lists the Kconfig variable that it's tracking, e.g.:
> 
>       irq time acct: HAVE_IRQ_TIME_ACCOUNTING

Regarding that one specifically, as far as I can see,
HAVE_IRQ_TIME_ACCOUNTING is only relevant for tick-based time
accounting.  If you have CONFIG_VIRT_CPU_ACCOUNTING you get accurate
irq time accounting with or without HAVE_IRQ_TIME_ACCOUNTING.  So how
about making this one:

	irq time acct: HAVE_IRQ_TIME_ACCOUNTING || VIRT_CPU_ACCOUNTING

That would make the "irq time acct" entry for powerpc be "ok".

Paul.

^ permalink raw reply

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Ingo Molnar @ 2015-05-14  7:02 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, linux-api, linux-kernel, x86,
	linux-arch
In-Reply-To: <20150514035517.GA27285@drongo.ozlabs.ibm.com>


* Paul Mackerras <paulus@samba.org> wrote:

> On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
> > 
> > Updated patch attached - I've added a few more features to the last 
> > table, and restructured the explanations, now every feature 
> > description also lists the Kconfig variable that it's tracking, e.g.:
> > 
> >       irq time acct: HAVE_IRQ_TIME_ACCOUNTING
> 
> Regarding that one specifically, as far as I can see, 
> HAVE_IRQ_TIME_ACCOUNTING is only relevant for tick-based time 
> accounting.  If you have CONFIG_VIRT_CPU_ACCOUNTING you get accurate 
> irq time accounting with or without HAVE_IRQ_TIME_ACCOUNTING.  So 
> how about making this one:
> 
> 	irq time acct: HAVE_IRQ_TIME_ACCOUNTING || VIRT_CPU_ACCOUNTING
> 
> That would make the "irq time acct" entry for powerpc be "ok".

Yeah, indeed.

I fixed that, PowerPC now looks like this:

      irq time acct:-------------------------------------------.
                THP:------------------------------------.      |
   gcov profile all:-----------------------------.      |      |
    rwsem optimized:----------------------.      |      |      |
   queued spinlocks:---------------.      |      |      |      |
     queued rwlocks:--------.      |      |      |      |      |
     numa balancing:-.      |      |      |      |      |      |
                     |      |      |      |      |      |      |
--------------------------------------------------------------------
  powerpc         |  ok  | TODO | TODO | TODO |  ok  |  ok  |  ok  |

Thanks,

	Ingo

^ permalink raw reply

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Ingo Molnar @ 2015-05-14  7:08 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch
In-Reply-To: <20150513162757.GA21894@x>


* Josh Triplett <josh@joshtriplett.org> wrote:

> On Wed, May 13, 2015 at 03:48:42PM +0200, Ingo Molnar wrote:
> > From 93f6bd67b4348bf4bf27cbac8ffa9f1def4fa6aa Mon Sep 17 00:00:00 2001
> > From: Ingo Molnar <mingo@kernel.org>
> > Date: Wed, 13 May 2015 10:30:11 +0200
> > Subject: [PATCH] Documentation/arch: Add Documentation/arch-features.txt
> > 
> > Add a support matrix for various generic kernel features that need
> > architecture support.
> > 
> > Signed-off-by: Ingo Molnar <mingo@kernel.org>
> 
> Could you add a column for the bpf JIT?

Added it, it now looks like this (see it in the first column):

                ...
            BPF JIT: HAVE_BPF_JIT

      irq time acct:--------------------------------------------------.
                THP:-------------------------------------------.      |
   gcov profile all:------------------------------------.      |      |
    rwsem optimized:-----------------------------.      |      |      |
   queued spinlocks:----------------------.      |      |      |      |
     queued rwlocks:---------------.      |      |      |      |      |
     numa balancing:--------.      |      |      |      |      |      |
            BPF JIT:-.      |      |      |      |      |      |      |
                     |      |      |      |      |      |      |      |
---------------------------------------------------------------------------
  alpha           | TODO | TODO | TODO | TODO |  ok  | TODO | TODO |  ok  |
  arc             | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  arm             |  ok  |  ..  | TODO | TODO | TODO |  ok  |  ok  |  ok  |
  arm64           |  ok  |  ..  | TODO | TODO | TODO |  ok  |  ok  |  ok  |
  avr32           | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  blackfin        | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  c6x             | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  cris            | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  frv             | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  hexagon         | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  ia64            | TODO | TODO | TODO | TODO |  ok  | TODO | TODO |  ok  |
  m32r            | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  m68k            | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  metag           | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  microblaze      | TODO |  ..  | TODO | TODO | TODO |  ok  |  ..  | TODO |
  mips            |  ok  | TODO | TODO | TODO | TODO | TODO |  ok  |  ok  |
  mn10300         | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  nios2           | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  openrisc        | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  parisc          | TODO |  ..  | TODO | TODO | TODO | TODO | TODO |  ok  |
  powerpc         |  ok  |  ok  | TODO | TODO | TODO |  ok  |  ok  |  ok  |
  s390            |  ok  |  ..  | TODO | TODO |  ok  |  ok  |  ok  |  ok  |
  score           | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  sh              | TODO |  ..  | TODO | TODO |  ok  |  ok  |  ..  | TODO |
  sparc           |  ok  | TODO | TODO | TODO |  ok  | TODO |  ok  |  ok  |
  tile            | TODO | TODO | TODO | TODO | TODO | TODO | TODO |  ok  |
  um              | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  unicore32       | TODO |  ..  | TODO | TODO | TODO | TODO |  ..  | TODO |
  x86             |  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
  xtensa          | TODO |  ..  | TODO | TODO |  ok  | TODO |  ..  |  ok  |
---------------------------------------------------------------------------

Thanks,

	Ingo

^ permalink raw reply

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
From: H. Peter Anvin @ 2015-05-14  7:21 UTC (permalink / raw)
  To: Geert Uytterhoeven, Michele Curti
  Cc: Ingo Molnar, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	the arch/x86 maintainers, Linux-Arch, Borislav Petkov
In-Reply-To: <CAMuHMdXV68nie93Rb=Z+vYtn2aNex=s5E4+Z=QGojF+8EbPbKA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <michele.curti-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> Tried to transpose rows with columns, to avoid architecture name duplication
>> and to get only one table while keeping 80 char width, but result seems less
>> readable :p
>>
>>
>>                                                 m
>>                                                 i                         u
>>                               b                 c       o                 n
>>                               l       h         r   m   p   p             i
>>                               a       e         o   n   e p o             c   x
>>                     a     a a c       x       m b   1 n n a w   s   s     o   t
>>                     l     r v k   c   a i m m e l m 0 i r r e s c   p t   r   e
>>                     p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o   a i   e x n
>>                     h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s
>>                     a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
>> -------------------------------------------------------------------------------
>>             lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
>>      stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
>>         jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
>>      seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
> 
> I thought about that, too, as there are more (not fully implemented) features
> than architectures. But I expect more merge conflicts with the transposed
> version.
> 

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

	-hpa

^ permalink raw reply

* Re: [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO
From: H. Peter Anvin @ 2015-05-14  7:21 UTC (permalink / raw)
  To: Geert Uytterhoeven, Michele Curti
  Cc: Ingo Molnar, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Josh Triplett, Andy Lutomirski, Ingo Molnar, Thomas Gleixner,
	Linus Torvalds, linux-api@vger.kernel.org,
	linux-kernel@vger.kernel.org, the arch/x86 maintainers,
	Linux-Arch, Borislav Petkov
In-Reply-To: <CAMuHMdXV68nie93Rb=Z+vYtn2aNex=s5E4+Z=QGojF+8EbPbKA@mail.gmail.com>

On 05/13/2015 07:42 AM, Geert Uytterhoeven wrote:
> On Wed, May 13, 2015 at 4:09 PM, Michele Curti <michele.curti@gmail.com> wrote:
>> Tried to transpose rows with columns, to avoid architecture name duplication
>> and to get only one table while keeping 80 char width, but result seems less
>> readable :p
>>
>>
>>                                                 m
>>                                                 i                         u
>>                               b                 c       o                 n
>>                               l       h         r   m   p   p             i
>>                               a       e         o   n   e p o             c   x
>>                     a     a a c       x       m b   1 n n a w   s   s     o   t
>>                     l     r v k   c   a i m m e l m 0 i r r e s c   p t   r   e
>>                     p a a m r f c r f g a 3 6 t a i 3 o i i r 3 o   a i   e x n
>>                     h r r 6 3 i 6 i r o 6 2 8 a z p 0 s s s p 9 r s r l u 3 8 s
>>                     a c m 4 2 n x s v n 4 r k g e s 0 2 c c c 0 e h c e m 2 6 a
>> -------------------------------------------------------------------------------
>>             lockdep T K K K K K T T T K T T T K K K T T T T K K K K K K K K K K
>>      stackprotector T T K K T T T T T T T T T T T K T T T T T T T K T T T T K T
>>         jump-labels T T K K T T T T T T T T T T T K T T T T K K T T K T T T K T
>>      seccomp-filter T T K K T T T T T T T T T T T K T T T T T K T T T T T T K T
> 
> I thought about that, too, as there are more (not fully implemented) features
> than architectures. But I expect more merge conflicts with the transposed
> version.
> 

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

	-hpa

^ permalink raw reply

* Re: [PATCH 1/2] mmap.2: clarify MAP_LOCKED semantic
From: Michal Hocko @ 2015-05-14  8:01 UTC (permalink / raw)
  To: Eric B Munson
  Cc: Michael Kerrisk, Andrew Morton, Linus Torvalds, David Rientjes,
	LKML, Linux API, linux-mm-Bw31MaZKKs3YtjvyW6yDsg
In-Reply-To: <20150513144506.GD1227-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org>

On Wed 13-05-15 10:45:06, Eric B Munson wrote:
> On Wed, 13 May 2015, Michal Hocko wrote:
> 
> > From: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
> > 
> > MAP_LOCKED had a subtly different semantic from mmap(2)+mlock(2) since
> > it has been introduced.
> > mlock(2) fails if the memory range cannot get populated to guarantee
> > that no future major faults will happen on the range. mmap(MAP_LOCKED) on
> > the other hand silently succeeds even if the range was populated only
> > partially.
> > 
> > Fixing this subtle difference in the kernel is rather awkward because
> > the memory population happens after mm locks have been dropped and so
> > the cleanup before returning failure (munlock) could operate on something
> > else than the originally mapped area.
> > 
> > E.g. speculative userspace page fault handler catching SEGV and doing
> > mmap(fault_addr, MAP_FIXED|MAP_LOCKED) might discard portion of a racing
> > mmap and lead to lost data. Although it is not clear whether such a
> > usage would be valid, mmap page doesn't explicitly describe requirements
> > for threaded applications so we cannot exclude this possibility.
> > 
> > This patch makes the semantic of MAP_LOCKED explicit and suggest using
> > mmap + mlock as the only way to guarantee no later major page faults.
> > 
> > Signed-off-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
> 
> Does the problem still happend when MAP_POPULATE | MAP_LOCKED is used
> (AFAICT MAP_POPULATE will cause the mmap to fail if all the pages cannot
> be made present).

No, there is no difference because MAP_POPULATE is implicit when
MAP_LOCKED is used and as pointed in the cover, we cannot fail after the
vma is created and locks dropped. The second patch tries to clarify that
MAP_POPULATE is just a best effort.

> Either way this is a good catch.
> 
> Acked-by: Eric B Munson <emunson-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org>
 
Thanks!


-- 
Michal Hocko
SUSE Labs

^ permalink raw reply

* Re: [PATCH 0/3] Allow user to request memory to be locked on page fault
From: Michal Hocko @ 2015-05-14  8:08 UTC (permalink / raw)
  To: Eric B Munson
  Cc: Andrew Morton, Shuah Khan, linux-alpha-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-mips-6z/3iImG2C8G8FEW9MqTrA,
	linux-parisc-u79uwXL29TY76Z2rM5mHXA,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ,
	sparclinux-u79uwXL29TY76Z2rM5mHXA,
	linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg,
	linux-arch-u79uwXL29TY76Z2rM5mHXA,
	linux-api-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20150513150036.GG1227-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org>

On Wed 13-05-15 11:00:36, Eric B Munson wrote:
> On Mon, 11 May 2015, Eric B Munson wrote:
> 
> > On Fri, 08 May 2015, Andrew Morton wrote:
> > 
> > > On Fri,  8 May 2015 15:33:43 -0400 Eric B Munson <emunson-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org> wrote:
> > > 
> > > > mlock() allows a user to control page out of program memory, but this
> > > > comes at the cost of faulting in the entire mapping when it is
> > > > allocated.  For large mappings where the entire area is not necessary
> > > > this is not ideal.
> > > > 
> > > > This series introduces new flags for mmap() and mlockall() that allow a
> > > > user to specify that the covered are should not be paged out, but only
> > > > after the memory has been used the first time.
> > > 
> > > Please tell us much much more about the value of these changes: the use
> > > cases, the behavioural improvements and performance results which the
> > > patchset brings to those use cases, etc.
> > > 
> > 
> > To illustrate the proposed use case I wrote a quick program that mmaps
> > a 5GB file which is filled with random data and accesses 150,000 pages
> > from that mapping.  Setup and processing were timed separately to
> > illustrate the differences between the three tested approaches.  the
> > setup portion is simply the call to mmap, the processing is the
> > accessing of the various locations in  that mapping.  The following
> > values are in milliseconds and are the averages of 20 runs each with a
> > call to echo 3 > /proc/sys/vm/drop_caches between each run.
> > 
> > The first mapping was made with MAP_PRIVATE | MAP_LOCKED as a baseline:
> > Startup average:    9476.506
> > Processing average: 3.573
> > 
> > The second mapping was simply MAP_PRIVATE but each page was passed to
> > mlock() before being read:
> > Startup average:    0.051
> > Processing average: 721.859
> > 
> > The final mapping was MAP_PRIVATE | MAP_LOCKONFAULT:
> > Startup average:    0.084
> > Processing average: 42.125
> > 
> 
> Michal's suggestion of changing protections and locking in a signal
> handler was better than the locking as needed, but still significantly
> more work required than the LOCKONFAULT case.
> 
> Startup average:    0.047
> Processing average: 86.431

Have you played with batching? Has it helped? Anyway it is to be
expected that the overhead will be higher than a single mmap call. The
question is whether you can live with it because adding a new semantic
to mlock sounds trickier and MAP_LOCKED is tricky enough already...

-- 
Michal Hocko
SUSE Labs

^ permalink raw reply

* Re: [RFC][PATCH 2/2] drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.
From: Paul Bolle @ 2015-05-14  9:16 UTC (permalink / raw)
  To: CK Hu
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	David Airlie, Matthias Brugger, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Rob Herring,
	Ashwin Chaugule, Catalin Marinas, Will Deacon, Grant Likely,
	Graeme Gregory, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-api-u79uwXL29TY76Z2rM5mHXA,
	srv_heupstream-NuS5LvNUpcJWk0Htik3J/w, Sascha Hauer, Cawa Cheng,
	YT Shen, Jitao Shi
In-Reply-To: <1431530626-31493-3-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

A naive question and a nit follow. That's probably not what you'd like
to see for an RFC, but the patch got tangled up in my mail filter
anyhow.

On Wed, 2015-05-13 at 23:23 +0800, CK Hu wrote:
> --- /dev/null
> +++ b/drivers/gpu/drm/mediatek/Kconfig

> +config DRM_MEDIATEK_FBDEV
> +	bool "Enable legacy fbdev support for Mediatek DRM"
> +	depends on DRM_MEDIATEK
> +	select FB_SYS_FILLRECT
> +	select FB_SYS_COPYAREA
> +	select FB_SYS_IMAGEBLIT
> +	select DRM_KMS_FB_HELPER
> +	help
> +	  Choose this option if you have a need for the legacy
> +	  fbdev support.  Note that this support also provides
> +	  the Linux console on top of the Mediatek DRM mode
> +	  setting driver.

Naive question, as I know next to nothing about drivers/gpu/drm.
DRM_MEDIATEK_FBDEV isn't used anywhere, as far as I can see. So all that
setting this Kconfig symbol does is selecting four other Kconfig
symbols. Is selecting those four symbols enough to get fbdev support?
Taking the Cargo Cult approach of looking at similar symbols
(DRM_I915_FBDEV, DRM_MSM_FBDEV, DRM_STI_FBDEV, and DRM_TEGRA_FBDEV) I
noticed that they all do a bit more than just selecting other symbols.

> --- /dev/null
> +++ b/drivers/gpu/drm/mediatek/mediatek_drm_drv.c

> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.

This states the license of this driver is GPL v2. (Identical comments
seem to be part of all files added in this patch.)

> +MODULE_LICENSE("GPL");

And, according to include/linux/module.h, this states the license is GPL
v2 or later. So I think that either the comment at the top of these
files or the ident used in the MODULE_LICENSE() macro needs to be
changed.

Thanks,


Paul Bolle

^ permalink raw reply

* Re: [PATCH] Docmentation, ABI: Update contact for L3 cache index disable
From: Borislav Petkov @ 2015-05-14  9:25 UTC (permalink / raw)
  To: Aravind Gopalakrishnan
  Cc: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r, sudeep.holla-5wv7dgnIgG8,
	sboyd-sgV2jX0FEOL9JmXXK+q4OQ, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1431125098-9470-1-git-send-email-Aravind.Gopalakrishnan-5C7GfCeVMHo@public.gmane.org>

On Fri, May 08, 2015 at 05:44:58PM -0500, Aravind Gopalakrishnan wrote:
> The mailing list discuss-Wa75r+71Mmgdnm+yROfE0A@public.gmane.org is now defunct.
> Using x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org in its place.
> 
> Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan-5C7GfCeVMHo@public.gmane.org>
> ---
>  Documentation/ABI/testing/sysfs-devices-system-cpu | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
> index 99983e6..f1c46d0 100644
> --- a/Documentation/ABI/testing/sysfs-devices-system-cpu
> +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
> @@ -162,7 +162,7 @@ Description:	Discover CPUs in the same CPU frequency coordination domain
>  What:		/sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
>  Date:		August 2008
>  KernelVersion:	2.6.27
> -Contact:	discuss-Wa75r+71Mmgdnm+yROfE0A@public.gmane.org
> +Contact:	x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
>  Description:	Disable L3 cache indices
>  
>  		These files exist in every CPU's cache/index3 directory. Each

Applied, thanks.

-- 
Regards/Gruss,
    Boris.

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

^ permalink raw reply

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Ingo Molnar @ 2015-05-14 10:02 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20150513150523.ddd65d7cd51f820b78f0c8e3-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>


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

> On Wed, 13 May 2015 09:27:57 -0700 Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> wrote:
> 
> > If we can't generate this, then the ASCII-art style and right-aligned
> > feature names seems *really* likely to produce spurious conflicts,
> > especially when adding a feature to the list.  Even though it would
> > produce a much longer file, would you consider dropping the tables and
> > just having a section per feature?
> 
> me2.  The patch conflicts are going to be pretty bad.
> 
> I'd also prefer a format which allows us to add useful notes - it's 
> a bit hostile to say "thou shalt implement X" without providing any 
> info about how to do so.  Where do we tell maintainers that there's 
> a handy test app in tools/testing/selftests which they should use?
> 
> This way, I can bug patch submitters with "hey, you forgot to update 
> Documentation/arch-features.txt" and they will add useful info while 
> it's all still hot in their minds.

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

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

Yes.

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

Ok, added.

> __HAVE_ARCH_PMDP_SPLITTING_FLUSH

Ok, added.

> __HAVE_ARCH_PTE_SPECIAL

Ok, added.

> __HAVE_ARCH_GATE_AREA

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

> ARCH_HAVE_ELF_ASLR

Does not seem to be upstream.

> ARCH_HAS_GCOV_PROFILE_ALL

Yeah, that's already included in v6.

> CONFIG_ARCH_USE_BUILTIN_BSWAP

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

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

> HAVE_ARCH_HUGE_VMAP

Ok, added.

> ARCH_HAS_SG_CHAIN

Ok, added.

> __HAVE_ARCH_STRNCASECMP

So, no architecture supports this yet- but added.

> ARCH_HAS_ELF_RANDOMIZE

Agreed and v6 already includes this.

> CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID

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

> ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT

Not upstream yet it appears.

> CONFIG_ARCH_USES_PG_UNCACHED

Ok, added.

> CONFIG_ARCH_HAS_WALK_MEMORY

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

> and things which don't contain ARCH
> 
> HAVE_GENERIC_RCU_GUP

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

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

> HAVE_RCU_TABLE_FREE

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

> HAVE_GENERIC_RCU_GUP

double ;-)

> CONFIG_HAVE_CLK

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

> CONFIG_HAVE_IOREMAP_PROT

Agreed - already in -v6.

> CONFIG_HAVE_MEMBLOCK_NODE_MAP

Ok, added.

> And then there's the increasingly common
> 
> arch/include/asm/foo.h:
> 
> 	static inline void wibble(...)
> 	{
> 		...
> 	}
> 	#define wibble wibble
> 
> include/linux/foo.h:
> 
> 	#ifndef wibble
> 	static inline void wibble(...)
> 	{
> 		...
> 	}
> 	#define wibble
> 	#endif
> 
> which is going to be hard to grep for....

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

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

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

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

Thanks,

	Ingo

^ permalink raw reply

* [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
From: Ingo Molnar @ 2015-05-14 10:15 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20150513150523.ddd65d7cd51f820b78f0c8e3-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>


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

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

For example, lockdep support is shown the following way:

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

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

The meaning of entries in the tables is:

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

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

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

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

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

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

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

Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 Documentation/features/BPF-JIT/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/ELF-ASLR/arch-support.txt   | 39 ++++++++++++++++++++++
 Documentation/features/KASAN/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/PG_uncached/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/THP/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/arch-support.txt            | 11 ++++++
 .../features/arch-tick-broadcast/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/clockevents/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/cmpxchg-local/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/context-tracking/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/dma-api-debug/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/dma-contiguous/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/dma_map_attrs/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/gcov-profile-all/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/generic-idle-thread/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/huge-vmap/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/ioremap_prot/arch-support.txt         | 39 ++++++++++++++++++++++
 .../features/irq-time-acct/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/jump-labels/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/kgdb/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/kprobes-event/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/kprobes-on-ftrace/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kretprobes/arch-support.txt | 39 ++++++++++++++++++++++
 Documentation/features/lockdep/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/modern-timekeeping/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/numa-balancing/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/numa-memblock/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/optprobes/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/perf-regs/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/perf-stackdump/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/pmdp_splitting_flush/arch-support.txt | 39 ++++++++++++++++++++++
 .../features/pte_special/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/queued-rwlocks/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/queued-spinlocks/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/rwsem-optimized/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/seccomp-filter/arch-support.txt       | 39 ++++++++++++++++++++++
 Documentation/features/sg-chain/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/stackprotector/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/strncasecmp/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/tracehook/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/uprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/user-ret-profiler/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/virt-cpuacct/arch-support.txt         | 39 ++++++++++++++++++++++
 44 files changed, 1688 insertions(+)

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

^ permalink raw reply related

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Ingo Molnar @ 2015-05-14 10:16 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api, linux-kernel, x86, linux-arch
In-Reply-To: <20150513165358.GA22979@x>


* Josh Triplett <josh@joshtriplett.org> wrote:

> On Wed, May 13, 2015 at 09:27:57AM -0700, Josh Triplett wrote:
>
> > How likely is this to get out of date?  Are people going to 
> > remember to patch this when they add a feature to their 
> > architecture?  If they found out they had work to do by reading 
> > this file, which is the goal, then they'll likely remember to edit 
> > the file; however, if they find the feature and fix it without 
> > knowing about the file, will someone notice?
> > 
> > Is there any way we can *generate* this file from Kconfig?  Can we 
> > extract the necessary "this is possible to enable" or "this arch 
> > selects this symbol" information from Kconfig, and together with 
> > the list of symbols for features needing architecture support, 
> > generate the table?
> 
> Just tried this.  Looks like it's pretty trivial for most of these 
> features: just make ARCH=thearch allyesconfig, then look for the 
> config symbol in the result.

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

Thanks,

	Ingo

^ permalink raw reply

* Re: [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt
From: Josh Triplett @ 2015-05-14 10:31 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Borislav Petkov, Andrew Morton, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20150514101615.GB27550-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

On Thu, May 14, 2015 at 12:16:15PM +0200, Ingo Molnar wrote:
> 
> * Josh Triplett <josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org> wrote:
> 
> > On Wed, May 13, 2015 at 09:27:57AM -0700, Josh Triplett wrote:
> >
> > > How likely is this to get out of date?  Are people going to 
> > > remember to patch this when they add a feature to their 
> > > architecture?  If they found out they had work to do by reading 
> > > this file, which is the goal, then they'll likely remember to edit 
> > > the file; however, if they find the feature and fix it without 
> > > knowing about the file, will someone notice?
> > > 
> > > Is there any way we can *generate* this file from Kconfig?  Can we 
> > > extract the necessary "this is possible to enable" or "this arch 
> > > selects this symbol" information from Kconfig, and together with 
> > > the list of symbols for features needing architecture support, 
> > > generate the table?
> > 
> > Just tried this.  Looks like it's pretty trivial for most of these 
> > features: just make ARCH=thearch allyesconfig, then look for the 
> > config symbol in the result.
> 
> No, that's not nearly enough to do a correct support matrix, for 
> example due to subarchitectures that aren't included in an 
> allyesconfig.

Still feasible to automate with a bit more scripting.

> There are also many #define driven features.

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

- Josh Triplett

^ permalink raw reply

* [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
From: Ingo Molnar @ 2015-05-14 10:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Josh Triplett, Borislav Petkov, Jonathan Corbet, Peter Zijlstra,
	Andy Lutomirski, Ingo Molnar, H. Peter Anvin, Thomas Gleixner,
	Linus Torvalds, linux-api-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arch-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20150514101518.GA27550-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>


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

> To list an architecture's unsupported features, just do something
> like:
> 
>   $ git grep -lE 'x86.*TODO' Documentation/features/*/arch-support.txt
> 
>   Documentation/features/arch-tick-broadcast/arch-support.txt
>   Documentation/features/strncasecmp/arch-support.txt
> 
> which prints the list of features not yet supported by the 
> architecture.

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

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

Updated patch attached.

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

Thanks,

	Ingo

===============================>
From: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Date: Thu, 14 May 2015 12:04:00 +0200
Subject: [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/

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

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

For example, lockdep support is shown the following way:

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

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

The meaning of entries in the tables is:

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

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

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

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

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

which will print the list of not yet supported features.

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

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

Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 Documentation/features/BPF-JIT/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/ELF-ASLR/arch-support.txt   | 39 ++++++++++++++++++++++
 Documentation/features/KASAN/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/PG_uncached/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/THP/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/arch-support.txt            | 11 ++++++
 .../features/arch-tick-broadcast/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/clockevents/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/cmpxchg-local/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/context-tracking/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/dma-api-debug/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/dma-contiguous/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/dma_map_attrs/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/gcov-profile-all/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/generic-idle-thread/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/huge-vmap/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/ioremap_prot/arch-support.txt         | 39 ++++++++++++++++++++++
 .../features/irq-time-acct/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/jump-labels/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/kgdb/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/kprobes-event/arch-support.txt        | 39 ++++++++++++++++++++++
 .../features/kprobes-on-ftrace/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 Documentation/features/kretprobes/arch-support.txt | 39 ++++++++++++++++++++++
 Documentation/features/list-arch.sh                | 21 ++++++++++++
 Documentation/features/lockdep/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/modern-timekeeping/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/numa-balancing/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/numa-memblock/arch-support.txt        | 39 ++++++++++++++++++++++
 Documentation/features/optprobes/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/perf-regs/arch-support.txt  | 39 ++++++++++++++++++++++
 .../features/perf-stackdump/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/pmdp_splitting_flush/arch-support.txt | 39 ++++++++++++++++++++++
 .../features/pte_special/arch-support.txt          | 39 ++++++++++++++++++++++
 .../features/queued-rwlocks/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/queued-spinlocks/arch-support.txt     | 39 ++++++++++++++++++++++
 .../features/rwsem-optimized/arch-support.txt      | 39 ++++++++++++++++++++++
 .../features/seccomp-filter/arch-support.txt       | 39 ++++++++++++++++++++++
 Documentation/features/sg-chain/arch-support.txt   | 39 ++++++++++++++++++++++
 .../features/stackprotector/arch-support.txt       | 39 ++++++++++++++++++++++
 .../features/strncasecmp/arch-support.txt          | 39 ++++++++++++++++++++++
 Documentation/features/tracehook/arch-support.txt  | 39 ++++++++++++++++++++++
 Documentation/features/uprobes/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/user-ret-profiler/arch-support.txt    | 39 ++++++++++++++++++++++
 .../features/virt-cpuacct/arch-support.txt         | 39 ++++++++++++++++++++++
 45 files changed, 1709 insertions(+)

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

^ permalink raw reply related

* Re: [PATCH v2 0/4] enhance shmem process and swap accounting
From: Vlastimil Babka @ 2015-05-14 11:16 UTC (permalink / raw)
  To: linux-mm-Bw31MaZKKs3YtjvyW6yDsg, Jerome Marchand
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Andrew Morton,
	linux-doc-u79uwXL29TY76Z2rM5mHXA, Hugh Dickins, Michal Hocko,
	Kirill A. Shutemov, Cyrill Gorcunov, Randy Dunlap,
	linux-s390-u79uwXL29TY76Z2rM5mHXA, Martin Schwidefsky,
	Heiko Carstens, Peter Zijlstra, Paul Mackerras,
	Arnaldo Carvalho de Melo, Oleg Nesterov, Linux API,
	Konstantin Khlebnikov
In-Reply-To: <1427474441-17708-1-git-send-email-vbabka-AlSwsSmVLrQ@public.gmane.org>

On 03/27/2015 05:40 PM, Vlastimil Babka wrote:
> Changes since v1:
> o In Patch 2, rely on SHMEM_I(inode)->swapped if possible, and fallback to
>    radix tree iterator on partially mapped shmem objects, i.e. decouple shmem
>    swap usage determination from the page walk, for performance reasons.
>    Thanks to Jerome and Konstantin for the tips.
>    The downside is that mm/shmem.c had to be touched.
>

Ping? I've got only a minor suggestion from Konstantin and no more 
feedback. Hugh?

Thanks,
Vlastimil

^ permalink raw reply

* Re: [PATCH v2 3/4] mm, shmem: Add shmem resident memory accounting
From: Vlastimil Babka @ 2015-05-14 11:17 UTC (permalink / raw)
  To: Konstantin Khlebnikov, linux-mm, Jerome Marchand
  Cc: linux-kernel, Andrew Morton, linux-doc, Hugh Dickins,
	Michal Hocko, Kirill A. Shutemov, Cyrill Gorcunov, Randy Dunlap,
	linux-s390, Martin Schwidefsky, Heiko Carstens, Peter Zijlstra,
	Paul Mackerras, Arnaldo Carvalho de Melo, Oleg Nesterov,
	Linux API
In-Reply-To: <55158EB5.5040301@yandex-team.ru>

On 03/27/2015 06:09 PM, Konstantin Khlebnikov wrote:
> On 27.03.2015 19:40, Vlastimil Babka wrote:
>> From: Jerome Marchand <jmarchan@redhat.com>
>>
>> Currently looking at /proc/<pid>/status or statm, there is no way to
>> distinguish shmem pages from pages mapped to a regular file (shmem
>> pages are mapped to /dev/zero), even though their implication in
>> actual memory use is quite different.
>> This patch adds MM_SHMEMPAGES counter to mm_rss_stat to account for
>> shmem pages instead of MM_FILEPAGES.
>>
>> Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
>> Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
>> ---
>
>
>> --- a/include/linux/mm_types.h
>> +++ b/include/linux/mm_types.h
>> @@ -327,9 +327,12 @@ struct core_state {
>>    };
>>
>>    enum {
>> -	MM_FILEPAGES,
>> -	MM_ANONPAGES,
>> -	MM_SWAPENTS,
>> +	MM_FILEPAGES,	/* Resident file mapping pages */
>> +	MM_ANONPAGES,	/* Resident anonymous pages */
>> +	MM_SWAPENTS,	/* Anonymous swap entries */
>> +#ifdef CONFIG_SHMEM
>> +	MM_SHMEMPAGES,	/* Resident shared memory pages */
>> +#endif
>
> I prefer to keep that counter unconditionally:
> kernel has MM_SWAPENTS even without CONFIG_SWAP.

Hmm, so just for consistency? I don't see much reason to make life 
harder for tiny systems, especially when it's not too much effort.

>
>>    	NR_MM_COUNTERS
>>    };
>>
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
>

^ permalink raw reply

* Re: [PATCH v2 3/4] mm, shmem: Add shmem resident memory accounting
From: Konstantin Khlebnikov @ 2015-05-14 13:31 UTC (permalink / raw)
  To: Vlastimil Babka
  Cc: Konstantin Khlebnikov, linux-mm@kvack.org, Jerome Marchand,
	Linux Kernel Mailing List, Andrew Morton, linux-doc, Hugh Dickins,
	Michal Hocko, Kirill A. Shutemov, Cyrill Gorcunov, Randy Dunlap,
	linux-s390, Martin Schwidefsky, Heiko Carstens, Peter Zijlstra,
	Paul Mackerras, Arnaldo Carvalho de Melo, Oleg Nesterov,
	Linux API
In-Reply-To: <5554844F.4070709@suse.cz>

On Thu, May 14, 2015 at 2:17 PM, Vlastimil Babka <vbabka@suse.cz> wrote:
> On 03/27/2015 06:09 PM, Konstantin Khlebnikov wrote:
>>
>> On 27.03.2015 19:40, Vlastimil Babka wrote:
>>>
>>> From: Jerome Marchand <jmarchan@redhat.com>
>>>
>>> Currently looking at /proc/<pid>/status or statm, there is no way to
>>> distinguish shmem pages from pages mapped to a regular file (shmem
>>> pages are mapped to /dev/zero), even though their implication in
>>> actual memory use is quite different.
>>> This patch adds MM_SHMEMPAGES counter to mm_rss_stat to account for
>>> shmem pages instead of MM_FILEPAGES.
>>>
>>> Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
>>> Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
>>> ---
>>
>>
>>
>>> --- a/include/linux/mm_types.h
>>> +++ b/include/linux/mm_types.h
>>> @@ -327,9 +327,12 @@ struct core_state {
>>>    };
>>>
>>>    enum {
>>> -       MM_FILEPAGES,
>>> -       MM_ANONPAGES,
>>> -       MM_SWAPENTS,
>>> +       MM_FILEPAGES,   /* Resident file mapping pages */
>>> +       MM_ANONPAGES,   /* Resident anonymous pages */
>>> +       MM_SWAPENTS,    /* Anonymous swap entries */
>>> +#ifdef CONFIG_SHMEM
>>> +       MM_SHMEMPAGES,  /* Resident shared memory pages */
>>> +#endif
>>
>>
>> I prefer to keep that counter unconditionally:
>> kernel has MM_SWAPENTS even without CONFIG_SWAP.
>
>
> Hmm, so just for consistency? I don't see much reason to make life harder
> for tiny systems, especially when it's not too much effort.

Profit is vague, I guess slab anyway will round size to the next
cacheline or power-of-two.
That conditional (non)existence just adds unneeded code lines.

>
>>
>>>         NR_MM_COUNTERS
>>>    };
>>>
>>
>> --
>> To unsubscribe, send a message with 'unsubscribe linux-mm' in
>> the body to majordomo@kvack.org.  For more info on Linux MM,
>> see: http://www.linux-mm.org/ .
>> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox