Correct address calculation for VPP-1168

Use (u64) cast to ensure proper address calculations.

Change-Id: Ifbbe66072eb94bfe33ac04eaa4416abceeb7245e
Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
This commit is contained in:
Lee Roberts
2018-03-24 22:46:19 -06:00
committed by Damjan Marion
parent 487f5474fe
commit 1b8e8252b0
2 changed files with 4 additions and 3 deletions

View File

@ -154,7 +154,8 @@ unix_physmem_region_iommu_register (vlib_physmem_region_t * pr)
vec_foreach_index (i, pr->page_table)
{
dma_map.vaddr = pointer_to_uword (pr->mem) + (i << pr->log2_page_size);
dma_map.vaddr =
pointer_to_uword (pr->mem) + ((u64) i << pr->log2_page_size);
dma_map.size = 1 << pr->log2_page_size;
dma_map.iova = pr->page_table[i];
if (ioctl (fd, VFIO_IOMMU_MAP_DMA, &dma_map) != 0)
@ -221,7 +222,7 @@ unix_physmem_region_alloc (vlib_main_t * vm, char *name, u32 size,
int i;
for (i = 0; i < pr->n_pages; i++)
{
void *ptr = pr->mem + (i << pr->log2_page_size);
void *ptr = pr->mem + ((u64) i << pr->log2_page_size);
int node;
move_pages (0, 1, &ptr, 0, &node, 0);
if (numa_node != node)

View File

@ -167,7 +167,7 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a)
}
if (fd != -1)
if ((ftruncate (fd, n_pages * (1 << log2_page_size))) == -1)
if ((ftruncate (fd, (u64) n_pages * (1 << log2_page_size))) == -1)
{
err = clib_error_return_unix (0, "ftruncate");
goto error;