From ac145e1cb6a5ea21671c3b8f6546948fda1d7c77 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Fri, 8 Nov 2019 21:28:37 +0000 Subject: [PATCH] ib_srpt: Detect ib_sg_dma_len() presence at compile time This patch makes it possible to build the ib_srpt driver against a kernel before v5.1 + latest MOFED. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8655 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scripts/specialize-patch | 4 ++++ scst/include/backport.h | 5 ----- srpt/Makefile | 5 +++++ srpt/conftest/ib_sg_dma_len/Makefile | 3 +++ srpt/conftest/ib_sg_dma_len/ib_sg_dma_len.c | 11 +++++++++++ srpt/src/ib_srpt.h | 5 +++++ 6 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 srpt/conftest/ib_sg_dma_len/Makefile create mode 100644 srpt/conftest/ib_sg_dma_len/ib_sg_dma_len.c diff --git a/scripts/specialize-patch b/scripts/specialize-patch index 26bd3dfc1..e75c60c46 100755 --- a/scripts/specialize-patch +++ b/scripts/specialize-patch @@ -148,6 +148,9 @@ function evaluate(stmnt, pattern, arg, op, result) { gsub("defined\\(HAVE_IB_DMA_MAP_OPS\\)", "(LINUX_VERSION_CODE >= KERNEL_VERSION(0, 0, 0))", stmnt) + gsub("defined\\(HAVE_IB_SG_DMA_LEN\\)", + "(LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0))", stmnt) + gsub("defined(ENABLE_NPIV)", 0, stmnt) gsub("defined(FC_VPORT_CREATE_DEFINED)", 0, stmnt) @@ -398,6 +401,7 @@ function handle_if(evaluated) || $0 ~ "HAVE_IB_DMA_MAP_OPS" \ || $0 ~ "HAVE_IB_QUERY_DEVICE" \ || $0 ~ "HAVE_IB_SET_CPI_RESP_TIME" \ + || $0 ~ "HAVE_IB_SG_DMA_LEN" \ || $0 ~ "HAVE_RDMA_DESTROY_AH" \ || $0 ~ "HAVE_RDMA_DESTROY_AH_WITH_FLAGS" \ || $0 ~ "HAVE_RDMA_QUERY_GID" \ diff --git a/scst/include/backport.h b/scst/include/backport.h index 7f8bb03a7..6df7ca081 100644 --- a/scst/include/backport.h +++ b/scst/include/backport.h @@ -1588,11 +1588,6 @@ static inline struct ib_pd *ib_alloc_pd_backport(struct ib_device *device) }) #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) -#define ib_sg_dma_len(dev, sg) sg_dma_len(sg) -#define ib_sg_dma_address(dev, sg) sg_dma_address(sg) -#endif - /* */ #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) || \ diff --git a/srpt/Makefile b/srpt/Makefile index ced096d17..65d562afd 100644 --- a/srpt/Makefile +++ b/srpt/Makefile @@ -212,6 +212,11 @@ conftest/ib_set_cpi_resp_time/result-$(KVER).txt: \ echo "$(call run_conftest,ib_set_cpi_resp_time, \ -DHAVE_IB_SET_CPI_RESP_TIME)" >"$@" +conftest/ib_sg_dma_len/result-$(KVER).txt: \ + conftest/ib_sg_dma_len/ib_sg_dma_len.c \ + conftest/ib_sg_dma_len/Makefile + echo "$(call run_conftest_bool,ib_sg_dma_len,HAVE_IB_SG_DMA_LEN)" >"$@" + conftest/mad_handler_takes_send_buf/result-$(KVER).txt: \ conftest/mad_handler_takes_send_buf/mad_handler_takes_send_buf.c\ conftest/mad_handler_takes_send_buf/Makefile diff --git a/srpt/conftest/ib_sg_dma_len/Makefile b/srpt/conftest/ib_sg_dma_len/Makefile new file mode 100644 index 000000000..199542f31 --- /dev/null +++ b/srpt/conftest/ib_sg_dma_len/Makefile @@ -0,0 +1,3 @@ +LINUXINCLUDE := $(PRE_CFLAGS) $(LINUXINCLUDE) + +obj-m += ib_sg_dma_len.o diff --git a/srpt/conftest/ib_sg_dma_len/ib_sg_dma_len.c b/srpt/conftest/ib_sg_dma_len/ib_sg_dma_len.c new file mode 100644 index 000000000..4ac94b31c --- /dev/null +++ b/srpt/conftest/ib_sg_dma_len/ib_sg_dma_len.c @@ -0,0 +1,11 @@ +#include +#include + +#undef ib_sg_dma_len + +static int modinit(void) +{ + return ib_sg_dma_len != NULL; +} + +module_init(modinit); diff --git a/srpt/src/ib_srpt.h b/srpt/src/ib_srpt.h index 2af8422ba..ce680261a 100644 --- a/srpt/src/ib_srpt.h +++ b/srpt/src/ib_srpt.h @@ -66,6 +66,11 @@ struct srpt_nexus; +#if !HAVE_IB_SG_DMA_LEN +#define ib_sg_dma_len(dev, sg) sg_dma_len(sg) +#define ib_sg_dma_address(dev, sg) sg_dma_address(sg) +#endif + #if !HAVE_SRP_DATA_DESC_IMM enum { SRP_DATA_DESC_IMM = 3,