[spp] [PATCH 5/7] spp_vm: fix changing spec of rte_mem_config

Yasufumi Ogawa ogawa.yasufumi at lab.ntt.co.jp
Thu Jun 21 12:53:20 CEST 2018


On 2018/06/19 20:37, Kenta Shinohara wrote:
> Spp_vm is encountered the following error on DPDK v18.05.
> 
> build error:
> /home/k-shino/spp/src/vm/main.c: In function ‘get_memzone_by_addr’:
> /home/k-shino/spp/src/vm/main.c:321:14: error: ‘struct rte_mem_config’
>   has no member named ‘memzone’
>     tmp = &mcfg->memzone[i];
>                ^
> /home/k-shino/.dpdkenv/versions/dpdk-18.05 at x86_64-native-linuxapp-gcc/
> mk/internal/rte.compile-pre.mk:114: recipe for target 'main.o' failed
> make[3]: *** [main.o] Error 1
> /home/k-shino/.dpdkenv/versions/dpdk-18.05 at x86_64-native-linuxapp-gcc/
> mk/rte.extapp.mk:14: recipe for target 'all' failed make[2]: *** [all]
>   Error 2
> /home/k-shino/.dpdkenv/versions/dpdk-18.05 at x86_64-native-linuxapp-gcc/
> mk/rte.extsubdir.mk:21: recipe for target 'vm' failed make[1]: *** [vm
> ] Error 2
> /home/k-shino/.dpdkenv/versions/dpdk-18.05 at x86_64-native-linuxapp-gcc/
> mk/rte.extsubdir.mk:21: recipe for target 'src' failed make: *** [src]
>   Error 2
> 
> This error caused by changing specification of struct 'rte_fbarray'.
> To fix this, use 'rte_fbarray_get' and experimental method
> 'rte_fbarray_find_next_used' instead of array 'memzone[]'.
> 
> Signed-off-by: Kenta Shinohara <shinohara.kenta at lab.ntt.co.jp>
Thanks!

Acked-by: Yasufumi Ogawa <ogawa.yasufumi at lab.ntt.co.jp>
> 
> ---
>   src/vm/main.c | 11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/src/vm/main.c b/src/vm/main.c
> index 94ba8d1..6522d55 100644
> --- a/src/vm/main.c
> +++ b/src/vm/main.c
> @@ -340,19 +340,22 @@ get_memzone_by_addr(const void *addr)
>   {
>   	struct rte_memzone *tmp, *mz;
>   	struct rte_mem_config *mcfg;
> +	struct rte_fbarray *arr;
>   	int i;
>   
>   	mcfg = rte_eal_get_configuration()->mem_config;
> +	arr = &mcfg->memzones;
>   	mz = NULL;
>   
>   	/* find memzone for the ring */
> -	for (i = 0; i < RTE_MAX_MEMZONE; i++) {
> -		tmp = &mcfg->memzone[i];
> -
> -		if (tmp->addr_64 == (uint64_t) addr) {
> +	i = rte_fbarray_find_next_used(arr, 0);
> +	while (i >= 0) {
> +		tmp = rte_fbarray_get(arr, i);
> +		if (mz->addr_64 == (uint64_t) addr) {
>   			mz = tmp;
>   			break;
>   		}
> +		i = rte_fbarray_find_next_used(arr, i+1);
>   	}
>   
>   	return mz;
> 



More information about the spp mailing list