mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-02-01 17:35:19 +00:00
vfio: Make vfio to use MemoryRegion instead of kvm_userspace_memory_region
Signed-off-by: Muminul Islam <muislam@microsoft.com>
This commit is contained in:
parent
cc57467d10
commit
053ea5dcd3
@ -13,7 +13,6 @@ use crate::{
|
|||||||
};
|
};
|
||||||
use byteorder::{ByteOrder, LittleEndian};
|
use byteorder::{ByteOrder, LittleEndian};
|
||||||
use devices::BusDevice;
|
use devices::BusDevice;
|
||||||
use hypervisor::kvm::kvm_userspace_memory_region;
|
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::os::unix::io::AsRawFd;
|
use std::os::unix::io::AsRawFd;
|
||||||
@ -560,13 +559,13 @@ impl VfioPciDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let slot = mem_slot();
|
let slot = mem_slot();
|
||||||
let mem_region = kvm_userspace_memory_region {
|
let mem_region = vm.make_user_memory_region(
|
||||||
slot,
|
slot,
|
||||||
guest_phys_addr: region.start.raw_value() + mmap_offset,
|
region.start.raw_value() + mmap_offset,
|
||||||
memory_size: mmap_size as u64,
|
mmap_size as u64,
|
||||||
userspace_addr: host_addr as u64,
|
host_addr as u64,
|
||||||
flags: 0,
|
false,
|
||||||
};
|
);
|
||||||
|
|
||||||
vm.set_user_memory_region(mem_region)
|
vm.set_user_memory_region(mem_region)
|
||||||
.map_err(|e| VfioPciError::MapRegionGuest(e.into()))?;
|
.map_err(|e| VfioPciError::MapRegionGuest(e.into()))?;
|
||||||
@ -589,13 +588,13 @@ impl VfioPciDevice {
|
|||||||
let (mmap_offset, _) = self.device.get_region_mmap(region.index);
|
let (mmap_offset, _) = self.device.get_region_mmap(region.index);
|
||||||
|
|
||||||
// Remove region from KVM
|
// Remove region from KVM
|
||||||
let kvm_region = kvm_userspace_memory_region {
|
let kvm_region = self.vm.make_user_memory_region(
|
||||||
slot: mem_slot,
|
mem_slot,
|
||||||
guest_phys_addr: region.start.raw_value() + mmap_offset,
|
region.start.raw_value() + mmap_offset,
|
||||||
memory_size: 0,
|
0,
|
||||||
userspace_addr: host_addr,
|
host_addr as u64,
|
||||||
flags: 0,
|
false,
|
||||||
};
|
);
|
||||||
|
|
||||||
if let Err(e) = self.vm.set_user_memory_region(kvm_region) {
|
if let Err(e) = self.vm.set_user_memory_region(kvm_region) {
|
||||||
error!(
|
error!(
|
||||||
@ -1017,26 +1016,26 @@ impl PciDevice for VfioPciDevice {
|
|||||||
let (mmap_offset, mmap_size) = self.device.get_region_mmap(region.index);
|
let (mmap_offset, mmap_size) = self.device.get_region_mmap(region.index);
|
||||||
|
|
||||||
// Remove old region from KVM
|
// Remove old region from KVM
|
||||||
let old_mem_region = kvm_userspace_memory_region {
|
let old_mem_region = self.vm.make_user_memory_region(
|
||||||
slot: mem_slot,
|
mem_slot,
|
||||||
guest_phys_addr: old_base + mmap_offset,
|
old_base + mmap_offset,
|
||||||
memory_size: 0,
|
0,
|
||||||
userspace_addr: host_addr,
|
host_addr as u64,
|
||||||
flags: 0,
|
false,
|
||||||
};
|
);
|
||||||
|
|
||||||
self.vm
|
self.vm
|
||||||
.set_user_memory_region(old_mem_region)
|
.set_user_memory_region(old_mem_region)
|
||||||
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
|
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
|
||||||
|
|
||||||
// Insert new region to KVM
|
// Insert new region to KVM
|
||||||
let new_mem_region = kvm_userspace_memory_region {
|
let new_mem_region = self.vm.make_user_memory_region(
|
||||||
slot: mem_slot,
|
mem_slot,
|
||||||
guest_phys_addr: new_base + mmap_offset,
|
new_base + mmap_offset,
|
||||||
memory_size: mmap_size as u64,
|
mmap_size as u64,
|
||||||
userspace_addr: host_addr,
|
host_addr as u64,
|
||||||
flags: 0,
|
false,
|
||||||
};
|
);
|
||||||
|
|
||||||
self.vm
|
self.vm
|
||||||
.set_user_memory_region(new_mem_region)
|
.set_user_memory_region(new_mem_region)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user