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:

committed by
Damjan Marion

parent
487f5474fe
commit
1b8e8252b0
@ -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)
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user