seoul: add invalid guest state handling
This commit is contained in:
parent
e349c29736
commit
ed3187aa74
|
@ -609,10 +609,11 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
||||||
{
|
{
|
||||||
Utcb *utcb = _utcb_of_myself();
|
Utcb *utcb = _utcb_of_myself();
|
||||||
|
|
||||||
if (utcb->qual[0] & 0x4)
|
if (utcb->qual[0] & 0x4) {
|
||||||
Logging::panic("force_invalid_gueststate_amd(utcb) - not implemented\n");
|
Logging::printf("invalid gueststate\n");
|
||||||
|
utcb->ctrl[1] = 0;
|
||||||
else {
|
utcb->mtd = MTD_CTRL;
|
||||||
|
} else {
|
||||||
unsigned order = ((utcb->qual[0] >> 4) & 7) - 1;
|
unsigned order = ((utcb->qual[0] >> 4) & 7) - 1;
|
||||||
|
|
||||||
if (order > 2)
|
if (order > 2)
|
||||||
|
@ -715,7 +716,10 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
||||||
Utcb *utcb = _utcb_of_myself();
|
Utcb *utcb = _utcb_of_myself();
|
||||||
unsigned order;
|
unsigned order;
|
||||||
if (utcb->qual[0] & 0x10) {
|
if (utcb->qual[0] & 0x10) {
|
||||||
Logging::panic("invalid gueststate intel - not implemented\n");
|
Logging::printf("invalid gueststate\n");
|
||||||
|
assert(utcb->mtd & MTD_RFLAGS);
|
||||||
|
utcb->efl &= ~2;
|
||||||
|
utcb->mtd = MTD_RFLAGS;
|
||||||
} else {
|
} else {
|
||||||
order = utcb->qual[0] & 7;
|
order = utcb->qual[0] & 7;
|
||||||
if (order > 2) order = 2;
|
if (order > 2) order = 2;
|
||||||
|
|
Loading…
Reference in New Issue