dev: Correctly transform packets into responses

The VirtIO devices didn't correctly set the response flags in memory
packets. This changeset adds the required Packet::makeResponse()
calls.
This commit is contained in:
Andreas Sandberg
2014-12-08 04:49:51 -05:00
parent 4a8a0a0798
commit 1ccc4e0e21
2 changed files with 6 additions and 0 deletions

View File

@@ -426,6 +426,7 @@ VirtIODeviceBase::readConfigBlob(PacketPtr pkt, Addr cfgOffset, const uint8_t *c
if (cfgOffset + size > configSize)
panic("Config read out of bounds.\n");
pkt->makeResponse();
pkt->setData(const_cast<uint8_t *>(cfg) + cfgOffset);
}
@@ -437,6 +438,7 @@ VirtIODeviceBase::writeConfigBlob(PacketPtr pkt, Addr cfgOffset, uint8_t *cfg)
if (cfgOffset + size > configSize)
panic("Config write out of bounds.\n");
pkt->makeResponse();
pkt->writeData((uint8_t *)cfg + cfgOffset);
}

View File

@@ -75,6 +75,8 @@ PciVirtIO::read(PacketPtr pkt)
return 0;
}
pkt->makeResponse();
switch(offset) {
case OFF_DEVICE_FEATURES:
DPRINTF(VIOPci, " DEVICE_FEATURES request\n");
@@ -151,6 +153,8 @@ PciVirtIO::write(PacketPtr pkt)
return 0;
}
pkt->makeResponse();
switch(offset) {
case OFF_DEVICE_FEATURES:
warn("Guest tried to write device features.");