From: Julien Grall Date: Tue, 12 Dec 2017 19:02:06 +0000 (+0000) Subject: xen/arm: domain_build: Use copy_to_guest_phys_flush_dcache in dtb_load X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~926 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=92920865647bd344287f42705d13e01a29192ec1;p=xen.git xen/arm: domain_build: Use copy_to_guest_phys_flush_dcache in dtb_load The function dtb_load is dealing with IPA but uses gvirt_to_maddr to do the translation. This is currently working fine because the stage-1 MMU is disabled. Rather than relying on such assumption, use the new copy_to_guest_phys_flush_dcache. This also result to a slightly more comprehensible code. Signed-off-by: Julien Grall Reviewed-by: Stefano Stabellini --- diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 66fd77def6..155c952349 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1950,14 +1950,15 @@ static int prepare_acpi(struct domain *d, struct kernel_info *kinfo) #endif static void dtb_load(struct kernel_info *kinfo) { - void * __user dtb_virt = (void * __user)(register_t)kinfo->dtb_paddr; unsigned long left; printk("Loading dom0 DTB to 0x%"PRIpaddr"-0x%"PRIpaddr"\n", kinfo->dtb_paddr, kinfo->dtb_paddr + fdt_totalsize(kinfo->fdt)); - left = raw_copy_to_guest_flush_dcache(dtb_virt, kinfo->fdt, - fdt_totalsize(kinfo->fdt)); + left = copy_to_guest_phys_flush_dcache(kinfo->d, kinfo->dtb_paddr, + kinfo->fdt, + fdt_totalsize(kinfo->fdt)); + if ( left != 0 ) panic("Unable to copy the DTB to dom0 memory (left = %lu bytes)", left); xfree(kinfo->fdt);