change init_gdt to update the gdt via write_gdt, rather than a direct write.
PATCH 1/1 change init_gdt to update the gdt via write_gdt, rather than a direct write.
From: Alex Nixon <[email protected]>
Date: Fri, 15 Aug 2008 11:21:56 +0100
Subject: [PATCH] change init_gdt to update the gdt via write_gdt, rather than a direct write.
By writing directly, a memory access violation can occur whilst hotplugging a CPU if the entry was previously marked read-only.
Signed-off-by Alex Nixon <[email protected]>
--- arch/x86/kernel/smpcommon.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
arch/x86/kernel/smpcommon.c +4 -4
@@ -13,13 +13,13 @@ EXPORT_PER_CPU_SYMBOL(this_cpu_off);secondary which will soon come up. */ __cpuinit void init_gdt (int cpu) { -struct desc_struct *gdt =get_cpu_gdt_table (cpu); +struct desc_struct gdt; -pack_descriptor (&gdt[GDT_ENTRY_PERCPU ], - __per_cpu_offset[cpu],0xFFFFF , +pack_descriptor (&gdt, __per_cpu_offset[cpu],0xFFFFF ,0x2 |DESCTYPE_S ,0x8 ); + gdt.s =1 ; - gdt[GDT_ENTRY_PERCPU ].s =1 ; +write_gdt_entry (get_cpu_gdt_table (cpu),GDT_ENTRY_PERCPU , &gdt,DESCTYPE_S );per_cpu (this_cpu_off, cpu) = __per_cpu_offset[cpu];per_cpu (cpu_number, cpu) = cpu;
Signature · 1 line
1.5.4.3
Ingo Molnar
AppliedQuoted 6 lines · Alex Nixon
From: Alex Nixon <[email protected]>
Date: Fri, 15 Aug 2008 11:21:56 +0100
Subject: [PATCH] changeinit_gdtto update the gdt viawrite_gdt, rather than a direct write.By writing directly, a memory access violation can occur whilst hotplugging a CPU if the entry was previously marked read-only.
applied to tip/x86/urgent - thanks Alex.
Ingo