net/mana: enable 32 bit build for mana driver
Subsystems (2)
PATCH 1/1 net/mana: enable 32 bit build for mana driver
Enable 32 bit build on x86 Linux. Fixed build warnings and errors when building in 32 bit.
--- drivers/net/mana/mana.c | 2 +- drivers/net/mana/meson.build | 4 ++-- drivers/net/mana/mr.c | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-)
drivers/net/mana/mana.c +1 -1
@@ -1260,7 +1260,7 @@ mana_probe_port(struct ibv_device *ibdev, struct ibv_device_attr_ex *dev_attr,/* Create a parent domain with the port number */ attr.pd = priv->ib_pd; attr.comp_mask =IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT ; - attr.pd_context = (void *)(uint64_t )port; + attr.pd_context = (void *)(size_t )port; priv->ib_parent_pd =ibv_alloc_parent_domain (ctx, &attr);if (!priv->ib_parent_pd) {DRV_LOG (ERR ,"ibv_alloc_parent_domain failed port %d" , port);
drivers/net/mana/meson.build +2 -2
@@ -1,9 +1,9 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2022 Microsoft Corporation -if not is_linux or not dpdk_conf.has('RTE_ARCH_X86_64') +if not is_linux or not dpdk_conf.has('RTE_ARCH_X86') build = false - reason = 'only supported on x86_64 Linux' + reason = 'only supported on x86 Linux' subdir_done() endif
drivers/net/mana/mr.c +9 -9
@@ -53,7 +53,7 @@ mana_new_pmd_mr(struct mana_mr_btree *local_tree, struct mana_priv *priv, }DP_LOG (DEBUG , -"registering memory chunk start 0x%" PRIx64" len %u" , +"registering memory chunk start 0x%" PRIxPTR" len %u" , ranges[i].start, ranges[i].len);if (rte_eal_process_type () ==RTE_PROC_SECONDARY ) {
@@ -62,7 +62,7 @@ mana_new_pmd_mr(struct mana_mr_btree *local_tree, struct mana_priv *priv, ranges[i].len);if (ret) {DP_LOG (ERR , -"MR failed start 0x%" PRIx64" len %u" , +"MR failed start 0x%" PRIxPTR" len %u" , ranges[i].start, ranges[i].len);return ret; }
@@ -72,7 +72,7 @@ mana_new_pmd_mr(struct mana_mr_btree *local_tree, struct mana_priv *priv, ibv_mr =ibv_reg_mr (priv->ib_pd, (void *)ranges[i].start, ranges[i].len,IBV_ACCESS_LOCAL_WRITE );if (ibv_mr) { -DP_LOG (DEBUG ,"MR lkey %u addr %p len %" PRIu64, +DP_LOG (DEBUG ,"MR lkey %u addr %p len %zu" , ibv_mr->lkey, ibv_mr->addr, ibv_mr->length); mr =rte_calloc ("MANA MR" ,1 ,sizeof (*mr),0 );
@@ -99,7 +99,7 @@ mana_new_pmd_mr(struct mana_mr_btree *local_tree, struct mana_priv *priv,return ret; } }else { -DP_LOG (ERR ,"MR failed at 0x%" PRIx64" len %u" , +DP_LOG (ERR ,"MR failed at 0x%" PRIxPTR" len %u" , ranges[i].start, ranges[i].len);return -errno; }
@@ -141,7 +141,7 @@ mana_find_pmd_mr(struct mana_mr_btree *local_mr_btree, struct mana_priv *priv, mr =mana_mr_btree_lookup (local_mr_btree, &idx, (uintptr_t )mbuf->buf_addr, mbuf->buf_len);if (mr) { -DP_LOG (DEBUG ,"Local mr lkey %u addr 0x%" PRIx64" len %" PRIu64, +DP_LOG (DEBUG ,"Local mr lkey %u addr 0x%" PRIxPTR" len %zu" , mr->lkey, mr->addr, mr->len);return mr; }
@@ -162,7 +162,7 @@ mana_find_pmd_mr(struct mana_mr_btree *local_mr_btree, struct mana_priv *priv, }DP_LOG (DEBUG , -"Added local MR key %u addr 0x%" PRIx64" len %" PRIu64, +"Added local MR key %u addr 0x%" PRIxPTR" len %zu" , mr->lkey, mr->addr, mr->len);return mr; }
@@ -266,7 +266,7 @@ mana_mr_btree_lookup(struct mana_mr_btree *bt, uint16_t *idx,return &table[base];DP_LOG (DEBUG , -"addr 0x%" PRIx64" len %zu idx %u sum 0x%" PRIx64" not found" , +"addr 0x%" PRIxPTR" len %zu idx %u sum 0x%" PRIxPTR" not found" , addr, len, *idx, addr + len);return NULL ;
@@ -316,7 +316,7 @@ mana_mr_btree_insert(struct mana_mr_btree *bt, struct mana_mr_cache *entry)uint16_t shift;if (mana_mr_btree_lookup (bt, &idx, entry->addr, entry->len)) { -DP_LOG (DEBUG ,"Addr 0x%" PRIx64" len %zu exists in btree" , +DP_LOG (DEBUG ,"Addr 0x%" PRIxPTR" len %zu exists in btree" , entry->addr, entry->len);return 0 ; }
@@ -340,7 +340,7 @@ mana_mr_btree_insert(struct mana_mr_btree *bt, struct mana_mr_cache *entry) bt->len++;DP_LOG (DEBUG , -"Inserted MR b-tree table %p idx %d addr 0x%" PRIx64" len %zu" , +"Inserted MR b-tree table %p idx %d addr 0x%" PRIxPTR" len %zu" , table, idx, entry->addr, entry->len);return 0 ;
Signature · 1 line
2.34.1
drivers/net/mana/mana.c mana_probe_port(struct ibv_device *ibdev, struct ibv_device_attr_ex *dev_attr, · line 1263
Quoted 10 lines · On Sat, 9 Sep 2023 12:18:30 +0000 Wei Hu <[email protected]> wrote:
drivers/net/mana/mana.c +1
-1@@ -1260,7 +1260,7 @@ mana_probe_port(struct ibv_device *ibdev, struct ibv_device_attr_ex *dev_attr,/* Create a parent domain with the port number */ attr.pd = priv->ib_pd; attr.comp_mask =IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT ; - attr.pd_context = (void *)(uint64_t )port; + attr.pd_context = (void *)(size_t )port;
Since port is uint8_t, the better cast would be to uintptr_t which is always an unsigned value of same size as pointer.
Also, not sure why using PRIxPTR is necessary; on all arch and platforms %p should work for printing a pointer and is more common usage.
Quoted 14 lines
From: Stephen Hemminger <[email protected]>
Sent: Saturday, September 9, 2023 10:52 PMdrivers/net/mana/mana.c mana_probe_port(struct ibv_device *ibdev,
Quoted 5 lines
drivers/net/mana/mana.c index renamed from drivers/net/mana/mana.c +0
-0
7630118d4f..a20ca1a988100644drivers/net/mana/mana.c +0
-0@@ -1260,7 +1260,7 @@ mana_probe_port(struct ibv_device *ibdev,struct
ibv_device_attr_ex*dev_attr,drivers/net/mana/mana.c mana_probe_port(struct ibv_device *ibdev, struct ibv_device_attr_ex *dev_attr, · line 1263
Quoted 5 lines
drivers/net/mana/mana.c +1
-1/* Create a parent domain with the port number */ attr.pd = priv->ib_pd; attr.comp_mask =IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT ; - attr.pd_context = (void *)(uint64_t )port; + attr.pd_context = (void *)(size_t )port;
Quoted 5 lines
Since port is
uint8_t, the better cast would be touintptr_twhich is always an unsigned value of same size as pointer.Also, not sure why using PRIxPTR is necessary; on all arch and platforms %p should work for printing a pointer and is more common usage.
Thanks Stephen. I will send out a v2 with port casting to uintptr_t.
Regarding the use of PRIxPTR, I have seen this in couple other drivers. I think it is probably because the original variable is defined as uintptr_t, which was typedef'ed to unsigned long. We probably want to differentiate it from an actual pointer. And I was trying to stick to original code.
Wei