Re: sharing interrupt between PCI device

From: Robert Hancock
Date: Tue Nov 11 2008 - 13:49:22 EST


Altobelli, David wrote:
On Mon, Nov 10, 2008 at 4:01 PM, Nobin Mathew <nobin.mathew@xxxxxxxxx> wrote:
Yes USB Virtual Controller has input devices like keyboard and mouse
(routed through hpilo card (remote console)), so those things stops
working when we remove hpilo driver.


That is not quite correct. Nothing is routed through hpilo.

The problem is that there is a shared hardware resource in iLO function 2 (hpilo),
and it is used by iLO function 4 (uhci_hcd kdb/mouse). When hpilo is unloaded,
the pci_device_disable() call removes the ability for this function to act as a
busmaster, which stops the uhci_hcd from functioning correctly.

Reloading hpilo will enable the remote console again.

Removing the pci_disable_device() "fixes" the problem, but doing that worries me.

I suspect that removing the pci_disable_device in that driver is probably the best solution. It's not really mandatory to disable the device in all cases, we have other devices that have similar issues and so can't be disabled. As long as it can't generate interrupts or otherwise affect the system after the module is unloaded (but it sounds like it doesn't use interrupts anyway).

It's not really a good hardware design (mucking with one PCI function on the device shouldn't disable functionality on other functions), but what can you do..
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/