with the correct ipl to prevent your CPU from locking against itself.
-/* $OpenBSD: ehci.c,v 1.165 2014/08/10 11:00:35 mpi Exp $ */
+/* $OpenBSD: ehci.c,v 1.166 2014/08/10 11:18:57 mpi Exp $ */
/* $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $ */
/*
}
pool_init(ehcixfer, sizeof(struct ehci_xfer), 0, 0, 0,
"ehcixfer", NULL);
+ pool_setipl(ehcixfer, IPL_SOFTUSB);
}
/* frame list size at default, read back what we got and use that */
-/* $OpenBSD: ohci.c,v 1.138 2014/08/10 11:00:36 mpi Exp $ */
+/* $OpenBSD: ohci.c,v 1.139 2014/08/10 11:18:57 mpi Exp $ */
/* $NetBSD: ohci.c,v 1.139 2003/02/22 05:24:16 tsutsui Exp $ */
/* $FreeBSD: src/sys/dev/usb/ohci.c,v 1.22 1999/11/17 22:33:40 n_hibma Exp $ */
}
pool_init(ohcixfer, sizeof(struct ohci_xfer), 0, 0, 0,
"ohcixfer", NULL);
+ pool_setipl(ohcixfer, IPL_SOFTUSB);
}
/* XXX determine alignment by R/W */
-/* $OpenBSD: uhci.c,v 1.130 2014/08/10 11:00:36 mpi Exp $ */
+/* $OpenBSD: uhci.c,v 1.131 2014/08/10 11:18:57 mpi Exp $ */
/* $NetBSD: uhci.c,v 1.172 2003/02/23 04:19:26 simonb Exp $ */
/* $FreeBSD: src/sys/dev/usb/uhci.c,v 1.33 1999/11/17 22:33:41 n_hibma Exp $ */
}
pool_init(uhcixfer, sizeof(struct uhci_xfer), 0, 0, 0,
"uhcixfer", NULL);
+ pool_setipl(uhcixfer, IPL_SOFTUSB);
}
/* Restore saved SOF. */
-/* $OpenBSD: usb.c,v 1.101 2014/08/09 09:45:14 mpi Exp $ */
+/* $OpenBSD: usb.c,v 1.102 2014/08/10 11:18:57 mpi Exp $ */
/* $NetBSD: usb.c,v 1.77 2003/01/01 00:10:26 thorpej Exp $ */
/*
usb_init_task(&sc->sc_explore_task, usb_explore, sc,
USB_TASK_TYPE_EXPLORE);
- /* XXX we should have our own level */
- sc->sc_bus->soft = softintr_establish(IPL_SOFTNET,
+ sc->sc_bus->soft = softintr_establish(IPL_SOFTUSB,
sc->sc_bus->methods->soft_intr, sc->sc_bus);
if (sc->sc_bus->soft == NULL) {
printf("%s: can't register softintr\n", sc->sc_dev.dv_xname);
-/* $OpenBSD: usbdi.h,v 1.62 2014/03/07 09:38:14 mpi Exp $ */
+/* $OpenBSD: usbdi.h,v 1.63 2014/08/10 11:18:57 mpi Exp $ */
/* $NetBSD: usbdi.h,v 1.62 2002/07/11 21:14:35 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdi.h,v 1.18 1999/11/17 22:33:49 n_hibma Exp $ */
/* XXX Perhaps USB should have its own levels? */
#define splusb splsoftnet
#if 0
-#define SPLUSBCHECK splsoftassert(IPL_SOFTNET)
+#define SPLUSBCHECK splsoftassert(IPL_SOFTUSB)
#else
#define SPLUSBCHECK do { /* nothing */ } while (0)
#endif
#define splhardusb splbio
-#define IPL_USB IPL_BIO
+
+#define IPL_USB IPL_BIO
+#define IPL_SOFTUSB IPL_SOFTNET
#endif /* _USBDI_H_ */
-/* $OpenBSD: usbf_subr.c,v 1.19 2014/07/12 18:48:53 tedu Exp $ */
+/* $OpenBSD: usbf_subr.c,v 1.20 2014/08/10 11:18:57 mpi Exp $ */
/*
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
{
KASSERT(bus->soft == NULL);
- /* XXX we should have our own level */
- bus->soft = softintr_establish(IPL_SOFTNET,
+ bus->soft = softintr_establish(IPL_SOFTUSB,
bus->methods->soft_intr, bus);
if (bus->soft == NULL)
return USBF_INVAL;
-/* $OpenBSD: xhci.c,v 1.22 2014/08/10 11:00:36 mpi Exp $ */
+/* $OpenBSD: xhci.c,v 1.23 2014/08/10 11:18:57 mpi Exp $ */
/*
* Copyright (c) 2014 Martin Pieuchot
}
pool_init(xhcixfer, sizeof(struct xhci_xfer), 0, 0, 0,
"xhcixfer", NULL);
+ pool_setipl(xhcixfer, IPL_SOFTUSB);
}
hcr = XREAD4(sc, XHCI_HCCPARAMS);