mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-10 04:18:26 +00:00
runtime-rs: add IOMMU to qemu VM if configured
The adding itself is done by a new function add_iommu() that conforms with the add_*() convention. Note though that this function is called internally, by the QemuCmdLine constructor, simply because there's nothing to trigger its invocation from QemuInner (unlike the other add_*() functions so far). Signed-off-by: Pavel Mores <pmores@redhat.com>
This commit is contained in:
parent
0859f47a17
commit
d1e6f9cc4e
@ -1191,7 +1191,7 @@ pub struct QemuCmdLine<'a> {
|
|||||||
|
|
||||||
impl<'a> QemuCmdLine<'a> {
|
impl<'a> QemuCmdLine<'a> {
|
||||||
pub fn new(id: &str, config: &'a HypervisorConfig) -> Result<QemuCmdLine<'a>> {
|
pub fn new(id: &str, config: &'a HypervisorConfig) -> Result<QemuCmdLine<'a>> {
|
||||||
Ok(QemuCmdLine {
|
let mut qemu_cmd_line = QemuCmdLine {
|
||||||
id: id.to_string(),
|
id: id.to_string(),
|
||||||
config,
|
config,
|
||||||
kernel: Kernel::new(config)?,
|
kernel: Kernel::new(config)?,
|
||||||
@ -1202,7 +1202,13 @@ impl<'a> QemuCmdLine<'a> {
|
|||||||
rtc: Rtc::new(),
|
rtc: Rtc::new(),
|
||||||
knobs: Knobs::new(config),
|
knobs: Knobs::new(config),
|
||||||
devices: Vec::new(),
|
devices: Vec::new(),
|
||||||
})
|
};
|
||||||
|
|
||||||
|
if config.device_info.enable_iommu {
|
||||||
|
qemu_cmd_line.add_iommu();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(qemu_cmd_line)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn bus_type(&self) -> VirtioBusType {
|
fn bus_type(&self) -> VirtioBusType {
|
||||||
@ -1213,6 +1219,17 @@ impl<'a> QemuCmdLine<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn add_iommu(&mut self) {
|
||||||
|
let dev_iommu = DeviceIntelIommu::new();
|
||||||
|
self.devices.push(Box::new(dev_iommu));
|
||||||
|
|
||||||
|
self.kernel
|
||||||
|
.params
|
||||||
|
.append(&mut KernelParams::from_string("intel_iommu=on iommu=pt"));
|
||||||
|
|
||||||
|
self.machine.set_kernel_irqchip("split");
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add_virtiofs_share(
|
pub fn add_virtiofs_share(
|
||||||
&mut self,
|
&mut self,
|
||||||
virtiofsd_socket_path: &str,
|
virtiofsd_socket_path: &str,
|
||||||
|
Loading…
Reference in New Issue
Block a user