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