Commit Graph

149 Commits

Author SHA1 Message Date
Ching Huang
dfeba64dd6 scsi: arcmsr: Update driver version to v1.40.00.10-20190116
From Ching Huang <ching2048@areca.com.tw>

Update driver version to v1.40.00.10-20190116.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-22 21:38:21 -05:00
Ching Huang
317d0e027c scsi: arcmsr: Fix suspend/resume of ACB_ADAPTER_TYPE_B part 2
From Ching Huang <ching2048@areca.com.tw>

For ACB_ADAPTER_TYPE_B controller, the read/write after hibernate and
resume may sometimes result in 'isr get an illegal ccb command' in
/var/log/messages. This patch fixes it.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-22 21:38:21 -05:00
Ching Huang
3e3153b050 scsi: arcmsr: Use dma_alloc_coherent to replace dma_zalloc_coherent
From Ching Huang <ching2048@areca.com.tw>

dma_zalloc_coherent will be phased out. Use dma_alloc_coherent instead.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-22 21:38:21 -05:00
Ching Huang
ad796f790c scsi: arcmsr: Update driver version to v1.40.00.10-20181217
From Ching Huang <ching2048@areca.com.tw>

Update driver version to v1.40.00.10-20181217

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
afdda87852 scsi: arcmsr: Fix suspend/resume of ACB_ADAPTER_TYPE_B
From Ching Huang <ching2048@areca.com.tw>

Fix suspend/resume of ACB_ADAPTER_TYPE_B

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
1d120c6183 scsi: arcmsr: Separate 'set dma mask' as a function
From Ching Huang <ching2048@areca.com.tw>

Separate 'set dma mask' as a function

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
7ec7261f66 scsi: arcmsr: Add an option of set dma_mask_64 for ACB_ADAPTER_TYPE_A
From Ching Huang <ching2048@areca.com.tw>

Add an option of set dma_mask_64 for ACB_ADAPTER_TYPE_A

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
a36ade416d scsi: arcmsr: Update ACB_ADAPTER_TYPE_D for >4GB ccb addressing
From Ching Huang <ching2048@areca.com.tw>

Update ACB_ADAPTER_TYPE_D for >4gb ccb addressing

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
c71ec5511b scsi: arcmsr: Update ACB_ADAPTER_TYPE_C for >4GB ccb addressing
From Ching Huang <ching2048@areca.com.tw>

Update ACB_ADAPTER_TYPE_C for >4GB ccb addressing

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
e66764f276 scsi: arcmsr: Update ACB_ADAPTER_TYPE_B for >4GB ccb addressing
From Ching Huang <ching2048@areca.com.tw>

Update ACB_ADAPTER_TYPE_B for >4GB ccb addressing

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
9e386a55e0 scsi: arcmsr: Update ACB_ADAPTER_TYPE_A for >4GB ccb addressing
From Ching Huang <ching2048@areca.com.tw>

Update ACB_ADAPTER_TYPE_A for >4GB ccb addressing

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
7860a48686 scsi: arcmsr: Update arcmsr_alloc_ccb_pool for ccb buffer address above 4GB
From Ching Huang <ching2048@areca.com.tw>

Update arcmsr_alloc_ccb_pool for ccb buffer address above 4GB

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
222f1189b0 scsi: arcmsr: Merge arcmsr_alloc_io_queue to arcmsr_alloc_ccb_pool
From Ching Huang <ching2048@areca.com.tw>

Merge arcmsr_alloc_io_queue to arcmsr_alloc_ccb_pool

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
609d08581a scsi: arcmsr: Rename arcmsr_free_mu to arcmsr_free_io_queue
From Ching Huang <ching2048@areca.com.tw>

Rename arcmsr_free_mu to arcmsr_free_io_queue

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Ching Huang
381d66da72 scsi: arcmsr: Rename acb structure member roundup_ccbsize to ioqueue_size
From Ching Huang <ching2048@areca.com.tw>

Rename acb structure member roundup_ccbsize to ioqueue_size

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:58:36 -05:00
Christoph Hellwig
2a3d4eb8e2 scsi: flip the default on use_clustering
Most SCSI drivers want to enable "clustering", that is merging of
segments so that they might span more than a single page.  Remove the
ENABLE_CLUSTERING define, and require drivers to explicitly set
DISABLE_CLUSTERING to disable this feature.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-12-18 23:13:12 -05:00
Christoph Hellwig
b3b07762db scsi: arcmsr: use dma_set_mask
The driver currently uses pci_set_dma_mask despite otherwise using the
generic DMA API.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-11-15 14:26:28 -05:00
YueHaibing
242b4a39be scsi: arcmsr: Remove set but not used variables 'id, lun'
Fixes gcc '-Wunused-but-set-variable' warning:

