- 10 5月, 2016 2 次提交
-
-
由 Hannes Reinecke 提交于
Define the NCQ NON DATA command and update libsas to handle it correctly. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Update libsas and dependent drivers to handle FPDMA SEND/RECEIVE correctly. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 16 4月, 2016 1 次提交
-
-
由 David Daney 提交于
It is unclear what the original intent of the masking was, but it is clearly incorrect to truncate a physical address before calling ioremap(). On systems where there are valid physical address bits above bit-31 (arm64 for example) the result is an eventual OOPs when initializing the driver. Remove the bogus code to fix it. Signed-off-by: NDavid Daney <david.daney@cavium.com> Acked-by: NJack Wang <jinpu.wang@profitbricks.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 10 11月, 2015 2 次提交
-
-
由 Christoph Hellwig 提交于
This patch changes the !blk-mq path to the same defaults as the blk-mq I/O path by always enabling block tagging, and always using host wide tags. We've had blk-mq available for a few releases so bugs with this mode should have been ironed out, and this ensures we get better coverage of over tagging setup over different configs. Signed-off-by: NChristoph Hellwig <hch@lst.de> Acked-by: NJens Axboe <axboe@kernel.dk> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Benjamin Rood 提交于
Previously, when this module was unloaded via 'rmmod' with at least one drive attached, the SCSI error handler thread would become stuck in an infinite recovery loop and lockup the system, necessitating a reboot. Once the SAS layer is detached, the driver will fail any subsequent commands since the target devices are removed. However, removing the SCSI host generates a SYNCHRONIZE CACHE (10) command, which was failed and left the error handler no method of recovery. This patch simply removes the SCSI host first so that no more commands can come down, prior to cleaning up the SAS layer. Note that the stack is built up with the SCSI host first, and then the SAS layer. Perhaps it should be reversed for symmetry, so that commands cannot be sent to the pm80xx driver prior to attaching the SAS layer? What was really strange about this bug was that it was introduced at commit cff549e4 ("[SCSI]: proper state checking and module refcount handling in scsi_device_get"). This commit appears to tinker with how the reference counting is performed for SCSI device objects. My theory is that prior to this commit, the refcount for a device object was blindly incremented at some point during the teardown process which coincidentially made the device stick around during the procedure, which also coincidentially made any commands sent to the driver not fail (since the device was technically still "there"). After this commit was applied, my theory is the refcount for the device object is not being incremented at a specific point anymore, which makes the device go away, and thus made the pm80xx driver fail any subsequent commands. You may also want to see the following for more details: [1] http://www.spinics.net/lists/linux-scsi/msg37208.html [2] http://marc.info/?l=linux-scsi&m=144416476406993&w=2Signed-off-by: NBenjamin Rood <brood@attotech.com> Acked-by: NJack Wang <jinpu.wang@profitbricks.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 03 11月, 2015 8 次提交
-
-
由 Benjamin Rood 提交于
If MSI(X) interrupts are disabled via the kernel command line (pci=nomsi), the pm8001 driver will kernel panic because it does not detect that MSI interrupts are disabled and will soldier on and attempt to configure MSI interrupts anyways. This leads to a kernel panic, most likely because a required data structure is not available down the line. Using the pci_msi_enabled() function in order to detect if MSI interrupts are enabled before configuring them resolves this issue and avoids a kernel panic when the module is loaded. Additionally, the irq_vector structure must be initialized when legacy interrupts are being used otherwise legacy interrupts will simply not function and result in another panic. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
The documentation for the 8070 and 8072 SPCv chip explicitly states that a minimum of 500ms must elapse before issuing commands, otherwise the SPCv may not process them and the firmware may get into an unrecoverable state requiring a reboot. While the Linux guys will probably think this is 'racy', it is called out in the chip documentation and inserting this delay makes power management function properly. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
ATTO adapters do not support this feature. If the firmware fails to be ready, it should not check the examined registers in order to examine the state of the feature in order to prevent undefined behavior. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
PHY profiles are not saved in NVRAM on ATTO 12Gb SAS controllers. Therefore, in order for the controller to function in a wide range of configurations, the PHY profiles must be statically set. This patch provides the necessary functionality to do so. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
ATTO SAS controllers retrieve the SAS address from the NVRAM in a location different from non-ATTO PMC Sierra SAS controllers. This patch makes the necessary adjustments in order to retrieve the SAS address on these types of adapters. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
These PCI IDs allow the pm8001 driver to load against ATTO 12Gb SAS controllers that use PMC Sierra 8070 and PMC Sierra 8072 SAS chips. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
These SAS controllers support speeds up to 12Gb. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Benjamin Rood 提交于
Previuosly, all PMC Sierra 80xx controllers are assumed to be a motherboard controller, except if the subsystem vendor ID was equal to PCI_VENDOR_ID_ADAPTEC. The driver then attempts to load PHY settings from NVRAM. While this may be correct behavior for most controllers, it does not work with Adaptec and ATTO controllers since they do not store PHY settings in NVRAM and choose to use either custom PHY settings or chip defaults. Loading random values from NVRAM may cause the controllers to malfunction in this edge case. Signed-off-by: NBenjamin Rood <brood@attotech.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 07 9月, 2015 1 次提交
-
-
由 Johannes Thumshirn 提交于
In case psataPayload->status has a status of IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY ts->stat gets set to SAS_OPEN_REJECT but a missing 'break' statement causes a fallthrough to the default handler of the switch statement overriding ts->stat to SAS_DEV_NO_RESPONSE. Signed-off-by: NJohannes Thumshirn <jthumshirn@suse.de> Acked-by: NJack Wang <jinpu.wang@profitbricks.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 27 8月, 2015 8 次提交
-
-
由 Viswas G 提交于
Bump pm80xx driver version to 0.1.38. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
The request has to be retried incase if the length of the SSP Response IU is invalid. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
PORT RECOVERY TIMEOUT is the maximum time between the controller's detection of the PHY down until the receipt of the ID_Frame (from the same remote SAS port). If the time expires before the ID_FRAME is received, the port is considered INVALID and can be removed. The IOP_EVENT_PORT_RECOVERY_TIMER_TMO event is reported following the IOP_EVENT_ PHY_DOWN event when the PHY/port does not recover after Port Recovery Time. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
If the link error happens, we don't need to disconnect the phy, which will remove the drive. Instead acknowledging the controller and logging the error will be enough. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
In pm8001_ccb_task_free(), the dma unmapping is done based on ccb->n_elem value. This should be initialized to zero in the task_abort(). Otherwise, pm8001_ccb_task_free() will try for dma_unmap_sg() which is invalid for task abort and can lead to kernel crash. Changes From V1: None Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
Thermal page code has been changed to 7 for the 12G controllers. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
In Nexus reset the device state request are not needed. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Acked-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Viswas G 提交于
Updated 12G linkrate to libsas. Signed-off-by: NViswas G <Viswas.G@pmcs.com> Reviewed-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 13 8月, 2015 1 次提交
-
-
由 Suresh Thiagarajan 提交于
Signed-off-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Signed-off-by: NViswas G <Viswas.G@pmcs.com> Acked-by: NJack Wang <xjtuwjp@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 01 6月, 2015 1 次提交
-
-
由 Hannes Reinecke 提交于
'0' is now used as the default cmd_per_lun value, so there's no need to explicitly set it to '1' in the host template. Signed-off-by: NHannes Reinecke <hare@suse.de> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 04 12月, 2014 1 次提交
-
-
由 Christoph Hellwig 提交于
Since we got rid of ordered tag support in 2010 the prime use case of switching on and off ordered tags has been obsolete. The other function of enabling/disabling tagging entirely has only been correctly implemented by the 53c700 driver and isn't generally useful. Signed-off-by: NChristoph Hellwig <hch@lst.de> Reviewed-by: NBart Van Assche <bvanassche@acm.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com Reviewed-by: NHannes Reinecke <hare@suse.de>
-
- 27 11月, 2014 1 次提交
-
-
由 Christoph Hellwig 提交于
The task_collector mode (or "latency_injector", (C) Dan Willians) is an optional I/O path in libsas that queues up scsi commands instead of directly sending it to the hardware. It generall increases latencies to in the optiomal case slightly reduce mmio traffic to the hardware. Only the obsolete aic94xx driver and the mvsas driver allowed to use it without recompiling the kernel, and most drivers didn't support it at all. Remove the giant blob of code to allow better optimizations for scsi-mq in the future. Signed-off-by: NChristoph Hellwig <hch@lst.de> Reviewed-by: NHannes Reinecke <hare@suse.de> Acked-by: NDan Williams <dan.j.williams@intel.com>
-
- 24 11月, 2014 1 次提交
-
-
由 Christoph Hellwig 提交于
All drivers use the implementation for ramping the queue up and down, so instead of overloading the change_queue_depth method call the implementation diretly if the driver opts into it by setting the track_queue_depth flag in the host template. Note that a few drivers validated the new queue depth in their change_queue_depth method, but as we never go over the queue depth set during slave_configure or the sysfs file this isn't nessecary and can safely be removed. Signed-off-by: NChristoph Hellwig <hch@lst.de> Reviewed-by: NMike Christie <michaelc@cs.wisc.edu> Reviewed-by: NHannes Reinecke <hare@suse.de> Reviewed-by: NVenkatesh Srinivas <venkateshs@google.com>
-
- 12 11月, 2014 1 次提交
-
-
由 Christoph Hellwig 提交于
Allow a driver to ask for block layer tags by setting .use_blk_tags in the host template, in which case it will always see a valid value in request->tag, similar to the behavior when using blk-mq. This means even SCSI "untagged" commands will now have a tag, which is especially useful when using a host-wide tag map. Signed-off-by: NChristoph Hellwig <hch@lst.de> Reviewed-by: NMike Christie <michaelc@cs.wisc.edu> Reviewed-by: NMartin K. Petersen <martin.petersen@oracle.com> Reviewed-by: NHannes Reinecke <hare@suse.de>
-
- 06 11月, 2014 1 次提交
-
-
由 Hannes Reinecke 提交于
Use the ata device class from libata in libsas instead of checking the supported command set and switch to using ata_dev_classify() instead of our own method. Cc: Tejun Heo <tj@kernel.org> Cc: Dan Williams <dan.j.williams@intel.com> Acked-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 17 9月, 2014 1 次提交
-
-
由 Suresh Thiagarajan 提交于
Instead of using the virt_ptr use request buffer for copying back the nvmd response data and use the same in request function also Signed-off-by: NSuresh Thiagarajan <suresh.thiagarajan@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 09 8月, 2014 1 次提交
-
-
由 Joe Perches 提交于
Remove the now unnecessary memset too. Signed-off-by: NJoe Perches <joe@perches.com> Cc: Adam Radford <linuxraid@lsi.com> Cc: "James E.J. Bottomley" <JBottomley@parallels.com> Cc: Jayamohan Kallickal <jayamohan.kallickal@emulex.com> Cc: Dario Ballabio <ballabio_dario@emc.com> Cc: Michael Neuffer <mike@i-Connect.Net> Cc: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> Cc: Neela Syam Kolli <megaraidlinux@lsi.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 01 8月, 2014 2 次提交
-
-
由 Tomas Henzl 提交于
The current implementation may mix the negative value returned from pm8001_set_nvmd with count. -(-ENOMEM) could be interpreted as bytes programmed, this patch fixes it. Signed-off-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Tomas Henzl 提交于
The loopcount is calculated by using some weird magic. Use instead a boring macro. Signed-off-by: NTomas Henzl <thenzl@redhat.com> Acked-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 30 7月, 2014 1 次提交
-
-
由 Alexander Gordeev 提交于
As result of deprecation of MSI-X/MSI enablement functions pci_enable_msix() and pci_enable_msi_block() all drivers using these two interfaces need to be updated to use the new pci_enable_msi_range() or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces. Signed-off-by: NAlexander Gordeev <agordeev@redhat.com> Reviewed-by: NJack Wang <xjtuwjp@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 29 7月, 2014 1 次提交
-
-
由 Alexander Gordeev 提交于
When a call to request_irq() failed pm8001_setup_msix() still returns the success. This udate fixes the described misbehaviour. Signed-off-by: NAlexander Gordeev <agordeev@redhat.com> Acked-by: NJack Wang <xjtuwjp@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 26 7月, 2014 5 次提交
-
-
由 Tomas Henzl 提交于
Instead of copying information to fw_control_context free it. The task is forgotten thus also the reference to fw_control_context and the completion thread takes the info from virt_ptr again. Signed-off-by: NTomas Henzl <thenzl@redhat.com> Acked-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Tomas Henzl 提交于
The driver checks the return valu, but after he tries to wait_for_completion which might never happen. Also the ioctl buffer is freed at the end of the function, so the first removal is not needed. Signed-off-by: NTomas Henzl <thenzl@redhat.com> Acked-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Tomas Henzl 提交于
ccb->fw_control_context is copied to local fw_control_context and the local variable is never used later Free ccb->fw_control_context. The task is forgotten thus also the reference to fw_control_context and the completion thread takes the info from virt_ptr again. Signed-off-by: NTomas Henzl <thenzl@redhat.com> Acked-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Rickard Strandqvist 提交于
There is a risk that the variable will be used without being initialized. This was largely found by using a static code analysis program called cppche Signed-off-by: NRickard Strandqvist <rickard_strandqvist@spectrumdigital.se> Acked-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Acked-by: NJack Wang <xjtuwjp@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Rickard Strandqvist 提交于
Removal of null pointer checks that could never happen Signed-off-by: NRickard Strandqvist <rickard_strandqvist@spectrumdigital.se> Acked-by: NSuresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> Acked-by: NJack Wang <xjtuwjp@gmail.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-