From: Andrew Morton on
On Thu, 23 Nov 2006 06:23:50 +0800
"Conke Hu" <conke.hu(a)amd.com> wrote:

> ATI SB600 SATA controller supports 4 modes: Legacy IDE, Native IDE, AHCI and RAID. Legacy/Native IDE mode is designed for compatibility with some old OS without AHCI driver but looses SATAII/AHCI features such as NCQ. This patch provides users with two options when the SB600 SATA is set as IDE mode by BIOS:
> 1. Setting the controller back to AHCI mode and using ahci as its driver.
> 2. Using the controller as a normal IDE.
> What's more, without this patch, ahci driver always tries to claim all 4 modes of SB600 SATA, but fails in legacy IDE mode.
>
> Signed-off-by: conke.hu(a)amd.com
> -------
> diff -Nur linux-2.6.19-rc6-git4.orig/drivers/ata/ahci.c linux-2.6.19-rc6-git4/drivers/ata/ahci.c
> --- linux-2.6.19-rc6-git4.orig/drivers/ata/ahci.c 2006-11-23 13:36:52.000000000 +0800
> +++ linux-2.6.19-rc6-git4/drivers/ata/ahci.c 2006-11-23 13:50:13.000000000 +0800
> @@ -323,7 +323,14 @@
> { PCI_VDEVICE(JMICRON, 0x2366), board_ahci }, /* JMicron JMB366 */
>
> /* ATI */
> +#ifdef CONFIG_SB600_AHCI_IDE
> { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */
> +#else
> + { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID<<8, 0xffff00,
> + board_ahci },
> + { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, 0x010600, 0xffff00,
> + board_ahci },
> +#endif
> { PCI_VDEVICE(ATI, 0x4381), board_ahci }, /* ATI SB600 raid */

I doubt if it's appropriate to do all this via ifdefs. Users don't compile
their kernels - others compile them for the users. We need the one kernel
binary to support both modes. Possible?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Andrew Morton on
On Thu, 23 Nov 2006 06:23:50 +0800
"Conke Hu" <conke.hu(a)amd.com> wrote:

> ATI SB600 SATA controller supports 4 modes: Legacy IDE, Native IDE, AHCI and RAID. Legacy/Native IDE mode is designed for compatibility with some old OS without AHCI driver but looses SATAII/AHCI features such as NCQ. This patch provides users with two options when the SB600 SATA is set as IDE mode by BIOS:
> 1. Setting the controller back to AHCI mode and using ahci as its driver.
> 2. Using the controller as a normal IDE.
> What's more, without this patch, ahci driver always tries to claim all 4 modes of SB600 SATA, but fails in legacy IDE mode.
>
> Signed-off-by: conke.hu(a)amd.com
> -------
> diff -Nur linux-2.6.19-rc6-git4.orig/drivers/ata/ahci.c linux-2.6.19-rc6-git4/drivers/ata/ahci.c
> --- linux-2.6.19-rc6-git4.orig/drivers/ata/ahci.c 2006-11-23 13:36:52.000000000 +0800
> +++ linux-2.6.19-rc6-git4/drivers/ata/ahci.c 2006-11-23 13:50:13.000000000 +0800
> @@ -323,7 +323,14 @@
> { PCI_VDEVICE(JMICRON, 0x2366), board_ahci }, /* JMicron JMB366 */
>
> /* ATI */
> +#ifdef CONFIG_SB600_AHCI_IDE
> { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */
> +#else
> + { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID<<8, 0xffff00,
> + board_ahci },
> + { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, 0x010600, 0xffff00,
> + board_ahci },
> +#endif

And your patch conflicts in mysterious ways with the below.

I've been sitting on this patch for three months. I don't know why.


From: "Anatoli Antonovitch" <antonovi(a)ati.com>

Automatically match the proper driver for different SATA/IDE modes of SB600
SATA controller: ahci for SATA/Native IDE/RAID modes and ATIIXP_IDE for legacy
mode.

Signed-off-by: Anatoli Antonovitch <antonovi(a)ati.com>
Cc: Jeff Garzik <jeff(a)garzik.org>
Cc: Alan Cox <alan(a)lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm(a)osdl.org>
---

drivers/ata/ahci.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff -puN drivers/ata/ahci.c~ahci-ati-sb600-sata-support-for-various-modes drivers/ata/ahci.c
--- a/drivers/ata/ahci.c~ahci-ati-sb600-sata-support-for-various-modes
+++ a/drivers/ata/ahci.c
@@ -323,7 +323,12 @@ static const struct pci_device_id ahci_p
{ PCI_VDEVICE(JMICRON, 0x2366), board_ahci }, /* JMicron JMB366 */

/* ATI */
- { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID,
+ PCI_ANY_ID, 0x010600, 0xffff00, board_ahci }, /* ATI SB600 AHCI */
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID,
+ PCI_ANY_ID, 0x010400, 0xffff00, board_ahci }, /* ATI SB600 raid */
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID,
+ PCI_ANY_ID, (PCI_CLASS_STORAGE_IDE<<8)|0x8f, 0xffff05, board_ahci }, /* ATI SB600 native IDE */
{ PCI_VDEVICE(ATI, 0x4381), board_ahci }, /* ATI SB600 raid */

/* VIA */
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Conke Hu on

-----Original Message-----
From: Andrew Morton [mailto:akpm(a)osdl.org]
Sent: Thursday, November 23, 2006 10:31 AM
To: Conke Hu
Cc: linux-kernel(a)vger.kernel.org; Anatoli Antonovitch; Jeff Garzik; Tejun Heo
Subject: Re: [PATCH] Add IDE mode support for SB600 SATA

On Thu, 23 Nov 2006 06:23:50 +0800
"Conke Hu" <conke.hu(a)amd.com> wrote:

> ATI SB600 SATA controller supports 4 modes: Legacy IDE, Native IDE, AHCI and RAID. Legacy/Native IDE mode is designed for compatibility with some old OS without AHCI driver but looses SATAII/AHCI features such as NCQ. This patch provides users with two options when the SB600 SATA is set as IDE mode by BIOS:
> 1. Setting the controller back to AHCI mode and using ahci as its driver.
> 2. Using the controller as a normal IDE.
> What's more, without this patch, ahci driver always tries to claim all 4 modes of SB600 SATA, but fails in legacy IDE mode.
>
> Signed-off-by: conke.hu(a)amd.com
> -------
> diff -Nur linux-2.6.19-rc6-git4.orig/drivers/ata/ahci.c linux-2.6.19-rc6-git4/drivers/ata/ahci.c
> --- linux-2.6.19-rc6-git4.orig/drivers/ata/ahci.c 2006-11-23 13:36:52.000000000 +0800
> +++ linux-2.6.19-rc6-git4/drivers/ata/ahci.c 2006-11-23 13:50:13.000000000 +0800
> @@ -323,7 +323,14 @@
> { PCI_VDEVICE(JMICRON, 0x2366), board_ahci }, /* JMicron JMB366 */
>
> /* ATI */
> +#ifdef CONFIG_SB600_AHCI_IDE
> { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */
> +#else
> + { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID<<8, 0xffff00,
> + board_ahci },
> + { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, 0x010600, 0xffff00,
> + board_ahci },
> +#endif

And your patch conflicts in mysterious ways with the below.

I've been sitting on this patch for three months. I don't know why.


From: "Anatoli Antonovitch" <antonovi(a)ati.com>

Automatically match the proper driver for different SATA/IDE modes of SB600 SATA controller: ahci for SATA/Native IDE/RAID modes and ATIIXP_IDE for legacy mode.

Signed-off-by: Anatoli Antonovitch <antonovi(a)ati.com>
Cc: Jeff Garzik <jeff(a)garzik.org>
Cc: Alan Cox <alan(a)lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm(a)osdl.org>
---

drivers/ata/ahci.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff -puN drivers/ata/ahci.c~ahci-ati-sb600-sata-support-for-various-modes drivers/ata/ahci.c
--- a/drivers/ata/ahci.c~ahci-ati-sb600-sata-support-for-various-modes
+++ a/drivers/ata/ahci.c
@@ -323,7 +323,12 @@ static const struct pci_device_id ahci_p
{ PCI_VDEVICE(JMICRON, 0x2366), board_ahci }, /* JMicron JMB366 */

/* ATI */
- { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID,
+ PCI_ANY_ID, 0x010600, 0xffff00, board_ahci }, /* ATI SB600 AHCI */
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID,
+ PCI_ANY_ID, 0x010400, 0xffff00, board_ahci }, /* ATI SB600 raid */
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID,
+ PCI_ANY_ID, (PCI_CLASS_STORAGE_IDE<<8)|0x8f, 0xffff05, board_ahci },
+/* ATI SB600 native IDE */
{ PCI_VDEVICE(ATI, 0x4381), board_ahci }, /* ATI SB600 raid */

/* VIA */
_

Hi Andrew,
Thank you! I will re-write the patch since you think it is not reasonable.
There were 3 patches for sb600 sata controller, including the one you listed, but none is accepted, so I will re-create the patch until it is accepted.
(btw, I am sorry for using MS Outlook to reply this maillist. It seems we use different mail format, and I will switch to another email client next time.)

best regards,
conke



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Conke Hu on

-----Original Message-----
From: Conke Hu
Sent: Thursday, November 23, 2006 12:21 PM
To: linux-kernel(a)vger.kernel.org; 'alan(a)lxorguk.ukuu.org.uk'; 'Andrew Morton'; Jeff Garzik
Subject: [PATCH] Add IDE mode support for SB600 SATA


ATI SB600 SATA controller supports 4 modes: Legacy IDE, Native IDE, AHCI and RAID. Legacy/Native IDE mode is designed for compatibility with some old OS without AHCI driver but looses SATAII/AHCI features such as NCQ. This patch will make SB600 SATA run in AHCI mode even if it was set as IDE mode by system BIOS.

Signed-off-by: conke.hu(a)amd.com
---------
--- linux-2.6.19-rc6-git4/drivers/pci/quirks.c.orig 2006-11-23 19:45:49.000000000 +0800
+++ linux-2.6.19-rc6-git4/drivers/pci/quirks.c 2006-11-23 19:34:23.000000000 +0800
@@ -795,6 +795,25 @@ static void __init quirk_mediagx_master(
}
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_PCI_MASTER, quirk_mediagx_master );
+
+#if defined(CONFIG_SATA_AHCI) || defined(CONFIG_SATA_AHCI_MODULE)
+static void __devinit quirk_sb600_sata(struct pci_dev *pdev) {
+ /* set sb600 sata to ahci mode */
+ if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
+ u8 tmp;
+
+ pci_read_config_byte(pdev, 0x40, &tmp);
+ pci_write_config_byte(pdev, 0x40, tmp|1);
+ pci_write_config_byte(pdev, 0x9, 1);
+ pci_write_config_byte(pdev, 0xa, 6);
+ pci_write_config_byte(pdev, 0x40, tmp);
+
+ pdev->class = 0x010601;
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI,
+PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_sb600_sata); #endif

/*
* As per PCI spec, ignore base address registers 0-3 of the IDE controllers

---------------------

This is the re-written patch, if still any unreasonable, please feel free to contact me. Thanks!

Conke


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Arjan van de Ven on
On Thu, 2006-11-23 at 12:20 +0800, Conke Hu wrote:
> ATI SB600 SATA controller supports 4 modes: Legacy IDE, Native IDE, AHCI and RAID. Legacy/Native IDE mode is designed for compatibility with some old OS without AHCI driver but looses SATAII/AHCI features such as NCQ. This patch will make SB600 SATA run in AHCI mode even if it was set as IDE mode by system BIOS.


is this really the right thing? You're overriding a user chosen
configuration here.... while that might be justifiable.. it's probably a
good idea to at least provide a safety-valve for this one. The user
might have made that selection very deliberately.

--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/