|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] Convert map_domain_page() to use the new mfn_t type
On 01/07/15 14:41, Ben Catterall wrote:
> Reworked the internals and declaration, applying (un)boxing
> where needed. Converted calls to map_domain_page() to
> provide mfn_t types, boxing where needed.
>
> Signed-off-by: Ben Catterall <Ben.Catterall@xxxxxxxxxx>
> ---
> xen/arch/arm/domain_build.c | 2 +-
> xen/arch/arm/kernel.c | 2 +-
> xen/arch/arm/mm.c | 12 +++++-----
> xen/arch/arm/p2m.c | 4 ++--
> xen/arch/arm/traps.c | 4 ++--
> xen/arch/x86/debug.c | 10 ++++----
> xen/arch/x86/domain.c | 4 ++--
> xen/arch/x86/domain_build.c | 10 ++++----
> xen/arch/x86/domain_page.c | 22 ++++++++---------
> xen/arch/x86/domctl.c | 2 +-
> xen/arch/x86/mm.c | 40
> +++++++++++++++----------------
> xen/arch/x86/mm/guest_walk.c | 2 +-
> xen/arch/x86/mm/hap/guest_walk.c | 2 +-
> xen/arch/x86/mm/mem_sharing.c | 4 ++--
> xen/arch/x86/mm/p2m-ept.c | 22 ++++++++---------
> xen/arch/x86/mm/p2m-pod.c | 8 +++----
> xen/arch/x86/mm/p2m-pt.c | 28 +++++++++++-----------
> xen/arch/x86/mm/p2m.c | 2 +-
> xen/arch/x86/mm/paging.c | 32 ++++++++++++-------------
> xen/arch/x86/mm/shadow/common.c | 2 +-
> xen/arch/x86/mm/shadow/multi.c | 4 ++--
> xen/arch/x86/mm/shadow/private.h | 2 +-
> xen/arch/x86/smpboot.c | 2 +-
> xen/arch/x86/tboot.c | 4 ++--
> xen/arch/x86/traps.c | 12 +++++-----
> xen/arch/x86/x86_64/mm.c | 14 +++++------
> xen/arch/x86/x86_64/traps.c | 10 ++++----
> xen/arch/x86/x86_emulate.c | 10 ++++----
> xen/common/grant_table.c | 4 ++--
> xen/common/kexec.c | 4 ++--
> xen/common/kimage.c | 10 ++++----
> xen/common/memory.c | 6 ++---
> xen/common/tmem_xen.c | 6 ++---
> xen/drivers/passthrough/amd/iommu_guest.c | 10 ++++----
> xen/drivers/passthrough/amd/iommu_map.c | 14 +++++------
> xen/drivers/passthrough/vtd/x86/vtd.c | 2 +-
> xen/include/asm-x86/hap.h | 2 +-
> xen/include/asm-x86/page.h | 6 ++---
> xen/include/asm-x86/paging.h | 2 +-
> xen/include/xen/domain_page.h | 8 +++----
> 40 files changed, 173 insertions(+), 173 deletions(-)
Wow - this is a rather larger patch than I would have guessed. Good work!
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
As this is a cleanup patch, I have a few further suggestions.
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index e9cb8a9..01add40 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1322,7 +1322,7 @@ static void initrd_load(struct kernel_info *kinfo)
> return;
> }
>
> - dst = map_domain_page(ma>>PAGE_SHIFT);
> + dst = map_domain_page(_mfn(ma>>PAGE_SHIFT));
>
> copy_from_paddr(dst + s, paddr + offs, l);
>
> diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
> index 209c3dd..8b2bf9b 100644
> --- a/xen/arch/arm/kernel.c
> +++ b/xen/arch/arm/kernel.c
> @@ -182,7 +182,7 @@ static void kernel_zimage_load(struct kernel_info *info)
> return;
> }
>
> - dst = map_domain_page(ma>>PAGE_SHIFT);
> + dst = map_domain_page(_mfn(ma>>PAGE_SHIFT));
These two hunks should use _mfn(paddr_to_mfn(ma)) rather than
open-coding paddr_to_mfn()
> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
> index 258d4c5..71c0fd9 100644
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -2263,7 +2263,7 @@ void dump_guest_s1_walk(struct domain *d, vaddr_t addr)
> printk("Failed TTBR0 maddr lookup\n");
> goto done;
> }
> - first = map_domain_page(paddr>>PAGE_SHIFT);
> + first = map_domain_page(_mfn(paddr>>PAGE_SHIFT));
>
> offset = addr >> (12+10);
> printk("1ST[0x%"PRIx32"] (0x%"PRIpaddr") = 0x%08"PRIx32"\n",
> @@ -2279,7 +2279,7 @@ void dump_guest_s1_walk(struct domain *d, vaddr_t addr)
> printk("Failed L1 entry maddr lookup\n");
> goto done;
> }
> - second = map_domain_page(paddr>>PAGE_SHIFT);
> + second = map_domain_page(_mfn(paddr>>PAGE_SHIFT));
Similarly, these should be _mfn(paddr_to_mfn(paddr))
> diff --git a/xen/arch/x86/mm/shadow/private.h
> b/xen/arch/x86/mm/shadow/private.h
> index eff39dc..31b36ef 100644
> --- a/xen/arch/x86/mm/shadow/private.h
> +++ b/xen/arch/x86/mm/shadow/private.h
> @@ -508,7 +508,7 @@ sh_mfn_is_a_page_table(mfn_t gmfn)
> static inline void *
> sh_map_domain_page(mfn_t mfn)
> {
> - return map_domain_page(mfn_x(mfn));
> + return map_domain_page(mfn);
> }
As a smaller further patch, you should drop sh_{,un}map_domain_page().
They were just wrappers to make a map_domain_page()-like-thing which
took an mfn_t.
> diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c
> index 01b9530..af8bbf6 100644
> --- a/xen/arch/x86/tboot.c
> +++ b/xen/arch/x86/tboot.c
> @@ -161,7 +161,7 @@ static void update_iommu_mac(vmac_ctx_t *ctx, uint64_t
> pt_maddr, int level)
> if ( pt_maddr == 0 )
> return;
>
> - pt_vaddr = (struct dma_pte *)map_domain_page(pt_maddr >> PAGE_SHIFT_4K);
> + pt_vaddr = (struct dma_pte *)map_domain_page(_mfn(pt_maddr >>
> PAGE_SHIFT_4K));
Again, _mfn(paddr_to_mfn(pt_maddr)).
> diff --git a/xen/common/kimage.c b/xen/common/kimage.c
> index 742e4e8..91f7299 100644
> --- a/xen/common/kimage.c
> +++ b/xen/common/kimage.c
> @@ -495,10 +495,10 @@ static void kimage_terminate(struct kexec_image *image)
> * Call unmap_domain_page(ptr) after the loop exits.
> */
> #define for_each_kimage_entry(image, ptr, entry) \
> - for ( ptr = map_domain_page(image->head >> PAGE_SHIFT); \
> + for ( ptr = map_domain_page(_mfn(image->head >> PAGE_SHIFT)); \
> (entry = *ptr) && !(entry & IND_DONE); \
> ptr = (entry & IND_INDIRECTION) ? \
> - (unmap_domain_page(ptr), map_domain_page(entry >> PAGE_SHIFT))
> \
> + (unmap_domain_page(ptr), map_domain_page(_mfn(entry >>
> PAGE_SHIFT))) \
> : ptr + 1 )
>
And here.
> diff --git a/xen/drivers/passthrough/amd/iommu_map.c
> b/xen/drivers/passthrough/amd/iommu_map.c
> index 64c5225..a4d43b2 100644
> --- a/xen/drivers/passthrough/amd/iommu_map.c
> +++ b/xen/drivers/passthrough/amd/iommu_map.c
> @@ -349,12 +349,12 @@ static int iommu_update_pde_count(struct domain *d,
> unsigned long pt_mfn,
> next_level = merge_level - 1;
>
> /* get pde at merge level */
> - table = map_domain_page(pt_mfn);
> + table = map_domain_page(_mfn(pt_mfn));
> pde = table + pfn_to_pde_idx(gfn, merge_level);
>
> /* get page table of next level */
> ntable_maddr = amd_iommu_get_next_table_from_pte((u32*)pde);
> - ntable = map_domain_page(ntable_maddr >> PAGE_SHIFT);
> + ntable = map_domain_page(_mfn(ntable_maddr >> PAGE_SHIFT));
And here.
> diff --git a/xen/drivers/passthrough/vtd/x86/vtd.c
> b/xen/drivers/passthrough/vtd/x86/vtd.c
> index 109234e..8a79e08 100644
> --- a/xen/drivers/passthrough/vtd/x86/vtd.c
> +++ b/xen/drivers/passthrough/vtd/x86/vtd.c
> @@ -41,7 +41,7 @@ boolean_param("iommu_inclusive_mapping",
> iommu_inclusive_mapping);
>
> void *map_vtd_domain_page(u64 maddr)
> {
> - return map_domain_page(maddr >> PAGE_SHIFT_4K);
> + return map_domain_page(_mfn(maddr >> PAGE_SHIFT_4K));
> }
And here.
>
> void unmap_vtd_domain_page(void *va)
> diff --git a/xen/include/asm-x86/hap.h b/xen/include/asm-x86/hap.h
> index 7876527..ca590f3 100644
> --- a/xen/include/asm-x86/hap.h
> +++ b/xen/include/asm-x86/hap.h
> @@ -37,7 +37,7 @@
> static inline void *
> hap_map_domain_page(mfn_t mfn)
> {
> - return map_domain_page(mfn_x(mfn));
> + return map_domain_page(mfn);
> }
Also worth removing hap_{,un}map_domain_page() when you remove the
shadow variants.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |