Compare commits
3 Commits
eaf513769d
...
9f346ae461
Author | SHA1 | Date |
---|---|---|
Yi Wang | 9f346ae461 | |
dependabot[bot] | e99540e5e9 | |
Yi Wang | a511497b0a |
|
@ -720,9 +720,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.114"
|
||||
version = "1.0.115"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
|
||||
checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
|
|
@ -177,18 +177,29 @@ impl InterruptSourceGroup for MsiInterruptGroup {
|
|||
route: self.vm.make_routing_entry(route.gsi, &config),
|
||||
masked,
|
||||
};
|
||||
|
||||
// When mask a msi irq, entry.masked is set to be true,
|
||||
// and the gsi will not be passed to KVM through KVM_SET_GSI_ROUTING.
|
||||
// so it's safe to call disable() which deassign KVM_IRQFD
|
||||
// before set_gsi_routes().
|
||||
if masked {
|
||||
route.disable(&self.vm)?;
|
||||
} else {
|
||||
route.enable(&self.vm)?;
|
||||
}
|
||||
|
||||
let mut routes = self.gsi_msi_routes.lock().unwrap();
|
||||
routes.insert(route.gsi, entry);
|
||||
if set_gsi {
|
||||
return self.set_gsi_routes(&routes);
|
||||
} else {
|
||||
return Ok(());
|
||||
self.set_gsi_routes(&routes)?;
|
||||
}
|
||||
|
||||
// Assign KVM_IRQFD after KVM_SET_GSI_ROUTING to avoid
|
||||
// panic on kernel which not have commit a80ced6ea514
|
||||
// (KVM: SVM: fix panic on out-of-bounds guest IRQ).
|
||||
if !masked {
|
||||
route.enable(&self.vm)?;
|
||||
}
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
Err(io::Error::new(
|
||||
|
|
Loading…
Reference in New Issue