Re: Resets on sil3124 sil3726 PMP

2007-09-03 Thread Robin H. Johnson
On Tue, Sep 04, 2007 at 07:39:16AM +1200, Richard Scobie wrote:
   Yeah, that seems to be the hardware limit and is consistent with what  I 
  hear from non-linux people too.
 
  My comment earlier regarding broken silicon was based on comments here and 
  reports from Mac users and only pertained to the 3132.
 
  For some reasonably impressive numbers using the 3124, along with the 3726 
  PM on OSX, have a look at:
  
 http://www.amug.org/amug-web/html/amug/reviews/articles/addonics/adsa3gpx8-4em/
The single PMP numbers they have (under Addonics ADSA3GPX8-4EM Striped RAID Set
Performance Comparison) has Write=211MB/sec Read=231MB/sec.

However I don't see any discussion of what PMP enclosure they used :-(.

Abybody got their hands on one of those Addonics controllers so we can compare
to other 3132/3124 cards?

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Infra Guy
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpy9MuetT7fn.pgp
Description: PGP signature


Re: Resets on sil3124 sil3726 PMP

2007-08-27 Thread Robin H. Johnson
On Mon, Aug 27, 2007 at 08:08:08PM +1200, Richard Scobie wrote:
  I was just interested to see if anyone had tested a similar md RAID 5 using 
  these chips on Linux.
/dev/md2 is a 5-disk RAID5 on a Sonnet Fusion 500 enclosure (3726 based):
http://www.sonnettech.com/product/fusiond500p-eseries.html
Drives are 5x Seagate ST3320620AS with the 3.AAE firmware.
Controller is a PCIe x1 sata_sil24 unit.

grubbs-int / # cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md2 : active raid5 sdf1[0] sdj1[4] sdi1[3] sdh1[2] sdg1[1]
  1250274304 blocks level 5, 64k chunk, algorithm 2 [5/5] [U]
  bitmap: 0/150 pages [0KB], 1024KB chunk

unused devices: none
grubbs-int / # hdparm -tT /dev/md2

/dev/md2:
 Timing cached reads:   2334 MB in  2.00 seconds = 1167.20 MB/sec
 Timing buffered disk reads:  350 MB in  3.01 seconds = 116.32 MB/sec

It should exceed that speed - if I run hdparm -tT on 3 or more separate drives
in the array at the same time, their combined speed does not exceed 120Mb/sec
(a single drive manages 71Mb/sec) - The system does claim it negated at 3Gbit,
so I've wondering about a firmware bug in the sil24 or sil3726.

Other than that, I can recommend the Sonnet unit for it's nice engineering,
incl. a hotswap fan at the back - just perhaps a overpriced.

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpfHr339cYrt.pgp
Description: PGP signature


Re: [PATCH] pata_marvell: Add another PCI identifier

2007-08-22 Thread Robin H. Johnson
On Wed, Aug 22, 2007 at 11:27:05PM +0100, Alan Cox wrote:
  static const struct pci_device_id marvell_pci_tbl[] = {
   { PCI_DEVICE(0x11AB, 0x6101), },
 - { PCI_DEVICE(0x11AB, 0x6145), },
Why is this ID being removed?

Not that I have that model (I have 0x6101), it just looks weird given
the patch description to Add another PCI identifier and I thought I
should check.

-- 
Robin Hugh Johnson
Gentoo Linux Developer
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpCSdxd6X2ur.pgp
Description: PGP signature


Re: [PATCHBOMB] libata: Port Multiplier support

2007-07-02 Thread Robin H. Johnson
On Sun, Jul 01, 2007 at 06:30:15PM +0900, Tejun Heo wrote:
 it took longer than I expected but it's complete now and looking good.
 It's composed of the following four patchsets.
These are looking great Tejun.

My previous porting attempt got delayed partway through with other work
stuff.

I can't change kernels on my PMP box right now, but I'll test a bit
later this week.

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpBcDPf6wHNj.pgp
Description: PGP signature


sata_nv and smartctl -o/-S trigger HSM violation (2.6.21.1, 2.6.20)

2007-04-30 Thread Robin H. Johnson
I was working with integrating SMART status into my Nagios checks, and ran into
some sata_nv weirdness on two different machines (Tyan S2865 and S2927).
Each machine has a pair of matching disks.

On the latter, it's also occasionally lost the disks and hard-locked the box if
smartd did the '-S on' on both disks at the same time.

This happens if '-S on' or '-o on' is passed to smartctl/smartd.

Box #1 (2.6.21.1):

a02# smartctl -d ata -S on /dev/sda
...
Model Family: Seagate NL35 family
Device Model: ST3250623NS
Serial Number:5ND29YBT
Firmware Version: 5.01
...

From dmesg:
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/d2:f1:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 123392 in
 res 50/00:f1:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/d2:f1:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 123392 in
 res 50/00:f1:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB)
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/d2:f1:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 123392 in
 res 50/00:f1:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
