[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Xen 4.4.x] call vgic_en/disable_irqs holding the rank_lock



On Tue, 2014-06-24 at 19:30 +0100, Stefano Stabellini wrote:
> Modifying ienable and calling vgic_enable_irqs or vgic_disable_irqs need
> to be atomic. Move the calls to vgic_enable_irqs and vgic_disable_irqs
> before releasing the rank lock.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

Do I understand correctly that this is a 4.4 only fix which cannot
simply be a backport of some changeset because of other changes in 4.5?

> 
> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> index 850006c..fa5acd6 100644
> --- a/xen/arch/arm/vgic.c
> +++ b/xen/arch/arm/vgic.c
> @@ -509,8 +509,8 @@ static int vgic_distr_mmio_write(struct vcpu *v, 
> mmio_info_t *info)
>          vgic_lock_rank(v, rank);
>          tr = rank->ienable;
>          rank->ienable |= *r;
> -        vgic_unlock_rank(v, rank);
>          vgic_enable_irqs(v, (*r) & (~tr), gicd_reg - GICD_ISENABLER);
> +        vgic_unlock_rank(v, rank);
>          return 1;
>  
>      case GICD_ICENABLER ... GICD_ICENABLERN:
> @@ -520,8 +520,8 @@ static int vgic_distr_mmio_write(struct vcpu *v, 
> mmio_info_t *info)
>          vgic_lock_rank(v, rank);
>          tr = rank->ienable;
>          rank->ienable &= ~*r;
> -        vgic_unlock_rank(v, rank);
>          vgic_disable_irqs(v, (*r) & tr, gicd_reg - GICD_ICENABLER);
> +        vgic_unlock_rank(v, rank);
>          return 1;
>  
>      case GICD_ISPENDR ... GICD_ISPENDRN:



_______________________________________________
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®.