Re: Resets on sil3124 sil3726 PMP
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
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
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
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)
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
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
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
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
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
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
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
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
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?
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.
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?
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
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
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
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
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