Current-Users archive

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

Re: amd64-current won't boot (another one)



On Fri, Jul 06, 2012 at 11:39:08AM +0100, Chavdar Ivanov wrote:
> On 6 July 2012 10:52, Chavdar Ivanov <ci4ic4%gmail.com@localhost> wrote:
> > Hi,
> >
> > The last amd64 6.99.8 to work for me was from 26/06 (but then I had a
> > few days missed, as I was moving room in the office and the kit was
> > powered down).
> >
> > The good dmesg is attached.
> >
> > On the newer builds I get
> >
> > ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
> > ahcisata0 channel 2: clearing WDCTL_RST failed for drive 0
> 
> 
> The trivial (and most likely wrong) patch:
> 
> --- sys/dev/ic/ahcisata_core.c.ORIG   2012-07-06 11:21:25.000000000 +0100
> +++ sys/dev/ic/ahcisata_core.c        2012-07-06 11:21:46.000000000 +0100
> @@ -685,17 +685,6 @@
>       cmd_tbl->cmdt_cfis[fis_type] = RHD_FISTYPE;
>       cmd_tbl->cmdt_cfis[rhd_c] = drive;
>       cmd_tbl->cmdt_cfis[rhd_control] = 0;
> -     switch(ahci_exec_fis(chp, 31, flags)) {
> -     case ERR_DF:
> -     case TIMEOUT:
> -             aprint_error("%s channel %d: clearing WDCTL_RST failed "
> -                 "for drive %d\n", AHCINAME(sc), chp->ch_channel, drive);
> -             if (sigp)
> -                     *sigp = 0xffffffff;
> -             goto end;
> -     default:
> -             break;
> -     }
>       /*
>        * wait 31s for BSY to clear
>        * This should not be needed, but some controllers clear the
> 
> gets me working again, so it is something in rev. 1.35 of
> ahcisata_core.c; the ball is with Manuel then.

that's strange, especially as setting the RST bit did work.
It would be interesting to know if it's a TIMEOUT or DF.
Could you see if setting cmd_tbl->cmdt_cfis[rhd_control] to WDCTL_4BITS
instead of 0 would help ?
Also, maybe try a DELAY() of 5000 to 10000 before this ahci_exec_fis().
Last, you could see if the attached patch helps.

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--
Index: ahcisata_core.c
===================================================================
RCS file: /home/bouyer/anoncvs/cvs/src/sys/dev/ic/ahcisata_core.c,v
retrieving revision 1.35
diff -u -r1.35 ahcisata_core.c
--- ahcisata_core.c     2 Jul 2012 18:15:46 -0000       1.35
+++ ahcisata_core.c     6 Jul 2012 17:42:09 -0000
@@ -642,8 +642,7 @@
        /* clear port interrupt register */
        AHCI_WRITE(sc, AHCI_P_IS(chp->ch_channel), 0xffffffff);
        /* clear SErrors and start operations */
-       if ((sc->sc_ahci_cap & (AHCI_CAP_SPM | AHCI_CAP_CLO)) ==
-           (AHCI_CAP_SPM | AHCI_CAP_CLO)) {
+       if ((sc->sc_ahci_cap & AHCI_CAP_CLO) == AHCI_CAP_CLO) {
                /*
                 * issue a command list override to clear BSY.
                 * This is needed if there's a PMP with no drive


Home | Main Index | Thread Index | Old Index