aic-5.1.19 AHA-3985W

Doug Ledford dledford at redhat.com
Mon Sep 20 08:08:13 PDT 1999


Michael Leodolter wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> 
> Hi Doug!
> 
> We have a Adaptec 3985W (PCI_DEVICE_ID_ADAPTEC_7873) board with 9 4.5Gb
> disks, 3 on each channel -
> and were still running linux-2.0.33/aic7xxx-4.1.1 -
> 
> Now did upgrade to 2.2.12 with aic7xxx-5.1.19:
> After lots of problems I looked into the old driver from 2.0.33 and saw:
> 
> The external SCB RAM on the 3985W does not work and was disabled by
> #ifdef AIC7XXX_USE_EXT_SCBRAM.
> 
> With the following patch to linux-2.2.12/aic7xxx.c-5.1.19 everything works
> fine.
> 
> Maybe this is needed only for
>         temp_p->device_id == PCI_DEVICE_ID_ADAPTEC_7873.
> 
> - --- cut here ---
> - --- aic7xxx.c.orig    Mon Sep 13 10:13:58 1999
> +++ aic7xxx.c   Mon Sep 13 14:26:47 1999
> @@ -9966,12 +9966,14 @@
>                    devconfig |= EXTSCBPEN;
>                  }
>                }
> +#ifdef AIC7XXX_USE_EXT_SCBRAM
>                else if (devconfig & RAMPSM)
>                {
>                  devconfig &= ~SCBRAMSEL;
>                  devconfig |= EXTSCBPEN;
>                  temp_p->flags |= AHC_EXTERNAL_SRAM;
>                }
> +#endif
>  #if LINUX_VERSION_CODE > KERNEL_VERSION(2,1,92)
>                pci_write_config_dword(pdev, DEVCONFIG, devconfig);
>  #else


Hmmm....a 3985W that uses the 7883 device ID should never get there.  The
switch statement that enloses that code says:

          switch(temp_p->chip & AHC_CHIPID_MASK)
          {
            default:
              break;
            case AHC_AIC7895:
            case AHC_AIC7896:
            case AHC_AIC7899:
		.....
	  }

So, as you can see, the change you made shouldn't make a difference.  Now, if
you have one of the later model 3985 cards that uses the 7895 chipset, then
this all makes perfect sense.  In any case, I've modified the current driver
with the following:

/*
 * On some machines, enabling the external SCB RAM isn't reliable yet.  I
 * haven't had time to make test patches for things like changing the
 * timing mode on that external RAM either.  Some of those changes may
 * fix the problem.  Until then though, we default to external SCB RAM
 * off and give a command line option to enable it.
 */
static int aic7xxx_scbram = 0;


and I modified the code inside the switch statement to honor this global
variable that the setup code can modify.  That should solve your problem and
will be in the next official release.

-- 
  Doug Ledford   <dledford at redhat.com>
   Opinions expressed are my own, but
      they should be everybody's.


To Unsubscribe: send mail to majordomo at FreeBSD.org
with "unsubscribe aic7xxx" in the body of the message




More information about the aic7xxx mailing list