Hi Parbhakar, Just to say that your messages have helped me again - I had exactly the same problem as you originally had. Keep doing this great job of sharing your issues and their solutions, please :).
Thank you Best Regards, Yelena On Friday, June 10, 2022 at 2:55:51 PM UTC+1 [email protected] wrote: > Hi, > > On Mon, Jun 6, 2022 at 8:29 PM Prabhakar Lad <[email protected]> > wrote: > > > > Hi, > > > > I have the below setup for Linux inmate: > > * Use initramfs > > * UART is enabled > > * eMMC is enabled > > > > In the inmate cell I have the below: > > .irqchips = { > > /* GIC */ { > > .address = 0xf1010000, > > .pin_base = 128, > > .pin_bitmap = { > > 1 << (153+32 - 160), /* SCIF1 - SPI153 */ > > }, > > }, > > /* GIC */ { > > .address = 0xf1010000, > > .pin_base = 160, > > .pin_bitmap = { > > 1 << (168+32 - 192), /* SDHI3 - SPI168 */ > > }, > > }, > > }, > > > > And in the inmate DTS I have the below: > > > > scif1: serial@e6e68000 { > > compatible = "renesas,scif-r8a774a1", > > "renesas,rcar-gen3-scif", "renesas,scif"; > > reg = <0 0xe6e68000 0 0x40>; > > interrupt-parent = <&gic>; > > interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>; > > clocks = <&cpg CPG_MOD 206>, > > <&cpg CPG_CORE R8A774A1_CLK_S3D1>, > > <&scif_clk>; > > clock-names = "fck", "brg_int", "scif_clk"; > > power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>; > > resets = <&cpg 206>; > > pinctrl-0 = <&scif1_pins>; > > pinctrl-names = "default"; > > }; > > > > gic: interrupt-controller@f1010000 { > > compatible = "arm,gic-400"; > > #interrupt-cells = <3>; > > #address-cells = <0>; > > interrupt-controller; > > reg = <0x0 0xf1010000 0 0x1000>, > > <0x0 0xf102f000 0 0x20000>, > > <0x0 0xf1040000 0 0x20000>, > > <0x0 0xf106f000 0 0x20000>; > > interrupts = <GIC_PPI 9 > > (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>; > > }; > > > > When Linux is started on the inmate cell, I can see its booting through > but it doesn't fall into shell. > > > > --- a/drivers/irqchip/irq-gic.c > > +++ b/drivers/irqchip/irq-gic.c > > @@ -341,6 +341,9 @@ static void __exception_irq_entry > gic_handle_irq(struct pt_regs *regs) > > irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK); > > irqnr = irqstat & GICC_IAR_INT_ID_MASK; > > > > + if (irqnr < 1020) > > + pr_err(">>>>>>>>>>>>>>>>%s We received IRQ:%u<<<<<<<<<<<<<<\n", > __func__, irqnr); > > + > > if (unlikely(irqnr >= 1020)) > > break; > > > > I added the above and I can see the Linux inmate receives only 0/1/27 > interrupts. > > > > Which gives me a feeling the Linux inmate isn't receiving the required > interrupts. > > > > Any pointers on where I should be looking into? > > > Ive fixed this by updating the GIC masks. > > Cheers, > Prabhakar > -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/aa2b89e1-18cf-4089-b793-1da11ae04b77n%40googlegroups.com.
