BCM1250/BCM1125/BCM1125H
User Manual
10/21/02
B r o a d c o m C o r p o r a t i o n
Page
64
Section 4: System Control and Debug Unit
Document
1250_1125-UM100CB-R
B
US
W
ATCHER
The Bus Watcher monitors ZBbus data transfers, detecting error reports. Corrected ECC errors from memory
and the L2 cache are counted. Uncorrectable ECC errors are counted and logged. The bus watcher will raise
an interrupt when it detects an error.
When a data bus transaction is made with an error code the bus watcher logs the transaction (in the
bus_err_data
registers and the the
bus_err_status
register), and increments the appropriate counter. If the
error was an unrecoverable one (uncorrectable ECC error or bus error or fatal error) the log is frozen until the
bus_err_status
register is read. (The unrecoverable errors are Dcode=4-7).
The bus watcher contains the following counters:
Each counter is 8 bits, and saturates at 8'hff. Software may write any value into the counters, a counter is
cleared by writing zero to it. The counters are collected into two 32-bit registers,
bus_l2_errors
for the L2
cache counts and
bus_mem_io_errors
for the other counts. These registers should only be written with 32-
bit or 64-bit writes, using smaller will result in the value of some of the counters becoming UNPREDICTABLE.
In addition to the type of error the
bus_err_status
register records information about the transaction that
encountered the error. The upper four bits of the transaction id can be used to determine which of the ZBbus
agents initiated the transaction that resulted in an error, see
for the number of each agent.
In some cases the lower six bits of the transaction id can be decoded to get more information about the request,
see
. The responder id gives the number of the agent that reported the error. The data
that was returned with the error code is also captured, but in many cases it will be of UNPREDICTABLE value.
Note that when a bus error or fatal error is returned to a CPU it will take a bus error exception and when an
uncorrectable ECC error is returned it will take a cache error exception. These exceptions are taken with a
higher priority than the interrupt from the bus watcher, or any interrupt raised by the source of the error. DMA
engines that receive any of these errors will stop and report the error in some way. If any of these errors are
returned to the PCI or HyperTransport interfaces they will be converted into the apropriate error returned on
the interface and flags will be set in the CSRs to indicate this has been done. Thus an error is likely to be
reported several times, ensuring that processing is never done based on corrupted data. The correctable
Table 34: Bus Watcher Counters
Name
Use
bus_l2_cor_d_ecc
Counts Correctable L2 cache data ECC errors.
The cor_ecc_int interrupt is raised every time this counter increments.
bus_l2_bad_d_ecc
Counts Uncorrectable L2 cache data ECC errors.
The bad_ecc_int interrupt is raised every time this counter increments.
bus_l2_cor_t_ecc
Counts Correctable L2 cache tag ECC errors.
The cor_ecc_int interrupt is raised every time this counter increments.
bus_l2_bad_t_ecc
Counts Uncorrectable L2 cache tag ECC errors.
The bad_ecc_int interrupt is raised every time this counter increments.
bus_mem_cor_d_ecc
Counts Correctable memory data ECC errors.
The cor_ecc_int interrupt is raised every time this counter increments.
bus_mem_bad_d_ecc
Counts Uncorrectable memory data ECC errors.
The bad_ecc_int interrupt is raised every time this counter increments.
bus_error
Counts fatal errors and bus errors.
The bad_ecc_int interrupt is raised every time this counter increments.