drivers/scsi/arcmsr/arcmsr_hba.c: In function 'arcmsr_drain_donequeue':
drivers/scsi/arcmsr/arcmsr_hba.c:1320:10: warning:
 variable 'lun' set but not used [-Wunused-but-set-variable]

drivers/scsi/arcmsr/arcmsr_hba.c:1320:6: warning:
 variable 'id' set but not used [-Wunused-but-set-variable]

Never used since introduction in commit ae52e7f09f ("arcmsr: Support 1024 scatter-gather list entries and improve AP while FW trapped and behaviors of EHs").

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-10-16 18:13:59 -04:00
Colin Ian King
ca2ade2415 scsi: arcmsr: clean up clang warning on extraneous parentheses
There are extraneous parantheses that are causing clang to produce a
warning so remove these.

Clean up 3 clang warnings:
equality comparison with extraneous parentheses [-Wparentheses-equality]

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-10-10 23:21:35 -04:00
Geert Uytterhoeven
948dff7a41 scsi: arcmsr: Spelling s/rebulid/rebuild/
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-09-11 20:58:29 -04:00
Ching Huang
cb12ba356c scsi: arcmsr: Update driver version to v1.40.00.09-20180709
Update driver version to v1.40.00.09-20180709

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-07-12 22:34:59 -04:00
Ching Huang
97fe222524 scsi: arcmsr: Fix error of resuming from hibernation for adapter type E
Fix error of resuming from hibernation for adapter type E.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-07-12 22:34:34 -04:00
Ching Huang
45dce24df5 scsi: arcmsr: Change driver version to v1.40.00.05-20180309
Change driver version to v1.40.00.05-20180309

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-03-21 18:46:30 -04:00
Ching Huang
c2c62ebca1 scsi: arcmsr: Sleep to avoid CPU stuck too long for waiting adapter ready
Sleep to avoid CPU stuck too long for waiting adapter ready.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-03-21 18:46:30 -04:00
Ching Huang
c4c1adb349 scsi: arcmsr: Handle adapter removed due to thunderbolt cable disconnection.
Handle adapter removed due to thunderbolt cable disconnection.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-03-21 18:46:30 -04:00
Ching Huang
50b08240de scsi: arcmsr: Rename ACB_F_BUS_HANG_ON to ACB_F_ADAPTER_REMOVED for adapter hot-plug
Rename ACB_F_BUS_HANG_ON to ACB_F_ADAPTER_REMOVED for adapter hot-plug.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-03-21 18:46:30 -04:00
Arnd Bergmann
45596c7889 scsi: arcmsr: avoid do_gettimeofday
The arcmsr uses its own implementation of time_to_tm(), along with
do_gettimeofday() to read the current time. While the algorithm used
here is fine in principle, it suffers from two problems:

- it assigns the seconds portion of the timeval to a 32-bit unsigned
  integer that overflows in 2106 even on 64-bit architectures.

- do_gettimeofday() returns a time_t that overflows in 2038 on all
  32-bit systems.

This changes the time retrieval function to ktime_get_real_seconds(),
which returns a proper 64-bit value, and replaces the open-coded
time_to_tm() algorithm with a call to the safe time64_to_tm().

I checked way all numbers are indexed and found that months are given in
range 0..11 while the days are in range 1..31, same as 'struct tm', but
the year value that the firmware expects starts in 2000 while 'struct
tm' is based on year 1900, so it needs a small adjustment.

[mkp: checkpatch tweaks]

