ioremap function can unlikely return an unaligned virtual address if
the physical address itself is unaligned on a page size.
Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
[ ijc -- include asm/page.h to fix build error on x86 ]
#define __XEN_VMAP_H__
#include <xen/types.h>
+#include <asm/page.h>
void *vm_alloc(unsigned int nr, unsigned int align);
void vm_free(const void *);
static inline void iounmap(void __iomem *va)
{
- vunmap((void __force *)va);
+ unsigned long addr = (unsigned long)(void __force *)va;
+
+ vunmap((void *)(addr & PAGE_MASK));
}
void vm_init(void);