Dear guys,

I need to route a specific interrupt to my non-root cell (based on jetson-demo.cell) on a ARM64 device (TegraTX1), and I have the following questions.

1. I've seen in gic-demo that interrupt 27, that seems to be tied to ARMv8 CPU internal Timer, even thought this is not reporterd in TegraX1 RFM AFAICS, is available to the non-root cell even without providing any specific IRQ configuration in the non-root cell configuration (jetson-demo.c cell). However, if I try to enable a different IRQ, the system hangs (I would have expected an exception TBH). Is there any reason why the timer interrupt behaves differently than the others ?

2. How do I configure the non-root cell to route a specific IRQ to my cell I guess that I've to use the jailhouse_irqchip structure and the .irqchips field, providing the right address and bitmask. However, I can't figure out these values. I'm confused since I noted that in the FreeRTOS cell the GIC address differs between the root cell and the non-root cell, and I can't figure out the reason. Even the bitmask value is not clear since the bit set by the FreeRTOS cell is IRQNO - 32: is it this a constant requiremet for GIC? In other words in any implementation of ARM that use GIC am I supposed to subtract 32 from the number I find in the Hardware Reference Manual?

3. I also noted that the FreeRTOS porting has re-implemented the inmate library from scratch and it does not link against the usual Jailhouse library. Since their implementation provide basically the same services with a few small additions (e.g., priorities handling for IRQs), I wonder the reason why they have chosen to use a different implementation rather than merging these additions to the mainline project.

4. This question is more a curiosity. In header.S the irq vector entries do not save and restore the scratch/volatile registers. IMHO this seems to not match the ARMv8 ABI and could even bring to abnormal behavior in some circumstances. Is it correct or am I wrong ? original ARM porting (32 bit) used GCC __attribute__((interrupt("IRQ"))) for vector_irq function, but this strategy is no more available on ARM64 (I don't know why this features has not been added for ARMv8 version of the GCC too).

Many thanks and best regards,

              Errico Guidieri

--

Errico Gudieri
Senior Embedded Engineer
Phone: +39.050.99.11.224 (122)
E-mail:[email protected]

EVIDENCE srl
Via Carducci 56 - Loc. Ghezzano - 56010 - S. Giuliano Terme - Pisa - Italy
Phone: +39.050.99.11.122 - 224
Fax: +39.050.99.10.812 - 855

--
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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to