[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Not Xen] Facing issues running guest OS on custom Hypervisor

On 20/03/18 20:24, Brijen Raval wrote:
Hello Julien,


As requested I am moving the conversation to email from IRC

To summarize my setup:

1. I am running a custom kernel on QEMU ARM64(without KVM) on my linux machine
2. I have my custom implementation of Hypervisor
3. I am trying to run the same custom kernel as guest OS on top of my Hypervisor

- I am able to boot my kernel to shell on QEMU
- I am able to start my guest OS
- From the logs I see that my guest OS finishes booting up, I can see the $sign for the shell and then it goes into idle state, but I cannot use the shell

To debug further I enabled tracing in QEMU and printed the exceptions to understand what state is my guest in

Before I paste some logs here, some more information about my system

IRQ 30 is the physical timer interrupt of my host OS running on QEMU
IRQ 27 is the virtual timer interrupt of my guest OS

I have added some extra logging in QEMU to print out the VTTBR so as to understand where the exception is coming from

From 1st Attachment (GIC 1) I observe that every once in a while the phys timer interrupt occurs (IRQ 30) and its handled by the host VM, and then after about 10-20 times the virtirq 27 level changes to 1 and back to 0 again and again..this is how its looping currently after boot up

Adding a 2nd attachment with extra logging of traps of exceptions as well. It just shows 2 different IRQ exceptions taken, one with VTTBR = 0 (IRQ30) and other with a VTTBR value of the guest (IRQ 27, since the irq 27 level is changed to 1 just before it..

Any idea what am I missing, and why my guest OS is not handling the pending interrupt.

Upon receiving the IRQ 27, I do set the HCR_EL2.VI <http://HCR_EL2.VI> bit to 1 to signal the guest about a pending virual interrupt but I dont think thats working.

HCR_EL2.VI should not be necessary is you are using the GIC HW virtualization extension. Can you confirm you are using it?

If so, I would recommend to look at the content of the LRs and checking you effectively have IRQ 27 pending in it.

Another thing I noticed that the qemu logging, never shows anything for the virt_interrupt.

What do you mean by "virt_interrupt"? is it a message QEMU is supposed to print when injecting interrupt to the guest?


Julien Grall

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.