[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] VT-d: split .ack and .disable DMA-MSI actors
On 07/09/2012 13:45, "Jan Beulich" <JBeulich@xxxxxxxx> wrote: > Calling irq_complete_move() from .disable is wrong, breaking S3 resume. > > Comparing with all other .ack actors, it was also missing a call to > move_{native,masked}_irq(). As the actor is masking its interrupt > anyway (albeit it's not immediately obvious why), the latter is the > better choice. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> As far as I understand it Acked-by: Keir Fraser <keir@xxxxxxx> I guess you are looking for an Intel ack as well. -- Keir > --- a/xen/drivers/passthrough/vtd/iommu.c > +++ b/xen/drivers/passthrough/vtd/iommu.c > @@ -1039,8 +1039,6 @@ static void dma_msi_mask(struct irq_desc > unsigned long flags; > struct iommu *iommu = desc->action->dev_id; > > - irq_complete_move(desc); > - > /* mask it */ > spin_lock_irqsave(&iommu->register_lock, flags); > dmar_writel(iommu->reg, DMAR_FECTL_REG, DMA_FECTL_IM); > @@ -1053,6 +1051,13 @@ static unsigned int dma_msi_startup(stru > return 0; > } > > +static void dma_msi_ack(struct irq_desc *desc) > +{ > + irq_complete_move(desc); > + dma_msi_mask(desc); > + move_masked_irq(desc); > +} > + > static void dma_msi_end(struct irq_desc *desc, u8 vector) > { > dma_msi_unmask(desc); > @@ -1114,7 +1119,7 @@ static hw_irq_controller dma_msi_type = > .shutdown = dma_msi_mask, > .enable = dma_msi_unmask, > .disable = dma_msi_mask, > - .ack = dma_msi_mask, > + .ack = dma_msi_ack, > .end = dma_msi_end, > .set_affinity = dma_msi_set_affinity, > }; > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |