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