• Ingo Molnar's avatar
    x86/segments: Introduce the 'CPUNODE' naming to better document the segment limit CPU/node NR trick · 22245bdf
    Ingo Molnar authored
    We have a special segment descriptor entry in the GDT, whose sole purpose is to
    encode the CPU and node numbers in its limit (size) field. There are user-space
    instructions that allow the reading of the limit field, which gives us a really
    fast way to read the CPU and node IDs from the vDSO for example.
    
    But the naming of related functionality does not make this clear, at all:
    
    	VDSO_CPU_SIZE
    	VDSO_CPU_MASK
    	__CPU_NUMBER_SEG
    	GDT_ENTRY_CPU_NUMBER
    	vdso_encode_cpu_node
    	vdso_read_cpu_node
    
    There's a number of problems:
    
     - The 'VDSO_CPU_SIZE' doesn't really make it clear that these are number
       of bits, nor does it make it clear which 'CPU' this refers to, i.e.
       that this is about a GDT entry whose limit encodes the CPU and node number.
    
     - Furthermore, the 'CPU_NUMBER' naming is actively misleading as well,
       because the segment limit encodes not just the CPU number but the
       node ID as well ...
    
    So use a better nomenclature all around: name everything related to this trick
    as 'CPUNODE', to make it clear that this is something special, and add
    _BITS to make it clear that these are number of bits, and propagate this to
    every affected name:
    
    	VDSO_CPU_SIZE         =>  VDSO_CPUNODE_BITS
    	VDSO_CPU_MASK         =>  VDSO_CPUNODE_MASK
    	__CPU_NUMBER_SEG      =>  __CPUNODE_SEG
    	GDT_ENTRY_CPU_NUMBER  =>  GDT_ENTRY_CPUNODE
    	vdso_encode_cpu_node  =>  vdso_encode_cpunode
    	vdso_read_cpu_node    =>  vdso_read_cpunode
    
    This, beyond being less confusing, also makes it easier to grep for all related
    functionality:
    
      $ git grep -i cpunode arch/x86
    
    Also, while at it, fix "return is not a function" style sloppiness in vdso_encode_cpunode().
    
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chang S. Bae <chang.seok.bae@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Markus T Metzger <markus.t.metzger@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Shankar <ravi.v.shankar@intel.com>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Link: http://lkml.kernel.org/r/1537312139-5580-2-git-send-email-chang.seok.bae@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    22245bdf
segment.h 10.5 KB