Commit ad604832 authored by John Garry's avatar John Garry Committed by Martin K. Petersen

scsi: hisi_sas: define hisi_sas_device.device_id as int

Currently hisi_sas_device.device_id is a u64. This can create a problem
in selecting the queue for a device, in that this code does a 64b
division on device id. For some 32b systems, 64b division is slow and
the lib reference must be explicitly included.

The device id does not need to be 64b in size, so, as a solution, just
make as an int.

Also, struct hisi_sas_device elements are re-ordered to improve packing
efficiency.
Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent f64a6988
...@@ -107,15 +107,15 @@ struct hisi_sas_dq { ...@@ -107,15 +107,15 @@ struct hisi_sas_dq {
}; };
struct hisi_sas_device { struct hisi_sas_device {
enum sas_device_type dev_type;
struct hisi_hba *hisi_hba; struct hisi_hba *hisi_hba;
struct domain_device *sas_device; struct domain_device *sas_device;
struct list_head list;
u64 attached_phy; u64 attached_phy;
u64 device_id;
atomic64_t running_req; atomic64_t running_req;
struct list_head list; enum sas_device_type dev_type;
u8 dev_status; int device_id;
int sata_idx; int sata_idx;
u8 dev_status;
}; };
struct hisi_sas_slot { struct hisi_sas_slot {
......
...@@ -209,7 +209,7 @@ static int hisi_sas_task_prep(struct sas_task *task, struct hisi_hba *hisi_hba, ...@@ -209,7 +209,7 @@ static int hisi_sas_task_prep(struct sas_task *task, struct hisi_hba *hisi_hba,
if (DEV_IS_GONE(sas_dev)) { if (DEV_IS_GONE(sas_dev)) {
if (sas_dev) if (sas_dev)
dev_info(dev, "task prep: device %llu not ready\n", dev_info(dev, "task prep: device %d not ready\n",
sas_dev->device_id); sas_dev->device_id);
else else
dev_info(dev, "task prep: device %016llx not ready\n", dev_info(dev, "task prep: device %016llx not ready\n",
...@@ -627,9 +627,9 @@ static void hisi_sas_dev_gone(struct domain_device *device) ...@@ -627,9 +627,9 @@ static void hisi_sas_dev_gone(struct domain_device *device)
struct hisi_sas_device *sas_dev = device->lldd_dev; struct hisi_sas_device *sas_dev = device->lldd_dev;
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device); struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
struct device *dev = &hisi_hba->pdev->dev; struct device *dev = &hisi_hba->pdev->dev;
u64 dev_id = sas_dev->device_id; int dev_id = sas_dev->device_id;
dev_info(dev, "found dev[%lld:%x] is gone\n", dev_info(dev, "found dev[%d:%x] is gone\n",
sas_dev->device_id, sas_dev->dev_type); sas_dev->device_id, sas_dev->dev_type);
hisi_sas_internal_task_abort(hisi_hba, device, hisi_sas_internal_task_abort(hisi_hba, device,
...@@ -1082,7 +1082,7 @@ static int hisi_sas_lu_reset(struct domain_device *device, u8 *lun) ...@@ -1082,7 +1082,7 @@ static int hisi_sas_lu_reset(struct domain_device *device, u8 *lun)
} }
out: out:
if (rc != TMF_RESP_FUNC_COMPLETE) if (rc != TMF_RESP_FUNC_COMPLETE)
dev_err(dev, "lu_reset: for device[%llx]:rc= %d\n", dev_err(dev, "lu_reset: for device[%d]:rc= %d\n",
sas_dev->device_id, rc); sas_dev->device_id, rc);
return rc; return rc;
} }
...@@ -1129,7 +1129,7 @@ static int hisi_sas_query_task(struct sas_task *task) ...@@ -1129,7 +1129,7 @@ static int hisi_sas_query_task(struct sas_task *task)
} }
static int static int
hisi_sas_internal_abort_task_exec(struct hisi_hba *hisi_hba, u64 device_id, hisi_sas_internal_abort_task_exec(struct hisi_hba *hisi_hba, int device_id,
struct sas_task *task, int abort_flag, struct sas_task *task, int abort_flag,
int task_tag) int task_tag)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment