Fwd: [Bug 194884] [acpi] Asus UX31E USB hangs during suspend, due to putting the USB controllers into D3 state

Ian Smith smithi at nimnet.asn.au
Fri Nov 14 15:51:48 UTC 2014


On Sat, 8 Nov 2014 22:21:33 -0800, Adrian Chadd wrote:
 > Hi!
 > 
 > Please test this patch! It makes this Asus Zenbook suspend/resume correctly.
 > 
 > (And if you're knowledgable about such things, please comment on its
 > correctness!)
 > 
 > thanks!
 > 
 > 
 > -adrian

and more recently:

 > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194884
 >
 > Adrian Chadd <adrian at freebsd.org> changed:
 >
 >            What    |Removed                     |Added
 > 
----------------------------------------------------------------------------
 >              Status|In Discussion               |Needs MFC

First, thanks for your earlier detailed respnse to my dumb questions.

Late to the party and short of time, I just hand-applied both patches 
from the commit to head later in this PR to my 9.3-PRE sources of 25th 
Jun and rebuilt its GENERIC amd64 kernel on my Lenovo Thinkpad X200 with 
latest BIOS.  Also previously applied, the vital acpi_powerres.c patch 
so Thinkpads don't lose USB on resume.

Verbose dmesg.boot shows no functional changes with one from back then.

Below is a dmesg diff from a suspend/resume cycle from then, and now.

Apart from the extra ACPI verbosity due to the kids answering the roll, 
and hearing more from PCI as well - all fine by me on a verbose boot - 
what sticks out is that these have at last gone (and good riddance :)

-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP0: AE_BAD_PARAMETER
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP1: AE_BAD_PARAMETER
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP2: AE_BAD_PARAMETER
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP3: AE_BAD_PARAMETER

but in their place, as it were, appears:

+pcib0: failed to set ACPI power state D2 on \134_SB_.PCI0: AE_BAD_PARAMETER

Now the acpi.c patch was clean, same line number as head.  The pci.c 
patch was amongst other changed context, so may not be behaving as other 
changes in head would have it behave (re MFC) before assuming the +pcib0 
failure listed is real, let alone if it matters; it is new after all.

Note: the below is after an egrep -v 'Kingston|da0|umass|uhub|ugen|em0', 
after checking nothing useful was lost; the old one had a USB stick too, 
and usb hub to port to device mapping changes and/or reorders on resume 
anyway, distracting from seeing just functional differences.

It seems to be running sweet but I haven't stretched its legs at all.

Again, I didn't think it would be helpful to clutter the PR with this ..
sing out if any more detail on anything here might be useful.

cheers, Ian


smithi at x200:/root % cat sus_res.93PRE.pci_acpi_patched.diff
--- sus_res.old2        2014-11-14 19:39:51.000000000 +1100
+++ sus_res.new2nd      2014-11-14 23:44:23.000000000 +1100
@@ -1,43 +1,66 @@
-acpi_button0: sleep button pressed
 acpi_timer0: switching timecounter, HPET -> ACPI-fast
 acpi_lid0: wake_prep enabled for \134_SB_.LID_ (S3)
 acpi_button0: wake_prep enabled for \134_SB_.SLPB (S3)
 pci0:0:28:0: Transition from D0 to D3
 pci0:3:0:0: Transition from D0 to D3
 pci0:0:28:1: Transition from D0 to D3
 pci0:0:28:2: Transition from D0 to D3
 pci0:0:28:3: Transition from D0 to D3
 vga0: saving 4932 bytes of video state
 vga0: saving color palette
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP0: AE_BAD_PARAMETER
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP1: AE_BAD_PARAMETER
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP2: AE_BAD_PARAMETER
-pci0: failed to set ACPI power state D2 on \134_SB_.PCI0.EXP3: AE_BAD_PARAMETER
+pci0:0:2:0: Transition from D0 to D3
+pci0: set ACPI power state D3 on \134_SB_.PCI0.VID_
+pci0:0:2:1: Transition from D0 to D3
+pci0:0:25:0: Transition from D0 to D3
+pci0:0:26:7: Transition from D0 to D3
+pci0: set ACPI power state D3 on \134_SB_.PCI0.EHC1
+pci0:0:27:0: Transition from D0 to D3
+pci0:0:29:7: Transition from D0 to D3
+pci0: set ACPI power state D3 on \134_SB_.PCI0.EHC0
+pci0:0:31:2: Transition from D0 to D3
+pcib0: failed to set ACPI power state D2 on \134_SB_.PCI0: AE_BAD_PARAMETER
 acpi_lid0: run_prep cleaned up for \134_SB_.LID_
 acpi_button0: run_prep cleaned up for \134_SB_.SLPB
+cpu0: set ACPI power state D0 on \134_PR_.CPU0
+cpu1: set ACPI power state D0 on \134_PR_.CPU1
+acpi_sysresource0: set ACPI power state D0 on \134_SB_.MEM_
+acpi_sysresource1: set ACPI power state D0 on \134_SB_.PCI0.LPC_.SIO_
+attimer0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.TIMR
+hpet0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.HPET
+atrtc0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.RTC_
+acpi_ec0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.EC__
+pci_link0: set ACPI power state D0 on \134_SB_.LNKA
+pci_link1: set ACPI power state D0 on \134_SB_.LNKB
+pci_link2: set ACPI power state D0 on \134_SB_.LNKC
+pci_link3: set ACPI power state D0 on \134_SB_.LNKD
+pci_link4: set ACPI power state D0 on \134_SB_.LNKE
+pci_link5: set ACPI power state D0 on \134_SB_.LNKF
+pci_link6: set ACPI power state D0 on \134_SB_.LNKG
+pci_link7: set ACPI power state D0 on \134_SB_.LNKH
+acpi_lid0: set ACPI power state D0 on \134_SB_.LID_
+acpi_button0: set ACPI power state D0 on \134_SB_.SLPB
+pcib0: set ACPI power state D0 on \134_SB_.PCI0
+acpi_tz0: set ACPI power state D0 on \134_TZ_.THM0
+acpi_tz1: set ACPI power state D0 on \134_TZ_.THM1
+atdma0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.DMAC
+fpupnp0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.FPU_
+atkbdc0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.KBD_
+psmcpnp0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.MOU_
+battery0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.EC__.BAT0
+acpi_acad0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.EC__.AC__
+acpi_ibm0: set ACPI power state D0 on \134_SB_.PCI0.LPC_.EC__.HKEY
 pci0: set ACPI power state D0 on \134_SB_.PCI0.VID_
 pci0: set ACPI power state D0 on \134_SB_.PCI0.IGBE
 pci0: set ACPI power state D0 on \134_SB_.PCI0.USB3
@@ -60,8 +83,6 @@
 pci0: set ACPI power state D0 on \134_SB_.PCI0.EXP2
 pci0: set ACPI power state D0 on \134_SB_.PCI0.EXP3
 vga0: calling BIOS POST
 ahcich0: AHCI reset...
 ahcich0: SATA connect time=100us status=00000123
 ahcich0: AHCI reset: device found
@@ -77,25 +98,24 @@
 ahcich0: AHCI reset: device ready after 100ms
-CPU0: local APIC error 0x40
-battery0: battery initialization done, tried 1 times
+CPU0: local APIC error 0x40
+battery0: battery initialization done, tried 1 times
+acpi_timer0: restoring timecounter, ACPI-fast -> HPET
-acpi_timer0: restoring timecounter, ACPI-fast -> HPET
smithi at x200:/root %


More information about the freebsd-mobile mailing list