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.

Reply via email to