*
* COMPONENT_NAME: ARTIC960 (tm) Support for AIX
*
* FUNCTIONS: help.readme
*

The information contained in this file consists of hints for using the
product, help with functions that may not be apparent, and last minute
updates to the existing documentation.  Review this file whenever the
product updates are applied.

========================================================================

CONTENTS

    To go directly to an item, search for the item number and the first
    word. (Example: 2.Adapter Exception)

    1.Driver Configuration
    2.Adapter Exception
    3.Dynamic Unloading Device Driver

========================================================================

1.Driver Configuration

  If one of the following messages is displayed while trying to dynamically
  install the ARTIC960 device driver, follow the corrective action procedure.

  Error Message:

  For an ARTIC960 Micro Channel Adapter:

            Method error (/etc/methods/cfgddricio):
                  0514-038 Error loading kernel extension.

  For an ARTIC960 PCI Adapter:

            Method error (/etc/methods/cfgddriciop):
                  0514-038 Error loading kernel extension.

  Corrective Action Procedure:

  1) Start tracing the adapter by entering the following at the command line:
       trace -j 29f -a

  2) Dynamically install the device driver by entering:
       "mkdev -l ddricioX"   for an ARTIC960 Micro Channel Adapter
          where X is the failing card number

       "mkdev -l ddriciopX"   for an ARTIC960 PCI Adapter
          where X is the failing card number

  3) Stop tracing the adapter by entering the following at the command line:
       trcstop

  4) Create a trace report by entering the following at the command line:
       trcrpt -O'exec=y' -O'pid=n' -O'svc=y' -O'timestamp=1'

  5) Determine what error code was logged.  Look for the errno field on
     ddricio exit_config.   If the number is 0x70 or higher it is an
     internal error code listed below.

     Internal Installation Error Codes
     ---------------------------------
     0x70  Invalid System Base IO address.

     0x71  Invalid interrupt level. On Micro Channel the only valid interrupt
           levels are 7, 9, 10, 14.

     0x72  Invalid card number, only 0 - 7 supported. Issue rmdev -l ddricioX -d
           for an ARTIC960 Micro Channel or rmdev -l ddriciopX for an ARTIC960
           PCI where X is the invalid card number and redefine a valid card
           number.

     0x73  Invalid read/write to adapter.  Examine system error log to get
           more information on the error.  Look for the message,
           "IBM ARTIC960: I/O ERROR".

     0x74  Resource currently busy.  Try to reconfigure the device driver again.

     0x76  Interrupt level conflict. The ARTIC960 Micro Channel adapter only
           supports four interrupt levels.  The adapter should be moved to the
           lowest possible slot number.  Prior to shutting down the system to
           move the adapter, execute the following command to see which device
           conflicts with the failing ARTIC960 adapter:

              "/etc/methods/cfgbus -l bus0 -d" for an ARTIC960 Micro Channel

                        or

              "/etc/methods/cfgbus_pci -l bus0 -d" for an ARTIC960 PCI

           This command creates the file BUS.out.  Page down to the bottom of
           the file.  Under the "Summary of bus resource assignments" table,
           find the "I"s in the far left column.  Find the device or devices
           which share the interrupt level with the ARTIC960.  Determine
           which conflicting adapters need to be moved to get the ARTIC960
           adapter in a lower slot number.  For each adapter that needs to
           be moved, issue the following command:

              rmdev -l <device name> -d

           Shutdown and move the adapters appropriately.

     0x79  Not enough memory to pin the device driver.  Need more system memory.

     0x7A  uiomove kernel service  failure.  This is returned when there is a
           filesystem error or no more memory.

     0x7B  Invalid card number.  See 0x72.

     0x7C  devswadd kernel service failure.  No more memory.

     0x7E  devswdel kernel service failure.  Call support.


     Common errno codes
     ------------------
     EIO   Could be returned for an ARTIC960 Micro Channel adapter, if one of
           the following conditions exist:

           1) If Secondary Arbitration level is enabled, the same arbitration
              levels numbers could have been assigned to both the first
              arbitration level and the second arbitration level.
              To determine if this is the condition, execute the following:

              lsattr -E -l ricioX

                  where X is minor number of the parent device of the failing
                  logical card number.

              If dma_lvl is assigned the same number as dma_lvl2, this is
              an error condition.  To get a new arbitration level assigned
              to dma_lvl2 enter the following:

              [/] rmdev -l ddricioX -d
                     where X is the number of the failing logical card number.
              [/] rmdev -l ricioX -d
                     where X is the parent of the failing logical card number.
              [/] /etc/methods/cfgbus -l bus0 -d
              [/] mkdev -l ricioX
              [/] mkdev -l ddricioX

           2) Ran out of Micro Channel arbitration levels. To determine this,
              execute the following command:

              /etc/methods/cfgbus -l bus0 -d

              This command creates the file BUS.out.  Browse this file and
              page down to the bottom of the file and look for the section
              marked "Summary of bus resource assignments :"

              On the far left column, look for the RESRC type of A,
              arbitration level, and look to the far right for the current
              arbitration level assigned. See if any of the devices are
              trying to share the same arbitration level or an error message
              indicating a conflict on the bus exists.  If so, this
              confirms running out of arbitration levels is the problem.
              Below is a possible corrective action:


              Corrective Action
              -----------------
              If peer to peer dma is not needed for any of the installed
              ARTIC960 adapters, set the ODM attribute DMA2Enable
              to no.  Execute the following command to accomplish this:

              a) make sure the DMA2Enable is set to no (Secondary Arbitration
                 Level=disable). Enter the following command for each
                 logical adapter not needing peer to peer dma:

                 [/] chdev -l ricioX -a DMA2Enable=no
                       where X is the logical adapter number

------------------------------------------------------------------------------

2.Adapter Exception

  An Adapter Exception (Exception Code 0x21, SCB Subsystem Failure, reported by
  ricstat) in a Micro Channel RISC System/6000 could be caused by not having
  the Secondary Arbitration Level enabled and a card attempts to issue a peer
  to peer dma operation.

  Corrective Action
  -----------------
  Set Secondary Arbitration Level to enable by issuing the following
  command for each card that requires a peer to peer connection:

  [/] chdev -l ricioX -a DMA2Enable=yes
         where X is the logical adapter number

------------------------------------------------------------------------------

3.Dynamic Unloading of Device Driver

  The device driver can not be unloaded or have a driver attribute changed
  when an application has the device driver "opened" for use.  Example,
  ricmbx opens the ARTIC960 Device Driver when installed.

  Corrective Action
  -----------------

  Stop the application processes that have the ARTIC960 device driver opened.

