]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/segments/64: Rename the GDT PER_CPU entry to CPU_NUMBER
authorChang S. Bae <chang.seok.bae@intel.com>
Tue, 18 Sep 2018 23:08:57 +0000 (16:08 -0700)
committerIngo Molnar <mingo@kernel.org>
Mon, 8 Oct 2018 08:41:10 +0000 (10:41 +0200)
The old 'per CPU' naming was misleading: 64-bit kernels don't use this
GDT entry for per CPU data, but to store the CPU (and node) ID.

[ mingo: Wrote new changelog. ]

Suggested-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Denys Vlasenko <dvlasenk@redhat.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>
Link: http://lkml.kernel.org/r/1537312139-5580-7-git-send-email-chang.seok.bae@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/entry/vdso/vma.c
arch/x86/include/asm/segment.h
arch/x86/include/asm/vgtod.h

index 5b8b556dbb12aa91664aac85fad9e0d5af0259cd..0b114aafcedcd0cd67e56297897c6c454973d15d 100644 (file)
@@ -359,7 +359,7 @@ static void vgetcpu_cpu_init(void *arg)
        d.p = 1;                /* Present */
        d.d = 1;                /* 32-bit */
 
-       write_gdt_entry(get_cpu_gdt_rw(cpu), GDT_ENTRY_PER_CPU, &d, DESCTYPE_S);
+       write_gdt_entry(get_cpu_gdt_rw(cpu), GDT_ENTRY_CPU_NUMBER, &d, DESCTYPE_S);
 }
 
 static int vgetcpu_online(unsigned int cpu)
index e293c122d0d54fbc802c1212edc9ed099be582f0..e3e788ea52e54caf63edf2f696e3504a79bdd869 100644 (file)
 #define GDT_ENTRY_TLS_MIN              12
 #define GDT_ENTRY_TLS_MAX              14
 
-/* Abused to load per CPU data from limit */
-#define GDT_ENTRY_PER_CPU              15
+#define GDT_ENTRY_CPU_NUMBER           15
 
 /*
  * Number of entries in the GDT table:
 #define __USER_DS                      (GDT_ENTRY_DEFAULT_USER_DS*8 + 3)
 #define __USER32_DS                    __USER_DS
 #define __USER_CS                      (GDT_ENTRY_DEFAULT_USER_CS*8 + 3)
-#define __PER_CPU_SEG                  (GDT_ENTRY_PER_CPU*8 + 3)
+#define __CPU_NUMBER_SEG               (GDT_ENTRY_CPU_NUMBER*8 + 3)
 
 #endif
 
index 53748541c487ab00d8bd1ee9b4d05305aa33171d..4e81ea9207228f5e3ded2d4e8486cda76a8c870c 100644 (file)
@@ -86,9 +86,9 @@ static inline unsigned int __getcpu(void)
        unsigned int p;
 
        /*
-        * Load per CPU data from GDT.  LSL is faster than RDTSCP and
-        * works on all CPUs.  This is volatile so that it orders
-        * correctly wrt barrier() and to keep gcc from cleverly
+        * Load CPU (and node) number from GDT.  LSL is faster than RDTSCP
+        * and works on all CPUs.  This is volatile so that it orders
+        * correctly with respect to barrier() and to keep GCC from cleverly
         * hoisting it out of the calling function.
         *
         * If RDPID is available, use it.
@@ -96,7 +96,7 @@ static inline unsigned int __getcpu(void)
        alternative_io ("lsl %[seg],%[p]",
                        ".byte 0xf3,0x0f,0xc7,0xf8", /* RDPID %eax/rax */
                        X86_FEATURE_RDPID,
-                       [p] "=a" (p), [seg] "r" (__PER_CPU_SEG));
+                       [p] "=a" (p), [seg] "r" (__CPU_NUMBER_SEG));
 
        return p;
 }