[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/4] xen: make logdirty and iommu mutually exclusive
Hi, At 10:16 +0200 on 23 Apr (1398244581), Roger Pau Monne wrote: > 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> Yes, this is the sort of thing I had in mind (thuogh I agree with Jan's review comments). Cheers, Tim. > --- > xen/arch/x86/mm/hap/hap.c | 9 +++++++++ > xen/arch/x86/mm/shadow/common.c | 9 +++++++++ > xen/drivers/passthrough/iommu.c | 3 ++- > 3 files changed, 20 insertions(+), 1 deletions(-) > > diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c > index 68a0c25..352edfd 100644 > --- a/xen/arch/x86/mm/hap/hap.c > +++ b/xen/arch/x86/mm/hap/hap.c > @@ -175,6 +175,15 @@ out: > */ > static int hap_enable_log_dirty(struct domain *d, bool_t log_global) > { > + > + if ( iommu_enabled && need_iommu(d) && log_global ) > + { > + /* > + * Refuse to turn on global log-dirty mode > + * if the domain is using the IOMMU. > + */ > + return -EINVAL; > + } > /* turn on PG_log_dirty bit in paging mode */ > paging_lock(d); > d->arch.paging.mode |= PG_log_dirty; > diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c > index 9258d2a..dd55455 100644 > --- a/xen/arch/x86/mm/shadow/common.c > +++ b/xen/arch/x86/mm/shadow/common.c > @@ -3422,6 +3422,15 @@ int shadow_enable_log_dirty(struct domain *d, bool_t > log_global) > { > int ret; > > + if ( iommu_enabled && need_iommu(d) && log_global ) > + { > + /* > + * Refuse to turn on global log-dirty mode > + * if the domain is using the IOMMU. > + */ > + return -EINVAL; > + } > + > paging_lock(d); > if ( shadow_mode_enabled(d) ) > { > diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c > index 0cf0748..ef6660f 100644 > --- a/xen/drivers/passthrough/iommu.c > +++ b/xen/drivers/passthrough/iommu.c > @@ -292,7 +292,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 || > + paging_mode_log_dirty(d))) ) > 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 |