Linux s390 Architecture development
 help / color / mirror / Atom feed
* [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS
@ 2026-08-06 13:47 Heiko Carstens
  2026-08-06 13:47 ` [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get() Heiko Carstens
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Heiko Carstens @ 2026-08-06 13:47 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, Nihar Panda
  Cc: linux-s390, linux-scsi

Enable CONTEXT_ANALYSYS for the zfcp driver.

Static code checking for acquiring and releasing locks used to be done
with sparse. That was removed with [1] and replaced with a clang based
approach [2]. The new approach requires that each subsystem needs to be
explicitly enabled for checking.

Do that for drivers/s390/scsi. Add a __must_hold() attribute to
zfcp_qdio_sbal_get() to address the only valid warning. Then enable
CONTEXT_ANALYSIS, similar to other patches for drivers/s390 I'm currently
working on.

Thanks,
Heiko

[1] 5b63d0ae94cc ("compiler-context-analysis: Remove Sparse support")
[2] 3269701cb256 ("compiler-context-analysis: Add infrastructure for Context Analysis with Clang")

Heiko Carstens (2):
  scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get()
  scsi: zfcp: Enable CONTEXT_ANALYSIS

 drivers/s390/scsi/Makefile    | 2 ++
 drivers/s390/scsi/zfcp_ext.h  | 3 ++-
 drivers/s390/scsi/zfcp_qdio.c | 1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get()
  2026-08-06 13:47 [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
@ 2026-08-06 13:47 ` Heiko Carstens
  2026-08-06 13:59   ` sashiko-bot
  2026-08-06 13:47 ` [PATCH 2/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Heiko Carstens @ 2026-08-06 13:47 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, Nihar Panda
  Cc: linux-s390, linux-scsi

Add __must_hold() attribute to zfcp_qdio_sbal_get() in order to let
clang's context analysis know that qdio->req_q_wq must be held on
function entry. This is also documented above the function. Without this
annotation this leads to a valid warning when context analysis is
enabled:

drivers/s390/scsi/zfcp_qdio.c:287:8: warning:
  expecting spinlock '->req_q_lock' to be held at start of each loop [-Wthread-safety-analysis]
  287 |         ret = wait_event_interruptible_lock_irq_timeout(qdio->req_q_wq,
      |               ^

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
---
 drivers/s390/scsi/zfcp_ext.h  | 3 ++-
 drivers/s390/scsi/zfcp_qdio.c | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index 40bd597fb4cd..0eb9bc9d03e4 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -154,7 +154,8 @@ extern ssize_t zfcp_fsf_scnprint_fc_security(char *buf, size_t size,
 /* zfcp_qdio.c */
 extern int zfcp_qdio_setup(struct zfcp_adapter *);
 extern void zfcp_qdio_destroy(struct zfcp_qdio *);
-extern int zfcp_qdio_sbal_get(struct zfcp_qdio *);
+extern int zfcp_qdio_sbal_get(struct zfcp_qdio *qdio)
+	__must_hold(qdio->req_q_lock);
 extern int zfcp_qdio_send(struct zfcp_qdio *, struct zfcp_qdio_req *);
 extern int zfcp_qdio_sbals_from_sg(struct zfcp_qdio *, struct zfcp_qdio_req *,
 				   struct scatterlist *);
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index ce1af72d9b61..bac8385e069f 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -281,6 +281,7 @@ static int zfcp_qdio_sbal_check(struct zfcp_qdio *qdio)
  * Returns: 0 on success, -EIO if there is no free sbal after waiting.
  */
 int zfcp_qdio_sbal_get(struct zfcp_qdio *qdio)
+	__must_hold(qdio->req_q_lock)
 {
 	long ret;
 
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] scsi: zfcp: Enable CONTEXT_ANALYSIS
  2026-08-06 13:47 [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
  2026-08-06 13:47 ` [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get() Heiko Carstens
@ 2026-08-06 13:47 ` Heiko Carstens
  2026-08-06 13:50   ` sashiko-bot
  2026-08-06 16:36 ` [PATCH 0/2] " Bart Van Assche
  2026-08-07 17:47 ` Martin K. Petersen (Oracle)
  3 siblings, 1 reply; 7+ messages in thread
From: Heiko Carstens @ 2026-08-06 13:47 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, Nihar Panda
  Cc: linux-s390, linux-scsi

The zfcp driver passes clang's compile time context analysis.
Therefore enable CONTEXT_ANALYSIS.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
---
 drivers/s390/scsi/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/s390/scsi/Makefile b/drivers/s390/scsi/Makefile
index 352056eb0dd1..01b41f7c6860 100644
--- a/drivers/s390/scsi/Makefile
+++ b/drivers/s390/scsi/Makefile
@@ -3,6 +3,8 @@
 # Makefile for the S/390 specific device drivers
 #
 
+CONTEXT_ANALYSIS := y
+
 zfcp-objs := zfcp_aux.o zfcp_ccw.o zfcp_dbf.o zfcp_erp.o \
 	     zfcp_fc.o zfcp_fsf.o zfcp_qdio.o zfcp_scsi.o zfcp_sysfs.o \
 	     zfcp_unit.o zfcp_diag.o
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] scsi: zfcp: Enable CONTEXT_ANALYSIS
  2026-08-06 13:47 ` [PATCH 2/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
@ 2026-08-06 13:50   ` sashiko-bot
  0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-08-06 13:50 UTC (permalink / raw)
  To: Heiko Carstens
  Cc: Alexander Gordeev, linux-scsi, Heiko Carstens, Vasily Gorbik,
	linux-s390

> The zfcp driver passes clang's compile time context analysis.
> Therefore enable CONTEXT_ANALYSIS.
> 
> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260806134759.2122369-1-hca@linux.ibm.com?part=2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get()
  2026-08-06 13:47 ` [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get() Heiko Carstens
@ 2026-08-06 13:59   ` sashiko-bot
  0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-08-06 13:59 UTC (permalink / raw)
  To: Heiko Carstens
  Cc: Alexander Gordeev, linux-s390, linux-scsi, Vasily Gorbik,
	Heiko Carstens

> Add __must_hold() attribute to zfcp_qdio_sbal_get() in order to let
> clang's context analysis know that qdio->req_q_wq must be held on
> function entry. This is also documented above the function. Without this
> annotation this leads to a valid warning when context analysis is
> enabled:
> 
> drivers/s390/scsi/zfcp_qdio.c:287:8: warning:
>   expecting spinlock '->req_q_lock' to be held at start of each loop [-Wthread-safety-analysis]
>   287 |         ret = wait_event_interruptible_lock_irq_timeout(qdio->req_q_wq,
>       |               ^
> 
> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260806134759.2122369-1-hca@linux.ibm.com?part=1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS
  2026-08-06 13:47 [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
  2026-08-06 13:47 ` [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get() Heiko Carstens
  2026-08-06 13:47 ` [PATCH 2/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
@ 2026-08-06 16:36 ` Bart Van Assche
  2026-08-07 17:47 ` Martin K. Petersen (Oracle)
  3 siblings, 0 replies; 7+ messages in thread
From: Bart Van Assche @ 2026-08-06 16:36 UTC (permalink / raw)
  To: Heiko Carstens, James E . J . Bottomley, Martin K . Petersen,
	Nihar Panda
  Cc: linux-s390, linux-scsi

On 8/6/26 6:47 AM, Heiko Carstens wrote:
> Enable CONTEXT_ANALYSYS for the zfcp driver.
> 
> Static code checking for acquiring and releasing locks used to be done
> with sparse. That was removed with [1] and replaced with a clang based
> approach [2]. The new approach requires that each subsystem needs to be
> explicitly enabled for checking.
> 
> Do that for drivers/s390/scsi. Add a __must_hold() attribute to
> zfcp_qdio_sbal_get() to address the only valid warning. Then enable
> CONTEXT_ANALYSIS, similar to other patches for drivers/s390 I'm currently
> working on.

These two patches could have been combined into a single patch. Anyway,
both patches look good to me.

Thanks,

Bart.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS
  2026-08-06 13:47 [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
                   ` (2 preceding siblings ...)
  2026-08-06 16:36 ` [PATCH 0/2] " Bart Van Assche
@ 2026-08-07 17:47 ` Martin K. Petersen (Oracle)
  3 siblings, 0 replies; 7+ messages in thread
From: Martin K. Petersen (Oracle) @ 2026-08-07 17:47 UTC (permalink / raw)
  To: Heiko Carstens
  Cc: James E . J . Bottomley, Martin K . Petersen, Nihar Panda,
	linux-s390, linux-scsi


Heiko,

> Enable CONTEXT_ANALYSYS for the zfcp driver.

Applied to 7.3/scsi-staging, thanks!

-- 
Martin K. Petersen

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-08-07 17:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-06 13:47 [PATCH 0/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
2026-08-06 13:47 ` [PATCH 1/2] scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get() Heiko Carstens
2026-08-06 13:59   ` sashiko-bot
2026-08-06 13:47 ` [PATCH 2/2] scsi: zfcp: Enable CONTEXT_ANALYSIS Heiko Carstens
2026-08-06 13:50   ` sashiko-bot
2026-08-06 16:36 ` [PATCH 0/2] " Bart Van Assche
2026-08-07 17:47 ` Martin K. Petersen (Oracle)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox