Note that https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=7a3136666bc0f0419f7aaa7b1fabb4b0e0a7fb76 should be reverted for applying the patch. This is not a problem as the x86_32 trampoline code already does that. Any idea when it will be merged in the mainline tree ? Matthieu Le Sun, 3 Jul 2011 21:22:02 GMT, tip-bot for Matthieu CASTET <castet.matthieu@xxxxxxx> a écrit : > Commit-ID: ababf605370b2c67cc6a37305c5fa17469a4e1f1 > Gitweb: > http://git.kernel.org/tip/ababf605370b2c67cc6a37305c5fa17469a4e1f1 > Author: Matthieu CASTET <castet.matthieu@xxxxxxx> AuthorDate: > Sat, 2 Jul 2011 19:43:40 +0200 Committer: H. Peter Anvin > <hpa@xxxxxxxxxxxxxxx> CommitDate: Sun, 3 Jul 2011 11:45:44 -0700 > > x86, suspend: Merge 32- and 64-bit realmode wakeup code > > - this mean less ifdef in code > - we could remove now unused field in wakeup_header (pmode_*) > > Signed-off-by: Matthieu CASTET <castet.matthieu@xxxxxxx> > Acked-by: Rafael J. Wysocki <rjw@xxxxxxx> > Link: > http://lkml.kernel.org/r/1309628621-23107-1-git-send-email-castet.matthieu@xxxxxxx > Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> --- > arch/x86/kernel/acpi/realmode/wakeup.S | 26 > -------------------------- arch/x86/kernel/acpi/sleep.c | > 27 ++++++++++----------------- arch/x86/kernel/trampoline_32.S > | 4 ---- 3 files changed, 10 insertions(+), 47 deletions(-) > > diff --git a/arch/x86/kernel/acpi/realmode/wakeup.S > b/arch/x86/kernel/acpi/realmode/wakeup.S index ead21b6..150a734 100644 > --- a/arch/x86/kernel/acpi/realmode/wakeup.S > +++ b/arch/x86/kernel/acpi/realmode/wakeup.S > @@ -93,36 +93,10 @@ wakeup_code: > > /* Do any other stuff... */ > > -#ifndef CONFIG_64BIT > - /* This could also be done in C code... */ > - movl pmode_cr3, %eax > - movl %eax, %cr3 > - > - movl pmode_cr4, %ecx > - jecxz 1f > - movl %ecx, %cr4 > -1: > - movl pmode_efer, %eax > - movl pmode_efer + 4, %edx > - movl %eax, %ecx > - orl %edx, %ecx > - jz 1f > - movl $MSR_EFER, %ecx > - wrmsr > -1: > - > - lgdtl pmode_gdt > - > - /* This really couldn't... */ > - movl pmode_cr0, %eax > - movl %eax, %cr0 > - jmp pmode_return > -#else > pushw $0 > pushw trampoline_segment > pushw $0 > lret > -#endif > > bogus_real_magic: > 1: > diff --git a/arch/x86/kernel/acpi/sleep.c > b/arch/x86/kernel/acpi/sleep.c index 18a857b..96719ad 100644 > --- a/arch/x86/kernel/acpi/sleep.c > +++ b/arch/x86/kernel/acpi/sleep.c > @@ -20,7 +20,7 @@ > > unsigned long acpi_realmode_flags; > > -#if defined(CONFIG_SMP) && defined(CONFIG_64BIT) > +#ifdef CONFIG_SMP > static char temp_stack[4096]; > #endif > > @@ -67,34 +67,27 @@ int acpi_suspend_lowlevel(void) > header->wakeup_gdt[2] = > GDT_ENTRY(0x8093, acpi_wakeup_address, 0xfffff); > > -#ifndef CONFIG_64BIT > - store_gdt((struct desc_ptr *)&header->pmode_gdt); > - > - if (rdmsr_safe(MSR_EFER, &header->pmode_efer_low, > - &header->pmode_efer_high)) > - header->pmode_efer_low = header->pmode_efer_high = 0; > -#endif /* !CONFIG_64BIT */ > - > header->pmode_cr0 = read_cr0(); > header->pmode_cr4 = read_cr4_safe(); > header->realmode_flags = acpi_realmode_flags; > header->real_magic = 0x12345678; > - > -#ifndef CONFIG_64BIT > - header->pmode_entry = (u32)&wakeup_pmode_return; > - header->pmode_cr3 = (u32)__pa(&initial_page_table); > - saved_magic = 0x12345678; > -#else /* CONFIG_64BIT */ > header->trampoline_segment = trampoline_address() >> 4; > #ifdef CONFIG_SMP > stack_start = (unsigned long)temp_stack + sizeof(temp_stack); > early_gdt_descr.address = > (unsigned > long)get_cpu_gdt_table(smp_processor_id()); +#ifdef CONFIG_64BIT > initial_gs = per_cpu_offset(smp_processor_id()); > #endif > +#endif > + > +#ifdef CONFIG_64BIT > initial_code = (unsigned long)wakeup_long64; > - saved_magic = 0x123456789abcdef0L; > -#endif /* CONFIG_64BIT */ > + saved_magic = 0x123456789abcdef0L; > +#else > + initial_code = (unsigned long)&wakeup_pmode_return; > + saved_magic = 0x12345678; > +#endif > > do_suspend_lowlevel(); > return 0; > diff --git a/arch/x86/kernel/trampoline_32.S > b/arch/x86/kernel/trampoline_32.S index 451c0a7..a726f60 100644 > --- a/arch/x86/kernel/trampoline_32.S > +++ b/arch/x86/kernel/trampoline_32.S > @@ -32,8 +32,6 @@ > #include <asm/segment.h> > #include <asm/page_types.h> > > -#ifdef CONFIG_SMP > - > .section ".x86_trampoline","a" > .balign PAGE_SIZE > .code16 > @@ -79,5 +77,3 @@ ENTRY(trampoline_status) > > .globl trampoline_end > trampoline_end: > - > -#endif /* CONFIG_SMP */ -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |