On 2018-03-15 13:53:42 [+0100], Joerg Roedel wrote:
> On Fri, Feb 23, 2018 at 11:27:31PM +0100, Sebastian Andrzej Siewior wrote:
> > @@ -4103,10 +4093,26 @@ static int irq_remapping_alloc(struct irq_domain 
> > *domain, unsigned int virq,
> >             return ret;
> >  
> >     if (info->type == X86_IRQ_ALLOC_TYPE_IOAPIC) {
> > -           if (get_irq_table(devid, true))
> > +           struct irq_remap_table *table;
> > +           struct amd_iommu *iommu;
> > +
> > +           table = get_irq_table(devid);
> > +           if (table) {
> > +                   if (!table->min_index) {
> > +                           /*
> > +                            * Keep the first 32 indexes free for IOAPIC
> > +                            * interrupts.
> > +                            */
> > +                           table->min_index = 32;
> > +                           iommu = amd_iommu_rlookup_table[devid];
> > +                           for (i = 0; i < 32; ++i)
> > +                                   iommu->irte_ops->set_allocated(table, 
> > i);
> > +                   }
> 
> I think this needs to be protected by the table->lock.

Which part any why? The !->min_index part plus extending(setting to 32)?

Sebastian
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to