Linux RDMA and InfiniBand development
 help / color / mirror / Atom feed
* [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