On 2015/10/14 2:14, Marc Zyngier wrote: > When we create a generic MSI domain, that MSI_FLAG_USE_DEF_CHIP_OPS > is set, and that any of .mask or .unmask are NULL in the irq_chip > structure, we set them to pci_msi_[un]mask_irq. > > This is a bad idea for at least two reasons: > - PCI_MSI might not be selected, kernel fails to build (yes, this is > legitimate, at least on arm64!) > - This may not be a PCI/MSI domain at all (platform MSI, for example) > > Either way, this looks wrong. Move the overriding of mask/unmask to > the PCI counterpart, and panic is any of these two methods is not > set in the core code (they really should be present). Hi Marc, Thanks for fixing this, Reviewed-by: Jiang Liu <jiang....@linux.intel.com> Thanks, Gerry
> > Signed-off-by: Marc Zyngier <marc.zyng...@arm.com> > --- > drivers/pci/msi.c | 4 ++++ > kernel/irq/msi.c | 6 +----- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index d449714..4a7da3c 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -1243,6 +1243,10 @@ static void pci_msi_domain_update_chip_ops(struct > msi_domain_info *info) > BUG_ON(!chip); > if (!chip->irq_write_msi_msg) > chip->irq_write_msi_msg = pci_msi_domain_write_msg; > + if (!chip->irq_mask) > + chip->irq_mask = pci_msi_mask_irq; > + if (!chip->irq_unmask) > + chip->irq_unmask = pci_msi_unmask_irq; > } > > /** > diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c > index 7e6512b..be9149f 100644 > --- a/kernel/irq/msi.c > +++ b/kernel/irq/msi.c > @@ -228,11 +228,7 @@ static void msi_domain_update_chip_ops(struct > msi_domain_info *info) > { > struct irq_chip *chip = info->chip; > > - BUG_ON(!chip); > - if (!chip->irq_mask) > - chip->irq_mask = pci_msi_mask_irq; > - if (!chip->irq_unmask) > - chip->irq_unmask = pci_msi_unmask_irq; > + BUG_ON(!chip || !chip->irq_mask || !chip->irq_unmask); > if (!chip->irq_set_affinity) > chip->irq_set_affinity = msi_domain_set_affinity; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/