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/CA%2BV-a8vEOGdMrNyJOo%3Dad3JLAe4joXmNnz%2Bn_oJboW3rPdh8qA%40mail.gmail.com.

Reply via email to