* [PATCH 1/1] net/mana: enable 32 bit build for mana driver
@ 2023-09-09 12:18 Wei Hu
2023-09-09 14:51 ` Stephen Hemminger
0 siblings, 1 reply; 3+ messages in thread
From: Wei Hu @ 2023-09-09 12:18 UTC (permalink / raw)
To: dev, Long Li; +Cc: stable, Wei Hu
Enable 32 bit build on x86 Linux. Fixed build warnings and errors
when building in 32 bit.
Cc: stable@dpdk.org
Signed-off-by: Wei Hu <weh@microsoft.com>
---
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(-)
diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c
index 7630118d4f..a20ca1a988 100644
--- a/drivers/net/mana/mana.c
+++ b/drivers/net/mana/mana.c
@@ -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);
diff --git a/drivers/net/mana/meson.build b/drivers/net/mana/meson.build
index 493f0d26d4..2d72eca5a8 100644
--- a/drivers/net/mana/meson.build
+++ b/drivers/net/mana/meson.build
@@ -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
diff --git a/drivers/net/mana/mr.c b/drivers/net/mana/mr.c
index fec0dc961c..b8e6ea0bbf 100644
--- a/drivers/net/mana/mr.c
+++ b/drivers/net/mana/mr.c
@@ -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;
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] net/mana: enable 32 bit build for mana driver
2023-09-09 12:18 [PATCH 1/1] net/mana: enable 32 bit build for mana driver Wei Hu
@ 2023-09-09 14:51 ` Stephen Hemminger
2023-09-12 12:48 ` Wei Hu
0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2023-09-09 14:51 UTC (permalink / raw)
To: Wei Hu; +Cc: dev, Long Li, stable
On Sat, 9 Sep 2023 12:18:30 +0000
Wei Hu <weh@microsoft.com> wrote:
> diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c
> index 7630118d4f..a20ca1a988 100644
> --- a/drivers/net/mana/mana.c
> +++ b/drivers/net/mana/mana.c
> @@ -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.
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH 1/1] net/mana: enable 32 bit build for mana driver
2023-09-09 14:51 ` Stephen Hemminger
@ 2023-09-12 12:48 ` Wei Hu
0 siblings, 0 replies; 3+ messages in thread
From: Wei Hu @ 2023-09-12 12:48 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev, Long Li, stable
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Saturday, September 9, 2023 10:52 PM
> > diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c index
> > 7630118d4f..a20ca1a988 100644
> > --- a/drivers/net/mana/mana.c
> > +++ b/drivers/net/mana/mana.c
> > @@ -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.
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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-09-12 12:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-09 12:18 [PATCH 1/1] net/mana: enable 32 bit build for mana driver Wei Hu
2023-09-09 14:51 ` Stephen Hemminger
2023-09-12 12:48 ` Wei Hu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).