[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 1/4] xen: make logdirty and iommu mutually exclusive
Prevent the usage of global logdirty if the domain is using the IOMMU, and also prevent passthrough of devices if logdirty is enabled. Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx> Cc: Tim Deegan <tim@xxxxxxx> Cc: Jan Beulich <jbeulich@xxxxxxxx> --- Changes since v2: - Check for global logdirty enable in paging_log_dirty_enable instead of doing it in shadow/ept code. - Use the newly introduced global_logdirty flag to check if the domain has global logdirty enabled. --- xen/arch/x86/mm/paging.c | 9 +++++++++ xen/drivers/passthrough/pci.c | 3 ++- 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c index 9e9a11b..32764ba 100644 --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -168,6 +168,15 @@ int paging_log_dirty_enable(struct domain *d, bool_t log_global) { int ret; + if ( need_iommu(d) && log_global ) + { + /* + * Refuse to turn on global log-dirty mode + * if the domain is using the IOMMU. + */ + return -EINVAL; + } + if ( paging_mode_log_dirty(d) ) return -EINVAL; diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index b7f6e8a..43c1a81 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1233,7 +1233,8 @@ static int assign_device(struct domain *d, u16 seg, u8 bus, u8 devfn) * enabled for this domain */ if ( unlikely(!need_iommu(d) && (d->arch.hvm_domain.mem_sharing_enabled || - d->mem_event->paging.ring_page)) ) + d->mem_event->paging.ring_page || + p2m_get_hostp2m(d)->global_logdirty)) ) return -EXDEV; if ( !spin_trylock(&pcidevs_lock) ) -- 1.7.7.5 (Apple Git-26) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |