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

Re: cvs commit: src/sys/dev/acpica acpi.c



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
_______________________________________________
freebsd-acpi_(_at_)_freebsd_(_dot_)_org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
To unsubscribe, send any mail to "freebsd-acpi-unsubscribe_(_at_)_freebsd_(_dot_)_org"


Visit your host, monkey.org