cvs commit: src/sys/conf options.i386 options.pc98 src/sys/i386/i386 mp_machdep.c pmap.c swtch.s src/sys/i386/isa apic_vector.s src/sys/kern kern_synch.c subr_witness.c

Peter Wemm peter at wemm.org
Tue Jul 15 17:15:31 PDT 2003


Andrea Campi wrote:
> On Wed, Jul 09, 2003 at 06:03:00PM -0700, Peter Wemm wrote:
> > peter       2003/07/09 18:03:00 PDT
> > 
> >   FreeBSD src repository
> > 
> >   Modified files:
> >     sys/conf             options.i386 options.pc98 
> >     sys/i386/i386        mp_machdep.c pmap.c swtch.s 
> >     sys/i386/isa         apic_vector.s 
> >     sys/kern             kern_synch.c subr_witness.c 
> >   Log:
> >   unifdef -DLAZY_SWITCH and start to tidy up the associated glue.
> 
> After this commit my laptop reboots after wakup from S4 (sleep to disk).
> I looked at the delta but couldn't quickly figure out whether it's possible
> to revert it only in part. I'll try to do it later tonight at home, but
> if in the meantime anybody has any good debugging idea, I'm all ears.

To get you out of a jam, you can try this (beware, xterm cut/paste
tab spammage, but it should point you where to disable the test):

RCS file: /home/ncvs/src/sys/i386/i386/swtch.s,v
retrieving revision 1.142
diff -u -r1.142 swtch.s
--- swtch.s     10 Jul 2003 01:02:59 -0000      1.142
+++ swtch.s     16 Jul 2003 00:08:10 -0000
@@ -161,12 +161,14 @@
 
        /* switch address space */
        movl    PCB_CR3(%edx),%eax
+#if 0
 #ifdef PAE
        cmpl    %eax,IdlePDPT                   /* Kernel address space? */
 #else
        cmpl    %eax,IdlePTD                    /* Kernel address space? */
 #endif
        je      sw1
+#endif
        movl    %cr3,%ebx                       /* The same address space? */
        cmpl    %ebx,%eax
        je      sw1

However, There has also been an ACPI update.  I wonder if that might be
the cause instead?

As a shot in the dark, you might like to try something like this too:

RCS file: /home/ncvs/src/sys/i386/acpica/acpi_wakeup.c,v
retrieving revision 1.21
diff -u -r1.21 acpi_wakeup.c
--- acpi_wakeup.c       1 Jul 2003 15:52:03 -0000       1.21
+++ acpi_wakeup.c       16 Jul 2003 00:14:21 -0000
@@ -296,6 +296,8 @@
                pm->pm_pteobj = NULL;
        }
 
+       load_cr3(rcr3());
+
        write_eflags(ef);
 
        return (ret);

No, I haven't tested it.  It really is a wild guess.

Cheers,
-Peter
--
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5



More information about the cvs-src mailing list