sda: Write Protect is off
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/d2:f1:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 123392 in
 res 50/00:f1:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
sda: Mode Sense: 00 3a 00 00
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/d2:f1:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 123392 in
 res 50/00:f1:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO 
or FUA
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/d2:f1:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 123392 in
 res 50/00:f1:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO 
or FUA
SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO 
or FUA

Box #2 (2.6.20):
b01# smartctl -d ata -S on /dev/sda
...
Device Model: ST3250620NS
Serial Number:5QE1N0ZD
Firmware Version: 3.AEE
...

ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/db:f8:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 126976 in
 res 50/00:f8:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/db:f8:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 126976 in
 res 50/00:f8:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/db:f8:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 126976 in
 res 50/00:f8:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/db:f8:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 data 126976 in
 res 50/00:f8:00:4f:c2/00:00:00:00:00/00 Emask 0x202 (HSM violation)
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: configured for UDMA/133
ata1: EH complete
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd b0/db:f8:00:4f:c2/00:00:00:00:00/00 tag 0 cdb 0x0 

[PATCH 0/3] hotplug polling, respin

2007-04-25 Thread Robin H. Johnson
I've been (very) slowly working on re-spinning Tejun's PMP work.

As the very first in the body of work, here is the patchset to implement
hotplug polling.

The last submission of this
(http://thread.gmane.org/gmane.linux.ide/13467) already had a tentative
ACK, pending a link power-saving patchset, that I can't find more
details on.

I only have sata_nv and sata_sil24 online for testing, but it does work
fine for both of those (and Tejun had previously tested many more
controllers).

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgp4lepT9zIs6.pgp
Description: PGP signature


[PATCH 1/3] libata: implement hotplug by polling

2007-04-25 Thread Robin H. Johnson
This patch implements hotplug by polling - hp-poll.  It is used for

* hotplug event detection on controllers which don't provide PHY
  status changed interrupt.

* hotplug event detection on disabled ports after reset failure.
  libata used to leave such ports in frozen state to protect the
  system from malfunctioning controller/device.  With hp-poll, hotplug
  events no such ports are watched safely by polling, such that
  removing/replacing the malfunctioning device triggers EH retry on
  the port.

There are three port ops for hp-poll - hp_poll_activate, hp_poll,
hp_poll_deactivate.  Only hp_poll is mandatory for hp-poll to work.
This patch also implements SATA standard polling callbacks which poll
SError.N/X bits - sata_std_hp_poll_activate() and sata_std_hp_poll().

By default, hp-poll is enabled only on disabled ports.  If a LLD
doesn't support hotplug interrupts but can poll for hotplug events, it
should indicate so by setting ATA_FLAG_HP_POLLING which tells libata
to turn on hp-poll by default.

(This revision contains cleanups that prevent the original patch from working
on newer kernels - robbat2).

Signed-off-by: Tejun Heo [EMAIL PROTECTED]
Signed-off-by: Robin H. Johnson [EMAIL PROTECTED]
---
 drivers/ata/libata-core.c |   80 +-
 drivers/ata/libata-eh.c   |  122 -
 drivers/ata/libata.h  |2 +
 include/linux/libata.h|   11 
 4 files changed, 212 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 6d0a946..68ea34b 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3498,6 +3498,76 @@ void ata_std_postreset(struct ata_port *ap, unsigned int 
*classes)
 }
 
 /**
+ * sata_std_hp_poll_activate - standard SATA hotplug polling activation
+ * @ap: the target ata_port
+ *
+ * Activate SATA std hotplug polling.
+ *
+ * LOCKING:
+ * Kernel thread context (may sleep).
+ */
+void sata_std_hp_poll_activate(struct ata_port *ap)
+{
+   u32 serror;
+
+   sata_scr_read(ap, SCR_ERROR, serror);
+   serror = SERR_PHYRDY_CHG | SERR_DEV_XCHG;
+   if (serror)
+   sata_scr_write(ap, SCR_ERROR, serror);
+
+   ap-hp_poll_data = 0;
+}
+
+/**
+ * sata_std_hp_poll - standard SATA hotplug polling callback
+ * @ap: the target ata_port
+ *
+ * Poll SError.N/X for hotplug event.  Hotplug event is triggered
+ * only after PHY stays stable for at least one full polling
+ * interval after the first event detection.
+ *
+ * LOCKING:
+ * spin_lock_irqsave(host_set lock)
+ *
+ * RETURNS:
+ * 1 if hotplug event has occurred, 0 otherwise.
+ */
+int sata_std_hp_poll(struct ata_port *ap)
+{
+   unsigned long state = (unsigned long)ap-hp_poll_data;
+   u32 serror;
+   int rc = 0;
+
+   sata_scr_read(ap, SCR_ERROR, serror);
+   serror = SERR_PHYRDY_CHG | SERR_DEV_XCHG;
+
+   switch (state) {
+   case 0:
+   if (serror) {
+   /* PHY status could be bouncing crazy due to
+* faulty controller or device.  Don't fire
+* hotplug event till hotplug event stays
+* quiescent for one full polling interval.
+*/
+   sata_scr_write(ap, SCR_ERROR, serror);
+   state = 1;
+   }
+   break;
+
+   case 1:
+   if (!serror)
+   rc = 1;
+   else
+   sata_scr_write(ap, SCR_ERROR, serror);
+   break;
+   }
+
+   ap-hp_poll_data = (void *)state;
+
+   return rc;
+}
+
+/**
  * ata_dev_same_device - Determine whether new ID matches configured device
  * @dev: device to compare against
  * @new_class: class of the new device
@@ -6160,6 +6230,7 @@ void ata_host_init(struct ata_host *host, struct device 
*dev,
host-dev = dev;
host-flags = flags;
host-ops = ops;
+   INIT_DELAYED_WORK(host-hp_poll_task, ata_hp_poll_worker);
 }
 
 /**
@@ -6387,11 +6458,15 @@ void ata_port_detach(struct ata_port *ap)
 
ata_port_wait_eh(ap);
 
-   /* Flush hotplug task.  The sequence is similar to
+   /* deactivate hotplug polling */
+   ata_hp_poll_deactivate(ap);
+
+   /* Flush hotplug tasks.  The sequence is similar to
 * ata_port_flush_task().
 */
