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: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu> Cc: "Luck, Tony" <tony.luck@intel.com>
This commit is contained in:
parent
ed6e5e507e
commit
75909fd619
1 changed files with 4 additions and 19 deletions
|
@ -23,13 +23,7 @@
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
#include <xen/xencomm.h>
|
#include <xen/xencomm.h>
|
||||||
#include <xen/interface/xen.h>
|
#include <xen/interface/xen.h>
|
||||||
#ifdef __ia64__
|
#include <asm/xen/xencomm.h> /* for xencomm_is_phys_contiguous() */
|
||||||
#include <asm/xen/xencomm.h> /* for is_kern_addr() */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_XEN_PLATFORM_COMPAT_H
|
|
||||||
#include <xen/platform-compat.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int xencomm_init(struct xencomm_desc *desc,
|
static int xencomm_init(struct xencomm_desc *desc,
|
||||||
void *buffer, unsigned long bytes)
|
void *buffer, unsigned long bytes)
|
||||||
|
@ -157,20 +151,11 @@ static int xencomm_create(void *buffer, unsigned long bytes,
|
||||||
return 0;
|
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)
|
static struct xencomm_handle *xencomm_create_inline(void *ptr)
|
||||||
{
|
{
|
||||||
unsigned long paddr;
|
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);
|
paddr = (unsigned long)xencomm_pa(ptr);
|
||||||
BUG_ON(paddr & XENCOMM_INLINE_FLAG);
|
BUG_ON(paddr & XENCOMM_INLINE_FLAG);
|
||||||
|
@ -202,7 +187,7 @@ struct xencomm_handle *xencomm_map(void *ptr, unsigned long bytes)
|
||||||
int rc;
|
int rc;
|
||||||
struct xencomm_desc *desc;
|
struct xencomm_desc *desc;
|
||||||
|
|
||||||
if (is_phys_contiguous((unsigned long)ptr))
|
if (xencomm_is_phys_contiguous((unsigned long)ptr))
|
||||||
return xencomm_create_inline(ptr);
|
return xencomm_create_inline(ptr);
|
||||||
|
|
||||||
rc = xencomm_create(ptr, bytes, &desc, GFP_KERNEL);
|
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;
|
int rc;
|
||||||
struct xencomm_desc *desc = NULL;
|
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);
|
return xencomm_create_inline(ptr);
|
||||||
|
|
||||||
rc = xencomm_create_mini(ptr, bytes, xc_desc,
|
rc = xencomm_create_mini(ptr, bytes, xc_desc,
|
||||||
|
|
Loading…
Reference in a new issue