Date: Tue, 14 Feb 2006 19:44:41 -0600 (CST) From: Alan Amesbury <amesbury@indefi.net> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Alan Amesbury <amesbury@umn.edu> Subject: kern/93369: [PATCH] Fix failed detection of Nvidia NForce2 chipset Message-ID: <20060215014441.89FFF11429@mail.indefi.net> Resent-Message-ID: <200602150150.k1F1o6MD077144@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 93369 >Category: kern >Synopsis: [PATCH] Fix failed detection of Nvidia NForce2 chipset >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Wed Feb 15 01:50:06 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Alan Amesbury >Release: FreeBSD 5.4-RELEASE-p11 i386 >Organization: University of Minnesota >Environment: System: FreeBSD modem.oitsec.umn.edu 5.4-RELEASE-p11 FreeBSD 5.4-RELEASE-p11 #5: Tue Feb 14 18:21:41 CST 2006 root@modem.oitsec.umn.edu:/usr/obj/usr/src/sys/OITSEC-5_4-L i386 MSI K7N2 Delta2-LSR motherboard with Nvidia NForce2 chipset (MCP2S). >Description: At boot, FreeBSD identifies the SATA chipset as "GENERIC ATA controller" with mode of UDMA33. This is VERY similar to PR #71321, but not quite identical; the chip ID reported by 'pciconf' is different, and the chipset not being identified correctly is SATA, not PATA. NOTE: The if-else statement in my patch *appears* to work, i.e., I haven't noticed any instability having applied this patch. Someone who knows what they're doing should probably take a closer look. % pciconf -lv . . . atapci0@pci0:9:0: class=0x01018a card=0x57001462 chip=0x008510de rev=0xa3 hdr=0x00 vendor = 'NVIDIA Corporation' device = 'MCP2S Parallel ATA Controller' class = mass storage subclass = ATA atapci1@pci0:11:0: class=0x010185 card=0x57001462 chip=0x008e10de rev=0xa3 hdr=0x00 vendor = 'NVIDIA Corporation' device = 'MCP2S Serial ATA Compatible Controller' class = mass storage subclass = ATA . . . % dmesg | grep ata atapci0: <nVidia nForce2 MCP UDMA133 controller> port 0xf000-0xf00f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 9.0 on pci0 ata0: channel #0 on atapci0 ata1: channel #1 on atapci0 atapci1: <nVidia nForce2 MCP2S UDMA133 controller> port 0xbc00-0xbc0f,0xb70-0xb73,0x970-0x977,0xbf0-0xbf3,0x9f0-0x9f7 irq 22 at device 11.0 on pci0 ata2: channel #0 on atapci1 ata3: channel #1 on atapci1 ad0: 57241MB <ST360014A/3.04> [116301/16/63] at ata0-master UDMA100 acd0: CDROM <FX4830T/R02C> at ata1-master PIO4 ata2-master: DMA limited to UDMA33, non-ATA66 cable or device ad4: 238475MB <ST3250823AS/3.01> [484521/16/63] at ata2-master UDMA33 >How-To-Repeat: Boot FreeBSD 5.4-RELEASE-p11 on a similarly equipped motherboard. >Fix: These patches to files in /sys/dev/ata appear to fix the problem: % diff -bu ata-chipset.c.orig ata-chipset.c; diff -bu ata-pci.h.orig ata-pci.h --- ata-chipset.c.orig Tue Feb 14 18:39:36 2006 +++ ata-chipset.c Tue Feb 14 19:34:01 2006 @@ -1216,6 +1216,7 @@ {{ ATA_NFORCE1, 0, AMDNVIDIA, NVIDIA, ATA_UDMA5, "nVidia nForce" }, { ATA_NFORCE2, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nVidia nForce2" }, { ATA_NFORCE2_MCP, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nVidia nForce2 MCP" }, + { ATA_NFORCE2_MCP2S, 0, AMDNVIDIA, NVIDIA, ATA_SA150, "nVidia nForce2 MCP2S" }, { ATA_NFORCE3, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nVidia nForce3" }, { ATA_NFORCE3_PRO, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nVidia nForce3 Pro" }, { ATA_NFORCE3_MCP, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nVidia nForce3 MCP" }, @@ -1244,7 +1245,12 @@ /* disable prefetch, postwrite */ pci_write_config(dev, 0x51, pci_read_config(dev, 0x51, 1) & 0x0f, 1); + if (ctlr->chip->max_dma < ATA_SA150) { ctlr->setmode = ata_via_family_setmode; + } + else { + ctlr->setmode = ata_sata_setmode; + } return 0; } --- ata-pci.h.orig Tue Feb 14 18:39:43 2006 +++ ata-pci.h Tue Feb 14 18:51:31 2006 @@ -142,6 +142,7 @@ #define ATA_NFORCE1 0x01bc10de #define ATA_NFORCE2 0x006510de #define ATA_NFORCE2_MCP 0x008510de +#define ATA_NFORCE2_MCP2S 0x008e10de #define ATA_NFORCE3 0x00d510de #define ATA_NFORCE3_PRO 0x00e510de #define ATA_NFORCE3_PRO_S1 0x00e310de Post-boot dmesg info: % dmesg | grep ata atapci0: <nVidia nForce2 MCP UDMA133 controller> port 0xf000-0xf00f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 9.0 on pci0 ata0: channel #0 on atapci0 ata1: channel #1 on atapci0 atapci1: <nVidia nForce2 MCP2S SATA150 controller> port 0xbc00-0xbc0f,0xb70-0xb73,0x970-0x977,0xbf0-0xbf3,0x9f0-0x9f7 irq 22 at device 11.0 on pci0 ata2: channel #0 on atapci1 ata3: channel #1 on atapci1 ad0: 57241MB <ST360014A/3.04> [116301/16/63] at ata0-master UDMA100 acd0: CDROM <FX4830T/R02C> at ata1-master PIO4 ad4: 238475MB <ST3250823AS/3.01> [484521/16/63] at ata2-master SATA150 >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060215014441.89FFF11429>