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)