|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [v3][PATCH 03/16] xen/vtd: create RMRR mapping
> From: Chen, Tiejun
> Sent: Thursday, June 11, 2015 9:15 AM
>
> RMRR reserved regions must be setup in the pfn space with an identity
> mapping to reported mfn. However existing code has problem to setup
> correct mapping when VT-d shares EPT page table, so lead to problem
> when assigning devices (e.g GPU) with RMRR reported. So instead, this
> patch aims to setup identity mapping in p2m layer, regardless of
> whether EPT is shared or not. And we still keep creating VT-d table.
>
> Signed-off-by: Tiejun Chen <tiejun.chen@xxxxxxxxx>
> ---
> xen/arch/x86/mm/p2m.c | 10 ++++++++--
> xen/drivers/passthrough/vtd/iommu.c | 3 +--
> 2 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
> index a6db236..c7198a5 100644
> --- a/xen/arch/x86/mm/p2m.c
> +++ b/xen/arch/x86/mm/p2m.c
> @@ -927,10 +927,16 @@ int set_identity_p2m_entry(struct domain *d, unsigned
> long
> gfn,
> }
>
> gfn_unlock(p2m, gfn, 0);
> - return ret;
> }
> + else
> + ret = 0;
>
> - return 0;
> + if( ret == 0 )
> + {
> + ret = iommu_map_page(d, gfn, gfn, IOMMUF_readable|IOMMUF_writable);
> + }
> +
> + return ret;
p2m_set_entry will setup IOMMU pages already. You don't need
another explicit iommu map here.
> }
>
> /* Returns: 0 for success, -errno for failure */
> diff --git a/xen/drivers/passthrough/vtd/iommu.c
> b/xen/drivers/passthrough/vtd/iommu.c
> index 6a37624..31ce1af 100644
> --- a/xen/drivers/passthrough/vtd/iommu.c
> +++ b/xen/drivers/passthrough/vtd/iommu.c
> @@ -1856,8 +1856,7 @@ static int rmrr_identity_mapping(struct domain *d,
> bool_t map,
>
> while ( base_pfn < end_pfn )
> {
> - int err = intel_iommu_map_page(d, base_pfn, base_pfn,
> - IOMMUF_readable|IOMMUF_writable);
> + int err = set_identity_p2m_entry(d, base_pfn, p2m_access_rw);
>
> if ( err )
> return err;
Tim has another comment to replace earlier unmap with
guest_physmap_remove_page() which will call iommu
unmap internally. Please include this change too.
Thanks
Kevin
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |