cvs commit: src/sys/dev/acpica acpi.c
Nate Lawson
nate at root.org
Wed Jun 15 20:15:23 GMT 2005
Eric Anderson wrote:
>>>>
>>>> Ok - I've narrowed it down. A GENERIC kernel will go into S3 just fine
>>>> on this laptop. Removing apic from the kernel will break that.
It is interesting that the suspend path without the apic support causes
a hang for you. This should be investigated. Does it work if you have
apic compiled in but boot with hint.apic.0.disabled="1" ? Any ideas
where to look John?
>>>> I've also run into some bugs with having smp in the kernel and certain
>>>> modules, so beware.
>>>>
>>>> Now, I can successfully go into S3, but coming back out (using the lid
>>>> switch button or the power button are the only ways I know of) seems to
>>>> reboot the machine. Maybe I should say that I can't tell if it's
>>>> rebooting the machine, or if the machine just 'powers up' as if it was
>>>> off.
>>>
>>>
>>> Oh - and here's what it looks like when it goes to sleep:
>>>
>>> acpi_lid0: Lid closed
>>> acpi_lid0: wake_prep enabled for \_SB_.LID_ (S3)
>>> acpi_button0: wake_prep enabled for \_SB_.PBTN (S3)
>>> uhci0: wake_prep disabled wake for \_SB_.PCI0.USB0 (S3)
>>> uhci1: wake_prep disabled wake for \_SB_.PCI0.USB1 (S3)
>>> uhci2: wake_prep disabled wake for \_SB_.PCI0.USB2 (S3)
>>> uhci3: wake_prep disabled wake for \_SB_.PCI0.USB4 (S3)
>>> ehci0: wake_prep disabled wake for \_SB_.PCI0.USB3 (S3)
This is acpi enabling devices to wake the system from S3 and disabling
others. This is done before running all DEVICE_SUSPEND methods since
those could potentially power down the device, and then it won't be able
to do the wake prep. (Unlikely since it is the chipset which does the
wake enable function but still just being careful.)
You could disable this by commenting out the acpi_wake_prep_walk(state)
call in acpi_SetSleepState(). I doubt this will change anything.
>>> pci2:0:0: Transition from D0 to D3
>>> vga0: saving 68 bytes of video state
>>> pci0:31:2: Transition from D0 to D3
You could disable PCI power state support with hw.pci.do_power_state="0"
>>> ioapic_suspend: not implemented!
>>> ioapic_suspend: not implemented!
I still think this needs to be implemented although it's not likely to
be your problem.
>>> ======== acpi_printcpu() debug dump ========
>>> gdt[0097:c09c7380] idt[07ff:c09c7ea0] ldt[0050] tr[0048] efl[00080086]
>>> eax[00000001] ebx[c23ccc80] ecx[00000001] edx[00000004]
>>> esi[00000003] edi[00000000] ebp[e3618c5c] esp[e3618c40]
>>> cr0[8005003b] cr2[2813d704] cr3[00c1e000] cr4[00000691]
>>> cs[0020] ds[0028] es[0028] fs[0008] gs[003b] ss[0028]
>>
>
> No - it boots up like I had it powered off. Anything I can debug to
> figure that out?
When it's suspended, is the sleep light on or are all lights off like it
is already powered off? If it's on, it is likely actually suspended.
On power up, it's possible your bios doesn't even call the wake vector.
There was a beep patch I never committed from takawata that can be
used to see if your bios even calls the asm wake code. imp has it
somewhere. Try disabling the calls to video reset in the wake code
(hw.acpi.reset_video=0). Basically, you see if you're even executing
the wake code.
--
Nate
More information about the freebsd-acpi
mailing list