All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.