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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.");
|
||||
|
||||
Reference in New Issue
Block a user