Re: 2.6.24.X: SATA/AHCI related boot delay. - not with 2.6.24.3

From: Tejun Heo
Date: Tue Apr 01 2008 - 23:58:24 EST


Volker Armin Hemmann wrote:
On Mittwoch, 19. März 2008, Tejun Heo wrote:
Volker Armin Hemmann wrote:
On Mittwoch, 19. März 2008, Tejun Heo wrote:
x UDMA/133 abar m8192@0xf9dfc000 port 0xf9dfc200

irq 315
[ 38.125479] ata4: SATA max UDMA/133 abar m8192@0xf9dfc000 port
0xf9dfc280 irq 315
[ 38.597035] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 38.597732] ata1.00: ATA-7: WDC WD1600JS-00MHB1, 10.02E01, max
UDMA/133 [ 38.597775] ata1.00: 312581808 sectors, multi 16: LBA48
[ 38.598405] ata1.00: configured for UDMA/133
[ 39.069342] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 39.084225] ata2.00: ATA-8: SAMSUNG HD501LJ, CR100-12, max UDMA7
[ 39.084264] ata2.00: 976773168 sectors, multi 16: LBA48 NCQ (depth
0/32) [ 39.086268] ata2.00: configured for UDMA/133
So, just to confirm. With the updated patch, you don't see any problem,
right?
Correct. With the updated patch I don't see problems in 'non-raid' mode.
AHCI mode still has problems without nosmi. But that is an entirely
different problem, right?
Yeap, can you please post the result of "lspci -nn"?

with AHCI+nosmi, 2.6.24.3:
00:0a.0 SATA controller [0106]: nVidia Corporation MCP65 AHCI Controller [10de:044d] (rev a1)

Sorry about the long delay. Can you please test the attached patch in both ahci and non-ahci modes w/o pci=nomsi and post resulting boot logs?

I booted into systemrescuecd (which is the easiest way to get the error and be able to safe the stuff) - lspci is of course identical, but /proc/interrupts is not.

2.6.24.3:
cat /proc/interrupts
CPU0 CPU1
0: 57 1 IO-APIC-edge timer
1: 1 544 IO-APIC-edge i8042
8: 0 1 IO-APIC-edge rtc
9: 0 1 IO-APIC-fasteoi acpi
12: 0 3 IO-APIC-edge i8042
17: 22 21598 IO-APIC-fasteoi nvidia
18: 0 0 IO-APIC-fasteoi EMU10K1
19: 5 1132 IO-APIC-fasteoi eth0
22: 30 21627 IO-APIC-fasteoi ehci_hcd:usb1
23: 29 23078 IO-APIC-fasteoi ahci
NMI: 0 0 Non-maskable interrupts
LOC: 41299 60204 Local timer interrupts
RES: 14872 22506 Rescheduling interrupts
CAL: 1783 173 function call interrupts
TLB: 2668 2406 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
SPU: 0 0 Spurious interrupts
ERR: 0

Does the 2.6.24.3 kernel have MSI turned on?

Thanks.

--
tejun
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 4851988..930fe22 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -7134,7 +7134,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
ehi->probe_mask =
(1 << ata_link_max_devices(&ap->link)) - 1;
ehi->action |= ATA_EH_SOFTRESET;
- ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET;
+ ehi->flags |= ATA_EHI_NO_AUTOPSY/* | ATA_EHI_QUIET*/;

ap->pflags &= ~ATA_PFLAG_INITIALIZING;
ap->pflags |= ATA_PFLAG_LOADING;
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index a583032..bbf9273 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2190,6 +2190,8 @@ int ata_eh_reset(struct ata_link *link, int classify,
}
}

+ ehc->i.action |= ATA_EH_HARDRESET;
+
/* prereset() might have modified ehc->i.action */
if (ehc->i.action & ATA_EH_HARDRESET)
reset = hardreset;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index e887aa4..a43be09 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1855,6 +1855,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5715S,
quirk_msi_intx_disable_bug);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x044d,
+ quirk_msi_intx_disable_bug);

DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
quirk_msi_intx_disable_ati_bug);