mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 02:05:33 +00:00
x86, 64-bit: use write_gdt_entry in vsyscall_set_cpu
Use write_gdt_entry to generate the special vgetcpu descriptor in the vsyscall page. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: xen-devel <xen-devel@lists.xensource.com> Cc: Stephen Tweedie <sct@redhat.com> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
ada8570823
commit
fc8b8a60ff
@ -249,7 +249,7 @@ static ctl_table kernel_root_table2[] = {
|
|||||||
doesn't violate that. We'll find out if it does. */
|
doesn't violate that. We'll find out if it does. */
|
||||||
static void __cpuinit vsyscall_set_cpu(int cpu)
|
static void __cpuinit vsyscall_set_cpu(int cpu)
|
||||||
{
|
{
|
||||||
unsigned long *d;
|
unsigned long d;
|
||||||
unsigned long node = 0;
|
unsigned long node = 0;
|
||||||
#ifdef CONFIG_NUMA
|
#ifdef CONFIG_NUMA
|
||||||
node = cpu_to_node(cpu);
|
node = cpu_to_node(cpu);
|
||||||
@ -260,11 +260,11 @@ static void __cpuinit vsyscall_set_cpu(int cpu)
|
|||||||
/* Store cpu number in limit so that it can be loaded quickly
|
/* Store cpu number in limit so that it can be loaded quickly
|
||||||
in user space in vgetcpu.
|
in user space in vgetcpu.
|
||||||
12 bits for the CPU and 8 bits for the node. */
|
12 bits for the CPU and 8 bits for the node. */
|
||||||
d = (unsigned long *)(get_cpu_gdt_table(cpu) + GDT_ENTRY_PER_CPU);
|
d = 0x0f40000000000ULL;
|
||||||
*d = 0x0f40000000000ULL;
|
d |= cpu;
|
||||||
*d |= cpu;
|
d |= (node & 0xf) << 12;
|
||||||
*d |= (node & 0xf) << 12;
|
d |= (node >> 4) << 48;
|
||||||
*d |= (node >> 4) << 48;
|
write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_PER_CPU, &d, DESCTYPE_S);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __cpuinit cpu_vsyscall_init(void *arg)
|
static void __cpuinit cpu_vsyscall_init(void *arg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user