diff options
author | hselasky <hselasky@FreeBSD.org> | 2017-01-09 17:13:35 +0000 |
---|---|---|
committer | hselasky <hselasky@FreeBSD.org> | 2017-01-09 17:13:35 +0000 |
commit | a77510b409c5ded1a4274ef75fbbf01fa765013b (patch) | |
tree | 084caa91f249b0572d27554979e42e60c6ad2e3d /sys/dev/usb/usb_process.c | |
parent | c8118b2773b6a305962580972b087589cc131686 (diff) | |
download | FreeBSD-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.c | 3 |
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 */ |