mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-22 13:45:20 +00:00
Compare commits
4 Commits
c6d5cd78a7
...
6d374d8805
Author | SHA1 | Date | |
---|---|---|---|
|
6d374d8805 | ||
|
11fa24cdcb | ||
|
f0be099461 | ||
|
3f95ada71e |
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -2097,9 +2097,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.13.1"
|
version = "1.13.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
|
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "socket2"
|
name = "socket2"
|
||||||
|
@ -15,7 +15,7 @@ io-uring = { version = "0.6.2", optional = true }
|
|||||||
libc = "0.2.153"
|
libc = "0.2.153"
|
||||||
log = "0.4.20"
|
log = "0.4.20"
|
||||||
remain = "0.2.11"
|
remain = "0.2.11"
|
||||||
smallvec = "1.13.1"
|
smallvec = "1.13.2"
|
||||||
thiserror = "1.0.52"
|
thiserror = "1.0.52"
|
||||||
uuid = { version = "1.3.4", features = ["v4"] }
|
uuid = { version = "1.3.4", features = ["v4"] }
|
||||||
versionize = "0.2.0"
|
versionize = "0.2.0"
|
||||||
|
@ -1162,6 +1162,46 @@ impl cpu::Vcpu for MshvVcpu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn init_pmu(&self, irq: u32) -> cpu::Result<()> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn has_pmu_support(&self) -> bool {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn setup_regs(&self, cpu_id: u8, boot_ip: u64, fdt_start: u64) -> cpu::Result<()> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn get_sys_reg(&self, sys_reg: u32) -> cpu::Result<u64> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn get_reg_list(&self, reg_list: &mut RegList) -> cpu::Result<()> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn vcpu_init(&self, kvi: &VcpuInit) -> cpu::Result<()> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn set_regs(&self, regs: &StandardRegisters) -> cpu::Result<()> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn get_regs(&self) -> cpu::Result<StandardRegisters> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
///
|
///
|
||||||
/// X86 specific call to setup the CPUID registers.
|
/// X86 specific call to setup the CPUID registers.
|
||||||
@ -2017,4 +2057,14 @@ impl vm::Vm for MshvVm {
|
|||||||
.complete_isolated_import(&data)
|
.complete_isolated_import(&data)
|
||||||
.map_err(|e| vm::HypervisorVmError::CompleteIsolatedImport(e.into()))
|
.map_err(|e| vm::HypervisorVmError::CompleteIsolatedImport(e.into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn create_vgic(&self, config: VgicConfig) -> vm::Result<Arc<Mutex<dyn Vgic>>> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn get_preferred_target(&self, kvi: &mut VcpuInit) -> vm::Result<()> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,7 +268,11 @@ pub struct NetConfig {
|
|||||||
pub vhost_mode: VhostMode,
|
pub vhost_mode: VhostMode,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub id: Option<String>,
|
pub id: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(
|
||||||
|
default,
|
||||||
|
serialize_with = "serialize_netconfig_fds",
|
||||||
|
deserialize_with = "deserialize_netconfig_fds"
|
||||||
|
)]
|
||||||
pub fds: Option<Vec<i32>>,
|
pub fds: Option<Vec<i32>>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub rate_limiter_config: Option<RateLimiterConfig>,
|
pub rate_limiter_config: Option<RateLimiterConfig>,
|
||||||
@ -314,6 +318,32 @@ pub fn default_netconfig_queue_size() -> u16 {
|
|||||||
DEFAULT_NET_QUEUE_SIZE
|
DEFAULT_NET_QUEUE_SIZE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn serialize_netconfig_fds<S>(x: &Option<Vec<i32>>, s: S) -> Result<S::Ok, S::Error>
|
||||||
|
where
|
||||||
|
S: serde::Serializer,
|
||||||
|
{
|
||||||
|
if let Some(x) = x {
|
||||||
|
warn!("'NetConfig' contains FDs that can't be serialized correctly. Serializing them as invalid FDs.");
|
||||||
|
let invalid_fds = vec![-1; x.len()];
|
||||||
|
s.serialize_some(&invalid_fds)
|
||||||
|
} else {
|
||||||
|
s.serialize_none()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn deserialize_netconfig_fds<'de, D>(d: D) -> Result<Option<Vec<i32>>, D::Error>
|
||||||
|
where
|
||||||
|
D: serde::Deserializer<'de>,
|
||||||
|
{
|
||||||
|
let invalid_fds: Option<Vec<i32>> = Option::deserialize(d)?;
|
||||||
|
if let Some(invalid_fds) = invalid_fds {
|
||||||
|
warn!("'NetConfig' contains FDs that can't be deserialized correctly. Deserializing them as invalid FDs.");
|
||||||
|
Ok(Some(vec![-1; invalid_fds.len()]))
|
||||||
|
} else {
|
||||||
|
Ok(None)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct RngConfig {
|
pub struct RngConfig {
|
||||||
pub src: PathBuf,
|
pub src: PathBuf,
|
||||||
|
Loading…
Reference in New Issue
Block a user