Re: NV SATA breakage: jgarzik/libata-dev#upstream etc

From: Krzysztof Halasa
Date: Mon Sep 25 2006 - 08:51:57 EST


Jeff Garzik <jgarzik@xxxxxxxxx> writes:

>> libata-core.c
>> int ata_device_add(const struct ata_probe_ent *ent)
>> {
>> ...
>> /* register each port bound to this device */
>> for (i = 0; i < host->n_ports; i++) {
>> ...
>> /* start port */
>> rc = ap->ops->port_start(ap);
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> The problematic commit is fea63e38013ec628ab3f7fddc4c2148064b7910a:
>> "[PATCH] libata: fix non-uniform ports handling
>> Non-uniform ports handling got broken while updating libata to handle
>> those in the same host. Only separate irq for the non-uniform
>> secondary port was implemented while all other fields (host flags,
>> transfer mode...) of the secondary port simply shared those of the
>> first.
>
> What's broken, and how does it affect NV sata?

NV SATA initialization fails with NULL pointer dereference in
ata_device_add (= kernel panic).

> That's the chipset on my main dev workstation, and there are no
> problems here...

I'm a bit surprised... I'm using x86_64 with only one SATA "controller"
enabled (ports 0 and 1 only, ports 2-5 are disabled in BIOS). Only
port 0 is in use. Gcc 4.1.1.

With a64f97f2c351410dfb3099c2369eacf7154b5532 (2.6.18-rc7+, "Merge branch
'tmp' into upstream", just before the commit in question) it works fine:

libata version 2.00 loaded.
sata_nv 0000:00:05.0: version 2.0
ACPI: PCI Interrupt Link [LSA0] enabled at IRQ 23
GSI 16 sharing vector 0xE1 and IRQ 16
ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [LSA0] -> GSI 23 (level, low) -> IRQ
225
PCI: Setting latency timer of device 0000:00:05.0 to 64
ata1: SATA max UDMA/133 cmd 0xC800 ctl 0xC482 bmdma 0xC000 irq 225
ata2: SATA max UDMA/133 cmd 0xC400 ctl 0xC082 bmdma 0xC008 irq 225
scsi0 : sata_nv
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: ATA-7, max UDMA/133, 488397168 sectors: LBA48 NCQ (depth 0/32)
ata1.00: ata1: dev 0 multi count 16
ata1.00: configured for UDMA/133
scsi1 : sata_nv
ata2: SATA link down (SStatus 0 SControl 300)
ATA: abnormal status 0x7F on port 0xC407
Vendor: ATA Model: ST3250823AS Rev: 3.03
Type: Direct-Access ANSI SCSI revision: 05
--
Krzysztof Halasa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/