Re: [linux-pm] swsusp regression [Was: 2.6.17-mm1]

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

 



In-Reply-To: <[email protected]>

On Fri, 23 Jun 2006 02:31:24 -0700, Andrew Morton wrote:

> > > Code: 05 c4 42 43 c0 31 43 43 c0 c3 8b 2d 68 6e 54 c0 8b 1d 60 6e 54 c0 8b 35 6c 6e 54 c0 8b 3d 70 6d 54 c0 ff 35 74 6e 54 c0 9d c3 90 <e8> 6d 38 ea ff e8 a2 ff ff ff 6a 03 e8 ec b6 de ff 83 c4 04 c3
> > > EIP: [c043431c>] do_suspend_lowlevel+0x0/0x15 SS:ESP 0068:f6cb6ea4
> >   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 
> > Ha, wait a moment, this is interesting line. Can you trace down which
> > instruction causes this?
> > 
> > We recently changed pagetable handling during swsusp, perhaps thats
> > it? It went to Linus few minutes ago...
> 
> That's a good possibility.  It does appear to be oopsing at the first
> instruction of arch/i386/kernel/acpi/wakeup.S:do_suspend_lowlevel(). 
> Perhaps there's enough info in that oops trace to tell us whether it was
> the instruction fetch which oopsed.
> 
> One wonders whether this will help...
> 
> --- a/arch/i386/kernel/acpi/wakeup.S~a
> +++ a/arch/i386/kernel/acpi/wakeup.S
> @@ -270,6 +270,7 @@ ALIGN
>  ENTRY(saved_magic)   .long   0
>  ENTRY(saved_eip)     .long   0
>  
> +.text
>  save_registers:
>       leal    4(%esp), %eax
>       movl    %eax, saved_context_esp
> @@ -304,6 +305,7 @@ ret_point:
>       call    restore_processor_state
>       ret
>  
> +.data
>  ALIGN
>  # saved registers
>  saved_gdt:   .long   0,0


This is in 2.6.17-mm1 already:


From: Shaohua Li <[email protected]>

Move do_suspend_lowlevel to correct segment.  If it is in the same hugepage
with ro data, mark_rodata_ro will make it unexecutable.

Signed-off-by: Shaohua Li <[email protected]>
Cc: Len Brown <[email protected]>
Cc: Pavel Machek <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 arch/i386/kernel/acpi/wakeup.S |    9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff -puN arch/i386/kernel/acpi/wakeup.S~move-do_suspend_lowlevel-to-correct-segment arch/i386/kerne
--- a/arch/i386/kernel/acpi/wakeup.S~move-do_suspend_lowlevel-to-correct-segment
+++ a/arch/i386/kernel/acpi/wakeup.S
@@ -265,11 +265,6 @@ ENTRY(acpi_copy_wakeup_routine)
        movl    $0x12345678, saved_magic
        ret

-.data
-ALIGN
-ENTRY(saved_magic)     .long   0
-ENTRY(saved_eip)       .long   0
-
 save_registers:
        leal    4(%esp), %eax
        movl    %eax, saved_context_esp
@@ -304,7 +299,11 @@ ret_point:
        call    restore_processor_state
        ret

+.data
 ALIGN
+ENTRY(saved_magic)     .long   0
+ENTRY(saved_eip)       .long   0
+
 # saved registers
 saved_gdt:     .long   0,0
 saved_idt:     .long   0,0
_
-- 
Chuck
 "You can't read a newspaper if you can't read."  --George W. Bush
-
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