Change-Id: Ibbba75d069ca1bbf9e5a1b8bd2f405d32021c656
Signed-off-by: Florin Coras <fcoras@cisco.com>
u32 pagesize = clib_mem_get_page_size ();
ssvm_shared_header_t *sh;
mheap_t *heap_header;
u32 pagesize = clib_mem_get_page_size ();
ssvm_shared_header_t *sh;
mheap_t *heap_header;
- rnd_size = (ssvm->ssvm_size + (pagesize - 1)) & ~pagesize;
+ rnd_size = (ssvm->ssvm_size + (pagesize - 1)) & ~(pagesize - 1);
+ rnd_size = clib_min (rnd_size, ((u64) 1 << 32) - pagesize);
heap = mheap_alloc (0, rnd_size);
if (heap == 0)
{
heap = mheap_alloc (0, rnd_size);
if (heap == 0)
{
segment_manager_add_segment (segment_manager_t * sm, u32 segment_size)
{
segment_manager_main_t *smm = &segment_manager_main;
segment_manager_add_segment (segment_manager_t * sm, u32 segment_size)
{
segment_manager_main_t *smm = &segment_manager_main;
- u32 rnd_margin = 128 << 10, seg_index;
+ u32 rnd_margin = 128 << 10, seg_index, page_size;
segment_manager_properties_t *props;
uword baseva = (u64) ~ 0, alloc_size;
svm_fifo_segment_private_t *seg;
segment_manager_properties_t *props;
uword baseva = (u64) ~ 0, alloc_size;
svm_fifo_segment_private_t *seg;
* Initialize ssvm segment and svm fifo private header
*/
segment_size = segment_size ? segment_size : props->add_segment_size;
* Initialize ssvm segment and svm fifo private header
*/
segment_size = segment_size ? segment_size : props->add_segment_size;
+ page_size = clib_mem_get_page_size ();
+ segment_size = (segment_size + page_size - 1) & ~(page_size - 1);
if (props->segment_type != SSVM_SEGMENT_PRIVATE)
{
seg_name = format (0, "%d-%d%c", getpid (), segment_name_counter++, 0);
if (props->segment_type != SSVM_SEGMENT_PRIVATE)
{
seg_name = format (0, "%d-%d%c", getpid (), segment_name_counter++, 0);