|
@@ -3629,6 +3629,12 @@ static void vtd_init(IntelIOMMUState *s)
|
|
vtd_spte_rsvd_large[3] = VTD_SPTE_LPAGE_L3_RSVD_MASK(s->aw_bits,
|
|
vtd_spte_rsvd_large[3] = VTD_SPTE_LPAGE_L3_RSVD_MASK(s->aw_bits,
|
|
x86_iommu->dt_supported);
|
|
x86_iommu->dt_supported);
|
|
|
|
|
|
|
|
+ if (s->scalable_mode) {
|
|
|
|
+ vtd_spte_rsvd[1] &= ~VTD_SPTE_SNP;
|
|
|
|
+ vtd_spte_rsvd_large[2] &= ~VTD_SPTE_SNP;
|
|
|
|
+ vtd_spte_rsvd_large[3] &= ~VTD_SPTE_SNP;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (x86_iommu_ir_supported(x86_iommu)) {
|
|
if (x86_iommu_ir_supported(x86_iommu)) {
|
|
s->ecap |= VTD_ECAP_IR | VTD_ECAP_MHMV;
|
|
s->ecap |= VTD_ECAP_IR | VTD_ECAP_MHMV;
|
|
if (s->intr_eim == ON_OFF_AUTO_ON) {
|
|
if (s->intr_eim == ON_OFF_AUTO_ON) {
|