Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75909fd6 authored by Isaku Yamahata's avatar Isaku Yamahata Committed by Ingo Molnar
Browse files

xen: portability clean up and some minor clean up for xencomm.c



clean up of xencomm.c. is_phys_contiguous() is arch dependent
function that depends on how virtual memory are laid out.
So split out the function into arch specific code.

Signed-off-by: default avatarIsaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Cc: "Luck, Tony" <tony.luck@intel.com>
parent ed6e5e50
Loading
Loading
Loading
Loading
+4 −19
Original line number Diff line number Diff line
@@ -23,13 +23,7 @@
#include <asm/page.h>
#include <xen/xencomm.h>
#include <xen/interface/xen.h>
#ifdef __ia64__
#include <asm/xen/xencomm.h>	/* for is_kern_addr() */
#endif

#ifdef HAVE_XEN_PLATFORM_COMPAT_H
#include <xen/platform-compat.h>
#endif
#include <asm/xen/xencomm.h>	/* for xencomm_is_phys_contiguous() */

static int xencomm_init(struct xencomm_desc *desc,
			void *buffer, unsigned long bytes)
@@ -157,20 +151,11 @@ static int xencomm_create(void *buffer, unsigned long bytes,
	return 0;
}

/* check if memory address is within VMALLOC region  */
static int is_phys_contiguous(unsigned long addr)
{
	if (!is_kernel_addr(addr))
		return 0;

	return (addr < VMALLOC_START) || (addr >= VMALLOC_END);
}

static struct xencomm_handle *xencomm_create_inline(void *ptr)
{
	unsigned long paddr;

	BUG_ON(!is_phys_contiguous((unsigned long)ptr));
	BUG_ON(!xencomm_is_phys_contiguous((unsigned long)ptr));

	paddr = (unsigned long)xencomm_pa(ptr);
	BUG_ON(paddr & XENCOMM_INLINE_FLAG);
@@ -202,7 +187,7 @@ struct xencomm_handle *xencomm_map(void *ptr, unsigned long bytes)
	int rc;
	struct xencomm_desc *desc;

	if (is_phys_contiguous((unsigned long)ptr))
	if (xencomm_is_phys_contiguous((unsigned long)ptr))
		return xencomm_create_inline(ptr);

	rc = xencomm_create(ptr, bytes, &desc, GFP_KERNEL);
@@ -219,7 +204,7 @@ struct xencomm_handle *__xencomm_map_no_alloc(void *ptr, unsigned long bytes,
	int rc;
	struct xencomm_desc *desc = NULL;

	if (is_phys_contiguous((unsigned long)ptr))
	if (xencomm_is_phys_contiguous((unsigned long)ptr))
		return xencomm_create_inline(ptr);

	rc = xencomm_create_mini(ptr, bytes, xc_desc,