- 26 7月, 2014 40 次提交
-
-
由 Reddy, Sreekanth 提交于
In _scsih_probe, delay the call to scsi_add_host until the host has been fully set up. Otherwise, the default .can_queue value of 1 causes scsi-mq to set the block layer request queue size to its minimum size, resulting in awful performance. In _scsih_probe error handling, call mpt3sas_base_detach rather than scsi_remove_host to properly clean up in reverse order. In _scsih_remove, call scsi_remove_host earlier to clean up in reverse order. Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NNagalakshmi Nandigama <Nagalakshmi.Nandigama@avagotech.com> Signed-off-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Reddy, Sreekanth 提交于
In _scsih_probe, delay the call to scsi_add_host until the host has been fully set up. Otherwise, the default .can_queue value of 1 causes scsi-mq to set the block layer request queue size to its minimum size, resulting in awful performance. In _scsih_probe error handling, call mpt3sas_base_detach rather than scsi_remove_host to properly clean up in reverse order. In _scsih_remove, call scsi_remove_host earlier to clean up in reverse order. Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NNagalakshmi Nandigama <Nagalakshmi.Nandigama@avagotech.com> Signed-off-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
On some Windows hosts on FC SANs, TEST_UNIT_READY can return SRB_STATUS_ERROR. Correctly handle this. Note that there is sufficient sense information to support scsi error handling even in this case. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
Correctly set SRB flags for all valid I/O directions. Some IHV drivers on the Windows host require this. The host validates the command and SRB flags prior to passing the command down to native driver stack. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
On Azure, we have seen instances of unbounded I/O latencies. To deal with this issue, implement handler that can reset the timeout. Note that the host gaurantees that it will respond to each command that has been issued. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> [hch: added a better comment explaining the issue] Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
Based on the negotiated VMBUS protocol version, we adjust the size of the storage protocol messages. The two sizes we currently handle are pre-win8 and post-win8. In WS2012 R2, we are negotiating higher VMBUS protocol version than the win8 version. Make adjustments to correctly handle this. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
Going forward it is possible that some of the commands that are not currently implemented will be implemented on future Windows hosts. Even if they are not implemented, we are told the host will corrrectly handle unsupported commands (by returning appropriate return code and sense information). Make command filtering depend on the host version. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
Set cmd_per_lun to reflect value supported by the Host. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 K. Y. Srinivasan 提交于
Hyper-V hosts can support multiple targets and multiple channels and larger number of LUNs per target. Update the code to reflect this. With this patch we can correctly enumerate all the paths in a multi-path storage environment. Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Akinobu Mita 提交于
If the controller doesn't support 64-bit addressing mode, it must not set the DMA mask to 64-bit. But it's unconditionally trying to set to 64-bit without checking 64-bit addressing support in the controller capabilities. It was correctly checked before commit 3b1d0580 ("[SCSI] ufs: Segregate PCI Specific Code"), this aims to restores the correct behaviour. To achieve this in a generic way, firstly we should push down the DMA mask setting routine ufshcd_set_dma_mask() from PCI glue driver to core driver in order to do it for both PCI glue driver and Platform glue driver. Secondly, we should change pci_ DMA mapping API to dma_ DMA mapping API because core driver is independent of glue drivers. Signed-off-by: NAkinobu Mita <mita@fixstars.com> Acked-by: NSantosh Y <santoshsy@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Akinobu Mita 提交于
The data byte count field of PRDT indicates the length of data block which is a segment of data transfer for SCSI commands. The value of this field shall have Dword granularity and the the maximum of length is 256KB. This adjusts dma pad mask and max segment size to the above-mentioned PRDT limitations. Signed-off-by: NAkinobu Mita <mita@fixstars.com> Reviewed-by: NSubhash Jadavani <subhashj@codeaurora.org> Tested-by: NDolev Raviv <draviv@codeaurora.org> Acked-by: NVinayak Holikatti <vinholikatti@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Sujit Reddy Thumma 提交于
UFS 1.1 specification does not support MAINTENANCE IN(0xA3) SCSI command and hence it doesn't support REPORT SUPPORTED OPERATION CODES as well. Change-Id: Ic09c5b46b2511b1c28db478023c32b898ac69e6d Signed-off-by: NSujit Reddy Thumma <sthumma@codeaurora.org> Signed-off-by: NDolev Raviv <draviv@codeaurora.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Dolev Raviv 提交于
In interrupt context, after reading and comparing the UTRLDBR to hba->outstanding_request and before resetting the interrupt aggregation, there might be completion of another transfer request (TR). Such TRs might get stuck, pending, until the next interrupt is generated (if any). Changing the sequence of resetting the interrupt aggregation first and then reading UTRLDBR status, will assure that completed TRs won't get stuck pending. Signed-off-by: NDolev Raviv <draviv@codeaurora.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Sujit Reddy Thumma 提交于
Some UFS devices may expose bLUQueueDepth field as zero indicating that the queue depth depends on the number of resources available for LUN at a particular instant to handle the outstanding transfer requests. Currently, when response for SCSI command is TASK_FULL the LLD decrements the queue depth but fails to increment when the resources are available. The scsi mid-layer handles the change in queue depth heuristically and offers simple interface with ->change_queue_depth. Signed-off-by: NSujit Reddy Thumma <sthumma@codeaurora.org> Signed-off-by: NDolev Raviv <draviv@codeaurora.org> Acked-by: NSantosh Y <santoshsy@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Dolev Raviv 提交于
Some of the UFS devices may support different number of commands that can be queued per LU. At the current implementation, SW configure each of the UFS devices LU's according to the controller capability. In this patch the queue depth available per LU is read and updated in the LU's SW structure. Signed-off-by: NDolev Raviv <draviv@codeaurora.org> Signed-off-by: NRaviv Shvili <rshvili@codeaurora.org> Acked-by: NSantosh Y <santoshsy@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Dolev Raviv 提交于
Check query response status before copying the response. Add descriptor query response size check, before copying it to buffer. Signed-off-by: NDolev Raviv <draviv@codeaurora.org> Signed-off-by: NRaviv Shvili <rshvili@codeaurora.org> Acked-by: NSantosh Y <santoshsy@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Dolev Raviv 提交于
Introduces the API for sending queries with descriptors. A descriptor is a block or page of parameters that describe the device. The descriptors are classified into types and can range in size from 2 bytes through 255 bytes. All descriptors have a length value as their first element, and a type identification element as their second byte. All descriptors are readable and some may be write once. They are accessed using their type, index and selector. Signed-off-by: NDolev Raviv <draviv@codeaurora.org> Signed-off-by: NRaviv Shvili <rshvili@codeaurora.org> Acked-by: NSantosh Y <santoshsy@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Maurizio Lombardi 提交于
The if_info pointer is not released by the mgmt_set_ip() function Signed-off-by: NMaurizio Lombardi <mlombard@redhat.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Venkatesh Srinivas 提交于
change_queue_depth allows changing per-target queue depth via sysfs. It also allows the SCSI midlayer to ramp down the number of concurrent inflight requests in response to a SCSI BUSY status response and allows the midlayer to ramp the count back up to the device maximum when the BUSY condition has resolved. Signed-off-by: NVenkatesh Srinivas <venkateshs@google.com> Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Ming Lei 提交于
The spinlock of tgt_lock is only for serializing read and write req_vq, one lockless seqcount is enough for the purpose. On one 16core VM with vhost-scsi backend, the patch can improve IOPS with 3% on random read test. Signed-off-by: NMing Lei <ming.lei@canonical.com> [Add initialization in virtscsi_target_alloc. - Paolo] Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
When copy_from_user fails, return -EFAULT, not -ENOMEM Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reported-by: NRobert Elliott <elliott@hp.com> Reviewed-by: NJoe Handzik <joseph.t.handzik@hp.com> Reviewed-by: NScott Teel <scott.teel@hp.com> Reviewed by: Mike MIller <michael.miller@canonical.com> Cc: <stable@vger.kernel.org> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
When devices come on line, they should be removed from the list of offline devices that are monitored. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NScott Teel <scott.teel@hp.com> Reviewed-by: NJoe Handzik <joseph.t.handzik@hp.com> Reviewed by: Mike MIller <michael.miller@canonical.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Arnd Bergmann 提交于
commit 28e13446 "[SCSI] hpsa: enable unit attention reporting" turns on unit attention notifications, but got the change wrong for all architectures other than x86, which now store an uninitialized value into the device register. Gcc helpfully warns about this: ../drivers/scsi/hpsa.c: In function 'hpsa_set_driver_support_bits': ../drivers/scsi/hpsa.c:6373:17: warning: 'driver_support' is used uninitialized in this function [-Wuninitialized] driver_support |= ENABLE_UNIT_ATTN; ^ This moves the #ifdef so only the prefetch-enable is conditional on x86, not also reading the initial register contents. Signed-off-by: NArnd Bergmann <arnd@arndb.de> Fixes: 28e13446 "[SCSI] hpsa: enable unit attention reporting" Cc: stable@vger.kernel.org # v3.14+ Acked-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Robert Elliott 提交于
Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
a 6-byte READ/WRITE CDB with a 0 block data transfer really means a 256 block data transfer. The RAID mapping code failed to handle this case. For 10/12/16 byte READ/WRITEs, 0 just means no data should be transferred, and should not trigger BUG_ON. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reported-by: NRobert Elliott <elliott@hp.com> Reviewed-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Vikas Chaudhary 提交于
Signed-off-by: NVikas Chaudhary <vikas.chaudhary@qlogic.com> Acked-by: NEddie Wai <eddie.wai@broadcom.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Saurav Kashyap 提交于
QLogic has acquired the NetXtremeII products and drivers from Broadcom. This patch re-brands bnx2fc driver as a QLogic driver Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NVikas Chaudhary <vikas.chaudhary@qlogic.com> Acked-by: NEddie Wai <eddie.wai@broadcom.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Vikas Chaudhary 提交于
QLogic has acquired the NetXtremeII products and drivers from Broadcom. This patch re-brands bnx2i driver as a QLogic driver Signed-off-by: NVikas Chaudhary <vikas.chaudhary@qlogic.com> Acked-by: NEddie Wai <eddie.wai@broadcom.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Martin K. Petersen 提交于
On systems with a non power-of-two CPU count the existing MSI-X grouping code failed to distribute interrupts correctly. Rework the code to handle arbitrary processor counts. Also remove the hardcoded upper limit on the number of processors so we can boot on large systems. Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com> Acked-by: NSreekanth Reddy <Sreekanth.reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Martin K. Petersen 提交于
On systems with a non power-of-two CPU count the existing MSI-X grouping code failed to distribute interrupts correctly. Rework the code to handle arbitrary processor counts. Also remove the hardcoded upper limit on the number of processors so we can boot on large systems. Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com> Acked-by: NSreekanth Reddy <Sreekanth.reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
Fixes the following smatch warnings: drivers/message/fusion/mptbase.c:652 mptbase_reply() warn: variable dereferenced before check 'reply' (see line 639) [JL: No-brainer, the enclosing switch statement dereferences reply, so we can't get here unless reply is valid.] drivers/message/fusion/mptsas.c:1255 mptsas_taskmgmt_complete() error: we previously assumed 'pScsiTmReply' could be null (see line 1227) [HCH: Reading the code in mptsas_taskmgmt_complete it's pretty obvious that it can't do anything useful if mr/pScsiTmReply are NULL, so I suspect it would be best to just return at the beginning of the function. I'd love to understand if it actually could ever be zero, which I doubt. Maybe the LSI people can shed some light on that?] drivers/message/fusion/mptsas.c:3888 mptsas_not_responding_devices() error: we previously assumed 'port_info->phy_info' could be null (see line 3875) [HCH: It's pretty obvious from reading mptsas_sas_io_unit_pg0 that we never register a port_info with a NULL phy_info in the lists, so all NULL checks on it could be deleted.] drivers/message/fusion/mptscsih.c:1284 mptscsih_info() error: we previously assumed 'h' could be null (see line 1274) [HCH: shost_priv can't return NULL, so the if (h) should be removed.] drivers/message/fusion/mptscsih.c:1388 mptscsih_qcmd() error: we previously assumed 'vdevice' could be null (see line 1373) [HCH: vdevice can't ever be NULL here, it's allocated in ->slave_alloc and thus guaranteed to be around when ->queuecommand is called.] Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
Tack the firmware reply event_data payload to the end of its corresponding struct fw_event_work allocation. Rework fw_event_work allocation calculations to include the event_data size where appropriate. This clarifies the code a bit and avoids the following smatch warnings: drivers/message/fusion/mptsas.c:1003 mptsas_queue_device_delete() error: memcpy() 'fw_event->event_data' too small (29 vs 36) drivers/message/fusion/mptsas.c:1017 mptsas_queue_rescan() error: not allocating enough data 168 vs 160 Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
The struct _MPT_ADAPTER doesn't need a full copy of the product string, so prod_name can point to the string literal storage that the driver already provides. Avoids the following smatch warning: drivers/message/fusion/mptbase.c:2858 MptDisplayIocCapabilities() warn: this array is probably non-NULL. 'ioc->prod_name' Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
Let memdup_user handle the kmalloc, copy_from_user and error checking kfree code. Spotted by the following smatch (false positive) warning: drivers/message/fusion/mptctl.c:1369 mptctl_getiocinfo() warn: possible info leak 'karg' Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
Fixes the following smatch warnings: drivers/message/fusion/mptfc.c:529 mptfc_target_destroy() info: redundant null check on starget->hostdata calling kfree() drivers/message/fusion/mptspi.c:465 mptspi_target_destroy() info: redundant null check on starget->hostdata calling kfree() Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
Fixes the following sparse warnings: drivers/message/fusion/mptbase.c:7011:1: warning: symbol 'mpt_SoftResetHandler' was not declared. Should it be static? drivers/message/fusion/mptsas.c:1578:23: warning: symbol 'mptsas_refreshing_device_handles' was not declared. Should it be static? drivers/message/fusion/mptsas.c:3653:24: warning: symbol 'mptsas_expander_add' was not declared. Should it be static? drivers/message/fusion/mptsas.c:5327:1: warning: symbol 'mptsas_shutdown' was not declared. Should it be static? drivers/message/fusion/mptspi.c:624:1: warning: symbol 'mptscsih_quiesce_raid' was not declared. Should it be static? Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
Tack the firmware reply event_data payload to the end of its corresponding struct fw_event_work allocation. This matches the convention in the mptfusion driver and simplifies the code. This avoids the following smatch warning: drivers/scsi/mpt3sas/mpt3sas_scsih.c:2519 mpt3sas_send_trigger_data_event() warn: possible memory leak of 'fw_event' Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
In _scsih_{slave,target}_alloc, an incorrect structure type is passed to sizeof() when allocating storage for hostdata. Luckily larger structure types were used, so at least the wrong sizes were safe: struct scsi_device (1784 bytes) > struct MPT3SAS_DEVICE (24 bytes) struct scsi_target (760 bytes) > struct MPT3SAS_TARGET (32 bytes) This fixes the following smatch warnings: drivers/scsi/mpt3sas/mpt3sas_scsih.c:1166 _scsih_target_alloc() warn: struct type mismatch 'MPT3SAS_TARGET vs scsi_target' drivers/scsi/mpt3sas/mpt3sas_scsih.c:1280 _scsih_slave_alloc() warn: struct type mismatch 'MPT3SAS_DEVICE vs scsi_device' Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Lawrence 提交于
The MPT2SAS_ADAPTER reply_post_host_index[] holds calculated addresses in memory mapped register space. Add an "__iomem" annotation to silence the following sparse warnings: drivers/scsi/mpt2sas/mpt2sas_base.c:1006:43: warning: incorrect type in argument 2 (different address spaces) expected void volatile [noderef] <asn:2>*addr got unsigned long long [usertype] *<noident> drivers/scsi/mpt2sas/mpt2sas_base.c:4299:22: warning: cast removes address space of expression drivers/scsi/mpt2sas/mpt2sas_base.c:4303:27: warning: cast removes address space of expression Signed-off-by: NJoe Lawrence <joe.lawrence@stratus.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@avagotech.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-