#include <vlib/pci/pci.h>
#include <vlib/linux/vfio.h>
-#ifdef __x86_64__
+#if defined(__x86_64__) && !defined(CLIB_SANITIZE_ADDR)
/* we keep physmem in low 38 bits of VA address space as some
IOMMU implamentation cannot map above that range */
#define VLIB_PHYSMEM_DEFAULT_BASE_ADDDR (1ULL << 36)
if (vpm->base_addr == 0)
vpm->base_addr = VLIB_PHYSMEM_DEFAULT_BASE_ADDDR;
- clib_pmalloc_init (vpm->pmalloc_main, vpm->base_addr, 0);
+ clib_pmalloc_init (vpm->pmalloc_main, vpm->base_addr, vpm->max_size);
+
+ /* update base_addr and max_size per actual allocation */
+ vpm->base_addr = (uword) vpm->pmalloc_main->base;
+ vpm->max_size = (uword) vpm->pmalloc_main->max_pages <<
+ vpm->pmalloc_main->def_log2_page_sz;
return error;
}
{
if (unformat (input, "base-addr 0x%lx", &vpm->base_addr))
;
+ else if (unformat (input, "max-size %U",
+ unformat_memory_size, &vpm->max_size))
+ ;
else
return unformat_parse_error (input);
}