[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.