Date: Tue, 03 Sep 2013 18:52:13 -0400 From: Jung-uk Kim <jkim@FreeBSD.org> To: John Baldwin <jhb@freebsd.org> Cc: Laura Marie Feeney <lmfeeney@sics.se>, freebsd-acpi@freebsd.org, Kevin Oberman <rkoberman@gmail.com>, Gleb Smirnoff <glebius@freebsd.org>, "Sergey A. Osokin" <osa@freebsd.org>, =?ISO-8859-1?Q?Jean-S=E9bastien_?= =?ISO-8859-1?Q?P=E9dron?= <dumbbell@freebsd.org> Subject: Re: suspend/resume on Lenovo X1 (regression from reports on wiki) Message-ID: <5226681D.5010101@FreeBSD.org> In-Reply-To: <201309031647.47650.jhb@freebsd.org> References: <521D03AE.3050709@sics.se> <201309031228.30717.jhb@freebsd.org> <52264291.7000509@FreeBSD.org> <201309031647.47650.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 2013-09-03 16:47:47 -0400, John Baldwin wrote: > On Tuesday, September 03, 2013 4:12:01 pm Jung-uk Kim wrote: >> On 2013-09-03 12:28:30 -0400, John Baldwin wrote: >>> On Sunday, September 01, 2013 3:51:47 pm Adrian Chadd wrote: >>>> (cc jkim) >>>> >>>> Hi! Would you mind taking a look at the -acpi list posts >>>> with this subject? It looks like a lot of the video >>>> suspend/resume issues on these thinkpads boil down to the >>>> VESA driver code. If it's disabled, (at least) x11 resume >>>> works. >>>> >>>> Would you be able to help us track down what's going on? >>>> >>>> Thanks! >>> >>> Most likely vga_suspend()/vga_resume() in sys/isa/vga_isa.c is >>> calling vidd_save_state() and vidd_load_state() which in the >>> VESA case map to the _save_state() and _load_state() methods >>> in sys/dev/fb/vesa.c. >> >> Unfortunately, I don't really know where it actually fails >> because I do not have *any* Intel GPUs to test. If vesa.c is >> really causing trouble, vesa_bios_post() in vesa_load_state() may >> be the culprit, however. > > I can try narrowing it down. Please do. >>> These methods look fairly sane to me, so it's probably either >>> a BIOS bug, or the fact that KMS is bypassing the BIOS, so when >>> KMS is active we should perhaps disable the VESA BIOS. >> >> AFAIK, KMS does not play nice with syscons(4) ATM, e.g., syscons >> does automatic VT switching and it may need to be turned off. >> Again, it is just my guess. > > Well, I don't have to do that, just having no VESA in the kernel > results in resume working fine in X. It seems that the i915drm > driver is doing something to explicitly enable the backlight on the > LCD btw. Normally, I expect a device tree like this to do properly suspend/resume with *drm1*: nexus0 acpi0 pcib0 pci0 hostb0 pcib1 pci1 vgapci0 vgapm0 dpms0 drm0 ... isab0 isa0 sc0 vga0 ... Not sure about i915kms.ko. >>> However, one thing that might help is that this is being called >>> at a "random" time rather than when vgapci0 is being suspended >>> and resumed. Actually, it looks like jkim fixed this via the >>> vgapm driver, except I have no vgapm0 device on my laptop. >> >> If you don't have vgapm0, its BIOS is not setting >> PCIB_BCR_VGA_ENABLE bit to its bridge. Often times, that means >> it is "legacy free" stuff. >> >>> I wonder if it's supposed to be device_get_unit() instead of >>> device_get_flags() in the vgapm identify routine? >> >> No. With multiple GPUs, it is (was?) the only way to find the >> "boot display" because unit number is not always 0. Although >> dumbbell added vga_pci_is_boot_display() in current, this >> interface should be kept for 9.x. > > Hmm, so there is magic to set this I guess? Ah, I see it now in > vga_pci.c. That does seem gross compared to an ivar or some such. > :) And you said the almost exact same thing but okayed at the time. :-) > In my case btw, x86bios_match_device() doesn't work because the > BIOS ROM has a PCI device ID of 0x0106 while the device itself is > 0x0126. It's a bug. > Even with that hacked so I force vgapm0 and dpms0 to attach, I > still can't resume in console mode, and resume in X refuses to > wakeup with VESA in the kernel (hitting the power button doesn't > make it wakeup). Please try to make syscons resume first. Jung-uk Kim -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.21 (FreeBSD) iQEcBAEBAgAGBQJSJmgdAAoJECXpabHZMqHOh6kH/RpRVeXz3n8eb72PMfZ1eQDy 2LBn/NCpxbRAHhNkwclLqCorQp6CDAEM1iO4IJMgUG4BrRYcrGUybM7kHDGn5Oy3 7qLkXmu1TmBGwFndHMZ8VaqLsUV2mgKG1DLgCCEp2NG3szOuSgg1KwBaZuT1OUhm TtJIWyuuwWld+DAaBaJJqCTJun6s3rpddXIEKj/2R+f4q99cjLt5I5qel+goArE+ yym4VrkY0S1Fn3Vj5+Nv8WMXlTgknIymsEg7fNJ9RDBGDPZ11l5DLztLjj+UfvIL K6L3+AMNJ58HRA/PibPIGNgI0WXUDJ/KSNN0A44RIItiYwTxJSh482PkghlrLE4= =jHx2 -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5226681D.5010101>