summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_process.c
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2017-01-09 17:13:35 +0000
committerhselasky <hselasky@FreeBSD.org>2017-01-09 17:13:35 +0000
commita77510b409c5ded1a4274ef75fbbf01fa765013b (patch)
tree084caa91f249b0572d27554979e42e60c6ad2e3d /sys/dev/usb/usb_process.c
parentc8118b2773b6a305962580972b087589cc131686 (diff)
downloadFreeBSD-src-a77510b409c5ded1a4274ef75fbbf01fa765013b.zip
FreeBSD-src-a77510b409c5ded1a4274ef75fbbf01fa765013b.tar.gz
MFC r310242:
Defer USB enumeration until the SI_SUB_KICK_SCHEDULER is executed to avoid boot panics in conjunction with the recently added EARLY_AP_STARTUP feature. The panics happen due to using kernel facilities like callouts too early. Tested by: jhb @
Diffstat (limited to 'sys/dev/usb/usb_process.c')
-rw-r--r--sys/dev/usb/usb_process.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/usb/usb_process.c b/sys/dev/usb/usb_process.c
index e70166c..0f17485 100644
--- a/sys/dev/usb/usb_process.c
+++ b/sys/dev/usb/usb_process.c
@@ -455,14 +455,15 @@ usb_proc_drain(struct usb_process *up)
up->up_csleep = 0;
cv_signal(&up->up_cv);
}
+#ifndef EARLY_AP_STARTUP
/* Check if we are still cold booted */
-
if (cold) {
USB_THREAD_SUSPEND(up->up_ptr);
printf("WARNING: A USB process has "
"been left suspended\n");
break;
}
+#endif
cv_wait(&up->up_cv, up->up_mtx);
}
/* Check if someone is waiting - should not happen */
OpenPOWER on IntegriCloud