Fixes: b416c09947 ("scsi: arcmsr: Add a function to set date and time to firmware")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-01-22 20:04:02 -05:00
Ching Huang
6ae9abe0bd scsi: arcmsr: simplify arcmsr_request_device_map routine
Simplify arcmsr_request_device_map routine.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-20 21:11:51 -05:00
Ching Huang
1e9c81080d scsi: arcmsr: simplify all arcmsr_hbaX_get_config routine by call a new get_adapter_config function
Simplify all arcmsr_hbaX_get_config routine by call a new
get_adapter_config function.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-20 21:11:50 -05:00
Ching Huang
22c4ae5b99 scsi: arcmsr: simplify arcmsr_hbaE_get_config function
Simplify arcmsr_hbaE_get_config function.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-20 21:11:50 -05:00
Ching Huang
b6b3084acb scsi: arcmsr: waiting for iop firmware ready before issue get_config command to iop
Waiting for iop firmware ready before issue get_config command to iop
for adapter type A and D.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-20 21:11:49 -05:00
Ching Huang
df9f0ee9d5 scsi: arcmsr: simplify arcmsr_hbaC_get_config function
Simplify arcmsr_hbaC_get_config function.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-20 21:11:49 -05:00
Colin Ian King
3c62ecda0e scsi: arcmsr: remove redundant check for secs < 0
The check for secs being less than zero is redundant for two reasons.
Firstly, secs is unsigned so the check is always going to be false.
Secondly, if secs was signed the proceeding calculation of secs is never
going to be negative.  Hence we can remove this redundant check and day
and secs re-adjustment.

Detected by static analysis with smatch:
arcmsr_set_iop_datetime() warn: unsigned 'secs' is never less than zero.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-11 21:37:08 -05:00
Ching Huang
fa576b43f6 scsi: arcmsr: Fix command result for CHECK_CONDITION
Fix report command result error when CHECK_CONDITION.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:42 -05:00
Ching Huang
bc81192eda scsi: arcmsr: Update driver version to v1.40.00.04-20171130
Update driver version to v1.40.00.04-20171130

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
07640404bd scsi: arcmsr: Add driver module parameter msix_enable
Add module parameter msix_enable so user has the option of disabling
MSI-X interrupts if there is a platform problem.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
a18686eb97 scsi: arcmsr: Add driver module parameter msi_enable
Add module parameter msi_enable so user has the option of disabling MSI
interrupts if there is a platform problem.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
852c3f3240 scsi: arcmsr: Fix grammar
Fix grammar.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
a3de4b58bc scsi: arcmsr: Adjust whitespace
Adjust tabs and whitespace.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
ea331f30ec scsi: arcmsr: Spin off duplicate code
Spin off duplicate code of timer init for message isr BH in arcmsr_probe
and arcmsr_resume as a function arcmsr_init_get_devmap_timer.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
2124c5b2cc scsi: arcmsr: Fix clear doorbell queue on ACB_ADAPTER_TYPE_B
Fix clear doorbell queue on ACB_ADAPTER_TYPE_B controller.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
b416c09947 scsi: arcmsr: Add a function to set date and time to firmware
Add a function arcmsr_set_iop_datetime and driver option set_date_time
to set date and time to firmware.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
5dd8b3e7a0 scsi: arcmsr: Add ACB_F_MSG_GET_CONFIG to acb->acb_flags
Add ACB_F_MSG_GET_CONFIG to acb->acb_flags for for message interrupt
checking before schedule work for get device map.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
abf33d83b2 scsi: arcmsr: Add driver option cmd_per_lun
Add driver option cmd_per_lun to set host->cmd_per_lun value by user.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
e4587f455f scsi: arcmsr: Replace constant ARCMSR_MAX_OUTSTANDING_CMD
Replace constant ARCMSR_MAX_OUTSTANDING_CMD by variable
acb->maxOutstanding that was determined by user.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
dd6206e151 scsi: arcmsr: Add driver option host_can_queue
Add driver option host_can_queue to set host->can_queue value by
user. It's value expands up to 1024.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:41 -05:00
Ching Huang
d076e4aaf6 scsi: arcmsr: replace constant ARCMSR_MAX_FREECCB_NUM
Replace constant ARCMSR_MAX_FREECCB_NUM by variable acb->maxFreeCCB that
was received from firmware.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:40 -05:00
Ching Huang
aa4d1d5676 scsi: arcmsr: Increase host controller command queue depth
Update ARCMSR_MAX_OUTSTANDING_CMD and ARCMSR_MAX_FREECCB_NUM to 1024.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:40 -05:00
Ching Huang
235090241c scsi: arcmsr: Add code for ACB_ADAPTER_TYPE_E
Add code for ACB_ADAPTER_TYPE_E to support new adapter ARC-1884.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:40 -05:00
Ching Huang
72a7f3130f scsi: arcmsr: simplify arcmsr_iop_init function
Simplify arcmsr_iop_init function.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-12-06 19:32:40 -05:00