|
@@ -3834,6 +3834,7 @@ static const Property vtd_properties[] = {
|
|
|
DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true),
|
|
|
DEFINE_PROP_BOOL("dma-translation", IntelIOMMUState, dma_translation, true),
|
|
|
DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false),
|
|
|
+ DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true),
|
|
|
};
|
|
|
|
|
|
/* Read IRTE entry with specific index */
|
|
@@ -4561,7 +4562,9 @@ static void vtd_cap_init(IntelIOMMUState *s)
|
|
|
/* TODO: read cap/ecap from host to decide which cap to be exposed. */
|
|
|
if (s->flts) {
|
|
|
s->ecap |= VTD_ECAP_SMTS | VTD_ECAP_FLTS;
|
|
|
- s->cap |= VTD_CAP_FS1GP;
|
|
|
+ if (s->fs1gp) {
|
|
|
+ s->cap |= VTD_CAP_FS1GP;
|
|
|
+ }
|
|
|
} else if (s->scalable_mode) {
|
|
|
s->ecap |= VTD_ECAP_SMTS | VTD_ECAP_SRS | VTD_ECAP_SLTS;
|
|
|
}
|