[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 03/39] ARM: GIC: Allow tweaking the active and pending state of an IRQ
Hi, On 22/03/18 01:51, Julien Grall wrote: > Hi Andre, > > On 03/21/2018 04:31 PM, Andre Przywara wrote: >> When playing around with hardware mapped, level triggered virtual IRQs, >> there is the need to explicitly set the active or pending state of an >> interrupt at some point. >> To prepare the GIC for that, we introduce a set_active_state() and a >> set_pending_state() function to let the VGIC manipulate the state of >> an associated hardware IRQ. >> This takes care of properly setting the _IRQ_INPROGRESS bit. >> >> Signed-off-by: Andre Przywara <andre.przywara@xxxxxxxxxx> >> --- >> Changelog v2 ... v3: >> - rework setting _IRQ_INPROGRESS bit: >> - no change when changing active state >> - unconditional set/clear on changing pending state >> - drop introduction of gicv[23]_peek_irq() (only needed in the next >> patch now) >> >> Changelog v1 ... v2: >> - properly set _IRQ_INPROGRESS bit >> - add gicv[23]_peek_irq() (pulled in from later patch) >> - move wrappers functions into gic.h >> >> xen/arch/arm/gic-v2.c | 36 ++++++++++++++++++++++++++++++++++++ >> xen/arch/arm/gic-v3.c | 32 ++++++++++++++++++++++++++++++++ >> xen/include/asm-arm/gic.h | 24 ++++++++++++++++++++++++ >> 3 files changed, 92 insertions(+) >> >> diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c >> index aa0fc6c1a1..d1f1578c05 100644 >> --- a/xen/arch/arm/gic-v2.c >> +++ b/xen/arch/arm/gic-v2.c >> @@ -243,6 +243,40 @@ static void gicv2_poke_irq(struct irq_desc *irqd, >> uint32_t offset) >> writel_gicd(1U << (irqd->irq % 32), offset + (irqd->irq / 32) * 4); >> } >> +static void gicv2_set_active_state(struct irq_desc *irqd, bool active) >> +{ >> + ASSERT(spin_is_locked(&irqd->lock)); >> + >> + if ( active ) >> + { >> + if ( test_bit(_IRQ_GUEST, &irqd->status) ) > > I don't understand why you only set/clear INPROGRESS bit for interrupt > routed to guest. This will matter when releasing interrupt used by Xen > (see release_irq). D'oh, indeed! Seems like I am too focused on the _V_GIC these days ;-) Fixed. Cheers, Andre. > Note that I don't expect this helper to be call on Xen IRQ, but I think > we should make > > Other than same remark on GICv3 code, the pending implementation looks > good to me now. > > Cheers, > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |