pci: Allow hotplug service drivers to operate in polling mode
PATCH 1/1 pci: Allow hotplug service drivers to operate in polling mode
Today the PCIe port bus driver disables the Hot-plug service if the port device does not have the capability to generate interrupts. However, drivers may have a polling method that can be used in this case. In case of pciehp, user must be able to use the "pciehp_poll_mode" parameter to use polling method in such a case. Today it is not possible.
This patch allows a hotplug service driver to decide whether or not it would like to continue in absense of interrupts. Also, the current hotplug service driver (pciehp) is changed to check that either IRQs are supported, or polling mode is to be used.
Signed-off-by Rajat Jain <[email protected]>
Signed-off-by Rajat Jain <[email protected]>
Signed-off-by Guenter Roeck <[email protected]>
--- drivers/pci/hotplug/pciehp_hpc.c | 8 ++++++++ drivers/pci/pcie/portdrv_core.c | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-)
drivers/pci/hotplug/pciehp_hpc.c +8 -0
@@ -86,6 +86,14 @@ static inline int pciehp_request_irq(struct controller *ctrl)init_timer (&ctrl->poll_timer);start_int_poll_timer (ctrl,10 );return 0 ; + }else if (irq ==-1 ) { +/* +* Bail out if there is neither a way to generate +* interrupts, nor polling is to be used. +*/ +ctrl_err (ctrl, +"No way to generate IRQ. Use pciehp_poll_mode\n" ); +return -1 ; }/* Installs the interrupt handler */
drivers/pci/pcie/portdrv_core.c +4 -1
@@ -379,10 +379,13 @@ int pcie_port_device_register(struct pci_dev *dev)/* * Initialize service irqs. Don't use service devices that * require interrupts if there is no way to generate them. +* However, some drivers (e.g. pciehp) may have a polling mode +* that can be used in absense of irqs. Allow them to determine +* if that is to be used. */ status =init_service_irqs (dev, irqs, capabilities);if (status) { - capabilities &=PCIE_PORT_SERVICE_VC ; + capabilities &=PCIE_PORT_SERVICE_VC |PCIE_PORT_SERVICE_HP ;if (!capabilities) goto error_disable; }
Signature · 1 line
1.7.9.5