[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v7 5/6] xen/arm: physical irq follow virtual irq
On 07/03/2014 05:53 PM, Stefano Stabellini wrote: > diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c > index 695c232..c3d2853 100644 > --- a/xen/arch/arm/gic-v2.c > +++ b/xen/arch/arm/gic-v2.c > @@ -532,9 +532,22 @@ static void gicv2_guest_irq_end(struct irq_desc *desc) > /* Deactivation happens in maintenance interrupt / via GICV */ > } > > -static void gicv2_irq_set_affinity(struct irq_desc *desc, const cpumask_t > *mask) > +static void gicv2_irq_set_affinity(struct irq_desc *desc, const cpumask_t > *cpu_mask) > { > - BUG(); > + volatile unsigned char *bytereg; > + unsigned int mask; > + > + ASSERT(!cpumask_empty(cpu_mask)); > + > + spin_lock(&gicv2.lock); > + > + mask = gicv2_cpu_mask(cpu_mask); > + > + /* Set target CPU mask (RAZ/WI on uniprocessor) */ > + bytereg = (unsigned char *) (GICD + GICD_ITARGETSR); > + bytereg[desc->irq] = mask; The new implemenation of GICv2 is using {read,write}* helpers. Can you use writeb_relaxed here, please? [..] > diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c > index b4493a3..69d3040 100644 > --- a/xen/arch/arm/vgic.c > +++ b/xen/arch/arm/vgic.c > @@ -399,6 +399,7 @@ static void vgic_migrate_irq(struct vcpu *old, struct > vcpu *new, unsigned int ir > > if ( list_empty(&p->inflight) ) > { > + irq_set_affinity(p->desc, cpumask_of(new->processor)); > spin_unlock_irqrestore(&old->arch.vgic.lock, flags); > return; > } > @@ -407,6 +408,7 @@ static void vgic_migrate_irq(struct vcpu *old, struct > vcpu *new, unsigned int ir > { > list_del_init(&p->lr_queue); > list_del_init(&p->inflight); > + irq_set_affinity(p->desc, cpumask_of(new->processor)); I think this irq_set_affinity is misplaced. You forgot to handle the case where the IRQ has been EOIed, and no IRQ has been queued. Also, it looks like this is done a bit late. the IRQ may fire on the previous physical CPU again at least once. This will happen the X-Gene quirk. Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |