unsupported NVIDIA SATA controller

Andrey V. Elsukov bu7cher at yandex.ru
Tue Sep 23 05:12:11 UTC 2008


Joseph Olatt wrote:
>>> none13 at pci0:0:14:0:     class=0x010485 card=0x01371025 chip=0x07f810de rev=0xa2 hdr=0x00
>>>     vendor     = 'Nvidia Corp'
>>>     class      = mass storage
>>>     subclass   = RAID
>> Do you still have this problem?
>> It seems that your controller is AHCI-capable.
>> I can make a patch if is it needed.
> 
> Yes, I'm still have the above problem. And, yes, the controller appears
> to be ACHI-capable (at least according to Ubuntu. see [1])
> 
> I would greatly appreciate a patch if you can provide one.
> 
> regards,
> joseph
> 
> 
> [1]: http://www.eskimo.com/~joji/nvidia_sata/

Hi, Joseph.

Try attached patch.

-- 
WBR, Andrey V. Elsukov
-------------- next part --------------
Index: src/sys/dev/ata/ata-chipset.c
===================================================================
RCS file: /ncvs/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.225
diff -u -p -r1.225 ata-chipset.c
--- src/sys/dev/ata/ata-chipset.c	15 Aug 2008 10:55:11 -0000	1.225
+++ src/sys/dev/ata/ata-chipset.c	23 Sep 2008 05:06:28 -0000
@@ -3372,7 +3372,9 @@ ata_nvidia_ident(device_t dev)
      { ATA_NFORCE_MCP61_S3, 0, 0,         NV4|NVQ, ATA_SA300, "nForce MCP61" },
      { ATA_NFORCE_MCP65,    0, AMDNVIDIA, NVIDIA,  ATA_UDMA6, "nForce MCP65" },
      { ATA_NFORCE_MCP67,    0, AMDNVIDIA, NVIDIA,  ATA_UDMA6, "nForce MCP67" },
+     { ATA_NFORCE_MCP67_A1, 0, 0,         NVAHCI,  ATA_SA300, "nForce MCP67" },
      { ATA_NFORCE_MCP73,    0, AMDNVIDIA, NVIDIA,  ATA_UDMA6, "nForce MCP73" },
+     { ATA_NFORCE_MCP73_A1, 0, 0,         NVAHCI,  ATA_SA300, "nForce MCP73" },
      { ATA_NFORCE_MCP77,    0, AMDNVIDIA, NVIDIA,  ATA_UDMA6, "nForce MCP77" },
      { 0, 0, 0, 0, 0, 0}} ;
 
@@ -3380,7 +3382,12 @@ ata_nvidia_ident(device_t dev)
 	return ENXIO;
 
     ata_set_desc(dev);
-    ctlr->chipinit = ata_nvidia_chipinit;
+
+    if (ctlr->chip->cfg2 == NVAHCI)
+	ctlr->chipinit = ata_ahci_chipinit;
+    else
+	ctlr->chipinit = ata_nvidia_chipinit;
+
     return 0;
 }
 
Index: src/sys/dev/ata/ata-pci.h
===================================================================
RCS file: /ncvs/src/sys/dev/ata/ata-pci.h,v
retrieving revision 1.89
diff -u -p -r1.89 ata-pci.h
--- src/sys/dev/ata/ata-pci.h	10 Jul 2008 21:36:53 -0000	1.89
+++ src/sys/dev/ata/ata-pci.h	23 Sep 2008 05:06:28 -0000
@@ -243,8 +243,10 @@ struct ata_connect_task {
 #define ATA_NFORCE_MCP61_S2     0x03f610de
 #define ATA_NFORCE_MCP61_S3     0x03f710de
 #define ATA_NFORCE_MCP65        0x044810de
+#define ATA_NFORCE_MCP67_A1     0x055010de
 #define ATA_NFORCE_MCP67        0x056010de
 #define ATA_NFORCE_MCP73        0x056c10de
+#define ATA_NFORCE_MCP73_A1     0x07f810de
 #define ATA_NFORCE_MCP77        0x075910de
 
 #define ATA_PROMISE_ID          0x105a
@@ -450,6 +452,7 @@ struct ata_connect_task {
 #define NVIDIA          0x0004
 #define NV4             0x0010
 #define NVQ             0x0020
+#define NVAHCI          0x0040
 #define VIACLK          0x0100
 #define VIABUG          0x0200
 #define VIABAR          0x0400


More information about the freebsd-stable mailing list