[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


  • To: Jan Beulich <JBeulich@xxxxxxxx>, xen-devel <xen-devel@xxxxxxxxxxxxx>
  • From: Keir Fraser <keir.xen@xxxxxxxxx>
  • Date: Fri, 07 Sep 2012 16:05:29 +0100
  • Cc: xiantao.zhang@xxxxxxxxx
  • Delivery-date: Fri, 07 Sep 2012 15:06:11 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>
  • Thread-index: Ac2NCjfci5Z07jaCaEmZy2kTz8SqLw==
  • Thread-topic: [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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.