| Date | Sun, 26 Aug 2012 20:27:55 +0200 | From | Sebastian Andrzej Siewior <> | Subject | Re: [PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq |
| |
On Mon, Aug 20, 2012 at 03:56:01PM +0200, Joerg Roedel wrote: > --- a/arch/x86/kernel/apic/io_apic.c > +++ b/arch/x86/kernel/apic/io_apic.c > @@ -2981,8 +2981,8 @@ void destroy_irq(unsigned int irq) > > irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE); > > - if (irq_remapped(cfg)) > - free_remapped_irq(irq); > + free_remapped_irq(irq); > + > raw_spin_lock_irqsave(&vector_lock, flags); > __clear_irq_vector(irq, cfg); > raw_spin_unlock_irqrestore(&vector_lock, flags); > diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c > index 3957fb2..f2affc7 100644 > --- a/drivers/iommu/irq_remapping.c > +++ b/drivers/iommu/irq_remapping.c > @@ -229,10 +229,13 @@ int set_remapped_irq_affinity(struct irq_data *data, const struct cpumask *mask, > > void free_remapped_irq(int irq) > { > + struct irq_cfg *cfg = irq_get_chip_data(irq); > + > if (!remap_ops || !remap_ops->free_irq) > return; > > - remap_ops->free_irq(irq); > + if (cfg && irq_remapped(cfg))
You shuffle code with the exception that you now check for cfg. Why?
> + remap_ops->free_irq(irq); > } > > void compose_remapped_msi_msg(struct pci_dev *pdev,
Sebastian
|