flush_workqueue(ata_aux_wq);
cancel_delayed_work(ap-hotplug_task);
+   cancel_delayed_work(ap-host-hp_poll_task);
flush_workqueue(ata_aux_wq);
 
  skip_eh:
@@ -6752,6 +6827,9 @@ EXPORT_SYMBOL_GPL(ata_std_softreset);
 EXPORT_SYMBOL_GPL(sata_port_hardreset);
 EXPORT_SYMBOL_GPL(sata_std_hardreset);
 EXPORT_SYMBOL_GPL(ata_std_postreset);
+EXPORT_SYMBOL_GPL(sata_std_hp_poll_activate);
+EXPORT_SYMBOL_GPL(sata_std_hp_poll);
+EXPORT_SYMBOL_GPL(ata_dev_revalidate);
 EXPORT_SYMBOL_GPL

[PATCH 1/3 take2] libata: implement hotplug by polling

2007-04-25 Thread Robin H. Johnson
This patch implements hotplug by polling - hp-poll.  It is used for

* hotplug event detection on controllers which don't provide PHY
  status changed interrupt.

* hotplug event detection on disabled ports after reset failure.
  libata used to leave such ports in frozen state to protect the
  system from malfunctioning controller/device.  With hp-poll, hotplug
  events no such ports are watched safely by polling, such that
  removing/replacing the malfunctioning device triggers EH retry on
  the port.

There are three port ops for hp-poll - hp_poll_activate, hp_poll,
hp_poll_deactivate.  Only hp_poll is mandatory for hp-poll to work.
This patch also implements SATA standard polling callbacks which poll
SError.N/X bits - sata_std_hp_poll_activate() and sata_std_hp_poll().

By default, hp-poll is enabled only on disabled ports.  If a LLD
doesn't support hotplug interrupts but can poll for hotplug events, it
should indicate so by setting ATA_FLAG_HP_POLLING which tells libata
to turn on hp-poll by default.

(This revision contains cleanups that prevent the original patch from working
on newer kernels - robbat2).

Signed-off-by: Tejun Heo [EMAIL PROTECTED]
Signed-off-by: Robin H. Johnson [EMAIL PROTECTED]

