|
[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 |