mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
vmm: return all-ones for unregistered PIO reads
When reading from an unregistered PIO address, pio_read() wasn't initialising the buffer, so guests were reading stale bytes from the previous PIO transaction rather than all 0xff bytes like master abort on real hardware. Fill data with 0xff on invalid reads. Correct 'read to unregistered address' info message to 'read from unregistered address' while we're touching this block. Signed-off-by: Chris Webb <chris@arachsys.com>
This commit is contained in:
@@ -491,7 +491,8 @@ impl VmOps for VmOpsHandler {
|
||||
#[cfg(target_arch = "x86_64")]
|
||||
fn pio_read(&self, port: u64, data: &mut [u8]) -> result::Result<(), HypervisorVmError> {
|
||||
if let Err(vm_device::BusError::MissingAddressRange) = self.io_bus.read(port, data) {
|
||||
info!("Guest PIO read to unregistered address 0x{port:x}");
|
||||
info!("Guest PIO read from unregistered address 0x{port:x}");
|
||||
data.fill(0xff); // 0xff is sentinel value for invalid reads
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user