-
The previous version contained a slight mis-merge. A prototype got placed
inside the else tree of CONFIG_PM accidently. This revision just moves it to
the correct place.
---
 drivers/ata/libata-core.c |   80 +-
 drivers/ata/libata-eh.c   |  122 -
 drivers/ata/libata.h  |2 +
 include/linux/libata.h|   11 
 4 files changed, 212 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 6d0a946..68ea34b 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3498,6 +3498,76 @@ void ata_std_postreset(struct ata_port *ap, unsigned int 
*classes)
 }
 
 /**
+ * sata_std_hp_poll_activate - standard SATA hotplug polling activation
+ * @ap: the target ata_port
+ *
+ * Activate SATA std hotplug polling.
+ *
+ * LOCKING:
+ * Kernel thread context (may sleep).
+ */
+void sata_std_hp_poll_activate(struct ata_port *ap)
+{
+   u32 serror;
+
+   sata_scr_read(ap, SCR_ERROR, serror);
+   serror = SERR_PHYRDY_CHG | SERR_DEV_XCHG;
+   if (serror)
+   sata_scr_write(ap, SCR_ERROR, serror);
+
+   ap-hp_poll_data = 0;
+}
+
+/**
+ * sata_std_hp_poll - standard SATA hotplug polling callback
+ * @ap: the target ata_port
+ *
+ * Poll SError.N/X for hotplug event.  Hotplug event is triggered
+ * only after PHY stays stable for at least one full polling
+ * interval after the first event detection.
+ *
+ * LOCKING:
+ * spin_lock_irqsave(host_set lock)
+ *
+ * RETURNS:
+ * 1 if hotplug event has occurred, 0 otherwise.
+ */
+int sata_std_hp_poll(struct ata_port *ap)
+{
+   unsigned long state = (unsigned long)ap-hp_poll_data;
+   u32 serror;
+   int rc = 0;
+
+   sata_scr_read(ap, SCR_ERROR, serror);
+   serror = SERR_PHYRDY_CHG | SERR_DEV_XCHG;
+
+   switch (state) {
+   case 0:
+   if (serror) {
+   /* PHY status could be bouncing crazy due to
+* faulty controller or device.  Don't fire
+* hotplug event till hotplug event stays
+* quiescent for one full polling interval.
+*/
+   sata_scr_write(ap, SCR_ERROR, serror);
+   state = 1;
+   }
+   break;
+
+   case 1:
+   if (!serror)
+   rc = 1;
+   else
+   sata_scr_write(ap, SCR_ERROR, serror);
+   break;
+   }
+
+   ap-hp_poll_data = (void *)state;
+
+   return rc;
+}
+
+/**
  * ata_dev_same_device - Determine whether new ID matches configured device
  * @dev: device to compare against
  * @new_class: class of the new device
@@ -6160,6 +6230,7 @@ void ata_host_init(struct ata_host *host, struct device 
*dev,
host-dev = dev;
host-flags = flags;
host-ops = ops;
+   INIT_DELAYED_WORK(host-hp_poll_task, ata_hp_poll_worker);
 }
 
 /**
@@ -6387,11 +6458,15 @@ void ata_port_detach(struct ata_port *ap)
 
ata_port_wait_eh(ap);
 
-   /* Flush hotplug task.  The sequence is similar to
+   /* deactivate hotplug polling */
+   ata_hp_poll_deactivate(ap);
+
+   /* Flush hotplug tasks.  The sequence is similar to
 * ata_port_flush_task().
 */
flush_workqueue(ata_aux_wq);
cancel_delayed_work(ap-hotplug_task);
+   cancel_delayed_work(ap-host-hp_poll_task);
flush_workqueue(ata_aux_wq);
 
  skip_eh:
