Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ahcisata & pmp (was: Re: amd64-current (still?) won't boot (another one))



On Tue, Dec 11, 2012 at 06:51:12AM +0000, David Holland wrote:
> [...]
>  > there is a aprint_debug() in ahci_exec_fis() with some values that
>  > should give details about what failed; can you post it ?
> 
> It will be probably this weekend before I can try another test kernel.
> (I did try booting more verbosely at the time, but this caused the
> ahcisata stuff to be scrolled off by a ton of crypto messages.)
> 
>  > Does this controller have CLO in its capabilities ?
> 
> ahcisata0 at pci0 dev 10 function 0: NVIDIA nForce MCP65 AHCI Controller 
> (rev. 0xa3)
> ahcisata0: interrupting at ioapic0 pin 5
> ahcisata0: 64-bit DMA
> ahcisata0: AHCI revision 1.10, 4 ports, 32 slots, CAP 
> 0xe7229f83<CCCS,PMD,SPM,ISS=0x2=Gen2,SCLO,SAL,SALP,SSNTF,SNCQ,S64A>
> 
> so, apparently not, but this readout is from a kernel without the port
> multiplier code. (If that matters.)

I don't know why it's called SCLO here, but it's there (this is:
#define         AHCI_CAP_CLO    0x01000000 /* Command list override */
)

Assuming FreeBSD can probe your drive, can you try the attached patch ?
I don't know why it would matters, but FreeBSD has this delay ...

BTW, FreeBSD doens't have the BADPMP quirks for the nvidia controllers ...

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--
Index: ahcisata_core.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/ahcisata_core.c,v
retrieving revision 1.45
diff -u -p -u -r1.45 ahcisata_core.c
--- ahcisata_core.c     26 Oct 2012 09:59:11 -0000      1.45
+++ ahcisata_core.c     12 Dec 2012 12:03:56 -0000
@@ -682,6 +682,9 @@ again:
        default:
                break;
        }
+       /* from freebsd, wait before clearing RST */
+       delay(50);
+
        cmd_h->cmdh_flags = htole16(RHD_FISLEN / 4 |
            (drive << AHCI_CMDH_F_PMP_SHIFT));
        cmd_h->cmdh_prdbc = 0;


Home | Main Index | Thread Index | Old Index