|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 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>
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
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 |