Control IRQ assignment?

Dan Nelson dnelson at allantgroup.com
Tue Feb 3 20:29:58 PST 2009


In the last episode (Feb 03), patrick said:
> On Tue, Jan 27, 2009 at 2:34 PM, Dan Nelson <dnelson at allantgroup.com> wrote:
> > In the last episode (Jan 27), patrick said:
> >> I'm running FreeBSD 7.1 on a new Dell Inspiron 530s. I'm having an
> >> issue where the same IRQ is being assigned for multiple devices, and I
> >> have a device that absolutely needs its own IRQ.  The BIOS is very
> >> limiting, and won't allow me to disable shared IRQ assignment.  Some
> >> suggestions I've read about booting FreeBSD with ACPI hasn't been an
> >> option, because without it enabled, FreeBSD does not see the SATA
> >> controllers/disks, and thus won't boot.  Linux has a utility called
> >> irqbalance (http://www.irqbalance.org/) that seems like it could be
> >> promising, but of course it is Linux-specific.  Is there any way in
> >> FreeBSD that I can help the system decide which IRQs to assign to what?
> >
> > irqbalance doesn't do what you think it does; it simply pins interrupt
> > handlers on particular CPUs.  The only way to ensure that a given device
> > has an IRQ line to itself is to look at your motherboard documentation,
> > determine which IRQs are wired to which PCI slots, and rearrange your
> > cards to assign your troublesome device an IRQ of its own.  Some
> > motherboards let you assign onboard devices (NICs, parallel port, etc)
> > to different interrupts, too.

> Hmmm... This Dell motherboard is extremely limited in what can be
> controlled. There are seven USB controllers, and no way I can see to
> disable some of them. I wonder if there's some way I can take some
> blocks out of ACPI code captured from acpidump in order to have it not
> load/be aware of some of those USB controllers that are unneeded and
> using an IRQ I need for a voice card I want to use with Asterisk?

You should be able to add some hints to your /boot/loader.conf to tell the
kernel not to use those USB controllers.  Something like

hint.uhci.0.disabled=1
hint.ehci.0.disabled=1

repeated for whatever other devices get probed on that IRQ.

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list