xen/gnttab: Use phys_addr_t to describe the grant frame base address
authorJulien Grall <julien.grall@linaro.org>
Thu, 30 Jan 2014 12:56:34 +0000 (12:56 +0000)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Thu, 30 Jan 2014 12:56:34 +0000 (12:56 +0000)
On ARM, address size can be 32 bits or 64 bits (if CONFIG_ARCH_PHYS_ADDR_T_64BIT
is enabled).
We can't assume that the grant frame base address will always fits in an
unsigned long. Use phys_addr_t instead of unsigned long as argument for
gnttab_setup_auto_xlat_frames.

Signed-off-by: Julien Grall <julien.grall@linaro.org>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
arch/arm/xen/enlighten.c
drivers/xen/grant-table.c
include/xen/grant_table.h

index 3465f25d77020d7b49cb93b4821795abe966a64f..b96723e258a0857a0b148f3299947ba757a28c10 100644 (file)
@@ -234,7 +234,7 @@ static int __init xen_guest_init(void)
        const char *version = NULL;
        const char *xen_prefix = "xen,xen-";
        struct resource res;
-       unsigned long grant_frames;
+       phys_addr_t grant_frames;
 
        node = of_find_compatible_node(NULL, NULL, "xen,xen");
        if (!node) {
@@ -253,8 +253,8 @@ static int __init xen_guest_init(void)
                return 0;
        grant_frames = res.start;
        xen_events_irq = irq_of_parse_and_map(node, 0);
-       pr_info("Xen %s support found, events_irq=%d gnttab_frame_pfn=%lx\n",
-                       version, xen_events_irq, (grant_frames >> PAGE_SHIFT));
+       pr_info("Xen %s support found, events_irq=%d gnttab_frame=%pa\n",
+                       version, xen_events_irq, &grant_frames);
 
        if (xen_events_irq < 0)
                return -ENODEV;
index 1ce1c40331f32568f6db0888cdabe5f73498922a..b84e3ab839aa06650f98e39da40343f26644532d 100644 (file)
@@ -837,7 +837,7 @@ unsigned int gnttab_max_grant_frames(void)
 }
 EXPORT_SYMBOL_GPL(gnttab_max_grant_frames);
 
-int gnttab_setup_auto_xlat_frames(unsigned long addr)
+int gnttab_setup_auto_xlat_frames(phys_addr_t addr)
 {
        xen_pfn_t *pfn;
        unsigned int max_nr_gframes = __max_nr_grant_frames();
@@ -849,8 +849,8 @@ int gnttab_setup_auto_xlat_frames(unsigned long addr)
 
        vaddr = xen_remap(addr, PAGE_SIZE * max_nr_gframes);
        if (vaddr == NULL) {
-               pr_warn("Failed to ioremap gnttab share frames (addr=0x%08lx)!\n",
-                       addr);
+               pr_warn("Failed to ioremap gnttab share frames (addr=%pa)!\n",
+                       &addr);
                return -ENOMEM;
        }
        pfn = kcalloc(max_nr_gframes, sizeof(pfn[0]), GFP_KERNEL);
index 5acb1e4ac0d339cb0e71b62653f4bd5e70cdc638..a5af2a26d94f3f698072b3bf70a444bdb5da7978 100644 (file)
@@ -185,7 +185,7 @@ struct grant_frames {
 };
 extern struct grant_frames xen_auto_xlat_grant_frames;
 unsigned int gnttab_max_grant_frames(void);
-int gnttab_setup_auto_xlat_frames(unsigned long addr);
+int gnttab_setup_auto_xlat_frames(phys_addr_t addr);
 void gnttab_free_auto_xlat_frames(void);
 
 #define gnttab_map_vaddr(map) ((void *)(map.host_virt_addr))