[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/1] xen:vtd: missing RMRR mapping while share EPT



>>> On 23.07.14 at 11:35, <tiejun.chen@xxxxxxxxx> wrote:
> intel_iommu_map_page() does nothing if VT-d shares EPT page table.
> So rmrr_identity_mapping() never create RMRR mapping but in some
> cases like some GFX drivers it still need to access RMRR.
> 
> Here we will create those RMRR mappings even in shared EPT case.

Technically this is fine, but there are mechanical issues:

> @@ -1867,7 +1869,19 @@ static int rmrr_identity_mapping(struct domain *d,
>  
>      while ( base_pfn < end_pfn )
>      {
> -        if ( intel_iommu_map_page(d, base_pfn, base_pfn,
> +        if ( iommu_use_hap_pt(d) ) {
> +            dprintk(XENLOG_DEBUG VTDPREFIX,
> +                    "Set RMRR mapping: pfn:0x%lx mfn:0x%lx.\n",
> +                    base_pfn, mfn_x(_mfn(base_pfn)));

Do we really need this message, even more so not at guest level?
And if you're convinced we need it, please use %#lx instead of
0x%lx.

> +            p2m_lock(p2m);
> +            if ( p2m_set_entry(p2m, base_pfn, _mfn(base_pfn), PAGE_ORDER_4K,
> +                    p2m_mmio_direct, p2m_access_rw) ) {
> +                p2m_unlock(p2m);
> +                return -1;
> +            }
> +            p2m_unlock(p2m);
> +        }
> +        else if ( intel_iommu_map_page(d, base_pfn, base_pfn,
>                                    IOMMUF_readable|IOMMUF_writable) )
>              return -1;
>          base_pfn++;

Apart from the above there are several coding style issues here.

Jan


_______________________________________________
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®.