* [PATCH v2 1/2] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings
@ 2025-12-21 23:34 Zhu Yanjun
2025-12-21 23:34 ` [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge Zhu Yanjun
0 siblings, 1 reply; 5+ messages in thread
From: Zhu Yanjun @ 2025-12-21 23:34 UTC (permalink / raw)
To: zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
Cc: Gustavo A. R. Silva, Zhu Yanjun
From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are
getting ready to enable it, globally.
Use the new TRAILING_OVERLAP() helper to fix the following warning:
21 drivers/infiniband/sw/rxe/rxe_verbs.h:271:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
This helper creates a union between a flexible-array member (FAM) and a
set of MEMBERS that would otherwise follow it.
This overlays the trailing MEMBER struct ib_sge sge[RXE_MAX_SGE]; onto
the FAM struct rxe_recv_wqe::dma.sge, while keeping the FAM and the
start of MEMBER aligned.
The static_assert() ensures this alignment remains, and it's
intentionally placed inmediately after the related structure --no
blank line in between.
Lastly, move the conflicting declaration struct rxe_resp_info resp;
to the end of the corresponding structure.
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
V1->V2: Replace struct rxe_sge with struct ib_sge
---
drivers/infiniband/sw/rxe/rxe_verbs.h | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
index fd48075810dd..6498d61e8956 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.h
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
@@ -219,12 +219,6 @@ struct rxe_resp_info {
u32 rkey;
u32 length;
- /* SRQ only */
- struct {
- struct rxe_recv_wqe wqe;
- struct ib_sge sge[RXE_MAX_SGE];
- } srq_wqe;
-
/* Responder resources. It's a circular list where the oldest
* resource is dropped first.
*/
@@ -232,7 +226,15 @@ struct rxe_resp_info {
unsigned int res_head;
unsigned int res_tail;
struct resp_res *res;
+
+ /* SRQ only */
+ /* Must be last as it ends in a flexible-array member. */
+ TRAILING_OVERLAP(struct rxe_recv_wqe, wqe, dma.sge,
+ struct ib_sge sge[RXE_MAX_SGE];
+ ) srq_wqe;
};
+static_assert(offsetof(struct rxe_resp_info, srq_wqe.wqe.dma.sge) ==
+ offsetof(struct rxe_resp_info, srq_wqe.sge));
struct rxe_qp {
struct ib_qp ibqp;
@@ -269,7 +271,6 @@ struct rxe_qp {
struct rxe_req_info req;
struct rxe_comp_info comp;
- struct rxe_resp_info resp;
atomic_t ssn;
atomic_t skb_out;
@@ -289,6 +290,9 @@ struct rxe_qp {
spinlock_t state_lock; /* guard requester and completer */
struct execute_work cleanup_work;
+
+ /* Must be last as it ends in a flexible-array member. */
+ struct rxe_resp_info resp;
};
enum {
--
2.39.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
2025-12-21 23:34 [PATCH v2 1/2] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings Zhu Yanjun
@ 2025-12-21 23:34 ` Zhu Yanjun
2025-12-22 16:36 ` kernel test robot
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Zhu Yanjun @ 2025-12-21 23:34 UTC (permalink / raw)
To: zyjzyj2000, jgg, leon, linux-rdma, linux-kernel; +Cc: Zhu Yanjun
The struct rxe_sge is the same with struct ib_sge. Thus,
the struct rxe_sge can be repaced with the struct ib_sge.
No functional changes.
Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
---
drivers/infiniband/sw/rxe/rxe_mr.c | 4 ++--
drivers/infiniband/sw/rxe/rxe_resp.c | 2 +-
include/uapi/rdma/rdma_user_rxe.h | 8 +-------
3 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/drivers/infiniband/sw/rxe/rxe_mr.c b/drivers/infiniband/sw/rxe/rxe_mr.c
index b1df05238848..ac31cc599f13 100644
--- a/drivers/infiniband/sw/rxe/rxe_mr.c
+++ b/drivers/infiniband/sw/rxe/rxe_mr.c
@@ -341,7 +341,7 @@ int copy_data(
enum rxe_mr_copy_dir dir)
{
int bytes;
- struct rxe_sge *sge = &dma->sge[dma->cur_sge];
+ struct ib_sge *sge = &dma->sge[dma->cur_sge];
int offset = dma->sge_offset;
int resid = dma->resid;
struct rxe_mr *mr = NULL;
@@ -580,7 +580,7 @@ enum resp_states rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
int advance_dma_data(struct rxe_dma_info *dma, unsigned int length)
{
- struct rxe_sge *sge = &dma->sge[dma->cur_sge];
+ struct ib_sge *sge = &dma->sge[dma->cur_sge];
int offset = dma->sge_offset;
int resid = dma->resid;
diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
index 711f73e0bbb1..74f5b695da7a 100644
--- a/drivers/infiniband/sw/rxe/rxe_resp.c
+++ b/drivers/infiniband/sw/rxe/rxe_resp.c
@@ -283,7 +283,7 @@ static enum resp_states get_srq_wqe(struct rxe_qp *qp)
rxe_dbg_qp(qp, "invalid num_sge in SRQ entry\n");
return RESPST_ERR_MALFORMED_WQE;
}
- size = sizeof(*wqe) + wqe->dma.num_sge*sizeof(struct rxe_sge);
+ size = sizeof(*wqe) + wqe->dma.num_sge*sizeof(struct ib_sge);
memcpy(&qp->resp.srq_wqe, wqe, size);
qp->resp.wqe = &qp->resp.srq_wqe.wqe;
diff --git a/include/uapi/rdma/rdma_user_rxe.h b/include/uapi/rdma/rdma_user_rxe.h
index bb092fccb813..74eaae779c81 100644
--- a/include/uapi/rdma/rdma_user_rxe.h
+++ b/include/uapi/rdma/rdma_user_rxe.h
@@ -132,12 +132,6 @@ struct rxe_send_wr {
} wr;
};
-struct rxe_sge {
- __aligned_u64 addr;
- __u32 length;
- __u32 lkey;
-};
-
struct mminfo {
__aligned_u64 offset;
__u32 size;
@@ -154,7 +148,7 @@ struct rxe_dma_info {
union {
__DECLARE_FLEX_ARRAY(__u8, inline_data);
__DECLARE_FLEX_ARRAY(__u8, atomic_wr);
- __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
+ __DECLARE_FLEX_ARRAY(struct ib_sge, sge);
};
};
--
2.39.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
2025-12-21 23:34 ` [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge Zhu Yanjun
@ 2025-12-22 16:36 ` kernel test robot
2025-12-22 20:49 ` kernel test robot
2025-12-22 22:49 ` kernel test robot
2 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2025-12-22 16:36 UTC (permalink / raw)
To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
Cc: oe-kbuild-all, Zhu Yanjun
Hi Zhu,
kernel test robot noticed the following build errors:
[auto build test ERROR on rdma/for-next]
[also build test ERROR on linus/master v6.19-rc2 next-20251219]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zhu-Yanjun/RDMA-rxe-Replace-struct-rxe_sge-with-struct-ib_sge/20251222-074206
base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
patch link: https://lore.kernel.org/r/20251221233404.332108-2-yanjun.zhu%40linux.dev
patch subject: [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20251222/202512221736.Qj6n9uZT-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221736.Qj6n9uZT-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512221736.Qj6n9uZT-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from usr/include/linux/posix_types.h:5,
from usr/include/linux/types.h:9,
from ./usr/include/rdma/rdma_user_rxe.h:37,
from <command-line>:
>> ./usr/include/rdma/rdma_user_rxe.h:141:53: error: array type has incomplete element type 'struct ib_sge'
141 | __DECLARE_FLEX_ARRAY(struct ib_sge, sge);
| ^~~
usr/include/linux/stddef.h:56:22: note: in definition of macro '__DECLARE_FLEX_ARRAY'
56 | TYPE NAME[]; \
| ^~~~
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
2025-12-21 23:34 ` [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge Zhu Yanjun
2025-12-22 16:36 ` kernel test robot
@ 2025-12-22 20:49 ` kernel test robot
2025-12-22 22:49 ` kernel test robot
2 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2025-12-22 20:49 UTC (permalink / raw)
To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
Cc: llvm, oe-kbuild-all, Zhu Yanjun
Hi Zhu,
kernel test robot noticed the following build errors:
[auto build test ERROR on rdma/for-next]
[also build test ERROR on linus/master v6.19-rc2 next-20251219]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zhu-Yanjun/RDMA-rxe-Replace-struct-rxe_sge-with-struct-ib_sge/20251222-074206
base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
patch link: https://lore.kernel.org/r/20251221233404.332108-2-yanjun.zhu%40linux.dev
patch subject: [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
config: x86_64-buildonly-randconfig-006-20251222 (https://download.01.org/0day-ci/archive/20251223/202512230416.lX0ue12Z-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251223/202512230416.lX0ue12Z-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512230416.lX0ue12Z-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from <built-in>:1:
>> ./usr/include/rdma/rdma_user_rxe.h:141:3: error: array has incomplete element type 'struct ib_sge'
141 | __DECLARE_FLEX_ARRAY(struct ib_sge, sge);
| ^
usr/include/linux/stddef.h:56:12: note: expanded from macro '__DECLARE_FLEX_ARRAY'
56 | TYPE NAME[]; \
| ^
./usr/include/rdma/rdma_user_rxe.h:141:31: note: forward declaration of 'struct ib_sge'
141 | __DECLARE_FLEX_ARRAY(struct ib_sge, sge);
| ^
1 error generated.
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
2025-12-21 23:34 ` [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge Zhu Yanjun
2025-12-22 16:36 ` kernel test robot
2025-12-22 20:49 ` kernel test robot
@ 2025-12-22 22:49 ` kernel test robot
2 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2025-12-22 22:49 UTC (permalink / raw)
To: Zhu Yanjun, zyjzyj2000, jgg, leon, linux-rdma, linux-kernel
Cc: oe-kbuild-all, Zhu Yanjun
Hi Zhu,
kernel test robot noticed the following build errors:
[auto build test ERROR on rdma/for-next]
[also build test ERROR on linus/master v6.19-rc2 next-20251219]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zhu-Yanjun/RDMA-rxe-Replace-struct-rxe_sge-with-struct-ib_sge/20251222-074206
base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
patch link: https://lore.kernel.org/r/20251221233404.332108-2-yanjun.zhu%40linux.dev
patch subject: [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20251223/202512230626.yVlfxS7X-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251223/202512230626.yVlfxS7X-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512230626.yVlfxS7X-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from usr/include/linux/posix_types.h:5,
from usr/include/linux/types.h:9,
from ./usr/include/rdma/rdma_user_rxe.h:37,
from <command-line>:
>> ./usr/include/rdma/rdma_user_rxe.h:141:53: error: array type has incomplete element type 'struct ib_sge'
141 | __DECLARE_FLEX_ARRAY(struct ib_sge, sge);
| ^~~
usr/include/linux/stddef.h:56:22: note: in definition of macro '__DECLARE_FLEX_ARRAY'
56 | TYPE NAME[]; \
| ^~~~
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-12-22 22:50 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-21 23:34 [PATCH v2 1/2] RDMA/rxe: Avoid -Wflex-array-member-not-at-end warnings Zhu Yanjun
2025-12-21 23:34 ` [PATCH v2 2/2] RDMA/rxe: Replace struct rxe_sge with struct ib_sge Zhu Yanjun
2025-12-22 16:36 ` kernel test robot
2025-12-22 20:49 ` kernel test robot
2025-12-22 22:49 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox