[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 3/5] xen/arm: vgic: Optimize the way to store the target vCPU in the rank
On Mon, 2015-10-12 at 15:22 +0100, Julien Grall wrote: > [...] > /* Only migrate the vIRQ if the target vCPU has changed */ > if ( new_target != old_target ) > { > + unsigned int virq = rank->index * NR_INTERRUPT_PER_RANK + offset; FWIW this was the value of offset before it was shifted + masked, I think. Could you not just save it up top and remember it? --- a/xen/arch/arm/vgic-v3.c > +++ b/xen/arch/arm/vgic-v3.c > @@ -89,18 +89,72 @@ static struct vcpu *vgic_v3_irouter_to_vcpu(struct > domain *d, uint64_t irouter) > return d->vcpu[vcpu_id]; > } > > -static struct vcpu *vgic_v3_get_target_vcpu(struct vcpu *v, unsigned int > irq) > -{ > - struct vcpu *v_target; > - struct vgic_irq_rank *rank = vgic_rank_irq(v, irq); > +#define NR_BYTE_PER_IROUTER 8U BYTES > > +/* > + * Fetch a IROUTER register based on the offset from IROUTER0. Only one > + * vCPU will be listed for a given vIRQ. > + * > + * Note the offset will be aligned to the appropritate boundary. appropriate. > + */ > +static uint64_t vgic_fetch_irouter(struct vgic_irq_rank *rank, > + unsigned int offset) > +{ > ASSERT(spin_is_locked(&rank->lock)); > > - v_target = vgic_v3_irouter_to_vcpu(v->domain, rank->v3.irouter[irq % > 32]); > + /* There is exactly 1 vIRQ per IROUTER */ > + offset /= NR_BYTE_PER_IROUTER; > > - ASSERT(v_target != NULL); > + /* Get the index in the rank */ > + offset &= INTERRUPT_RANK_MASK; > > - return v_target; > + return vcpuid_to_vaffinity(rank->vcpu[offset]); > +} > + > +/* > + * Store a IROUTER register in a convenient way and migrate the vIRQ There's been a few places now where you said "a I<foo>R", all of which should be "an I<foo>R". > + * if necessary. This function only deals with ITARGETSR32 and onwards. > + * > + * Note the offset will be aligned to the appriopriate boundary. "appropriate" again. The rest looks ok, mostly based on my recollection of previous versions. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |