2005-02-02 03:29:55

by Martins Krikis

[permalink] [raw]
Subject: [PATCH 2.4.29] libata: fix ata_piix on ICH6R in RAID mode

Jeff,

Here is the cleaned up patch (as you suggested)
that enables ata_piix to work in RAID mode on ICH6R.
I tested it and it seems to behave correctly
in all the modes---sees all 4 disks in IDE and RAID modes,
doesn't see any in Compatibility mode (which is right,
because only two are available and the regular IDE driver
has picked them up already).

Signed-off-by: Martins Krikis <[email protected]>

--- linux-2.4.29/drivers/scsi/libata-core.c 2005-01-25 20:55:41.000000000 -0500
+++ linux-2.4.29-iswraid/drivers/scsi/libata-core.c 2005-02-01 20:23:51.000000000 -0500
@@ -3597,7 +3597,8 @@ int ata_pci_init_one (struct pci_dev *pd
else
port[1] = port[0];

- if ((port[0]->host_flags & ATA_FLAG_NO_LEGACY) == 0) {
+ if ((port[0]->host_flags & ATA_FLAG_NO_LEGACY) == 0
+ && (pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
/* TODO: support transitioning to native mode? */
pci_read_config_byte(pdev, PCI_CLASS_PROG, &tmp8);
mask = (1 << 2) | (1 << 0);


2005-02-06 05:07:28

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH 2.4.29] libata: fix ata_piix on ICH6R in RAID mode

Martins Krikis wrote:
> --- linux-2.4.29/drivers/scsi/libata-core.c 2005-01-25 20:55:41.000000000 -0500
> +++ linux-2.4.29-iswraid/drivers/scsi/libata-core.c 2005-02-01 20:23:51.000000000 -0500
> @@ -3597,7 +3597,8 @@ int ata_pci_init_one (struct pci_dev *pd
> else
> port[1] = port[0];
>
> - if ((port[0]->host_flags & ATA_FLAG_NO_LEGACY) == 0) {
> + if ((port[0]->host_flags & ATA_FLAG_NO_LEGACY) == 0
> + && (pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
> /* TODO: support transitioning to native mode? */
> pci_read_config_byte(pdev, PCI_CLASS_PROG, &tmp8);
> mask = (1 << 2) | (1 << 0);

applied