Re: hack for getting suspend/resume to half work on an IBM Thinkpad x60s [SMP]
Nate Lawson <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.mobile,gmane.os.freebsd.devel.acpi |
|---|---|
| Message-ID | <[email protected]> |
John Baldwin wrote: > On Monday 02 October 2006 18:30, Andrea Bittau wrote: >>> resuming the darn things. Do you know what mode the CPUs come back up in? >>> It looks like we need to resend startup IPIs to them from your patch. >> Yea it all comes back in real mode. I've tried using the standard > freebsd "boot >> code" for waking up the second CPU. There were some issues with the BSP not >> using PTD_Idle. I don't know enough about computers and freebsd to know > what >> exactly that means. Also, when the second CPU came back, if it entered the >> scheduler, it would die, so I had to leave it in the idle loop by setting > the >> cpu_hlt mask. >> >> Anyway, the correct way to do it I think is to generalize the save state & >> wakeup code used by the BSP in acpi_sleep_machdep(). That is, the second > core >> should save its state and wake up the same way as the BSP does. It should > not >> use the "come to life mechanism" used at boot-time. The reason is that the >> memory is setup properly and the second core should have saved registers > which >> make sense so less "initialization and setup" needs to be performed. > > No, the CPUs are going to come back into real mode, so we will need to > bootstrap them back into the kernel, etc. Once you've done that you can make > sure of stoppcbs[] (assuming you use stop_cpus to shut them down) to restore > enough state to get them back into the threads they were in when the suspend > happened. > I agree. The standard switch to protected mode, paging, etc. needs to be performed and then resume from the saved register context. -- Nate _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-mobile To unsubscribe, send any mail to "[email protected]"