We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I am running arm-trusted-firmware on Juno and when I breakthrough DS-5 on EL3 level I see FIQ pending status in ISR_EL1.
I am trying to bring-up linux guest OS and when I try to run linux image I am entering virtual FIQ handler at EL2 level.
Please let me know if there is any way I can ignore this FIQ pending ?
I tried using GICC_CTLR and GICV_CTLR registers bit 0 to disable Group0 (FIQs) interrupts but it is not helping.
Thanks,
Hi armdev,
What exactly did you set in the GICC_CTLR? The FIQ disable is a little more complicated than just disabling the Group 0 interrupts. Actually, what disabling Group 0 interrupts probably does for you with a pre-configured GIC is end up in bypass mode, so something is asserting the FIQ line directly to the core (or it's floating somehow). There is a way to disable it, though, which is documented in the GICv2 Architecture Specification section 2.3.x. There are some nice tables
We'll need a bit more information to figure out what exactly you're seeing here to figure out what's actually happening.
Ta,
Matt
Hi Matt,
After finding out the FIQBypDisGrp0 [5] bit now I am setting GICC_CTLR 0x220 but still I end up going to vFIQ handler in EL2 mode.
So bit Group0[0] and FIQEn[3] are disabled and also Bypass is disabled. Not sure what might be missing.
Thanks
I am still facing this FIQ issue. Is there any way using debugger I can clear this floating/pending FIQ before I jump and begin to run my own code ?
Do you have any idea which interrupt number this is?
For simplicity I just run below as specified in the tutorial to gain control at EL3 level and dump the GICC registers
GICC_CTLR (0x2c02f000) = 0x6B = (bit 2 AckCtl = 0)
GICC_IAR (0x2c02f00C) = 0x1D = (Interrupt ID = 29)
GICC_HPPIR (0x2c02f018) = 0x3FE = (Interrupt ID = 254)
ISR_EL1 = 0x40 (One FIQ pending)
Commands running on Juno
--------------------------------------------
core apply all set var $AARCH64::$System::$Other::$SCTLR_EL3 = 0x0
core apply all set var $AARCH64::$System::$Secure::$SCR_EL3 = 0x00000000
set var $AARCH64::$System::$PSTATE::$DAIF.D = 1
set var $AARCH64::$System::$PSTATE::$DAIF.A = 1
set var $AARCH64::$System::$PSTATE::$DAIF.I = 1
set var $AARCH64::$System::$PSTATE::$DAIF.F = 1
set var $AARCH64::$System::$PSTATE::$Mode.M = 13
memory set_typed AXI<PROT=1>:0x000000002A4A0140 (unsigned int) 0x80000000