[net.bugs.4bsd] Fix to 4.1 for MS780E memory controllers

pwb@trwrba.UUCP (06/27/84)

1984-0067.01          TRW/UNIX Modification          1984-0067.01

NAME
     autoconf - MS780E memory controllers are unsupported

DATE ENACTED
     June 21, 1984

KEYWORDS
     kernel, memory, MS780E

PROBLEM DESCRIPTION
     The autoconfiguration code does not recognize the MS780E
     memory controllers.

RESOLUTION
     In the file /usr/src/sys/dev/autoconf.c, the routine pro-
     benexus() change the following section of code:

               case NEX_MEM4:
               case NEX_MEM4I:
               case NEX_MEM16:
               case NEX_MEM16I:
                    printf("mcr%d at tr%d0, nmcr, nexnum);
                    if (nmcr >= 4) {
                         printf("5 mcr's");
                         goto unsupp;
                    }
                    mcraddr[nmcr++] = (struct mcr *)nxv;
                    break;

     to:

               case NEX_MEM4:
               case NEX_MEM4I:
               case NEX_MEM16:
               case NEX_MEM16I:
               case NEX_MEM64I:
                    printf("mcr%d at tr%d0, nmcr, nexnum);
                    if (nmcr >= 4) {
                         printf("5 mcr's");
                         goto unsupp;
                    }
                    mcraddr[nmcr++] = (struct mcr *)nxv;
                    Memory_flavor = nexcsr.nex_type;
                    break;

               case NEX_MEM64L:
               case NEX_MEM64LI:
               case NEX_MEM64U:
               case NEX_MEM64UI:
                    printf("mcr%d (64K chips non or external interleaved)", nmcr);
                    goto unsupp;

4.1bsd                    TRW (6/27/84)                         1

1984-0067.01          TRW/UNIX Modification          1984-0067.01

FILES
     /usr/src/sys/dev/autoconf.c     1.2

REQUESTOR
     Michael Gorlick

AUTHOR
     Phillip Bonesteele

SEE ALSO
     1984-0067.02, 1984-0067.03, 1984-0067.04

4.1bsd                    TRW (6/27/84)                         2


1984-0067.02          TRW/UNIX Modification          1984-0067.02

NAME
     mem.h - MS780E memory controllers are unsupported

DATE ENACTED
     June 21, 1984

KEYWORDS
     kernel, mem.h, memory, MS780E

PROBLEM DESCRIPTION
     The MS780E memory controller register interfaces are unsup-
     ported in the memory device header file.

RESOLUTION
     In the file /usr/src/sys/h/mem.h change the declaration for
     the variable mc_reg from:

          int  mc_reg[3];

     to:

          int  mc_reg[4];

     and add the following:

     /*
      * The following applies only to the MS780E memory controller.
      * Physically the controller consists of three boards, the M8376
      * SBI controller and two M8375 array controllers sitting to the immediate
      * left and right respectively of the SBI controller (looking at your
      * VAX from the front).
      * There are 4 memory controller registers A, B, C and D.
      * Registers A and B are `shared' by the two M8375 array controllers.
      * Registers C and D are the error reporting registers for the RIGHT and
      * LEFT array controllers respectively.
      */
     #define M780_LEFT_INH(mcr) \
          (((mcr)->mc_reg[3] = (M780_ICRD|M780_HIER|M780_ERLOG)), mtpr(SBIER, 0))
     #define   M780_LEFT_ENA(mcr)  \
          (((mcr)->mc_reg[3] = (M780_HIER|M780_ERLOG)), mtpr(SBIER, 3<<14))
     #define   M780_LEFT_ERR(mcr)  \
          ((mcr)->mc_reg[3] & (M780_ERLOG))
     #define   M780_LEFT_SYN(mcr)  ((mcr)->mc_reg[3] & 0xff)
     #define   M780_LEFT_ADDR(mcr) (((mcr)->mc_reg[3] >> 8) & 0xfffff)

     #define M780_RIGHT_INH(mcr) M780_INH(mcr)
     #define   M780_RIGHT_ENA(mcr) M780_ENA(mcr)
     #define   M780_RIGHT_ERR(mcr) M780_ERR(mcr)
     #define   M780_RIGHT_SYN(mcr) M780_SYN(mcr)
     #define   M780_RIGHT_ADDR(mcr) M780_ADDR(mcr)

4.1bsd                    TRW (6/27/84)                         1

1984-0067.02          TRW/UNIX Modification          1984-0067.02

FILES
     /usr/src/sys/h/mem.h       1.3
     /usr/include/sys/mem.h     1.3

REQUESTOR
     Michael Gorlick

AUTHOR
     Phillip Bonesteele

SEE ALSO
     1984-0067.01, 1984-0067.03, 1984-0067.04

4.1bsd                    TRW (6/27/84)                         2


1984-0067.03          TRW/UNIX Modification          1984-0067.03

NAME
     nexus.h - MS780E memory controllers are unsupported

DATE ENACTED
     June 21, 1984

KEYWORDS
     kernel, memory, MS780E

PROBLEM DESCRIPTION
     The MS78E memory controller is  unsupported by defines in
     the nexus header file.

RESOLUTION
     In the file /usr/src/sys/h/nexus.h add the following macros:

     #define   NEX_MEM64L     0x68      /* 64K chips, non-interleaved, lower */
     #define   NEX_MEM64LI    0x69      /* 64K chips, ext-interleaved, lower */
     #define   NEX_MEM64U     0x6a      /* 64K chips, non-interleaved, upper */
     #define   NEX_MEM64UI    0x6b      /* 64K chips, ext-interleaved, upper */
     #define   NEX_MEM64I     0x6c      /* 64K chips, interleaved */

FILES
     /usr/src/sys/h/nexus.h       1.2
     /usr/include/sys/nexus.h     1.2

REQUESTOR
     Michael Gorlick

AUTHOR
     Phillip Bonesteele

SEE ALSO
     1984-0067.01, 1984-0067.02, 1984-0067.04

4.1bsd                    TRW (6/27/84)                         1


1984-0067.04          TRW/UNIX Modification          1984-0067.04

NAME
     machdep.c - MS780E memory controllers are unsupported

DATE ENACTED
     June 21, 1984

KEYWORDS
     kernel, memory, MS780E

PROBLEM DESCRIPTION
     The MS78E memory controller is  unsupported by the machine
     dependent memory error reporting code.

RESOLUTION
     In the file /usr/src/sys/sys/machdep.c add the include

     #include "../h/nexus.h"

     and in the routine memenable() change the following code:

               case VAX_780:
                    M780_ENA(mcr);
                    break;

     to:

               case VAX_780:
                    switch (Memory_flavor) {
                    case NEX_MEM4:
                    case NEX_MEM4I:
                    case NEX_MEM16:
                    case NEX_MEM16I:
                        M780_ENA(mcr);
                        break;
                    case NEX_MEM64I:
                        M780_LEFT_ENA(mcr);
                        M780_RIGHT_ENA(mcr);
                        break;
                    }
                    break;

     and change the following code:

               case VAX_780:
                    if (M780_ERR(mcr)) {
                         printf("mcr%d: soft ecc addr %x syn %x0,
                             m, M780_ADDR(mcr), M780_SYN(mcr));
                         M780_INH(mcr);
                    }
                    break;

     to:

4.1bsd                    TRW (6/27/84)                         1

1984-0067.04          TRW/UNIX Modification          1984-0067.04

               case VAX_780:
                   switch (Memory_flavor) {
                   case NEX_MEM4:
                   case NEX_MEM4I:
                   case NEX_MEM16:
                   case NEX_MEM16I:
                    if (M780_ERR(mcr)) {
                         printf("mcr%d: soft ecc addr %x syn %x0,
                             m, M780_ADDR(mcr), M780_SYN(mcr));
                         M780_INH(mcr);
                    }
                    break;
                   case NEX_MEM64I:
                    if (M780_LEFT_ERR(mcr)) {
                        printf("mcr%d (left): soft ecc addr %x syn %x0,
                            m, M780_LEFT_ADDR(mcr), M780_LEFT_SYN(mcr));
                        M780_LEFT_INH(mcr);
                    }
                    if (M780_RIGHT_ERR(mcr)) {
                        printf("mcr%d (right): soft ecc addr %x syn %x0,
                            m, M780_RIGHT_ADDR(mcr), M780_RIGHT_SYN(mcr));
                        M780_RIGHT_INH(mcr);
                    }
                    break;
                   }
                   break;

FILES
     /usr/src/sys/sys/machdep.c     1.3

REQUESTOR
     Michael Gorlick

AUTHOR
     Phillip Bonesteele

SEE ALSO
     1984-0067.01, 1984-0067.02, 1984-0067.03

4.1bsd                    TRW (6/27/84)                         2