Messages in this thread Patch in this message | | | Date | Mon, 30 Jun 2008 10:49:57 -0700 | From | Mike Travis <> | Subject | Re: [crash, bisected] Re: [PATCH 3/4] x86_64: Fold pda into per cpu area |
| |
Jeremy Fitzhardinge wrote: > Mike Travis wrote: ... >> I'm not sure yet what to put into acpi_save_state_mem: >> >> initial_code = (unsigned long)wakeup_long64; >> + /* ZZZ initial_pda = (unsigned long)?; */ >> > > You'll need to change wakeup_long64 to load the right value into the > GS_BASE msr anyway. > > J
I'm afraid I don't quite understand the transitioning of the ACPI states to figure out the correct thing to do. My first inclination would be to: [sorry, cut and pasted]
--- linux-2.6.tip.orig/arch/x86/kernel/acpi/sleep.c +++ linux-2.6.tip/arch/x86/kernel/acpi/sleep.c @@ -89,6 +89,8 @@ int acpi_save_state_mem(void) #ifdef CONFIG_SMP stack_start.sp = temp_stack + 4096; #endif + early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu); + initial_pda = (unsigned long)get_cpu_pda(cpu); initial_code = (unsigned long)wakeup_long64; saved_magic = 0x123456789abcdef0; #endif /* CONFIG_64BIT */
But I'd like some confirmation that this is right thing to do...
[This mimics what smpboot.c:do_boot_cpu() does.]
Len - I'll cc you on the full patch submission shortly.
Thanks, Mike
| |