Hi,

On 06.03.2017 15:42, Alex Bennée wrote:
> 
> Alexander Boettcher <alexander.boettc...@genode-labs.com> writes:
> 
>> Hi,
>>
>> On 06.03.2017 14:15, Alex Bennée wrote:
>>> I found the virtualbox.iso on your branch but I can't trigger the
>>> assert. Running:
>>>
>>> #!/bin/sh
>>>
>>> QEMU="$@"
>>>
>>> ${QEMU} -s -no-kvm -display sdl -m 512 -cpu phenom -nographic -cdrom 
>>> virtualbox.iso
>>>
>>> I get:
>>>
>>> NOVA Microhypervisor v7-2436fe2 (x86_32): Feb 25 2017 17:58:48 [gcc 4.9.2]
>>> [init -> log_terminal]
>>> [init -> log_terminal] [ 0] CORE:0:0:0 10:2:3:0 [0] AMD Phenom(tm) 9550 
>>> Quad-Core Processor
>>> qemu: fatal: invalid tss type
>>
>>
>>> Which is a guest error?
>>
>> It's a race which happens in Qemu (not on hardware), so I still
>> investigating it within Qemu. Because of that on [0] the commit before
>> the virtualbox.iso is one commit to avoid this for the moment in order
>> to continue.
> 
> How can a single-threaded system emulation race with itself?

Good question, I would say interrupts/timing in general. State must be
saved and restored when switching between the modes. Depending on where
you run when an interrupt (e.g. timer) happens (in the hypervisor, or in
user-level VMM respectively in some user-level applications or you run
in the VM in ring-0/ring-3.), different code paths are executed within
Qemu. As said, I'm still investigating, looks like something is not
saved/restored correctly everytime.

Sometimes Qemu just succeeds if the timing is well, will see.

But this is not the point of this issue atm.

Alex.

Reply via email to