diff --git a/drivers/scsi/hisi_sas/hisi_sas.h b/drivers/scsi/hisi_sas/hisi_sas.h index c25c79b46a1816a792764c39664a812d072b53ac..6e3e9ac6bbb749e87ea7e44164cd816d11fccd7a 100644 --- a/drivers/scsi/hisi_sas/hisi_sas.h +++ b/drivers/scsi/hisi_sas/hisi_sas.h @@ -183,7 +183,7 @@ struct hisi_sas_device { struct hisi_sas_dq *dq; struct list_head list; enum sas_device_type dev_type; - int device_id; + unsigned int device_id; int sata_idx; spinlock_t lock; }; @@ -255,8 +255,9 @@ struct hisi_sas_hw { void (*prep_stp)(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot); void (*prep_abort)(struct hisi_hba *hisi_hba, - struct hisi_sas_slot *slot, - int device_id, int abort_flag, int tag_to_abort); + struct hisi_sas_slot *slot, + unsigned int device_id, + int abort_flag, int tag_to_abort); int (*slot_complete)(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot); void (*phys_init)(struct hisi_hba *hisi_hba); diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c index 03732c24f76d872c6bc970f6a39d3b8f2922d3ba..afae239d8b5dde8e461dd314b7d49cfe2f8c27eb 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_main.c +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c @@ -301,7 +301,7 @@ static void hisi_sas_task_prep_ata(struct hisi_hba *hisi_hba, static void hisi_sas_task_prep_abort(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot, - int device_id, int abort_flag, int tag_to_abort) + unsigned int device_id, int abort_flag, int tag_to_abort) { hisi_hba->hw->prep_abort(hisi_hba, slot, device_id, abort_flag, tag_to_abort); @@ -446,9 +446,8 @@ static int hisi_sas_dif_dma_map(struct hisi_hba *hisi_hba, } static int hisi_sas_task_prep(struct sas_task *task, - struct hisi_sas_dq **dq_pointer, bool is_tmf, struct hisi_sas_tmf_task *tmf, - int *pass) + int *pass, struct hisi_sas_dq **dq_pointer) { struct domain_device *device = task->dev; struct hisi_hba *hisi_hba = dev_to_hisi_hba(device); @@ -634,7 +633,7 @@ static int hisi_sas_task_exec(struct sas_task *task, gfp_t gfp_flags, } /* protect task_prep and start_delivery sequence */ - rc = hisi_sas_task_prep(task, &dq, is_tmf, tmf, &pass); + rc = hisi_sas_task_prep(task, is_tmf, tmf, &pass, &dq); if (rc) dev_err(dev, "task exec: failed[%d]!\n", rc); @@ -1889,7 +1888,8 @@ static int hisi_sas_query_task(struct sas_task *task) } static int -hisi_sas_internal_abort_task_exec(struct hisi_hba *hisi_hba, int device_id, +hisi_sas_internal_abort_task_exec(struct hisi_hba *hisi_hba, + unsigned int device_id, struct sas_task *task, int abort_flag, int task_tag, struct hisi_sas_dq *dq) { diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c index f3960365b553c2f3f8e2ee4258c9f637d062b786..856f891d0136e7d6847620aaa59765e8c1657d22 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c +++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c @@ -928,9 +928,9 @@ static void start_delivery_v1_hw(struct hisi_sas_dq *dq) static void prep_prd_sge_v1_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot, - struct hisi_sas_cmd_hdr *hdr, struct scatterlist *scatter, - int n_elem) + u64 n_elem, + struct hisi_sas_cmd_hdr *hdr) { struct hisi_sas_sge_page *sge_page = hisi_sas_sge_addr_mem(slot); struct scatterlist *sg; @@ -999,9 +999,9 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba, struct sas_ssp_task *ssp_task = &task->ssp_task; struct scsi_cmnd *scsi_cmnd = ssp_task->cmd; struct hisi_sas_tmf_task *tmf = slot->tmf; - int has_data = 0, priority = !!tmf; + int has_data = 0; u8 *buf_cmd, fburst = 0; - u32 dw1, dw2; + u32 dw1, dw2, priority = !!tmf; /* create header */ hdr->dw0 = cpu_to_le32((1 << CMD_HDR_RESP_REPORT_OFF) | @@ -1049,8 +1049,8 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba, hdr->transfer_tags = cpu_to_le32(slot->idx << CMD_HDR_IPTT_OFF); if (has_data) - prep_prd_sge_v1_hw(hisi_hba, slot, hdr, task->scatter, - slot->n_elem); + prep_prd_sge_v1_hw(hisi_hba, slot, task->scatter, + slot->n_elem, hdr); hdr->data_transfer_len = cpu_to_le32(task->total_xfer_len); hdr->cmd_table_addr = cpu_to_le64(hisi_sas_cmd_hdr_addr_dma(slot)); diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c index b22b0ab40d5ddae89f228619b99ed950a9d745dc..d1fc3aa2a17262fab234d3349e06f2fcf055b00a 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c +++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c @@ -1692,9 +1692,9 @@ static void start_delivery_v2_hw(struct hisi_sas_dq *dq) static void prep_prd_sge_v2_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot, - struct hisi_sas_cmd_hdr *hdr, struct scatterlist *scatter, - int n_elem) + u64 n_elem, + struct hisi_sas_cmd_hdr *hdr) { struct hisi_sas_sge_page *sge_page = hisi_sas_sge_addr_mem(slot); struct scatterlist *sg; @@ -1764,9 +1764,9 @@ static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba, struct sas_ssp_task *ssp_task = &task->ssp_task; struct scsi_cmnd *scsi_cmnd = ssp_task->cmd; struct hisi_sas_tmf_task *tmf = slot->tmf; - int has_data = 0, priority = !!tmf; + int has_data = 0; u8 *buf_cmd; - u32 dw1 = 0, dw2 = 0; + u32 dw1 = 0, dw2 = 0, priority = !!tmf; hdr->dw0 = cpu_to_le32((1 << CMD_HDR_RESP_REPORT_OFF) | (2 << CMD_HDR_TLR_CTRL_OFF) | @@ -1807,8 +1807,8 @@ static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba, hdr->transfer_tags = cpu_to_le32(slot->idx); if (has_data) - prep_prd_sge_v2_hw(hisi_hba, slot, hdr, task->scatter, - slot->n_elem); + prep_prd_sge_v2_hw(hisi_hba, slot, task->scatter, + slot->n_elem, hdr); hdr->data_transfer_len = cpu_to_le32(task->total_xfer_len); hdr->cmd_table_addr = cpu_to_le64(hisi_sas_cmd_hdr_addr_dma(slot)); @@ -2523,8 +2523,8 @@ static void prep_ata_v2_hw(struct hisi_hba *hisi_hba, struct hisi_sas_port *port = to_hisi_sas_port(sas_port); struct hisi_sas_tmf_task *tmf = slot->tmf; u8 *buf_cmd; - int has_data = 0, hdr_tag = 0; - u32 dw1 = 0, dw2 = 0; + int has_data = 0; + u32 dw1 = 0, dw2 = 0, hdr_tag = 0; /* create header */ /* dw0 */ @@ -2578,8 +2578,8 @@ static void prep_ata_v2_hw(struct hisi_hba *hisi_hba, hdr->transfer_tags = cpu_to_le32(slot->idx); if (has_data) - prep_prd_sge_v2_hw(hisi_hba, slot, hdr, task->scatter, - slot->n_elem); + prep_prd_sge_v2_hw(hisi_hba, slot, task->scatter, + slot->n_elem, hdr); hdr->data_transfer_len = cpu_to_le32(task->total_xfer_len); hdr->cmd_table_addr = cpu_to_le64(hisi_sas_cmd_hdr_addr_dma(slot)); @@ -2629,7 +2629,7 @@ static void hisi_sas_internal_abort_quirk_timeout(struct timer_list *t) static void prep_abort_v2_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot, - int device_id, int abort_flag, int tag_to_abort) + unsigned int device_id, int abort_flag, int tag_to_abort) { struct sas_task *task = slot->task; struct domain_device *dev = task->dev; diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c index d6ca4f12e87fe67e92c8ba67e61fcbe15c1236e8..9799b2bb6a41bbbff06ee72f720c42fe4103e6b5 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c @@ -1006,9 +1006,9 @@ static void start_delivery_v3_hw(struct hisi_sas_dq *dq) static void prep_prd_sge_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot, - struct hisi_sas_cmd_hdr *hdr, struct scatterlist *scatter, - int n_elem) + u64 n_elem, + struct hisi_sas_cmd_hdr *hdr) { struct hisi_sas_sge_page *sge_page = hisi_sas_sge_addr_mem(slot); struct scatterlist *sg; @@ -1149,9 +1149,9 @@ static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba, struct sas_ssp_task *ssp_task = &task->ssp_task; struct scsi_cmnd *scsi_cmnd = ssp_task->cmd; struct hisi_sas_tmf_task *tmf = slot->tmf; - int has_data = 0, priority = !!tmf; + int has_data = 0; u8 *buf_cmd; - u32 dw1 = 0, dw2 = 0, len = 0; + u32 dw1 = 0, dw2 = 0, len = 0, priority = !!tmf; hdr->dw0 = cpu_to_le32((1 << CMD_HDR_RESP_REPORT_OFF) | (2 << CMD_HDR_TLR_CTRL_OFF) | @@ -1191,8 +1191,8 @@ static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba, hdr->transfer_tags = cpu_to_le32(slot->idx); if (has_data) { - prep_prd_sge_v3_hw(hisi_hba, slot, hdr, task->scatter, - slot->n_elem); + prep_prd_sge_v3_hw(hisi_hba, slot, task->scatter, + slot->n_elem, hdr); if (scsi_prot_sg_count(scsi_cmnd)) { prep_prd_sge_dif_v3_hw(hisi_hba, slot, hdr, scsi_prot_sglist(scsi_cmnd), @@ -1302,8 +1302,8 @@ static void prep_ata_v3_hw(struct hisi_hba *hisi_hba, struct asd_sas_port *sas_port = device->port; struct hisi_sas_port *port = to_hisi_sas_port(sas_port); u8 *buf_cmd; - int has_data = 0, hdr_tag = 0; - u32 dw1 = 0, dw2 = 0; + int has_data = 0; + u32 dw1 = 0, dw2 = 0, hdr_tag = 0; hdr->dw0 = cpu_to_le32(port->id << CMD_HDR_PORT_OFF); if (parent_dev && DEV_IS_EXPANDER(parent_dev->dev_type)) @@ -1352,8 +1352,8 @@ static void prep_ata_v3_hw(struct hisi_hba *hisi_hba, hdr->transfer_tags = cpu_to_le32(slot->idx); if (has_data) - prep_prd_sge_v3_hw(hisi_hba, slot, hdr, task->scatter, - slot->n_elem); + prep_prd_sge_v3_hw(hisi_hba, slot, task->scatter, + slot->n_elem, hdr); hdr->data_transfer_len = cpu_to_le32(task->total_xfer_len); hdr->cmd_table_addr = cpu_to_le64(hisi_sas_cmd_hdr_addr_dma(slot)); @@ -1369,7 +1369,7 @@ static void prep_ata_v3_hw(struct hisi_hba *hisi_hba, static void prep_abort_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot, - int device_id, int abort_flag, int tag_to_abort) + unsigned int device_id, int abort_flag, int tag_to_abort) { struct sas_task *task = slot->task; struct domain_device *dev = task->dev;