Bug 132372

Summary: [ata] No disks found (nVidia nForce MCP55 sata controller) [regression]
Product: Base System Reporter: Floris Bos <bsd>
Component: amd64Assignee: freebsd-amd64 (Nobody) <amd64>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 8.0-CURRENT   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
dmesg-80-200902-snapshot-boot.txt
none
dmesg-70-boot.txt
none
dmesg-80-i386.txt none

Description Floris Bos 2009-03-06 20:30:03 UTC
On one of my systems, I get the message "no disks found" during the
installation of 8-current.
During boot it detects the disk controller correctly (atapci0: <nVidia
nForce MCP55 SATA300 controller), but not any of the disks.


Tried with both a regular SATA harddisk, as well as an MTRON SSD.
When I connect the SSD, it does generate the following messages:

==
unknown: timeout waiting to issue command
unknown: error issuing ATA_IDENTIFY command
==

So apparently some communication with the disk does happen.


System is a Tyan barebone:
http://www.tyan.eu/product_barebones_detail.aspx?pid=283

Under 7.0 the same system works fine.
Problem occurs with both the newest (200902) FreeBSD-8.0 snapshot, as well as the oldest (200809).
Comment 1 Gavin Atkinson freebsd_committer freebsd_triage 2009-03-07 16:08:16 UTC
State Changed
From-To: open->feedback

To submitter: could you please provide a verbose dmesg from a boot 
of 7.0 (and if possible, 8.0 as well?)  Also, would you be able to 
upgrade to 7.1 and check if that still works for you, and also attempt 
an upgrade to 8.0 using source (as there are a few ATA changes between 
the 200902 snapshot and the current source. 


Comment 2 Gavin Atkinson freebsd_committer freebsd_triage 2009-03-07 16:08:16 UTC
Responsible Changed
From-To: freebsd-bugs->gavin

Track
Comment 3 Floris Bos 2009-03-10 00:46:55 UTC
I attached a dmesg from 7.0 and 8.0 snapshot 200902

It was created by adding an Areca RAID controller to the system, and using
that to boot from.

One disk drive is connected to the Areca, which does work fine in 8.0.
A second disk drive and the cd-drive is left connected to the Nvidia
on-board controller, and is not detected in 8.0, although it does work in
7.0.
Comment 4 Floris Bos 2009-03-14 06:08:42 UTC
I did some additional testing.

The problem only occurs with the AMD64 edition of FreeBSD-8.
It does detect the disks properly on i386.

Attached a dmesg from the i386 version, that does work.


Also managed to build my own (make release) cd using the latest CVS source
today. And the problem still exists on AMD64.
Comment 5 Mark Linimon freebsd_committer freebsd_triage 2009-05-07 19:04:05 UTC
State Changed
From-To: feedback->open

Note that feedback was received some time ago.
Comment 6 Gavin Atkinson freebsd_committer freebsd_triage 2009-05-08 10:06:20 UTC
Responsible Changed
From-To: gavin->freebsd-amd64

Pass over to the amd64 mailing list for consideration.  This machine 
detects the ATA disks on 7.0 and 8.0 i386, and on 7.0 and64, but not 
on 8.0 amd64.
Comment 7 Gyver Def 2009-05-25 23:24:28 UTC
Hi,

Try to set a hw.pci.mcfg=0 in loader.conf.
In my case (Asus Crosshair MCP55) it solves the problem, but it's not  
a true solution.

Best regards,
GD
Comment 8 Lee Packham 2009-09-26 12:46:56 UTC
I just want to add a 'me too' (for FreeBSD 8.0 RC1) - although in my  
case it times out on one disk constantly (causing the machine not to  
boot at all) and doesn't get around to finding any more disks. FreeBSD  
7.2-RELEASE-p2 works just fine. This is all amd64. Subsequently this  
is a significant regress from 7.2 -> 8.0.
Comment 9 davejunk 2009-10-15 02:46:31 UTC
Just another data point.  I have an ASUS M5N-E and it has the MCP55.  
With BIOS 0103 (really old, causing other problems) FreeBSD-8.0-RC1 
boots.  With a more recent BIOS (1601 --- marked as working with 
solaris) it only recognizes the PATA disk in the machine (and not the 
six SATA disks).  The loader.conf hack appears to make it work, but I 
haven't fully tested it yet.
Comment 10 dfilter service freebsd_committer freebsd_triage 2009-10-26 08:41:23 UTC
Author: mav
Date: Mon Oct 26 08:41:10 2009
New Revision: 198479
URL: http://svn.freebsd.org/changeset/base/198479

Log:
  Fix SATA on nVidia MCP55 chipset. It needs some short time to allow BAR(5)
  memory access.
  
  PR:		amd64/128686, amd64/132372, amd64/139156
  MFC after:	3 days

Modified:
  head/sys/dev/ata/chipsets/ata-nvidia.c

Modified: head/sys/dev/ata/chipsets/ata-nvidia.c
==============================================================================
--- head/sys/dev/ata/chipsets/ata-nvidia.c	Mon Oct 26 07:43:41 2009	(r198478)
+++ head/sys/dev/ata/chipsets/ata-nvidia.c	Mon Oct 26 08:41:10 2009	(r198479)
@@ -165,7 +165,8 @@ ata_nvidia_chipinit(device_t dev)
 
 	    /* enable control access */
 	    pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
-
+	    /* MCP55 seems to need some time to allow r_res2 read. */
+	    DELAY(10);
 	    if (ctlr->chip->cfg1 & NVQ) {
 		/* clear interrupt status */
 		ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 11 dfilter service freebsd_committer freebsd_triage 2009-10-29 09:45:59 UTC
Author: mav
Date: Thu Oct 29 09:45:48 2009
New Revision: 198572
URL: http://svn.freebsd.org/changeset/base/198572

Log:
  Fix SATA on nVidia MCP55 chipset. It needs some short time to allow BAR(5)
  memory access.
  
  PR:		amd64/128686, amd64/132372, amd64/139156

Modified:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/ata/chipsets/ata-nvidia.c
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/dev/ata/chipsets/ata-nvidia.c
==============================================================================
--- stable/8/sys/dev/ata/chipsets/ata-nvidia.c	Thu Oct 29 09:45:05 2009	(r198571)
+++ stable/8/sys/dev/ata/chipsets/ata-nvidia.c	Thu Oct 29 09:45:48 2009	(r198572)
@@ -165,7 +165,8 @@ ata_nvidia_chipinit(device_t dev)
 
 	    /* enable control access */
 	    pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
-
+	    /* MCP55 seems to need some time to allow r_res2 read. */
+	    DELAY(10);
 	    if (ctlr->chip->cfg1 & NVQ) {
 		/* clear interrupt status */
 		ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 12 dfilter service freebsd_committer freebsd_triage 2009-10-29 11:52:40 UTC
Author: mav
Date: Thu Oct 29 11:52:26 2009
New Revision: 198580
URL: http://svn.freebsd.org/changeset/base/198580

Log:
  MFC rev. 198479:
  Fix SATA on nVidia MCP55 chipset. It needs some short time to allow
  BAR(5) memory access.
  
  PR:		amd64/128686, amd64/132372, amd64/139156
  Approved by:	re (kib)

Modified:
  releng/8.0/sys/   (props changed)
  releng/8.0/sys/amd64/include/xen/   (props changed)
  releng/8.0/sys/cddl/contrib/opensolaris/   (props changed)
  releng/8.0/sys/contrib/dev/acpica/   (props changed)
  releng/8.0/sys/contrib/pf/   (props changed)
  releng/8.0/sys/dev/ata/chipsets/ata-nvidia.c
  releng/8.0/sys/dev/xen/xenpci/   (props changed)

Modified: releng/8.0/sys/dev/ata/chipsets/ata-nvidia.c
==============================================================================
--- releng/8.0/sys/dev/ata/chipsets/ata-nvidia.c	Thu Oct 29 11:00:39 2009	(r198579)
+++ releng/8.0/sys/dev/ata/chipsets/ata-nvidia.c	Thu Oct 29 11:52:26 2009	(r198580)
@@ -165,7 +165,8 @@ ata_nvidia_chipinit(device_t dev)
 
 	    /* enable control access */
 	    pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
-
+	    /* MCP55 seems to need some time to allow r_res2 read. */
+	    DELAY(10);
 	    if (ctlr->chip->cfg1 & NVQ) {
 		/* clear interrupt status */
 		ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 13 Alexander Motin freebsd_committer freebsd_triage 2009-10-29 11:54:29 UTC
State Changed
From-To: open->closed

Fix committed and merged down to 8.0.