tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
USB lock-ups
Hello again.
So after backporting the -current pmap fixes to -8 in order to be able to
be able boot -d in order be able to examine I2C panics and after fixing them
I have an operational -8 machine again only to find that the USB problems
that made me update are still there.
The simplest libusb program (I tried to get myslf acquianted to libusb) will
lock-up the machine if run the second time. The only trace I have is (once)
ohci0: WARNING: addr 0x41088dc0 not found.
The machine becomes (at least) unresponsive to virtual console switches,
most times, entering DDB works; backtrace is
x86_memfence()
usb_soft_intr()
softint_dispatch()
or
bus_dmamap_sync()
ohci_softintr()
usb_soft_intr()
softint_dispatch()
When I looked, I had most processes in tstile.
Any hints? Another broken pull-up?
#include <err.h>
#include <stdio.h>
#include <usb.h>
struct usb_bus *bus;
struct usb_device *dev;
usb_dev_handle *udev;
int main(int argc, char *argv[]) {
puts("init");
usb_init();
puts("find_busses");
usb_find_busses();
puts("find_devices");
usb_find_devices();
for (bus = usb_busses; bus; bus = bus->next) {
puts(bus->dirname);
for (dev = bus->devices; dev; dev = dev->next) {
printf("%d: %s\n", dev->devnum, dev->filename);
udev = usb_open(dev);
if (!udev) {
warnx("usb_open: %s", usb_strerror());
continue;
}
printf("%0x %0x %0x\n", dev->descriptor.idVendor, dev->descriptor.idProduct, dev->descriptor.bcdDevice);
#if 0
if (usb_claim_interface(udev, 0) < 0) {
errx(1, "usb_claim: %s", usb_strerror());
}
#endif
usb_close(udev);
}
}
return 0;
}
Home |
Main Index |
Thread Index |
Old Index