[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT RFC PATCH 2/2] plat/common: Add a trap function to handle Arm64 irq trap
Hi, > -----Original Message----- > From: Julien Grall <julien.grall@xxxxxxx> > Sent: Tuesday, November 20, 2018 6:44 PM > To: Jianyong Wu (Arm Technology China) <Jianyong.Wu@xxxxxxx>; minios- > devel@xxxxxxxxxxxxxxxxxxxx; simon.kuenzer@xxxxxxxxx > Cc: Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>; Wei Chen (Arm > Technology China) <Wei.Chen@xxxxxxx> > Subject: Re: [Minios-devel] [UNIKRAFT RFC PATCH 2/2] plat/common: Add a > trap function to handle Arm64 irq trap > > Hi, > > On 20/11/2018 10:18, Jianyong Wu wrote: > > From: Wei Chen <wei.chen@xxxxxxx> > > > > Signed-off-by: Wei Chen <wei.chen@xxxxxxx> > > --- > > plat/common/arm/traps.c | 25 +++++++++++++++++++++++++ > > plat/kvm/arm/exceptions.S | 10 +++++++++- > > 2 files changed, 34 insertions(+), 1 deletion(-) > > > > diff --git a/plat/common/arm/traps.c b/plat/common/arm/traps.c index > > 43235be..df1b5c7 100644 > > --- a/plat/common/arm/traps.c > > +++ b/plat/common/arm/traps.c > > @@ -23,6 +23,7 @@ > > #include <string.h> > > #include <uk/print.h> > > #include <uk/assert.h> > > +#include <arm/gic-v2.h> > > > > static const char *exception_modes[]= { > > "Synchronous Abort", > > @@ -68,3 +69,27 @@ void trap_el1_sync(struct __regs *regs, uint64_t far) > > dump_registers(regs, far); > > ukplat_crash(); > > } > > + > > +void trap_el1_irq(struct __regs *regs, uint64_t far) { > > +uint32_t stat, irq; > > + > > +do { > > +stat = gic_ack_irq(); > > +irq = stat & GICC_IAR_INTID_MASK; > > + > > +uk_printd(DLVL_CRIT, "Unikraft: EL1 IRQ#%d trap caught\n", > irq); > > + > > +/* > > + * TODO: Hanle IPI&SGI interrupts here > > + */ > > +if (irq < GIC_MAX_IRQ) { > > +_ukplat_irq_handle((unsigned long)irq); > > +gic_eoi_irq(stat); > > +isb(); > > Can you explain why you need an isb() after gic_eoi_irq? > > On the previous patch the isb() was just before _ukplat_irq_handle(). The > position made sense because you want to ensure that all the system > registers are synchronized after receiving the interrupt (see [1]). > > Cheers, > > [1] https://lists.xenproject.org/archives/html/xen-devel/2018- > 10/msg01802.html > Ok, I can put isb() before _ukplat_irq_handle. Bests Jianyong wu > -- > Julien Grall IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |