8.0/amd64 does not detect ata channels on nVidia nForce MCP55

John Baldwin jhb at freebsd.org
Tue Sep 29 12:04:09 UTC 2009


On Monday 28 September 2009 10:35:28 am Nick Hilliard wrote:
> Hello,
> 
> this was previously brought up on -current, but they suggested moving the 
> topic over here.
> 
> As the subject suggests, freebsd 8.0 on amd64 does not detect all ata 
> channels on nVidia nForce MCP55, unless you configure hw.pci.mcfg=0 in 
> loader.conf.  There was some discussion here:
> 
> > http://lists.freebsd.org/pipermail/freebsd-current/2009-August/011137.html
> > 
http://lists.freebsd.org/pipermail/freebsd-current/2009-September/011162.html
> 
> and more here:
> 
> http://www.freebsd.org/cgi/query-pr.cgi?pr=128686
> http://www.freebsd.org/cgi/query-pr.cgi?pr=132372
> http://www.freebsd.org/cgi/query-pr.cgi?pr=137942
> 
> If there is a developer interested in fixing this, I have a machine running 
> 8.0 off a flash disk which is displaying this problem, and can set up an 
> account for remote access.
> 
> Any takers?

Try this patch obtaining the dmesg output for both the MCFG and !MCFG case:

Index: ata-nvidia.c
===================================================================
--- ata-nvidia.c	(revision 197581)
+++ ata-nvidia.c	(working copy)
@@ -154,11 +154,14 @@
 	    ctlr->r_type2 = SYS_RES_IOPORT;
 	else
 	    ctlr->r_type2 = SYS_RES_MEMORY;
+	printf("%s: r_type2 = %s\n", __func__, ctlr->r_type2 == SYS_RES_IOPORT ?
+	    "I/O" : "memory");
 	ctlr->r_rid2 = PCIR_BAR(5);
 	if ((ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2,
 						   &ctlr->r_rid2, RF_ACTIVE))) {
 	    int offset = ctlr->chip->cfg1 & NV4 ? 0x0440 : 0x0010;
 
+	    pritnf("%s: allocated res2 ok\n", __func__);
 	    ctlr->ch_attach = ata_nvidia_ch_attach;
 	    ctlr->ch_detach = ata_pci_ch_detach;
 	    ctlr->reset = ata_nvidia_reset;

-- 
John Baldwin


More information about the freebsd-amd64 mailing list