mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
i386/tdx: Validate phys_bits against host value
For TDX guest, the phys_bits is not configurable and can only be host/native value. Validate phys_bits inside tdx_check_features(). Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Link: https://lore.kernel.org/r/20250508150002.689633-55-xiaoyao.li@intel.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
ea4867b911
commit
907ee7b67e
@@ -15,7 +15,7 @@
|
||||
#include "system/system.h"
|
||||
|
||||
/* Note: Only safe for use on x86(-64) hosts */
|
||||
static uint32_t host_cpu_phys_bits(void)
|
||||
uint32_t host_cpu_phys_bits(void)
|
||||
{
|
||||
uint32_t eax;
|
||||
uint32_t host_phys_bits;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#ifndef HOST_CPU_H
|
||||
#define HOST_CPU_H
|
||||
|
||||
uint32_t host_cpu_phys_bits(void);
|
||||
void host_cpu_instance_init(X86CPU *cpu);
|
||||
void host_cpu_max_instance_init(X86CPU *cpu);
|
||||
bool host_cpu_realizefn(CPUState *cs, Error **errp);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "cpu-internal.h"
|
||||
#include "host-cpu.h"
|
||||
#include "hw/i386/e820_memory_layout.h"
|
||||
#include "hw/i386/tdvf.h"
|
||||
#include "hw/i386/x86.h"
|
||||
@@ -879,6 +880,13 @@ static int tdx_check_features(X86ConfidentialGuest *cg, CPUState *cs)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (cpu->phys_bits != host_cpu_phys_bits()) {
|
||||
error_report("TDX requires guest CPU physical bits (%u) "
|
||||
"to match host CPU physical bits (%u)",
|
||||
cpu->phys_bits, host_cpu_phys_bits());
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user