On 5/18/2016 12:04 PM, Olivier Matz wrote:
> Introduce rte_mempool_populate_default() which allocates
> mempool objects in several memzones.
> 
> The mempool header is now always allocated in a specific memzone
> (not with its objects). Thanks to this modification, we can remove
> many specific behavior that was required when hugepages are not
> enabled in case we are using rte_mempool_xmem_create().
> 
> This change requires to update how kni and mellanox drivers lookup for
> mbuf memory. For now, this will only work if there is only one memory
> chunk (like today), but we could make use of rte_mempool_mem_iter() to
> support more memory chunks.
> 
> We can also remove RTE_MEMPOOL_OBJ_NAME that is not required anymore for
> the lookup, as memory chunks are referenced by the mempool.
> 
> Note that rte_mempool_create() is still broken (it was the case before)
> when there is no hugepages support (rte_mempool_create_xmem() has to be
> used). This is fixed in next commit.
> 
> Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
> ---

<snip>

> -     if (vaddr == NULL) {
> -             /* calculate address of the first elt for continuous mempool. */
> -             obj = (char *)mp + MEMPOOL_HEADER_SIZE(mp, cache_size) +
> -                     private_data_size;
> -             obj = RTE_PTR_ALIGN_CEIL(obj, RTE_MEMPOOL_ALIGN);
> -
> -             ret = rte_mempool_populate_phys(mp, obj,
> -                     mp->phys_addr + ((char *)obj - (char *)mp),
> -                     objsz.total_size * n, NULL, NULL);
> -             if (ret != (int)mp->size)
> -                     goto exit_unlock;
> -     } else {
> +     if (vaddr == NULL)
> +             ret = rte_mempool_populate_default(mp);

This breaks current ivshmem code, since now mp has multiple mz.
I will send a patch for ivshmem.

<snip>

Reply via email to