@@ -6752,6 +6827,9 @@ EXPORT_SYMBOL_GPL(ata_std_softreset);
 EXPORT_SYMBOL_GPL(sata_port_hardreset);
 EXPORT_SYMBOL_GPL(sata_std_hardreset

[PATCH 2/3] libata: add hp-poll support to controllers with hotplug interrupts

2007-04-25 Thread Robin H. Johnson
This patch adds hp-poll support to the following drivers.

* ahci
* sata_nv (nf2 and c804 only)
* sata_sil
* sata_sil24

All the above controllers are capable of hotplug-by-interrupt and
hp-poll will be used only for watching disabled ports.

Signed-off-by: Tejun Heo [EMAIL PROTECTED]
Signed-off-by: Robin H. Johnson [EMAIL PROTECTED]
---
 drivers/ata/ahci.c   |4 +++-
 drivers/ata/sata_nv.c|6 ++
 drivers/ata/sata_sil.c   |3 +++
 drivers/ata/sata_sil24.c |3 +++
 4 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 7c61bc7..3968799 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -273,10 +273,12 @@ static const struct ata_port_operations ahci_ops = {
 
.freeze = ahci_freeze,
.thaw   = ahci_thaw,
-
.error_handler  = ahci_error_handler,
.post_internal_cmd  = ahci_post_internal_cmd,
 
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
+
 #ifdef CONFIG_PM
.port_suspend   = ahci_port_suspend,
.port_resume= ahci_port_resume,
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 0216974..bcf4934 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -394,7 +394,10 @@ static const struct ata_port_operations nv_nf2_ops = {
.thaw   = nv_nf2_thaw,
.error_handler  = nv_error_handler,
.post_internal_cmd  = ata_bmdma_post_internal_cmd,
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
.data_xfer  = ata_data_xfer,
+   .irq_handler= nv_nf2_interrupt,
.irq_clear  = ata_bmdma_irq_clear,
.irq_on = ata_irq_on,
.irq_ack= ata_irq_ack,
@@ -420,7 +423,10 @@ static const struct ata_port_operations nv_ck804_ops = {
.thaw   = nv_ck804_thaw,
.error_handler  = nv_error_handler,
.post_internal_cmd  = ata_bmdma_post_internal_cmd,
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
.data_xfer  = ata_data_xfer,
+   .irq_handler= nv_ck804_interrupt,
.irq_clear  = ata_bmdma_irq_clear,
.irq_on = ata_irq_on,
.irq_ack= ata_irq_ack,
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index 0a1e417..8f8cc5f 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -208,6 +208,9 @@ static const struct ata_port_operations sil_ops = {
.thaw   = sil_thaw,
.error_handler  = ata_bmdma_error_handler,
.post_internal_cmd  = ata_bmdma_post_internal_cmd,
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
+   .irq_handler= sil_interrupt,
.irq_clear  = ata_bmdma_irq_clear,
.irq_on = ata_irq_on,
.irq_ack= ata_irq_ack,
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index e6223ba..81e6bef 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -412,6 +412,9 @@ static const struct ata_port_operations sil24_ops = {
.error_handler  = sil24_error_handler,
.post_internal_cmd  = sil24_post_internal_cmd,
 
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
+
.port_start = sil24_port_start,
 };

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgp84hwzSveym.pgp
Description: PGP signature


[PATCH 3/3] libata: add hp-poll support to controllers without hotplug interrupts

2007-04-25 Thread Robin H. Johnson
This patch adds hp-poll support to the following drivers.

* sata_nv (generic)
* sata_sil (SIL_FLAG_NO_SATA_IRQ replaced w/ ATA_FLAG_HP_POLLING)
* sata_sis
* sata_svw
* sata_uli
* sata_vsc

All the above drivers currently don't support hotplug interrupts (H/W
restrictions or lack of doc/effort) and all hotplug operations should
be done via hp-poll; thus, ATA_FLAG_HP_POLLING is set for these
drivers.

sata_via is excluded because it randomly locks up on SCR register
access.

Signed-off-by: Tejun Heo [EMAIL PROTECTED]
Signed-off-by: Robin H. Johnson [EMAIL PROTECTED]
---
 drivers/ata/sata_nv.c  |6 +-
 drivers/ata/sata_sil.c |9 -
 drivers/ata/sata_sis.c |6 +-
 drivers/ata/sata_svw.c |   25 +
 drivers/ata/sata_uli.c |7 ++-
 drivers/ata/sata_vsc.c |   17 +
 6 files changed, 62 insertions(+), 8 deletions(-)

diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index bcf4934..a205991 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -368,7 +368,10 @@ static const struct ata_port_operations nv_generic_ops = {
.thaw   = ata_bmdma_thaw,
.error_handler  = nv_error_handler,
.post_internal_cmd  = ata_bmdma_post_internal_cmd,
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
.data_xfer  = ata_data_xfer,
+   .irq_handler= nv_generic_interrupt,
.irq_clear  = ata_bmdma_irq_clear,
.irq_on = ata_irq_on,
.irq_ack= ata_irq_ack,
@@ -474,7 +477,8 @@ static struct ata_port_info nv_port_info[] = {
{
.sht= nv_sht,
.flags  = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
- ATA_FLAG_HRST_TO_RESUME,
+ ATA_FLAG_HRST_TO_RESUME | 
+ ATA_FLAG_HP_POLLING,
.pio_mask   = NV_PIO_MASK,
.mwdma_mask = NV_MWDMA_MASK,
.udma_mask  = NV_UDMA_MASK,
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index 8f8cc5f..fa3b0e8 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -54,7 +54,6 @@ enum {
/*
 * host flags
 */
-   SIL_FLAG_NO_SATA_IRQ= (1  28),
SIL_FLAG_RERR_ON_DMA_ACT = (1  29),
SIL_FLAG_MOD15WRITE = (1  30),
 
@@ -231,7 +230,7 @@ static const struct ata_port_info sil_port_info[] = {
/* sil_3112_no_sata_irq */
{
.flags  = SIL_DFL_PORT_FLAGS | SIL_FLAG_MOD15WRITE |
- SIL_FLAG_NO_SATA_IRQ,
+ ATA_FLAG_HP_POLLING,
.pio_mask   = 0x1f, /* pio0-4 */
.mwdma_mask = 0x07, /* mwdma0-2 */
.udma_mask  = 0x3f, /* udma0-5 */
@@ -480,8 +479,8 @@ static irqreturn_t sil_interrupt(int irq, void 
*dev_instance)
if (unlikely(!ap || ap-flags  ATA_FLAG_DISABLED))
continue;
 
-   /* turn off SATA_IRQ if not supported */
-   if (ap-flags  SIL_FLAG_NO_SATA_IRQ)
+   /* ignore SATA_IRQ if not supported */
+   if (ap-flags  ATA_FLAG_HP_POLLING)
bmdma2 = ~SIL_DMA_SATA_IRQ;
 
if (bmdma2 == 0x ||
@@ -522,7 +521,7 @@ static void sil_thaw(struct ata_port *ap)
ata_bmdma_irq_clear(ap);
 
/* turn on SATA IRQ if supported */
-   if (!(ap-flags  SIL_FLAG_NO_SATA_IRQ))
+   if (!(ap-flags  ATA_FLAG_HP_POLLING))
writel(SIL_SIEN_N, mmio_base + sil_port[ap-port_no].sien);
 
/* turn on IRQ */
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
index d8ee062..fbfe0bf 100644
--- a/drivers/ata/sata_sis.c
+++ b/drivers/ata/sata_sis.c
@@ -121,6 +121,9 @@ static const struct ata_port_operations sis_ops = {
.thaw   = ata_bmdma_thaw,
.error_handler  = ata_bmdma_error_handler,
.post_internal_cmd  = ata_bmdma_post_internal_cmd,
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
+   .irq_handler= ata_interrupt,
.irq_clear  = ata_bmdma_irq_clear,
.irq_on = ata_irq_on,
.irq_ack= ata_irq_ack,
@@ -130,7 +133,8 @@ static const struct ata_port_operations sis_ops = {
 };
 
 static struct ata_port_info sis_port_info = {
-   .flags  = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY,
+   .flags  = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
+ ATA_FLAG_HP_POLLING,
.pio_mask   = 0x1f,
.mwdma_mask = 0x7,
.udma_mask  = 0x7f,
diff --git a/drivers/ata/sata_svw.c b/drivers

Re: [PATCH 0/3] hotplug polling, respin

2007-04-25 Thread Robin H. Johnson
On Wed, Apr 25, 2007 at 04:08:09PM +0900, Tejun Heo wrote:
  The last submission of this
  (http://thread.gmane.org/gmane.linux.ide/13467) already had a tentative
  ACK, pending a link power-saving patchset, that I can't find more
  details on.
 Yeap, the implementation is ACKed but interface to userland is NACKed.
 We need sysfs nodes for ATA devices to do userland interface properly.
 I'm working hard to get there.
I'm not sure I follow you here. The only bit of 'userspace' interface I
see in this series is hotplug_polling_interval. What other userspace
bits are in question?

 Thanks a lot for taking care of these patches.  A lot of people have
 been asking for patches for newer kernels and I couldn't find time to
 update them.
As always, it starts with scratching your own itch. My Fusion 500P works
like a charm with the SIL 3132 that I have - the previous scanning issue
where it took forever doing 15 scans (1;1,2;1,2,3;1,2,3,4;1,2,3,4,5)
instead of just 5 seems to have gone away, but the sluggish performance
remains (the sil24 seeming to not do SATA2 speed stuff, did you hear
back from SIL?).

As a gauge of interest in the PMP stuff, I'm presently getting about 3
emails a week asking for work on it.

 Jeff, can we make a page for PMP patches in linux-ata.org?  It would be
 a much better place to direct people to.
I'd host a git tree, but I don't have sufficient stable bandwidth.

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgp1J3R121wq3.pgp
Description: PGP signature


Re: [PATCH 0/3] hotplug polling, respin

2007-04-25 Thread Robin H. Johnson
On Wed, Apr 25, 2007 at 04:35:25PM +0900, Tejun Heo wrote:
  I'm not sure I follow you here. The only bit of 'userspace' interface I
  see in this series is hotplug_polling_interval. What other userspace
  bits are in question?
 What got NACKed is the lack of per-port interface.  More specifically,
 stretching the usage of module parameter too far.
One thing I'd be concerned with in implementing that as a sysfs
attribute right now, is that it's probably going to change location once
the ata_link abstraction comes in.

I'll think about it more tomorrow, when I move on to the ata_link
portion of these patches.

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpOCNkgHSPOz.pgp
Description: PGP signature


[PATCH 4/3] ahci: hotplug polling functions for vt8251 hardware variant

2007-04-25 Thread Robin H. Johnson
The VT8251 was missed during the previous 3 patches, as it used to be a
seperate branch by Tejun.

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index adaa82b..c151af8 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -303,6 +303,9 @@ static const struct ata_port_operations ahci_vt8251_ops = {
.error_handler  = ahci_vt8251_error_handler,
.post_internal_cmd  = ahci_post_internal_cmd,
 
+   .hp_poll_activate   = sata_std_hp_poll_activate,
+   .hp_poll= sata_std_hp_poll,
+
.port_suspend   = ahci_port_suspend,
.port_resume= ahci_port_resume,

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgppypovt5G6I.pgp
Description: PGP signature


Re: Correct way to enable port multiplier support in kernel 2.6.20-1?

2007-04-20 Thread Robin H. Johnson
On Fri, Apr 20, 2007 at 11:19:55PM -0400, David Lebel wrote:
  I have a Fusion 500P device (which uses a 3726 chipset), plus a
  3132-based controller.
Does it work? For me - yes. I have the Fusion 500P, and a 3132
controller (I also have a sata_mv, but that's nowhere near PMP ready
codewise :-( ).

There is also still the weird issue of the 1.5Gb speed limit on the 3132
somewhere (when the path hardware-wise is all 3Gb).

  Any easy-to-use, non-developper oriented patch that could allow me to
  build a kernel package that would enable PMP so I can see all 5 drives
  in my library, and not only the first one?
Nope.

However now is probably a good time to start on a plan for this stuff.

Tejun Heo did the initial stuff, and I used his Git tree to update some
patches to a 2.6.20rc2+libata-upstream level.

Those patches I published here:
http://dev.gentoo.org/~robbat2/libata-development/
The sign-off lines esp for the hp_poll should probably reference Tejun,
unless he just picked them up somewhere else.

They really don't apply on top of current kernels, and hopefully some of
the local ata.gods around here can report on the status of the major
portions of them for integration maybe during the 2.6.23 timeframe (and
perhaps 2.6.22-mm).

hp_poll series:
This implemented SATA hotplug-by-polling for cases where
hotplug-by-interrupt was not available.

ata_link:
I'll just include Tejun's description from 4/18
Introduce ata_link.  It abstracts PHY and sits between ata_port and
ata_device.  This new level of abstraction is necessary to support SATA
Port Multiplier, which basically adds a bunch of links (PHYs) to a ATA
host port.  Fields related to command execution, spd_limit and EH are
per-link and thus moved to ata_link.

-- 
Robin Hugh Johnson
Gentoo Linux Developer  Council Member
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpwLVC8U5zWH.pgp
Description: PGP signature


[PATCH] Add notation that the Asus W5F laptop has a short cable instead of 80-wire.

2007-03-28 Thread Robin H\. Johnson
The Asus W5F laptop uses a short cable instead of the 80-wire style, and thus
needs to be in the ich_laptop special cases for correct detection and support
of UDMA/100 for the hard drive. I noticed this because I have the W5F laptop,
and was tracing apparent slowness.

Signed-off-by: Robin H. Johnson [EMAIL PROTECTED]
---
 drivers/ata/ata_piix.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index b952c58..a2c5756 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -580,6 +580,7 @@ static const struct ich_laptop ich_laptop[] = {
/* devid, subvendor, subdev */
{ 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */
{ 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */
+   { 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */
/* end marker */
{ 0, }
 };
-- 
1.5.0.5

-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: PMP patches for more recent kernel?

2007-02-23 Thread Robin H. Johnson
On Sat, Feb 24, 2007 at 02:19:45AM +0100, Pierre Ossman wrote:
 I'm eager to test out your PMP patches as I'm currently sitting on a SATA disk
 rack that requires a PMP to be used. Your current set is from october though 
 and
 seems to require some work to get to apply on the current kernel. Do you have
 something newer I can play with?
I'm going to answer this question, because I'm getting 3-4 emails a week
now since I did the previous port of the PMP patches to 2.6.20rc2.

This was my previous instructional email.
http://www.mail-archive.com/linux-ide@vger.kernel.org/msg02533.html

That set of patches is intended for applying against the Linus GIT tree
as of approximately 2.6.20rc2, combined with the libata#upstream tree of
the same vintage.

They do NOT apply to anything newer, and definite work is needed in
porting them. I don't have time for such porting at present, so unless
somebody else ports them, I don't see them moving very fast at all.

Things would probably go much smooth if the hp_poll and ata_link stuff
got into jgarzik's tree, but I don't know when he will accept them.

-- 
Robin Hugh Johnson
Gentoo Linux Developer
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpvjtPto15gL.pgp
Description: PGP signature


Re: SiI 3114 and sata_sil

2007-02-15 Thread Robin H. Johnson
On Thu, Feb 15, 2007 at 02:27:58PM -0500, Jeff Garzik wrote:
 So that means that the FC5 system is not actually on RAID? Even though 
 it seems so? (using /dev/dm-* for filesystem volumes)
 
 # lspci | grep -i sata
 03:05.0 RAID bus controller: Silicon Image, Inc. SiI 3114 
 [SATALink/SATARaid] Serial ATA Controller (rev 02)
 # df -m
 Filesystem   1M-blocks  Used Available Use% Mounted on
 /dev/dm-6   125931  2999116432   3% /
 /dev/dm-1   991381  14% /boot
 tmpfs 1012 0  1012   0% /dev/shm
 /dev/dm-2 9917   151  9254   2% /tmp
 /dev/dm-3 9917   237  9168   3% /var
 # lsmod | grep ata
 sata_sil   13897  2
 libata 58321  1 sata_sil
 scsi_mod  129641  3 sg,libata,sd_mod
 # cat /etc/modprobe.conf | tail -n 1
 alias scsi_hostadapter sata_sil
 
 So in fact /dev/dm-* are just on one disk each (not RAID1), or what is 
 going on here?
 The's dmraid providing /software/ RAID as noted in 
 http://linux-ata.org/faq-sata-raid.html#dmraid
No, that's not a correct assertion. We can only say that device-mapper
is being used somehow. It could be LVM, EVMS2, dmraid, or a few other
things.

Use dmsetup (info,ls,status,targets) as well as the sysfs block slave
entries on dm-* to figure it out from scratch. (or at a higher level,
try the LVM tools etc).

-- 
Robin Hugh Johnson
Gentoo Linux Developer
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpmKRizxiLQz.pgp
Description: PGP signature


Re: SATA PMP for 2.6.20

2007-02-05 Thread Robin H. Johnson
On Tue, Feb 06, 2007 at 02:36:00AM +0900, Tejun Heo wrote:
 John Eckhart wrote:
  Tejun,
 Is there any update to the PMP support you have posted on your site
  for 2.6.19 or 2.6.20 kernels? I have an SI controller and PMP card and
  would like to try them out using the latest kernels. I was also
  considering forward porting your patches if necessary, but don't want to
  duplicate any work if you or someone else has already completed this.
 No not yet from me.  Forward-porting will be a lot of work.  I think
 somebody did it already, searching...  eeek, can't find it at the
 moment.  ISTR the message was posted to linux-ide, you'll have to search
 yourself.  :-P
I did it for 2.6.20-rc2:
http://dev.gentoo.org/~robbat2/libata-development/

The original message id with instructions is:
[EMAIL PROTECTED]

There are 5 sets of patches in total of Tejun's work, named the same as
Tejun's branches:
hp_poll
vt8261_ahci
link
pmp_prep
pmp

I do have it in my git tree, so I should be able to rebase against
2.6.20 and export again.

Is there an actual merge plan for this stuff, esp. the hp_poll and
ata_link stuff?

-- 
Robin Hugh Johnson
Gentoo Linux Developer
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpJ8dMOeYQp7.pgp
Description: PGP signature


Re: crash w/ bonnie++ on XFS on LVM VG w/5 PMP devices

2007-01-17 Thread Robin H. Johnson
On Tue, Jan 16, 2007 at 07:51:27PM +, Brad Fitzpatrick wrote:
 But it doesn't seem to have PMP in it.  I see the pmp head has it, but
 is there anything that's merged with upstream any more recently than
 2006-10?
I produced a new version of the PMP patches against 2.6.20-rc2 a number
of weeks ago, and they should still apply reasonably well (they are in
my local GIT tree, and work). Here is a link to my original posting:

http://permalink.gmane.org/gmane.linux.ide/14714

-- 
Robin Hugh Johnson
Gentoo Linux Developer
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpgoaxuNJto8.pgp
Description: PGP signature


Re: Intel DQ965GF experiences

2006-11-27 Thread Robin H. Johnson
On Tue, Nov 28, 2006 at 12:42:43AM +0100, Sami Farin wrote:
[snip information]

Could you please post your lspci -vv information for the SATA and PATA
controllers?

My DG965RY board has working SATA with the libata#upstream tree, but no
PATA support yet (However I did see a early prototype of a driver from
Alan Cox that might work for it).

-- 
Robin Hugh Johnson
E-Mail : [EMAIL PROTECTED]
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85


pgpr5oRGW8fdW.pgp
Description: PGP signature