hypervisor: Support compiling "tdx" and "mshv" feature together

TDX functionality is not currently available on MSHV but we should not
preclude building a binary that can run on both.

Fixes: #4677

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2022-09-27 12:28:30 +01:00
parent 3bf3cca70a
commit b8503b5f45
3 changed files with 25 additions and 11 deletions

View File

@ -406,7 +406,9 @@ pub trait Vcpu: Send + Sync {
/// Initialize TDX support on the vCPU /// Initialize TDX support on the vCPU
/// ///
#[cfg(feature = "tdx")] #[cfg(feature = "tdx")]
fn tdx_init(&self, hob_address: u64) -> Result<()>; fn tdx_init(&self, _hob_address: u64) -> Result<()> {
unimplemented!()
}
/// ///
/// Set the "immediate_exit" state /// Set the "immediate_exit" state
/// ///
@ -415,12 +417,16 @@ pub trait Vcpu: Send + Sync {
/// ///
/// Returns the details about TDX exit reason /// Returns the details about TDX exit reason
/// ///
fn get_tdx_exit_details(&mut self) -> Result<TdxExitDetails>; fn get_tdx_exit_details(&mut self) -> Result<TdxExitDetails> {
unimplemented!()
}
#[cfg(feature = "tdx")] #[cfg(feature = "tdx")]
/// ///
/// Set the status code for TDX exit /// Set the status code for TDX exit
/// ///
fn set_tdx_status(&mut self, status: TdxExitStatus); fn set_tdx_status(&mut self, _status: TdxExitStatus) {
unimplemented!()
}
#[cfg(target_arch = "x86_64")] #[cfg(target_arch = "x86_64")]
/// ///
/// Return the list of initial MSR entries for a VCPU /// Return the list of initial MSR entries for a VCPU

View File

@ -124,7 +124,9 @@ pub trait Hypervisor: Send + Sync {
/// Retrieve TDX capabilities /// Retrieve TDX capabilities
/// ///
#[cfg(feature = "tdx")] #[cfg(feature = "tdx")]
fn tdx_capabilities(&self) -> Result<TdxCapabilities>; fn tdx_capabilities(&self) -> Result<TdxCapabilities> {
unimplemented!()
}
/// ///
/// Get the number of supported hardware breakpoints /// Get the number of supported hardware breakpoints
/// ///

View File

@ -326,19 +326,25 @@ pub trait Vm: Send + Sync + Any {
fn get_dirty_log(&self, slot: u32, base_gpa: u64, memory_size: u64) -> Result<Vec<u64>>; fn get_dirty_log(&self, slot: u32, base_gpa: u64, memory_size: u64) -> Result<Vec<u64>>;
#[cfg(feature = "tdx")] #[cfg(feature = "tdx")]
/// Initalize TDX on this VM /// Initalize TDX on this VM
fn tdx_init(&self, cpuid: &[CpuIdEntry], max_vcpus: u32) -> Result<()>; fn tdx_init(&self, _cpuid: &[CpuIdEntry], _max_vcpus: u32) -> Result<()> {
unimplemented!()
}
#[cfg(feature = "tdx")] #[cfg(feature = "tdx")]
/// Finalize the configuration of TDX on this VM /// Finalize the configuration of TDX on this VM
fn tdx_finalize(&self) -> Result<()>; fn tdx_finalize(&self) -> Result<()> {
unimplemented!()
}
#[cfg(feature = "tdx")] #[cfg(feature = "tdx")]
/// Initalize a TDX memory region for this VM /// Initalize a TDX memory region for this VM
fn tdx_init_memory_region( fn tdx_init_memory_region(
&self, &self,
host_address: u64, _host_address: u64,
guest_address: u64, _guest_address: u64,
size: u64, _size: u64,
measure: bool, _measure: bool,
) -> Result<()>; ) -> Result<()> {
unimplemented!()
}
/// Downcast to the underlying hypervisor VM type /// Downcast to the underlying hypervisor VM type
fn as_any(&self) -> &dyn Any; fn as_any(&self) -> &dyn Any;
} }