seoul: handle a MSR to let Genode/Nova guest boot

Issue #1702
This commit is contained in:
Alexander Boettcher 2015-09-09 16:50:58 +02:00 committed by Christian Helmuth
parent ad24b25af0
commit 2d15c6d990
1 changed files with 13 additions and 11 deletions

View File

@ -826,13 +826,15 @@ class Vcpu_dispatcher : public Vcpu_handler,
msg.cpu->ebx = 0;
msg.cpu->ecx = 0;
msg.cpu->edx = 0;
break;
return true;
case 0x80000007U:
/* Bit 8 of edx indicates whether invariant TSC is supported */
msg.cpu->eax = msg.cpu->ebx = msg.cpu->ecx = msg.cpu->edx = 0;
return true;
default:
PDBG("CpuMessage::TYPE_CPUID index %x ignored, return true)",
msg.cpuid_index);
Logging::printf("CpuMessage::TYPE_CPUID index %x ignored\n",
msg.cpuid_index);
}
return true;
}
};
@ -1074,7 +1076,7 @@ class Machine : public StaticReceiver<Machine>
return false;
}
PINF("Our mac address is %2x:%2x:%2x:%2x:%2x:%2x\n",
Logging::printf("Our mac address is %2x:%2x:%2x:%2x:%2x:%2x\n",
_nic->mac_address().addr[0],
_nic->mac_address().addr[1],
_nic->mac_address().addr[2],
@ -1105,7 +1107,7 @@ class Machine : public StaticReceiver<Machine>
bool receive(MessageDisk &msg)
{
if (verbose_debug)
PDBG("MessageDisk");
Logging::printf("MessageDisk\n");
return false;
}
@ -1186,7 +1188,7 @@ class Machine : public StaticReceiver<Machine>
try {
tx_packet = _nic->tx()->alloc_packet(msg.len);
} catch (Nic::Session::Tx::Source::Packet_alloc_failed) {
PERR("tx packet alloc failed");
Logging::printf("error: tx packet alloc failed\n");
return false;
}
@ -1203,7 +1205,7 @@ class Machine : public StaticReceiver<Machine>
if (ack_tx_packet.size() != tx_packet.size()
|| ack_tx_packet.offset() != tx_packet.offset()) {
PERR("unexpected acked packet");
Logging::printf("error: unexpected acked packet\n");
}
/* release sent packet to free the space in the tx communication buffer */
@ -1217,14 +1219,14 @@ class Machine : public StaticReceiver<Machine>
bool receive(MessagePciConfig &msg)
{
if (verbose_debug)
PDBG("MessagePciConfig");
Logging::printf("MessagePciConfig\n");
return false;
}
bool receive(MessageAcpi &msg)
{
if (verbose_debug)
PDBG("MessageAcpi");
Logging::printf("MessageAcpi\n");
return false;
}