[PATCH v3 39/57] scsi: megaraid_sas: Prepare for enabling lock context analysis
Bart Van Assche <[email protected]> Thu, 30 Jul 2026 15:45:22 -0700
| Newsgroups | org.kernel.vger.linux-scsi |
|---|---|
| Message-ID | <5b1efea947bc2923e205d7c920b15b356fc4eeff.1785451174.git.bvanassche@acm.org> |
Document locking requirements with __must_hold(). Signed-off-by: Bart Van Assche <[email protected]> --- drivers/scsi/megaraid/megaraid_sas.h | 9 ++++++--- drivers/scsi/megaraid/megaraid_sas_base.c | 15 ++++++++++++--- drivers/scsi/megaraid/megaraid_sas_fusion.c | 2 ++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h index 8ee2bfe47571..67713173793a 100644 --- a/drivers/scsi/megaraid/megaraid_sas.h +++ b/drivers/scsi/megaraid/megaraid_sas.h @@ -2696,15 +2696,18 @@ __le16 get_updated_dev_handle(struct megasas_instance *instance, struct MR_DRV_RAID_MAP_ALL *drv_map); void mr_update_load_balance_params(struct MR_DRV_RAID_MAP_ALL *map, struct LD_LOAD_BALANCE_INFO *lbInfo); -int megasas_get_ctrl_info(struct megasas_instance *instance); +int megasas_get_ctrl_info(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex); /* PD sequence */ int megasas_sync_pd_seq_num(struct megasas_instance *instance, bool pend); void megasas_set_dynamic_target_properties(struct scsi_device *sdev, struct queue_limits *lim, bool is_target_prop); int megasas_get_target_prop(struct megasas_instance *instance, - struct scsi_device *sdev); -void megasas_get_snapdump_properties(struct megasas_instance *instance); + struct scsi_device *sdev) + __must_hold(&instance->reset_mutex); +void megasas_get_snapdump_properties(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex); int megasas_set_crash_dump_params(struct megasas_instance *instance, u8 crash_buf_state); diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index ecd365d78ae3..ccefe5841a17 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -132,14 +132,16 @@ MODULE_AUTHOR("[email protected]"); MODULE_DESCRIPTION("Broadcom MegaRAID SAS Driver"); int megasas_transition_to_ready(struct megasas_instance *instance, int ocr); -static int megasas_get_pd_list(struct megasas_instance *instance); +static int megasas_get_pd_list(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex); static int megasas_ld_list_query(struct megasas_instance *instance, u8 query_type); static int megasas_issue_init_mfi(struct megasas_instance *instance); static int megasas_register_aen(struct megasas_instance *instance, u32 seq_num, u32 class_locale_word); static void megasas_get_pd_info(struct megasas_instance *instance, - struct scsi_device *sdev); + struct scsi_device *sdev) + __must_hold(&instance->reset_mutex); static void megasas_set_ld_removed_by_fw(struct megasas_instance *instance); @@ -229,7 +231,8 @@ megasas_adp_reset_gen2(struct megasas_instance *instance, struct megasas_register_set __iomem *reg_set); static irqreturn_t megasas_isr(int irq, void *devp); static u32 -megasas_init_adapter_mfi(struct megasas_instance *instance); +megasas_init_adapter_mfi(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex); u32 megasas_build_and_issue_cmd(struct megasas_instance *instance, struct scsi_cmnd *scmd); @@ -4754,6 +4757,7 @@ megasas_get_pd_list(struct megasas_instance *instance) */ static int megasas_get_ld_list(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex) { int ret = 0, ld_index = 0, ids = 0; struct megasas_cmd *cmd; @@ -4871,6 +4875,7 @@ megasas_get_ld_list(struct megasas_instance *instance) */ static int megasas_ld_list_query(struct megasas_instance *instance, u8 query_type) + __must_hold(&instance->reset_mutex) { int ret = 0, ld_index = 0, ids = 0; struct megasas_cmd *cmd; @@ -4993,6 +4998,7 @@ megasas_ld_list_query(struct megasas_instance *instance, u8 query_type) static int megasas_host_device_list_query(struct megasas_instance *instance, bool is_probe) + __must_hold(&instance->reset_mutex) { int ret, i, target_id; struct megasas_cmd *cmd; @@ -5874,6 +5880,7 @@ static void megasas_setup_reply_map(struct megasas_instance *instance) */ static int megasas_get_device_list(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex) { if (instance->enable_fw_dev_list) { if (megasas_host_device_list_query(instance, true)) @@ -7789,6 +7796,7 @@ megasas_suspend(struct device *dev) */ static int __maybe_unused megasas_resume(struct device *dev) + __must_hold(&((struct megasas_instance *)dev_get_drvdata(dev))->reset_mutex) { int rval; struct Scsi_Host *host; @@ -8765,6 +8773,7 @@ static inline void megasas_remove_scsi_device(struct scsi_device *sdev) static int megasas_update_device_list(struct megasas_instance *instance, int event_type) + __must_hold(&instance->reset_mutex) { int dcmd_ret; diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index 056cbe50e19e..a55094a31c82 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -1792,6 +1792,7 @@ static inline void megasas_free_ioc_init_cmd(struct megasas_instance *instance) */ static u32 megasas_init_adapter_fusion(struct megasas_instance *instance) + __must_hold(&instance->reset_mutex) { struct fusion_context *fusion; u32 scratch_pad_1; @@ -4539,6 +4540,7 @@ static int megasas_issue_tm(struct megasas_instance *instance, u16 device_handle, uint channel, uint id, u16 smid_task, u8 type, struct MR_PRIV_DEVICE *mr_device_priv_data) + __must_hold(&instance->reset_mutex) { struct MR_TASK_MANAGE_REQUEST *mr_request; struct MPI2_SCSI_TASK_MANAGE_REQUEST *mpi_request;