- 13 7月, 2016 4 次提交
-
-
由 Tom Yan 提交于
Currently libata statically allows only 1-block (512-byte) payload for each TRIM command. Each payload can carry 64 TRIM ranges since each range requires 8 bytes. It is silly to keep doing the calculation (512 / 8) in different places. Hence, define the new ATA_MAX_TRIM_RNUM for the result. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Currently if a WRITE SAME (16) command is issued to the SATL with "number of blocks" that is larger than the "Maximum write same length" (which is the maximum number of blocks per TRIM command allowed in libata, currently 65535 * 512 / 8 blocks), the SATL will accept the command and translate it to a TRIM command with the upper limit. However, according to SBC (as of sbc4r11.pdf), the "device server" should terminate the command with "Invalid field in CDB" in that case. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
To make it consistent with the recently added ata_mselect_control(). We probably shouldn't have the word "mode" in its name anyway, since that's not the case for other ata_msense_*() / ata_mselect_*() either. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
The bit should always be set to 1 when the requested version of page is "changeable" because we've made it so in ata_mselect_control(). Also, it should always be set to 1 if ATA_DFLAG_D_SENSE is set (when the requested version of page is "current" or "default"). Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 12 7月, 2016 5 次提交
-
-
由 Colin Ian King 提交于
According to the HPT366 data sheet, PCI config space dword 0x40-0x43 bits 11:8 specify the primary drive cmd_high_time, however, currently just 3 bits of the 4 are being used because the mask is 0x700 and not 0x0f00. Fix the mask, allowing for the 40MHz clock to be detected. Signed-off-by: NColin Ian King <colin.king@canonical.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
The comment suggests we should be having an SPC-3 version descriptor but the 0260h is the code for "SPC-2 (no version claimed)". Correct it to 0300h so that it has the "SPC-3 (no version claimed)" descriptor. Note that we are claiming SPC-3 version compatibility in the VERSION field of the standard INQUIRY data. Therefore, I assume the typo was on the code but not on the comment. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Avoid performance bottleneck when being SCSI pass-through'd to virtual machines with other OSes (e.g. Windows) via virtio-scsi and scsi-block in qemu. Ref.: https://github.com/YanVugenfirer/kvm-guest-drivers-windows/issues/63Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Without this fix, the DRA bit of the caching mode page would not be updated when the read look-ahead feature is toggled (e.g. with `smartctl --set`), but will only be until, for example, the write cache feature is touched. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Commit 856c4663 ("libata: support device-managed ZAC devices") had the line that "bumps" the VERSION field in standard INQUIRY data removed. Add it back and claim SPC-5 version compatibility, which matches with the current version descriptor "SPC-5 (no version claimed)" that is used for ZAC devices. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 07 7月, 2016 2 次提交
-
-
由 Tom Yan 提交于
It's Command Descriptor Block. Also capitalized it. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
It does not make sense and is confusing to respond with "Invalid field in CDB" while we have no support at all implemented for FORMAT UNIT. It is decent to let it go to the default, which will respond with "Invalid command operation code" instead. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 29 6月, 2016 1 次提交
-
-
由 Iago Abal 提交于
Note that `&acdev->host->lock' and `qc->ap->lock' denote the same lock, and it's particularly confusing to spin_lock on the former but spin_unlock on the latter. Signed-off-by: NIago Abal <mail@iagoabal.eu> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 18 6月, 2016 1 次提交
-
-
由 Arnd Bergmann 提交于
The sysfs file for the libata error handling has multiple issues in the way it prints time stamps: * it prints a 9-digit nanosecond value using a %06lu format string, which drops some leading zeroes * it converts a 64-bit jiffes value to a timespec using jiffies_to_timespec(), which takes a 'long' argument, so the result is wrong after a jiffies overflow (49 days). * we try to avoid using timespec because that generally overflows in 2038, although this particular usage is ok. This replaces the jiffies_to_timespec call with an open-coded implementation that gets it right. Signed-off-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 17 6月, 2016 2 次提交
-
-
Add SATA3 support for Broadcom NSP SoC Signed-off-by: NYendapally Reddy Dhananjaya Reddy <yendapally.reddy@broadcom.com> Acked-by: NFlorian Fainelli <f.fainelli@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
Rename the existing Broadcom STB ahci driver to common Broadcom SATA3 driver to share this across Broadcom SoCs. Signed-off-by: NYendapally Reddy Dhananjaya Reddy <yendapally.reddy@broadcom.com> Acked-by: NFlorian Fainelli <f.fainelli@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 27 5月, 2016 2 次提交
-
-
由 Javier Martinez Canillas 提交于
The IS_ENABLED() macro checks if a Kconfig symbol has been enabled either built-in or as a module, use that macro instead of open coding the same. Signed-off-by: NJavier Martinez Canillas <javier@osg.samsung.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Colin Ian King 提交于
Remove extraneous space on if statement and on the following line, trivial fix, no functional change Signed-off-by: NColin Ian King <colin.king@canonical.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 13 5月, 2016 1 次提交
-
-
由 Arnd Bergmann 提交于
The dwc_460ex SATA driver has become available on non-powerpc architectures and may cause randconfig build errors when CONFIG_DMADEVICES is not set and SATA_DWC_OLD_DMA is enabled: warning: (SATA_DWC_OLD_DMA) selects DW_DMAC_CORE which has unmet direct dependencies (DMADEVICES) ERROR: "dw_dma_probe" [drivers/ata/sata_dwc_460ex.ko] undefined! ERROR: "dw_dma_remove" [drivers/ata/sata_dwc_460ex.ko] undefined! This adds an explcit Kconfig dependency to CONFIG_SATA_DWC so we cannot run into broken configurations. While it would also be possible to build the driver with both CONFIG_DMADEVICES and SATA_DWC_OLD_DMA disabled, that case is not useful because there is no fallback to PIO mode when the DMA engine is not usable. Signed-off-by: NArnd Bergmann <arnd@arndb.de> Fixes: 50b43375 ("ata: sata_dwc_460ex: use "dmas" DT property to find dma channel") Reviewed-by: NAndy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 12 5月, 2016 6 次提交
-
-
由 Andy Shevchenko 提交于
There is a duplication in the debug messages when accessing SCR registers. Remove duplication to make the messages neat. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
DMA operates with physical addresses which is not exactly the same as ioremap() returns. Introduce variable to keep physical address of the SATA FIFO register and supply it when prepare DMA channel. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
This simplifies error handling and cleanup by using devm to manage IO mappings. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
This consolidates the reads from each of the if/else branches to one place making the code a lot nicer to look at. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
Rename the register access macros and use standard _relaxed() ops instead of __raw variants with explicit byte swapping. The original driver used the ppc-specific in/out_le32(). When it was adapted to other systems, these were added to the driver under ifdefs. However, those names are not defined as macros on ppc, so it ended up replacing them there as well with altered semantics. This patch restores the original semantics on ppc and makes the accesses no less strict on other systems. Also fixes too many sparse warnings to count. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
Convert dmaengine_terminate_all() calls to synchronous and asynchronous versions where appropriate. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 11 5月, 2016 16 次提交
-
-
由 Mans Rullgard 提交于
The pointer to the mmio register base is missing the __iomem annotation. Fix this. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
The (void *__iomem) cast is wrong. Change the target type of the "base" pointer to void __iomem instead and drop the cast. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
Casting a pointer to unsigned long only to immediately cast it back to a pointer makes no sense. Fix this. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
The sata_dwc_qc_prep() does nothing. Use the default ata_noop_qc_prep instead. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
Here we refactor HOSTDEV{P}_FROM_*() macros to fit one line and fix the definition of HSDEV_FROM_HSDEVP() where wrong name of the parameter waas used. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
This moves all global data into the driver private struct, thus permitting multiple devices of this type to be used. The core_scr_read/write() functions are replaced with equivalent calls to the existing sata_dwc_scr_read/write(). Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
This adds support for powering on an optional PHY when activating the device. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
Currently this driver only works with a DesignWare DMA engine which it registers manually using the second "reg" address range and interrupt number from the DT node. This patch makes the driver instead use the "dmas" property if present, otherwise optionally falling back on the old way so existing device trees can continue to work. With this change, there is no longer any reason to depend on the 460EX machine type so drop that from Kconfig. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
ata_sff_qc_issue() can't handle DMA commands and thus we have to avoid it for them. Do call ata_bmdma_qc_issue() instead for this case. Note that the former one distinguishes PIO and DMA mode and behaves accordingly. Suggested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
Calling dmaengine_prep_slave_sg() for non-dma ATA commands is unnecessary at best and could be harmful if the dma driver reacts badly to this. It also causes this driver to print a bogus error message in these cases. This patch changes sata_dwc_qc_issue() to only do the dma setup for dma commands and also reports an error to libata if if fails. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
There is no need to have a platform driver compiled since the DMA driver is used as a library. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
In the original code the DMA is always a flow controller. Set this accordingly in updated code. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
The burst size as defined by DMAengine API is in items of address width. Derive burst size from AHB_DMA_BRST_DFLT (64 bytes) by dividing it to DMA_SLAVE_BUSWIDTH_4_BYTES (4 bytes) that gives us 16 items. Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
The original code states: Make sure a LLI block is not created that will span 8K max FIS boundary. If the block spans such a FIS boundary, there is a chance that a DMA burst will cross that boundary -- this results in an error in the host controller. Since we have switched to generic DMAengine API we satisfy above by setting dma_boundary value to 0x1fff. Suggested-by: NMans Rullgard <mans@mansr.com> Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Christian Lamparter 提交于
This patch fixes Machine Check "Data Write PLB Error" which happens when libata-sff's ata_sff_dev_select is trying to write into the device_addr in order to select a drive. However, SATA has no master or slave devices like the old ATA Bus, therefore selecting a different drive is kind of pointless. Data Write PLB Error Oops: Machine check, sig: 7 [#1] PowerPC 44x Platform Modules linked in: CPU: 0 PID: 508 Comm: scsi_eh_0 Not tainted 4.6.0-rc3-next-20160412+ #10 [...] NIP [c027e820] ata_sff_dev_select+0x3c/0x44 LR [c027e810] ata_sff_dev_select+0x2c/0x44 Call Trace: [cec31cd0] [c027da00] ata_sff_postreset+0x40/0xb4 (unreliable) [cec31ce0] [c027a03c] ata_eh_reset+0x5cc/0x928 [cec31d60] [c027a840] ata_eh_recover+0x330/0x10bc [cec31df0] [c027bae0] ata_do_eh+0x4c/0xa4 [...] Signed-off-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Mans Rullgard 提交于
This lock is already taken in ata_scsi_queuecmd() a few levels up the call stack so attempting to take it here is an error. Moreover, it is pointless in the first place since it only protects a single, atomic assignment. Enabling lock debugging gives the following output: ============================================= [ INFO: possible recursive locking detected ] 4.4.0-rc5+ #189 Not tainted --------------------------------------------- kworker/u2:3/37 is trying to acquire lock: (&(&host->lock)->rlock){-.-...}, at: [<90283294>] sata_dwc_exec_command_by_tag.constprop.14+0x44/0x8c but task is already holding lock: (&(&host->lock)->rlock){-.-...}, at: [<902761ac>] ata_scsi_queuecmd+0x2c/0x330 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&(&host->lock)->rlock); lock(&(&host->lock)->rlock); *** DEADLOCK *** May be due to missing lock nesting notation 4 locks held by kworker/u2:3/37: #0: ("events_unbound"){.+.+.+}, at: [<9003a0a4>] process_one_work+0x12c/0x430 #1: ((&entry->work)){+.+.+.}, at: [<9003a0a4>] process_one_work+0x12c/0x430 #2: (&bdev->bd_mutex){+.+.+.}, at: [<9011fd54>] __blkdev_get+0x50/0x380 #3: (&(&host->lock)->rlock){-.-...}, at: [<902761ac>] ata_scsi_queuecmd+0x2c/0x330 stack backtrace: CPU: 0 PID: 37 Comm: kworker/u2:3 Not tainted 4.4.0-rc5+ #189 Workqueue: events_unbound async_run_entry_fn Stack : 90b38e30 00000021 00000003 9b2a6040 00000000 9005f3f0 904fc8dc 00000025 906b96e4 00000000 90528648 9b3336c4 904fc8dc 9009bf18 00000002 00000004 00000000 00000000 9b3336c4 9b3336e4 904fc8dc 9003d074 00000000 90500000 9005e738 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6e657665 755f7374 756f626e 0000646e 00000000 00000000 9b00ca00 9b025000 ... Call Trace: [<90009d6c>] show_stack+0x88/0xa4 [<90057744>] __lock_acquire+0x1ce8/0x2154 [<900583e4>] lock_acquire+0x64/0x8c [<9045ff10>] _raw_spin_lock_irqsave+0x54/0x78 [<90283294>] sata_dwc_exec_command_by_tag.constprop.14+0x44/0x8c [<90283484>] sata_dwc_qc_issue+0x1a8/0x24c [<9026b39c>] ata_qc_issue+0x1f0/0x410 [<90273c6c>] ata_scsi_translate+0xb4/0x200 [<90276234>] ata_scsi_queuecmd+0xb4/0x330 [<9025800c>] scsi_dispatch_cmd+0xd0/0x128 [<90259934>] scsi_request_fn+0x58c/0x638 [<901a3e50>] __blk_run_queue+0x40/0x5c [<901a83d4>] blk_queue_bio+0x27c/0x28c [<901a5914>] generic_make_request+0xf0/0x188 [<901a5a54>] submit_bio+0xa8/0x194 [<9011adcc>] submit_bh_wbc.isra.23+0x15c/0x17c [<9011c908>] block_read_full_page+0x3e4/0x428 [<9009e2e0>] do_read_cache_page+0xac/0x210 [<9009fd90>] read_cache_page+0x18/0x24 [<901bbd18>] read_dev_sector+0x38/0xb0 [<901bd174>] msdos_partition+0xb4/0x5c0 [<901bcb8c>] check_partition+0x140/0x274 [<901bba60>] rescan_partitions+0xa0/0x2b0 [<9011ff68>] __blkdev_get+0x264/0x380 [<901201ac>] blkdev_get+0x128/0x36c [<901b9378>] add_disk+0x3c0/0x4bc [<90268268>] sd_probe_async+0x100/0x224 [<90043a44>] async_run_entry_fn+0x50/0x124 [<9003a11c>] process_one_work+0x1a4/0x430 [<9003a4f4>] worker_thread+0x14c/0x4fc [<900408f4>] kthread+0xd0/0xe8 [<90004338>] ret_from_kernel_thread+0x14/0x1c Fixes: 62936009 ("[libata] Add 460EX on-chip SATA driver, sata_dwc_460ex") Tested-by: NChristian Lamparter <chunkeey@googlemail.com> Signed-off-by: NMans Rullgard <mans@mansr.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-