Sam Bobroff <sbobr...@linux.ibm.com> writes: > diff --git a/arch/powerpc/kernel/eeh_driver.c > b/arch/powerpc/kernel/eeh_driver.c > index f63a01d336ee..b3edd0df04b8 100644 > --- a/arch/powerpc/kernel/eeh_driver.c > +++ b/arch/powerpc/kernel/eeh_driver.c > @@ -210,6 +206,23 @@ static void eeh_set_channel_state(struct eeh_pe *root, > enum pci_channel_state s) > edev->pdev->error_state = s; > } > > +static void eeh_set_irq_state(struct eeh_pe *root, bool enable) > +{ > + struct eeh_pe *pe; > + struct eeh_dev *edev, *tmp; > + > + eeh_for_each_pe(root, pe) > + eeh_pe_for_each_dev(pe, edev, tmp) > + if (eeh_edev_actionable(edev)) > + if (eeh_pcid_get(edev->pdev)) { > + if (enable) > + eeh_enable_irq(edev); > + else > + eeh_disable_irq(edev); > + eeh_pcid_put(edev->pdev); > + }
Yikes. What about? eeh_for_each_pe(root, pe) { eeh_pe_for_each_dev(pe, edev, tmp) { if (!eeh_edev_actionable(edev)) continue; if (!eeh_pcid_get(edev->pdev)) continue; if (enable) eeh_enable_irq(edev); else eeh_disable_irq(edev); eeh_pcid_put(edev->pdev); } } cheers