Skip to contentSkip to conversation

libata-dev queue updated

SATA New Jeff Garzik 2 participants 2 messages Mar 2, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

A minor update, mostly to update to the latest kernel.

BK users:

bk pull bk://gkernel.bkbits.net/libata-dev-2.6

Patch:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.11-rc5-bk4-libata-dev1.patch.bz2

This will update the following files:

 drivers/scsi/Kconfig         |   18 
 drivers/scsi/Makefile        |    2 
 drivers/scsi/ahci.c          |  107 ++++-
 drivers/scsi/ata_adma.c      |  778 +++++++++++++++++++++++++++++++++++++++++++
 drivers/scsi/libata-core.c   |  312 +++++++++--------
 drivers/scsi/libata-scsi.c   |  701 ++++++++++++++++++++++++++++++++------
 drivers/scsi/libata.h        |    6 
 drivers/scsi/pata_pdc2027x.c |  771 ++++++++++++++++++++++++++++++++++++++++++
 drivers/scsi/sata_promise.c  |   84 ++++
 drivers/scsi/sata_qstor.c    |   20 -
 drivers/scsi/sata_vsc.c      |    4 
 include/linux/ata.h          |   15 
 include/linux/libata.h       |   10 
 include/scsi/scsi.h          |    3 
 14 files changed, 2531 insertions(+), 300 deletions(-)

through these ChangeSets:

<andyw:pobox.com>:
o [libata scsi] support 12-byte passthru CDB
o [libata scsi] passthru CDB check condition processing
o T10/04-262 ATA pass thru - patch

<erikbenada:yahoo.ca>:
o [libata sata_promise] support PATA ports on SATA controllers

<tklauser:nuerscht.ch>:
o drivers/scsi/ahci: Use the DMA_{64,32}BIT_MASK constants
o drivers/scsi/sata_vsc: Use the DMA_{64,32}BIT_MASK constants

Adam J. Richter:
o ata_pci_remove_one used freed memory

Albert Lee:
o [libata] use init-device-params ATA command where needed
o [libata] ata_scsi_verify_xlat() fix
o pdc2027x timing register fix for 100MHz
o [libata] CHS support: add CHS support to ata_scsi_verify_xlat(), ata_scsi_rw_xlat() and ata_scsiop_read_cap().
o [libata] CHS support: reorganize read/write translation in ata_scsi_rw_xlat()
o [libata] CHS support: rename vars (s/sector/block/) in ata_scsi_verify_xlat()
o [libata] CHS support: detect C/H/S at IDENTIFY DEVICE time
o [libata] CHS support: add definitions to headers
o pdc2027x timing register bug fix
o [libata pdc2027x] fix incorrect pio and mwdma masks
o [libata pdc2027x] remove quirks and ROM enable
o [libata] add driver for Promise PATA 2027x

Brad Campbell:
o libata basic detection and errata for PATA->SATA bridges

Jeff Garzik:
o [libata ahci] Print out port id on error messages
o [libata ahci] support PCI MSI interrupt vector
o [libata adma] Add init code, fix CPB submission code
o [libata ahci] finish ATAPI support
o [libata adma] trivial whitespace cleanup
o [libata dma] fix DMA mode config; add some more initialization code
o [libata adma] add support for configuring PIO/DMA modes
o [libata] turn on ATAPI support
o [libata sata_promise] merge Tobias Lorenz' pdc20619 patch, part 2
o [libata] small cleanups
o [libata] remove unused execute-device-diagnostic reset method
o [libata] add new driver ata_adma
o [libata pdc2027x] update for upstream struct device conversion
o [libata sata_promise] fix merge bugs
o [libata] fix build breakage
o [libata] fix SATA->PATA bridge detect compile breakage
o [libata] fix printk warning

John W. Linville:
o libata: update ATA pass thru opcodes
o libata: minor style changes in ata_scsi_pass_thru
o libata: filter SET_FEATURES - XFER MODE from ATA pass thru
o libata: sync SMART ioctls with ATA pass thru spec (T10/04-262r7)
o libata: fix command queue leak when xlat_func fails
o libata: SMART support via ATA pass-thru

Mark Lord:
o [libata qstor] minor update per LKML comments

Tobias Lorenz:
o [libata sata_promise] pdc20619 (PATA) support
o libata-scsi: get-identity ioctl support

#1 lore raw

PATCH 1/1 sata_qstor: eh_timeout fix (RESEND)

(I think this got missed first time around, so resubmitting here)

Here is an update to sata_qstor.c to enable full/proper register access during eh_timeout handling.

Patch is against 2.6.11-rc5 + earlier sata_qstor cosmetic patch.

Signature · 3 lines
Mark Lord
Real-Time Remedies Inc.
[email protected]
drivers/scsi/sata_qstor.c +24 -6
@@ -38,7 +38,7 @@
 #include <linux/libata.h>
 
 #define DRV_NAME	"sata_qstor"
-#define DRV_VERSION	"0.03"
+#define DRV_VERSION	"0.04"
 
 enum {
 	QS_PORTS		= 4,
@@ -120,6 +120,7 @@
 static void qs_bmdma_stop(struct ata_port *ap);
 static u8 qs_bmdma_status(struct ata_port *ap);
 static void qs_irq_clear(struct ata_port *ap);
+static void qs_eng_timeout(struct ata_port *ap);
 
 static Scsi_Host_Template qs_ata_sht = {
 	.module			= THIS_MODULE,
@@ -152,7 +153,7 @@
 	.phy_reset		= qs_phy_reset,
 	.qc_prep		= qs_qc_prep,
 	.qc_issue		= qs_qc_issue,
-	.eng_timeout		= ata_eng_timeout,
+	.eng_timeout		= qs_eng_timeout,
 	.irq_handler		= qs_intr,
 	.irq_clear		= qs_irq_clear,
 	.scr_read		= qs_scr_read,
@@ -212,7 +213,7 @@
 	/* nothing */
 }
 
-static void qs_enter_reg_mode(struct ata_port *ap)
+static inline void qs_enter_reg_mode(struct ata_port *ap)
 {
 	u8 __iomem *chan = ap->host_set->mmio_base + (ap->port_no * 0x4000);
 
@@ -220,17 +221,34 @@
 	readb(chan + QS_CCT_CTR0);        /* flush */
 }
 
-static void qs_phy_reset(struct ata_port *ap)
+static inline void qs_reset_channel_logic(struct ata_port *ap)
 {
 	u8 __iomem *chan = ap->host_set->mmio_base + (ap->port_no * 0x4000);
-	struct qs_port_priv *pp = ap->private_data;
 
-	pp->state = qs_state_idle;
 	writeb(QS_CTR1_RCHN, chan + QS_CCT_CTR1);
+	readb(chan + QS_CCT_CTR0);        /* flush */
 	qs_enter_reg_mode(ap);
+}
+
+static void qs_phy_reset(struct ata_port *ap)
+{
+	struct qs_port_priv *pp = ap->private_data;
+
+	pp->state = qs_state_idle;
+	qs_reset_channel_logic(ap);
 	sata_phy_reset(ap);
 }
 
+static void qs_eng_timeout(struct ata_port *ap)
+{
+	struct qs_port_priv *pp = ap->private_data;
+
+	if (pp->state != qs_state_idle) /* healthy paranoia */
+		pp->state = qs_state_mmio;
+	qs_reset_channel_logic(ap);
+	ata_eng_timeout(ap);
+}
+
 static u32 qs_scr_read (struct ata_port *ap, unsigned int sc_reg)
 {
 	if (sc_reg > SCR_CONTROL)