Greg Steuck <[email protected]> writes:

> I started adding printfs and it appears the system wakes up pretty far
> along. On the text console I even managed to enter some characters (that
> echoed) before panic ensued. I stuck a bit of printfs just to learn how
> things go:
>
> modified   sys/dev/ic/nvme.c
> @@ -528,10 +528,12 @@ nvme_activate(struct nvme_softc *sc, int act)
>  
>       switch (act) {
>       case DVACT_POWERDOWN:
> +             printf("%s: DVACT_POWERDOWN\n", DEVNAME(sc));
>               rv = config_activate_children(&sc->sc_dev, act);
>               nvme_shutdown(sc);
>               break;
>       case DVACT_RESUME:
> +             printf("%s: DVACT_RESUME\n", DEVNAME(sc));
>               rv = nvme_resume(sc);
>               if (rv == 0)

I kept printf'ing with diff below:

nvme0: DVACT_RESUME
uhub2 at usb2 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 
addr 1
uhub3 at usb3 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 
addr 1
before intr_enable
intr_enable
inittodr
sleep_resume
resume_randomness
resume_mp
sched_start_secondary_cpus
vfs_stall
bufq_restart
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dsc_pg_control line:365
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dsc_pg_control line:373
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dsc_pg_control line:381
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dpp_pg_control line:436
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_hubp_pg_control line:510
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dpp_pg_control line:444
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_hubp_pg_control line:518
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dpp_pg_control line:452
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_hubp_pg_control line:526
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_dpp_pg_control line:460
[drm] REG_WAIT timeout 1us * 1000 tries - dcn20_hubp_pg_control line:534
uhub4 at uhub0 port 6 configuration 1 interface 0 "VIA Labs, Inc. USB2.0 Hub" 
rev 2.10/b.e0 addr 2
uhidev0 at uhub4 port 1 configuration 1 interface 0 "Kinesis Advantage2 
Keyboard" rev 2.00/1.00 addr 3
uhidev0: iclass 3/1
ums0 at uhidev0: 3 buttons, Z dir
wsmouse0 at ums0 mux 0
uhidev1 at uhub4 port 1 configuration 1 interface 1 "Kinesis Advantage2 
Keyboard" rev 2.00/1.00 addr 3
uhidev1: iclass 3/1
ukbd0 at uhidev1: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
wskbd1: connecting to wsdisplay0
uhidev2 at uhub4 port 1 configuration 1 interface 2 "Kinesis Advantage2 
Keyboard" rev 2.00/1.00 addr 3
uhidev2: iclass 3/0, 2 report ids
ucc0 at uhidev2 reportid 1: 7 usages, 7 keys, enum
wskbd2 at ucc0 mux 1
wskbd2: connecting to wsdisplay0
uhid0 at uhidev2 reportid 2: input=1, output=0, feature=0


diff --git a/sys/kern/subr_suspend.c b/sys/kern/subr_suspend.c
index 77a54976595..161e0cd9430 100644
--- a/sys/kern/subr_suspend.c
+++ b/sys/kern/subr_suspend.c
@@ -148,22 +148,33 @@ fail_pts:
 
 fail_suspend:
        cold = 0;
+       printf("before intr_enable\n");
        intr_enable();
+       printf("intr_enable\n");
        splx(s);
 
        inittodr(gettime());
+       printf("inittodr\n");
        sleep_resume(v);
+       printf("sleep_resume\n");
        resume_randomness(rndbuf, rndbuflen);
+       printf("resume_randomness\n");
 #ifdef MULTIPROCESSOR
        resume_mp();
+       printf("resume_mp\n");
        sched_start_secondary_cpus();
+       printf("sched_start_secondary_cpus\n");
 #endif
        vfs_stall(curproc, 0);
+       printf("vfs_stall\n");
        bufq_restart();
+       printf("bufq_restart\n");
 
 fail_quiesce:
        config_suspend_all(DVACT_WAKEUP);
+       printf("config_suspend_all(DVACT_WAKEUP)\n");
        sensor_restart();
+       printf("sensor_restart\n");
 
 #ifdef HIBERNATE
        if (sleepmode == SLEEP_HIBERNATE) {
@@ -174,10 +185,13 @@ fail_hiballoc:
 #endif /* HIBERNATE */
 
        start_periodic_resettodr();
+       printf("start_periodic_resettodr\n");
 #if NWSDISPLAY > 0
        wsdisplay_resume();
+       printf("wsdisplay_resume\n");
 #endif
        sys_sync(curproc, NULL, NULL);
+       printf("sys_sync\n");
        if (cpu_setperf != NULL)
                cpu_setperf(perflevel); /* Restore hw.setperf */
        if (suspend_finish(v) == EAGAIN)

Reply via email to