Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Aug 2012 12:27:49 -0400
From:      Paul Mather <paul@gromit.dlib.vt.edu>
To:        stable@freebsd.org
Subject:   uhci0 excessive interrupts---how can I disable or reset specific USB port?
Message-ID:  <6DFEFF91-F9A9-4C64-8D1C-FB7A73BC7A2E@gromit.dlib.vt.edu>

next in thread | raw e-mail | index | archive | help
I am running FreeBSD/amd64 9-STABLE (built Mon Jul 23 10:45:51 EDT 2012) =
on a Dell Optiplex 760 and, today, noticed I had almost 30% system CPU =
load in top even when the system was idle.  A perusal of vmstat revealed =
the cause to be excessive interrupts on uhci0, even though nothing was =
plugged into that USB port:

# vmstat -i
interrupt                          total       rate
irq4: uart0                           22          0
irq16: uhci0                617002282738     310969
irq23: uhci3 ehci1                    83          0
irq256: hpet0:t0               135818421         68
irq257: hpet0:t1              2222659301       1120
irq264: em0                     29529304         14
irq265: ahci0                   11132506          5
Total                       619401422375     312178


Because I am only using the front USB ports on that hardware, I thought =
I would disable the other (rear) USB ports in the BIOS.  I rebooted and =
duly disabled them.  However, when FreeBSD booted, it appeared to ignore =
the BIOS setting: all the USB ports were probed as usual.  (The high =
interrupts had vanished, though that might have been due to FreeBSD =
correctly shutting down the controllers at shutdown, or just the act of =
rebooting itself.)

I added "hint.uhci.0.disabled=3D1" to /boot/loader.conf (hoping it would =
disable uhci0), but, again all the USB ports appeared in the boot =
probes.  (However, it *appears* as if uhci0 has been disabled because =
the "irq16: uhci0" line no longer appears in "vmstat -i".  However, all =
the same ugen devices appear in /dev.)

Is there a way of disabling a specific USB controller that you don't =
want to use?  If so, how?  I looked at usbconfig, but that appears to me =
to be more about controlling devices plugged in to a USB port rather =
than the port itself.  The "reset" command of usbconfig appears to be =
about resetting USB devices, not ports.

If I can't disable a specific USB port, is there a way to reset it =
without rebooting?  If I ever get another crazy interrupt storm like I =
noticed today it would be nice to be able to stop it without having to =
do a reboot.

Cheers,

Paul.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6DFEFF91-F9A9-4C64-8D1C-FB7A73BC7A2E>