|
[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 |