Current-Users archive

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

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



>>>>> "M" == Markus W Kilbinger <mk%kilbi.de@localhost> writes:

    M> ahcisata0 channel 0: setting WDCTL_RST failed for drive 0
    M> ahcisata0 channel 2: setting WDCTL_RST failed for drive 0

    M> Any idea what interim change made this happen!?

Found some time to answer my own question:

The change (better: correction) that made this (kind of) problem
reappear was

  $ cvs diff -u -r 1.11 sys/dev/ic/ahcisatavar.h 
  Index: sys/dev/ic/ahcisatavar.h
  ===================================================================
  RCS file: /cvsroot/src/sys/dev/ic/ahcisatavar.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- sys/dev/ic/ahcisatavar.h    10 Aug 2012 16:35:00 -0000      1.11
  +++ sys/dev/ic/ahcisatavar.h    13 Aug 2012 19:42:50 -0000      1.12
  @@ -1,4 +1,4 @@
  -/*     $NetBSD: ahcisatavar.h,v 1.11 2012/08/10 16:35:00 bouyer Exp $  */
  +/*     $NetBSD: ahcisatavar.h,v 1.12 2012/08/13 19:42:50 bouyer Exp $  */
   
   /*
    * Copyright (c) 2006 Manuel Bouyer.
  @@ -58,7 +58,7 @@
   #define AHCI_PCI_QUIRK_FORCE   __BIT(0)  /* force attach */
   #define AHCI_PCI_QUIRK_BAD64   __BIT(1)  /* broken 64-bit DMA */
   #define AHCI_QUIRK_BADPMP      __BIT(2)  /* broken PMP support, ignore */
  -#define AHCI_QUIRK_BADPMPRESET __BIT(2)  /* broken PMP support for reset */
  +#define AHCI_QUIRK_BADPMPRESET __BIT(3)  /* broken PMP support for reset */
   
          int32_t sc_ahci_cap;    /* copy of AHCI_CAP */
          int sc_ncmds; /* number of command slots */

For my matching hardware (excerpt from src/sys/dev/pci/ahcisata_pci.c)

  static const struct ahci_pci_quirk ahci_pci_quirks[] = {
  [...]
          { PCI_VENDOR_ATI, PCI_PRODUCT_ATI_SB700_SATA_AHCI,
              AHCI_QUIRK_BADPMPRESET },

meant this now 'really' AHCI_QUIRK_BADPMPRESET which was not
sufficient (see above error).

As a workaround / fix I changed it (effectively back) to AHCI_QUIRK_BADPMP and 
now
everything works again!

So, my hardware seems to need more 'quirk' than present in the actual
quirk table in our source tree ('AHCI_QUIRK_BADPMP' instead of just
'AHCI_QUIRK_BADPMPRESET').

I don't know more details about / for the other
PCI_PRODUCT_ATI_SB[67]00_SATA_* entries in our actual quirk table
which all have 'AHCI_QUIRK_BADPMPRESET' at time of writing this.

BTW: In sys/dev/ic/ahcisatavar.h

  struct ahci_softc {
  [...]
          int sc_achi_quirks;

                 ^^^^
is just cosmetics... ;-)


Markus.


Home | Main Index | Thread Index | Old Index