diff options
author | Lijian.Zhang <Lijian.Zhang@arm.com> | 2019-08-21 17:51:16 +0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-09-03 15:55:40 +0000 |
commit | ba0da570f264785f6b50eff7829f6653c0924069 (patch) | |
tree | 086908ccf181fd345ebaee7c1d92fb6685c83ed7 /src/vlib/physmem.c | |
parent | 017dc45243bad1b3708d0a9b902d23ca47859344 (diff) |
tap: fix tap interface not working on Arm issue
The VPP code tries to set all userspace memory in the table via IOCTL
to VHOST_SET_MEM_TABLE. But on aarch64, the userspace address range is
larger (48 bits) than that on x86 (47 bits). Below is an segment from
/proc/[vpp]/maps.
fffb41200000-fffb43a00000 rw-s 00000000 00:0e 532232
/anon_hugepage (deleted)
Instead of setting all userspace memory space to vhost-net, will only set
the address space reserved by pmalloc module during initialization.
Type: fix
Change-Id: I91cb35e990869b42094cf2cd0512593733d33677
Signed-off-by: Lijian Zhang <Lijian.Zhang@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Diffstat (limited to 'src/vlib/physmem.c')
-rwxr-xr-x | src/vlib/physmem.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/vlib/physmem.c b/src/vlib/physmem.c index 64920e1ebe2..a62309552f5 100755 --- a/src/vlib/physmem.c +++ b/src/vlib/physmem.c @@ -115,7 +115,12 @@ vlib_physmem_init (vlib_main_t * vm) 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; } |