x86/HVM: support IOMMU-related Viridian CPUID bits Signed-off-by: Jan Beulich --- a/xen/arch/x86/hvm/viridian.c +++ b/xen/arch/x86/hvm/viridian.c @@ -50,6 +50,8 @@ #define CPUID6A_APIC_OVERLAY (1 << 0) #define CPUID6A_MSR_BITMAPS (1 << 1) #define CPUID6A_NESTED_PAGING (1 << 3) +#define CPUID6A_DMA_REMAP (1 << 4) +#define CPUID6A_INTR_REMAP (1 << 5) int cpuid_viridian_leaves(unsigned int leaf, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, @@ -111,6 +113,12 @@ int cpuid_viridian_leaves(unsigned int l *eax |= CPUID6A_MSR_BITMAPS; if ( hap_enabled(d) ) *eax |= CPUID6A_NESTED_PAGING; + if ( iommu_enabled ) + { + *eax |= CPUID6A_DMA_REMAP; + if ( iommu_intremap ) + *eax |= CPUID6A_INTR_REMAP; + } break; }