[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 28/39] ARM: new VGIC: Add event channel IRQ handling
On Wed, 21 Mar 2018, Andre Przywara wrote: > The Xen core/arch code relies on two abstracted functions to inject an > event channel IRQ and to query its pending state. > Implement those to query the state of the new VGIC implementation. > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxxxxx> > Acked-by: Julien Grall <julien.grall@xxxxxxx> Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > xen/arch/arm/vgic/vgic.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c > index 07866d7243..3d818a98ad 100644 > --- a/xen/arch/arm/vgic/vgic.c > +++ b/xen/arch/arm/vgic/vgic.c > @@ -699,6 +699,29 @@ void vgic_kick_vcpus(struct domain *d) > } > } > > +void arch_evtchn_inject(struct vcpu *v) > +{ > + vgic_inject_irq(v->domain, v, v->domain->arch.evtchn_irq, true); > +} > + > +bool vgic_evtchn_irq_pending(struct vcpu *v) > +{ > + struct vgic_irq *irq; > + unsigned long flags; > + bool pending; > + > + /* Does not work for LPIs. */ > + ASSERT(!is_lpi(v->domain->arch.evtchn_irq)); > + > + irq = vgic_get_irq(v->domain, v, v->domain->arch.evtchn_irq); > + spin_lock_irqsave(&irq->irq_lock, flags); > + pending = irq_is_pending(irq); > + spin_unlock_irqrestore(&irq->irq_lock, flags); > + vgic_put_irq(v->domain, irq); > + > + return pending; > +} > + > struct irq_desc *vgic_get_hw_irq_desc(struct domain *d, struct vcpu *v, > unsigned int virq) > { > -- > 2.14.1 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |