From: Roland Dreier <rdreier@cisco.com>
To: Tejun Heo <htejun@gmail.com>, Jeff Garzik <jeff@garzik.org>,
linux-kernel@vger.kernel.org
Subject: [bisected] Latest git not seeing HD with sata_nv
Date: Tue, 22 Apr 2008 16:20:12 -0700 [thread overview]
Message-ID: <adazlrlcw9f.fsf@cisco.com> (raw)
It seems that commit 305d2a1a ("libata: unify mechanism to request
follow-up SRST") causes sata_nv not to see the HD on a system I have
here; with current git (80750147), I get this in my bootlog:
[ 2.425108] Driver 'sd' needs updating - please use bus_type methods
[ 2.435751] ACPI: PCI Interrupt Link [LSA0] enabled at IRQ 23
[ 2.441508] ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [LSA0] -> GSI 23 (level, low) -> IRQ 23
[ 2.452929] sata_nv 0000:00:05.0: Using SWNCQ mode
[ 2.457892] scsi0 : sata_nv
[ 2.461813] scsi1 : sata_nv
[ 2.465891] ata1: SATA max UDMA/133 cmd 0xd480 ctl 0xd400 bmdma 0xcc00 irq 23
[ 2.473034] ata2: SATA max UDMA/133 cmd 0xd080 ctl 0xd000 bmdma 0xcc08 irq 23
[ 2.565962] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 3.003517] ata2: SATA link down (SStatus 0 SControl 300)
[ 3.137171] ACPI: PCI Interrupt Link [LSA1] enabled at IRQ 22
[ 3.142926] ACPI: PCI Interrupt 0000:00:05.1[B] -> Link [LSA1] -> GSI 22 (level, low) -> IRQ 22
[ 3.151675] sata_nv 0000:00:05.1: Using SWNCQ mode
[ 3.156582] scsi2 : sata_nv
[ 3.160553] scsi3 : sata_nv
ie no HD is found, even thought he ata1 link comes up, which of course
leads to:
[ 4.763274] VFS: Cannot open root device "sda1" or unknown-block(0,0)
[ 4.769724] Please append a correct "root=" boot option; here are the available partitions:
and the system is dead.
I did a bisection and came up with 305d2a1a as the culprit. Then I
applied the revert patch below by hand (since 305d2a1a doesn't revert
entirely cleanly), and things worked again:
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index b0b00af..e0321ce 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3683,6 +3683,7 @@ int sata_std_hardreset(struct ata_link *link, unsigned int *class,
/* do hardreset */
rc = sata_link_hardreset(link, timing, deadline, &online, NULL);
+ *class = ATA_DEV_NONE;
return online ? -EAGAIN : rc;
}
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index d94359a..667d0e6 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2053,10 +2053,20 @@ static int ata_do_reset(struct ata_link *link, ata_reset_fn_t reset,
rc = reset(link, classes, deadline);
- /* convert all ATA_DEV_UNKNOWN to ATA_DEV_NONE */
+ /* If any class isn't ATA_DEV_UNKNOWN, consider classification
+ * is complete and convert all ATA_DEV_UNKNOWN to
+ * ATA_DEV_NONE.
+ */
ata_link_for_each_dev(dev, link)
- if (classes[dev->devno] == ATA_DEV_UNKNOWN)
- classes[dev->devno] = ATA_DEV_NONE;
+ if (classes[dev->devno] != ATA_DEV_UNKNOWN)
+ break;
+
+ if (dev) {
+ ata_link_for_each_dev(dev, link) {
+ if (classes[dev->devno] == ATA_DEV_UNKNOWN)
+ classes[dev->devno] = ATA_DEV_NONE;
+ }
+ }
return rc;
}
@@ -2067,15 +2077,16 @@ static int ata_eh_followup_srst_needed(struct ata_link *link,
{
if ((link->flags & ATA_LFLAG_NO_SRST) || ata_link_offline(link))
return 0;
- if (rc == -EAGAIN) {
- if (classify)
- return 1;
- rc = 0;
- }
+ if (rc == -EAGAIN)
+ return 1;
if (rc != 0)
return 0;
if (sata_pmp_supported(link->ap) && ata_is_host_link(link))
return 1;
+ if (classify && !(link->flags & ATA_LFLAG_ASSUME_CLASS) &&
+ classes[0] == ATA_DEV_UNKNOWN)
+ return 1;
+
return 0;
}
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 1549952..11b2adc 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -1943,6 +1943,7 @@ int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
rc = sata_link_hardreset(link, timing, deadline, &online,
ata_sff_check_ready);
+ *class = ATA_DEV_NONE;
if (online)
*class = ata_sff_dev_classify(link->device, 1, NULL);
And here's the bootlog with current git with my revert patch applied:
[ 2.417741] Driver 'sd' needs updating - please use bus_type methods
[ 2.424142] sata_nv 0000:00:05.0: version 3.5
[ 2.428387] ACPI: PCI Interrupt Link [LSA0] enabled at IRQ 23
[ 2.434134] ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [LSA0] -> GSI 23 (level, low) -> IRQ 23
[ 2.445558] sata_nv 0000:00:05.0: Using SWNCQ mode
[ 2.450390] PCI: Setting latency timer of device 0000:00:05.0 to 64
[ 2.450526] scsi0 : sata_nv
[ 2.454445] scsi1 : sata_nv
[ 2.458523] ata1: SATA max UDMA/133 cmd 0xd480 ctl 0xd400 bmdma 0xcc00 irq 23
[ 2.465664] ata2: SATA max UDMA/133 cmd 0xd080 ctl 0xd000 bmdma 0xcc08 irq 23
[ 2.923281] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 2.966595] ata1.00: ATA-7: WDC WD3200YS-01PGB0, 21.00M21, max UDMA/133
[ 2.977218] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 1)
[ 3.008489] ata1.00: configured for UDMA/133
[ 3.289737] ata2: SATA link down (SStatus 0 SControl 300)
[ 3.341584] isa bounce pool size: 16 pages
[ 3.349571] scsi 0:0:0:0: Direct-Access ATA WDC WD3200YS-01P 21.0 PQ: 0 ANSI: 5
[ 3.357780] sd 0:0:0:0: [sda] 625142448 512-byte hardware sectors (320073 MB)
[ 3.364921] sd 0:0:0:0: [sda] Write Protect is off
[ 3.369717] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 3.369732] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3.378822] sd 0:0:0:0: [sda] 625142448 512-byte hardware sectors (320073 MB)
[ 3.385964] sd 0:0:0:0: [sda] Write Protect is off
[ 3.390761] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 3.390776] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3.399816] sda: sda1 sda2 < sda5 sda6 >
[ 3.445543] sd 0:0:0:0: [sda] Attached SCSI disk
[ 3.450580] ACPI: PCI Interrupt Link [LSA1] enabled at IRQ 22
[ 3.457951] ACPI: PCI Interrupt 0000:00:05.1[B] -> Link [LSA1] -> GSI 22 (level, low) -> IRQ 22
[ 3.466708] sata_nv 0000:00:05.1: Using SWNCQ mode
[ 3.471529] PCI: Setting latency timer of device 0000:00:05.1 to 64
next reply other threads:[~2008-04-22 23:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-22 23:20 Roland Dreier [this message]
2008-04-22 23:47 ` [bisected] Latest git not seeing HD with sata_nv Yinghai Lu
2008-04-23 1:25 ` Roland Dreier
2008-04-23 1:38 ` Roland Dreier
2008-04-23 1:51 ` Tejun Heo
2008-04-23 1:35 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=adazlrlcw9f.fsf@cisco.com \
--to=rdreier@cisco.com \
--cc=htejun@gmail.com \
--cc=jeff@garzik.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.