xen/gnttab: Use phys_addr_t to describe the grant frame base address
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>
This commit is contained in:
Родитель
e17b2f114c
Коммит
47c542050d
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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))
|
||||
|
|
Загрузка…
Ссылка в новой задаче