Re: Assertion failure error in kernel vgic interrupt processing
Adam Lackorzynski <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Message-ID | <[email protected]> |
On Thu May 03, 2018 at 11:18:03 +0800, nico.hacker wrote: > The previous test is not enough to cause error, this error is not related to peripherals, I have removed almost all peripheral drivers<br /><br />In the previous test, I added a delay operation before the vm2 start, so that vm1 completely up and then start vm2, this will greatly reduce the probability of the error. Now I removed this delay, vm1 and vm2 started simultaneously, then the error will occur frequently (about 1/10 probability). The error is generated when kernel processes vtimer interrupts. Under normal circumstances, after processing a vtimer interrupt, the vcpu thread will return to uvmm and then execute prepare_guest_entry(). This operation will eventually enter the kernel through the system call to set the state of vcpu thread, but when the error occurs, I find that the vcp u thread does not execute vcpu_resume, it processes two consecutive vtimer interrupts. As a result, the assertion fails. Ok, I see. I've never experienced this, however I will try running VMs aggressivly concurrent and see what happens. > Is the kernel able to guarantee that the complete process of handling vgic and vtimer interrupts (including the process in uvmm) is not interrupted by a new interrupt? Yes, this is supposed to be the case. > Here's my configuration: You're aware that you seem to give both VMs access to the same UART device? (Will probably have nothing to do with the assertion.) Adam