Re: [PATCH] Fix reloading GDT on ACPI S3 wakeup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've applied Nickolai's patch -- thanks for the ping.

-Len

On Fri, 2005-04-08 at 12:14, Juerg Billeter wrote:
> Hi
> 
> This patch - based on
> http://marc.theaimsgroup.com/?l=linux-kernel&m=110055503031009&w=2 -
> makes ACPI S3 wakeup work for me on a ThinkPad T40p laptop with a SMP
> kernel. Without it only UP kernels work. I've been using the patch for
> three months now without any issues.
> 
> The ACPI resume code currently uses a real-mode 16-bit lgdt
> instruction
> to reload the GDT.  This only restores the lower 24 bits of the GDT
> base
> address.  In recent SMP kernels, the GDT seems to have moved out of
> the
> lower 16 megs, thereby causing the ACPI resume to fail -- an invalid
> GDT
> was being loaded.
> 
> Regards,
> 
> Juerg
> 
> --
> Signed-off-by: Juerg Billeter <[email protected]>
> 
> diff -uNr linux-2.6.10.orig/arch/i386/kernel/acpi/wakeup.S
> linux-2.6.10/arch/i386/kernel/acpi/wakeup.S
> --- linux-2.6.10.orig/arch/i386/kernel/acpi/wakeup.S    2004-12-24
> 22:34:26.000000000 +0100
> +++ linux-2.6.10/arch/i386/kernel/acpi/wakeup.S 2005-01-08
> 23:34:38.551471486 +0100
> @@ -74,8 +74,9 @@
>         movw    %ax,%fs
>         movw    $0x0e00 + 'i', %fs:(0x12)
>        
> -       # need a gdt
> -       lgdt    real_save_gdt - wakeup_code
> +       # need a gdt -- use lgdtl to force 32-bit operands, in case
> +       # the GDT is located past 16 megabytes
> +       lgdtl   real_save_gdt - wakeup_code
> 
>         movl    real_save_cr0 - wakeup_code, %eax
>         movl    %eax, %cr0
> 
> 
> 
> 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux