Theo de Raadt <[email protected]> wrote: > Mike Larkin <[email protected]> wrote: > > > On Wed, Oct 24, 2018 at 11:09:37PM -0700, Mike Larkin wrote: > > > On Wed, Oct 24, 2018 at 09:13:30PM +0200, Leo Unglaub wrote: > > > > Hi, > > > > thank you very much for your reply. I did what you suggested and found > > > > out > > > > something interesting. The change has no effect on "zzz". However when i > > > > execute "ZZZ" i now get the following: > > > > > > > > The screen stays on and after around 4 minutes the laptop shuts down. > > > > When i > > > > boot the laptop again for the first time i get the following message: > > > > unhibernate detected: switching to /bsd.booted > > > > > > So far so good. > > > > > > > > > > > Then the laptop attempts to boot but always fails. It's just stuck at > > > > the > > > > > > That's a terrible explanation. What "fails"? > > > > > > > following screen. I took a picture of it. > > > > [https://i.imgur.com/NlYyhBv.jpg] > > > > > > > > > > I bet if you pressed enter here a few times it would be ok. You're looking > > > at the resumed kernel's old dmesg output, press enter and I bet you see a > > > login prompt. > > > > > > In other words, I bet it worked fine. > > > > > > > When i hard-reset the laptop and try it again the boot works fine and i > > > > get > > > > the previous state. When i executed the ZZZ from within an X environment > > > > > > What is "the previous state"? > > > > > > > it's not usable at first. I have to CTRL+ALT+1 to something different > > > > and > > > > > > This makes no sense, what do you mean "ZZZ from within an X environment > > > is not > > > usable at first"? > > > > > > > then come back to CTRL+ALT+5 again. Then it works fine. > > > > > > So, after all this, you're saying "ZZZ works fine"? > > > > > > Then what is the error you're reporting? > > > > > > > > > > > I found the following error in dmesg: > > > > > Starting stack trace... > > > > > tsleep(ad44de28f91f1848,ffff8000003eda60,d,ffff8000003eda00) at > > > > > tsleep+0x65 > > > > > pckbc_enqueue_cmd(762b4fe54eae8807,2,ffff8000003ed600,3,ffff8000003ed600,1) > > > > > at pckbc_enqueue_cmd+0x203 > > > > > pms_change_state(bdcbc7cf9b5f945d,0,ffff8000003eeb00) at > > > > > pms_change_state+0x1ce > > > > > pmsactivate(ebbc33233aaf717d,ffffffff81c94790) at pmsactivate+0x3b > > > > > config_activate_children(f12df37a7d46060e,0) at > > > > > config_activate_children+0x72 > > > > > pckbc_isa_activate(c198ed5766f26fbb,0) at pckbc_isa_activate+0x30 > > > > > config_activate_children(f12df37a7da320f7,0) at > > > > > config_activate_children+0x72 > > > > > config_activate_children(f12df37a7da320f7,0) at > > > > > config_activate_children+0xb9 > > > > > config_activate_children(f12df37a7dd074db,0) at > > > > > config_activate_children+0xb9 > > > > > pciactivate(37e774f29c3deede,0) at pciactivate+0x35 > > > > > config_activate_children(f12df37a7da3272a,ffff800000023100) at > > > > > config_activate_children+0x72 > > > > > config_suspend_all(f7408b87c1d75ae7) at config_suspend_all+0x1b4 > > > > > acpi_sleep_state(6d9b9d11260f3892,ffff800000020400) at > > > > > acpi_sleep_state+0x1f6 > > > > > acpi_sleep_task(b898c8a63965f9e2,ffff800000020400) at > > > > > acpi_sleep_task+0x1e > > > > > acpi_thread(0) at acpi_thread+0x188 > > > > > end trace frame: 0x0, count: 242 > > > > > End of stack trace. > > > > > > When did you see this in dmesg? What was before that in dmesg? > > > > > > > > > > > The fact that the first boot attempt fails and only the second one > > > > works is > > > > > > So you're saying "booting" fails? I thought this was a zzz/ZZZ issue you > > > were > > > reporting. > > > > > > > reproducable at this laptop. I did 3 different tries on this issue. > > > > > > > > When i leave wsdisplay_suspend() in, zzz and ZZZ dont work at all. I > > > > add you > > > > > > It may be possible that wsdisplay_suspend does something strange on the > > > machine, > > > then. I don't have this machine; I suggested removing that because that > > > lets > > > you see what's going on during suspend. > > > > > > And I still don't know what fails with "zzz". > > > > > > > > > > the dmesg from the laptop with the custom kernel i build after your > > > > recommendation. > > > > > > This whole bug report is baffling. > > > > > > -ml > > > > We have a theory this is a bug in pms(4). > > > > Can you use the kernel with the commented out line that does not do a > > wsdisplay_suspend, and boot -c ? > > > > ukc> disable pms > > ukc> quit > > > > then do a zzz/ZZZ/resume? > > > > This will disable the mouse/trackpad, so you might need to use a usb mouse > > for this test. > > > > If this works, we can dig further. > > Or maybe a diff like this. Sorry it is cut and paste whitespace, it > will need to be applied manual > > Index: pms.c > =================================================================== > RCS file: /cvs/src/sys/dev/pckbc/pms.c,v > retrieving revision 1.87 > diff -u -p -u -r1.87 pms.c > --- pms.c 13 May 2018 14:48:19 -0000 1.87 > +++ pms.c 25 Oct 2018 06:30:00 -0000 > @@ -834,8 +834,10 @@ pms_change_state(struct pms_softc *sc, i > > pms_dev_enable(sc); > break; > - case PMS_STATE_DISABLED: > case PMS_STATE_SUSPENDED: > + sc->poll = 1; > + /* FALLTHROUGH */ > + case PMS_STATE_DISABLED: > pms_dev_disable(sc); > > if (sc->protocol->disable) >
I better explain it. I think the pms ends up in "disabled" state, and then gets pushed into "suspended" state. In disabled state, it will not be in poll mode. Pushing it into "suspended" state calls the non-poll-variant pckbc code instead of the poll-variant which sleeps, and cold=2 code catches it. Oddly, the cold=2 debug code was written to debug such drivers which break the rules, and in particular... for pckbdc and mouse drivers, years ago.
