patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH] net/af_xdp: do not use fixed size storage for pointer
@ 2020-11-09 13:30 Ferruh Yigit
  2020-11-09 18:00 ` Loftus, Ciara
  0 siblings, 1 reply; 3+ messages in thread
From: Ferruh Yigit @ 2020-11-09 13:30 UTC (permalink / raw)
  To: Ciara Loftus, Qi Zhang, Kevin Laatz, Xiaolong Ye
  Cc: Ferruh Yigit, dev, stable

'uint64_t' is used to hold the pointer, for 32-bits build this
assumption is wrong and giving following build error:

rte_eth_af_xdp.c: In function ‘xdp_umem_configure’:
rte_eth_af_xdp.c:970:15:
    error: cast to pointer from integer of different size
           [-Werror=int-to-pointer-cast]
  970 |   base_addr = (void *)get_base_addr(mb_pool, &align);
      |               ^

Replacing the 'uint64_t' return type of the 'get_base_addr()' to the
'uintptr_t'.
Although not sure if the overall logic supports the 32-bits, using
'uintptr_t' should be safe both for 64/32 bits.

Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks")
Cc: stable@dpdk.org

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

---

Hi Ciara,

I am not sure if 32-bit is supported for the af_xdp, but even not does
this change make sense for the 64-bits?
---
 drivers/net/af_xdp/rte_eth_af_xdp.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c
index 4076ff797c..2c7892bd7e 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -910,13 +910,13 @@ eth_link_update(struct rte_eth_dev *dev __rte_unused,
 }
 
 #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG)
-static inline uint64_t get_base_addr(struct rte_mempool *mp, uint64_t *align)
+static inline uintptr_t get_base_addr(struct rte_mempool *mp, uint64_t *align)
 {
 	struct rte_mempool_memhdr *memhdr;
-	uint64_t memhdr_addr, aligned_addr;
+	uintptr_t memhdr_addr, aligned_addr;
 
 	memhdr = STAILQ_FIRST(&mp->mem_list);
-	memhdr_addr = (uint64_t)memhdr->addr;
+	memhdr_addr = (uintptr_t)memhdr->addr;
 	aligned_addr = memhdr_addr & ~(getpagesize() - 1);
 	*align = memhdr_addr - aligned_addr;
 
-- 
2.26.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-stable] [PATCH] net/af_xdp: do not use fixed size storage for pointer
  2020-11-09 13:30 [dpdk-stable] [PATCH] net/af_xdp: do not use fixed size storage for pointer Ferruh Yigit
@ 2020-11-09 18:00 ` Loftus, Ciara
  2020-11-11 13:25   ` Ferruh Yigit
  0 siblings, 1 reply; 3+ messages in thread
From: Loftus, Ciara @ 2020-11-09 18:00 UTC (permalink / raw)
  To: Yigit, Ferruh, Zhang, Qi Z; +Cc: dev, stable

> 
> 'uint64_t' is used to hold the pointer, for 32-bits build this
> assumption is wrong and giving following build error:
> 
> rte_eth_af_xdp.c: In function ‘xdp_umem_configure’:
> rte_eth_af_xdp.c:970:15:
>     error: cast to pointer from integer of different size
>            [-Werror=int-to-pointer-cast]
>   970 |   base_addr = (void *)get_base_addr(mb_pool, &align);
>       |               ^
> 
> Replacing the 'uint64_t' return type of the 'get_base_addr()' to the
> 'uintptr_t'.
> Although not sure if the overall logic supports the 32-bits, using
> 'uintptr_t' should be safe both for 64/32 bits.
> 
> Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> 
> ---
> 
> Hi Ciara,
> 
> I am not sure if 32-bit is supported for the af_xdp, but even not does
> this change make sense for the 64-bits?

Hi Ferruh,

LGTM. I've tested it for 64bit and all looks good to me.

Tested-by: Ciara Loftus <ciara.loftus@intel.com>

I've been looking into 32-bit compatibility and will submit a patch for at least the docs when I've verified what works.

Thanks,
Ciara

> ---
>  drivers/net/af_xdp/rte_eth_af_xdp.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c
> b/drivers/net/af_xdp/rte_eth_af_xdp.c
> index 4076ff797c..2c7892bd7e 100644
> --- a/drivers/net/af_xdp/rte_eth_af_xdp.c
> +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
> @@ -910,13 +910,13 @@ eth_link_update(struct rte_eth_dev *dev
> __rte_unused,
>  }
> 
>  #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG)
> -static inline uint64_t get_base_addr(struct rte_mempool *mp, uint64_t
> *align)
> +static inline uintptr_t get_base_addr(struct rte_mempool *mp, uint64_t
> *align)
>  {
>  	struct rte_mempool_memhdr *memhdr;
> -	uint64_t memhdr_addr, aligned_addr;
> +	uintptr_t memhdr_addr, aligned_addr;
> 
>  	memhdr = STAILQ_FIRST(&mp->mem_list);
> -	memhdr_addr = (uint64_t)memhdr->addr;
> +	memhdr_addr = (uintptr_t)memhdr->addr;
>  	aligned_addr = memhdr_addr & ~(getpagesize() - 1);
>  	*align = memhdr_addr - aligned_addr;
> 
> --
> 2.26.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-stable] [PATCH] net/af_xdp: do not use fixed size storage for pointer
  2020-11-09 18:00 ` Loftus, Ciara
@ 2020-11-11 13:25   ` Ferruh Yigit
  0 siblings, 0 replies; 3+ messages in thread
From: Ferruh Yigit @ 2020-11-11 13:25 UTC (permalink / raw)
  To: Loftus, Ciara, Zhang, Qi Z; +Cc: dev, stable

On 11/9/2020 6:00 PM, Loftus, Ciara wrote:
>>
>> 'uint64_t' is used to hold the pointer, for 32-bits build this
>> assumption is wrong and giving following build error:
>>
>> rte_eth_af_xdp.c: In function ‘xdp_umem_configure’:
>> rte_eth_af_xdp.c:970:15:
>>      error: cast to pointer from integer of different size
>>             [-Werror=int-to-pointer-cast]
>>    970 |   base_addr = (void *)get_base_addr(mb_pool, &align);
>>        |               ^
>>
>> Replacing the 'uint64_t' return type of the 'get_base_addr()' to the
>> 'uintptr_t'.
>> Although not sure if the overall logic supports the 32-bits, using
>> 'uintptr_t' should be safe both for 64/32 bits.
>>
>> Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>>
>> ---
>>
>> Hi Ciara,
>>
>> I am not sure if 32-bit is supported for the af_xdp, but even not does
>> this change make sense for the 64-bits?
> 
> Hi Ferruh,
> 
> LGTM. I've tested it for 64bit and all looks good to me.
> 
> Tested-by: Ciara Loftus <ciara.loftus@intel.com>
> 
> I've been looking into 32-bit compatibility and will submit a patch for at least the docs when I've verified what works.
> 

Applied to dpdk-next-net/main, thanks.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-11 13:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-09 13:30 [dpdk-stable] [PATCH] net/af_xdp: do not use fixed size storage for pointer Ferruh Yigit
2020-11-09 18:00 ` Loftus, Ciara
2020-11-11 13:25   ` Ferruh Yigit

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git