linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Josh Triplett <josh@joshtriplett.org>,
	Borislav Petkov <bp@alien8.de>, Jonathan Corbet <corbet@lwn.net>,
	Peter Zijlstra <peterz@infradead.org>,
	Andy Lutomirski <luto@amacapital.net>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-api@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH v2] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/
Date: Fri, 15 May 2015 11:37:50 +0200	[thread overview]
Message-ID: <20150515093750.GA4665@gmail.com> (raw)
In-Reply-To: <20150514195925.GA27570@gmail.com>


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

> > > This directory structure can be used in the future to add other 
> > > files - such as porting guides, testing description, etc.
> > 
> > I suppose so.  Having a great bunch of directories, each 
> > containing a single file is a bit odd.
> 
> It's a starting point and nicely extensible. I was thinking about 
> one more intermediate level:
> 
>    Documentation/features/locking/lockdep/
>    Documentation/features/locking/rwsem-optimized/
>    Documentation/features/locking/queued-rwlocks/
>    Documentation/features/locking/queued-spinlocks/
>    ...
> 
>    Documentation/features/vm/PG_uncached/
>    Documentation/features/vm/pmdp_splitting_flush/
>    Documentation/features/vm/pte_special/
>    ...
> 
> The advantage of this, beyond more structure, would be that I'd 
> probably move most of the Documentation/locking/*.txt files into 
> Documentation/features/locking/, for example lockdep-design.txt 
> would go into Documentation/features/locking/lockdep/.
> 
> I'd keep the hierarchy at a predictable depth though, i.e.:
> 
>    Documentation/features/<subsystem>/<feature_name>/

So I've implemented this, the high level structure now looks like 
this:

 triton:~/tip/Documentation/features> ls -l
 total 48
 -rw-rw-r--  1 mingo mingo  396 May 15 11:26 arch-support.txt
 drwxrwxr-x  6 mingo mingo 4096 May 15 11:26 core
 drwxrwxr-x 12 mingo mingo 4096 May 15 11:26 debug
 drwxrwxr-x  6 mingo mingo 4096 May 15 11:26 io
 drwxrwxr-x  3 mingo mingo 4096 May 15 11:26 lib
 -rwxrwxr-x  1 mingo mingo  692 May 15 11:31 list-arch.sh
 drwxrwxr-x  7 mingo mingo 4096 May 15 11:26 locking
 drwxrwxr-x  5 mingo mingo 4096 May 15 11:26 perf
 drwxrwxr-x  3 mingo mingo 4096 May 15 11:26 sched
 drwxrwxr-x  3 mingo mingo 4096 May 15 11:26 seccomp
 drwxrwxr-x  8 mingo mingo 4096 May 15 11:26 time
 drwxrwxr-x 10 mingo mingo 4096 May 15 11:26 vm
 triton:~/tip/Documentation/features> 

 triton:~/tip/Documentation/features> ls -l locking/
 total 20
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 cmpxchg-local
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 lockdep
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 queued-rwlocks
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 queued-spinlocks
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 rwsem-optimized

 triton:~/tip/Documentation/features> ls -l vm/
 total 32
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 ELF-ASLR
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 huge-vmap
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 ioremap_prot
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 numa-memblock
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 PG_uncached
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 pmdp_splitting_flush
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 pte_special
 drwxrwxr-x 2 mingo mingo 4096 May 15 11:26 THP

And this structure, beyond making it easier to navigate, can be 
utilized to improve the visualization output as well:

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

See the first column, the subsystem prefixes - this organizes the 
feature list in a natural way as well, per subsystem.

Seems to work out well.

Thanks,

	Ingo

  parent reply	other threads:[~2015-05-15  9:37 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20150511192918.GA11361@jtriplet-mobl1>
     [not found] ` <20150512142250.dcb053da81855ae1b5861173@linux-foundation.org>
2015-05-12 21:38   ` [PATCHv2 1/2] clone: Support passing tls argument via C rather than pt_regs magic Peter Zijlstra
2015-05-12 21:38     ` Peter Zijlstra
     [not found]     ` <20150512213843.GV21418-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-05-12 21:49       ` Andrew Morton
2015-05-12 21:49         ` Andrew Morton
     [not found]         ` <20150512144910.0b49c9a7a13336773449db33-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2015-05-13  8:34           ` [RFC PATCH] Documentation/arch: Add Documentation/arch-TODO Ingo Molnar
2015-05-13  8:34             ` Ingo Molnar
2015-05-13  8:56             ` [RFC PATCH v2] " Ingo Molnar
2015-05-13  8:56               ` Ingo Molnar
     [not found]               ` <20150513085636.GA11030-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-13  9:24                 ` [RFC PATCH v3] " Ingo Molnar
2015-05-13  9:24                   ` Ingo Molnar
2015-05-13  9:46                   ` Ingo Molnar
2015-05-13  9:46                     ` Ingo Molnar
     [not found]                     ` <20150513094622.GC11030-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-13  9:47                       ` [RFC PATCH v5] " Ingo Molnar
2015-05-13  9:47                         ` Ingo Molnar
2015-05-13 13:18                         ` Borislav Petkov
     [not found]                           ` <20150513131835.GJ1517-fF5Pk5pvG8Y@public.gmane.org>
2015-05-13 13:48                             ` [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt Ingo Molnar
2015-05-13 13:48                               ` Ingo Molnar
2015-05-13 16:27                               ` Josh Triplett
2015-05-13 16:53                                 ` Josh Triplett
2015-05-13 16:53                                   ` Josh Triplett
2015-05-14 10:16                                   ` Ingo Molnar
2015-05-14 10:16                                     ` Ingo Molnar
     [not found]                                     ` <20150514101615.GB27550-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-14 10:31                                       ` Josh Triplett
2015-05-14 10:31                                         ` Josh Triplett
2015-05-13 22:05                                 ` Andrew Morton
2015-05-13 22:05                                   ` Andrew Morton
     [not found]                                   ` <20150513150523.ddd65d7cd51f820b78f0c8e3-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2015-05-14 10:02                                     ` Ingo Molnar
2015-05-14 10:02                                       ` Ingo Molnar
2015-05-14 10:15                                     ` [PATCH] Documentation/arch: Add kernel feature descriptions and arch support status under Documentation/features/ Ingo Molnar
2015-05-14 10:15                                       ` Ingo Molnar
     [not found]                                       ` <20150514101518.GA27550-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-14 10:35                                         ` [PATCH v2] " Ingo Molnar
2015-05-14 10:35                                           ` Ingo Molnar
2015-05-14 19:38                                           ` Andrew Morton
2015-05-14 19:59                                             ` Ingo Molnar
     [not found]                                               ` <20150514195925.GA27570-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-14 22:33                                                 ` Stephen Rothwell
2015-05-14 22:33                                                   ` Stephen Rothwell
     [not found]                                                   ` <20150515083334.535ad43e-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org>
2015-05-15  7:38                                                     ` Ingo Molnar
2015-05-15  7:38                                                       ` Ingo Molnar
     [not found]                                                       ` <20150515073805.GA14993-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-15  7:51                                                         ` Ingo Molnar
2015-05-15  7:51                                                           ` Ingo Molnar
2015-05-15  9:37                                               ` Ingo Molnar [this message]
     [not found]                                             ` <20150514123835.1bf436bc35d711f8dbf9bc0f-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2015-05-14 20:34                                               ` Richard Weinberger
2015-05-14 20:34                                                 ` Richard Weinberger
2015-05-14 22:57                                               ` Michael Ellerman
2015-05-14 22:57                                                 ` Michael Ellerman
     [not found]                                                 ` <1431644248.2981.1.camel-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org>
2015-05-15  7:49                                                   ` Ingo Molnar
2015-05-15  7:49                                                     ` Ingo Molnar
2015-05-18  1:37                                                     ` Michael Ellerman
     [not found]                                                       ` <1431913033.13218.2.camel-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org>
2015-05-18  8:54                                                         ` Ingo Molnar
2015-05-18  8:54                                                           ` Ingo Molnar
     [not found]                                                           ` <20150518085423.GA24944-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-19  2:02                                                             ` Michael Ellerman
2015-05-19  2:02                                                               ` Michael Ellerman
     [not found]                                           ` <20150514103544.GA7027-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-22 15:49                                             ` Jonathan Corbet
2015-05-22 15:49                                               ` Jonathan Corbet
     [not found]                                               ` <20150522094931.78a43421-T1hC0tSOHrs@public.gmane.org>
2015-05-23  8:07                                                 ` Ingo Molnar
2015-05-23  8:07                                                   ` Ingo Molnar
2015-05-24 18:44                                                   ` Jonathan Corbet
     [not found]                                                     ` <20150524124447.0c395540-T1hC0tSOHrs@public.gmane.org>
2015-06-03 11:03                                                       ` [GIT PULL] Documentation/features: Add kernel feature descriptions and arch support status files " Ingo Molnar
2015-06-03 11:03                                                         ` Ingo Molnar
     [not found]                                                         ` <20150603110355.GA12079-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-06-08 23:08                                                           ` Jonathan Corbet
2015-06-08 23:08                                                             ` Jonathan Corbet
2015-05-14  7:08                                 ` [RFC PATCH v6] Documentation/arch: Add Documentation/arch-features.txt Ingo Molnar
2015-05-14  3:55                               ` Paul Mackerras
2015-05-14  3:55                                 ` Paul Mackerras
2015-05-14  7:02                                 ` Ingo Molnar
     [not found]                         ` <20150513094756.GD11030-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-13 14:09                           ` [RFC PATCH v5] Documentation/arch: Add Documentation/arch-TODO Michele Curti
2015-05-13 14:09                             ` Michele Curti
2015-05-13 14:42                             ` Geert Uytterhoeven
     [not found]                               ` <CAMuHMdXV68nie93Rb=Z+vYtn2aNex=s5E4+Z=QGojF+8EbPbKA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-14  7:21                                 ` H. Peter Anvin
2015-05-14  7:21                                   ` H. Peter Anvin
2015-05-14  7:21                               ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150515093750.GA4665@gmail.com \
    --to=mingo@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=hpa@zytor.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).