Section 1
Exceptions

The 604 SMP reference design implements a full suite of SMP support features for the handling of interrupts, resets, and error conditions. The Interrupts subsection describes the interrupt capability of the reference design, The Resets subsection covers resets, and the Error Handling subsection describes the error handler.

1.1 Interrupts

The reference design interrupt subsystem uses the cascaded 8259 interrupt controllers in the ISA bridge in conjunction with the Multi-Processor Interrupt Controller (MPIC) to handle interrupts in a symmetrical manner (see Figure 1 and the data sheet in the Data Sheets section). The software-configured hardware allows routing of interrupts from any source to any CPU, and provides the following capabilities:

Notice:

The MPIC chip referenced in this document is not currently generally available from IBM. The Verilog source of MPIC is available from IBM under license at no charge. Contact your IBM representative for details.



1.1.1 PCI interrupt handling

The handling of a PCI interrupt is done using the following sequence:

  1. The PCI device asserts an interrupt to MPIC.
  2. MPIC routes the interrupt to a CPU, based on the assigned attributes for that interrupt and the CPU.
  3. The CPU receives the interrupt vector by reading a memory mapped MPIC register.
  4. MPIC responds with the interrupt vector.

1.1.2 ISA interrupt handling

The handling of a ISA interrupt is done using the following sequence:

  1. An ISA or X-Bus device asserts an ISA interrupt (to the ISA Bridge).
  2. The cascaded 8259A controllers in the ISA bridge route the ISA interrupt to MPIC.
  3. MPIC routes the interrupt to a CPU, based on the assigned attributes for that interrupt and the CPU.
  4. The CPU receives the interrupt vector by reading a memory mapped MPIC register.
  5. MPIC responds with the vector assigned to all ISA interrupts.
  6. The CPU then performs a memory mapped read to BFFF FFF0, which causes the 660 Bridge to initiate a PCI interrupt acknowledge cycle.
  7. The ISA bridge responds to this PCI cycle with the 8 bit ISA interrupt vector.

1.1.3 CPU to CPU Interrupt Handling

A CPU can cause MPIC to interrupt a CPU by a write to a memory mapped register in MPIC. Handling of the interrupt by the target CPU follows the same sequence as a PCI interrupt.

1.1.4 PCI Interrupt Assignments

At each PCI slot, the INTA#, INTB#, INTC#, and INTD# interrupts are tied together and routed to MPIC as shown in Figure 2. Table 1 shows the MPIC interrupt assignments.



Table 1. MPIC Interrupts

Number

TYPE

ASSIGNMENT OR CONNECTION

0

Level (Active High)

ISA Interrupts from PCI to ISA Bridge

1

Level (Active Low)

PCI Slot 2 (Upper) INTA,B,C,D

2

Level (Active Low)

PCI Slot 1 (Lower) INTA,B,C,D

3,4

Reserved (Should be masked)

5

Level (Active Low)

SCSI HDD

6

Level (Active Low)

Ethernet

7

Reserved (Should be masked)

8-15

Not Used (Should be masked)

1.1.5 ISA Interrupt Assignments

In accordance with the ISA standard, the reference design ISA interrupts operate in edge sensitive mode. Interrupts are assigned a priority level according to ISA conventions. For correct operation, program the ISA bridge to operate in edge sensitive mode.

Table 2. ISA Interrupt Assignments

IRQ

PRIORITY

ASSIGNMENT or CONNECTION

Master

0

1

Timer 1 Counter 0 (Internal to the ISA Bridge)

1

2

Keyboard

2

3-10

Cascade from Controller 2

3

11

COM 2, COM 4, ISA Pin B25

4

12

COM 1, COM 3, ISA Pin B24

5

13

Parallel LPT 2,3, ISA Pin B21, Audio (note 2)

6

14

Floppy Disk, ISA Pin B23

7

15

Parallel LPT 1,2, ISA Pin B21, Audio (note 2)

Slave

8#

3

Time of Day (aka RTC)

9

4

ISA pin B04, Audio (note 2)

10

5

ISA pin D03

11

6

ISA pin D04, Audio (note 2)

12/M

7

Mouse, ISA pin D05

13#

8

DMA Scatter/Gather completion (programmable)

14

9

ISA pin D07, Audio (note 2)

15

10

ISA pin D06

Notes:

Note 1) IRQ10 and IRQ15 are available for ISA option cards. Also, either IRQ5 or IRQ7 can be used for ISA option cards, depending on which IRQ line the parallel port and the Audio controller are configured to use. IRQ9, IRQ11, and IRQ14 can be used for ISA option cards, depending on which IRQ lines the Audio controller is configured to use. IRQ0, IRQ1, IRQ2, IRQ8 and IRQ13 are not connected to the ISA slots. IRQ3, IRQ4, IRQ6, and IRQ12 are connected to motherboard devices and should not be used by ISA option cards. These IRQs are wired to the ISA option slots so that cards may detect, by sensing low levels, that they are used .

Note 2) IRQ5, IRQ7, IRQ9, IRQ11, IRQ12, and IRQ14 are available to the Audio subsystem. Enabling these interrupts can be done inside the Crystal CS4232 controller. The interrupts are connected to the system as follows:

CS4232 IRQ System IRQ
A 5
B 7
C 9
D 11
E 12
F 14

1.1.5.1 Scatter/Gather (SG) Interrupts

Scatter/gather (SG) DMA support can use either IRQ13 or end of process (EOP) to indicate to the system that the SG sequence has been completed by the DMA controller. The use of EOP is recommended, since IRQ13 can be used by other ISA devices. The EOP signal from the ISA bridge generates the Terminal Count (ISA_TC) signal on the ISA bus.

IRQ13 can be connected optionally to the SCSI INT output on the motherboard to assist in the development of software that uses drivers which do expect an ISA-based HDD interrupt, and which do not support MPIC interrupts.

1.1.6 SCSI Bus Interrupts

The NCR 53C810 SCSI Controller has several interrupt sources; however, it will normally present only one interrupt at a time. A special case occurs when two interrupts arrive exactly on the same clock. In order to avoid dropping interrupts, the software must check all status registers in the controller and service all outstanding SCSI interrupts each time the CPU is interrupted by the SCSI controller.

1.1.7 MCP# Considerations

MCP# is an interrupt which is used to report system faults to PowerPC CPUs. The motherboard connects the MCP# of the 660 Bridge and the MCP# of both CPU slots together with a pullup resistor. Drivers on this net must be open drain to avoid bus contention with other devices. Refer to the 660 Bridge User's Manual for details on fault conditions that activate MCP#. CPU cards should wire MCP# to all devices which generate or monitor MCP#. There is no method on the motherboard for generating a CPU or slot specific MCP#.

1.1.8 SMI# Considerations

SMI# is a system management interrupt for the PowerPC 604 CPU. It can be used by power management circuits to awaken a NAPping or SLEEPing CPU back to full activity. The motherboard does not support SMI# and has this signal pulled up and connected to SMI# on both CPU slots.

1.2 Resets

The reference design features flexible SMP-capable support for the generation of HRESET#, SRESET#, and TRST# (for the JTAG interface).

1.2.1 HRESET# Logic

The reference design uses the circuit shown in Figure 3 to generate the HRESET# signals for the CPUs. The following are four methods of generating an HRESET# for an individual CPU. Three of the four are not CPU specific and will generate an HRESET# for all of the CPUs. None of these methods will reset any power management controller that may be in the system.

  1. POWER_GOOD. When a power supply out-of-regulation condition is signaled by a low on POWER_GOOD from the power supply, the logic generates a hard reset to each CPU and to the motherboard devices.
  2. CPU Enable Register. As detailed in the I/O Subsystems section, a CPU-specific hard reset or system reset is generated by using the system EPLD CPU Enable Register (Port 871) and the HRESET PAL.
  3. RESET Jumper. When pins 1 and 2 of the RESET jumper J38 are shorted together, the logic generates a hard reset to each CPU and to the motherboard devices.
  4. RISCWatch Reset. The ESP connector J18 allows the use of the RISCWatch tool, which is a JTAG-based debugging system. This tool requires the ability to initiate and hold all CPUs in the system in hard reset. When the RISCWatch asserts HRESET_ESP#, the HRESET PAL generates a hard reset to each CPU. The motherboard devices are not reset.
Figure 3 shows certain signals that are physically present on the motherboard, but which are not supported. These signals are subject to change or elimination from the reference design at any time. Each CPU slot is shown with reset support for two CPUs per slot; however, HRESET_CPU1B# and HRESET_CPU2B# are unsupported signals.

1.2.1.1 JTAG Interface Hard Resets

The JTAG interface with the 604 CPU(s) must be held in reset while HRESET# is active. The HRESET PAL supplies the TRST_CPU1# signal to reset the JTAG interface with the CPU(s) in CPU slot 1, and supplies the TRST_CPU2# signal to reset the JTAG interface of the CPU(s) in CPU slot 2.

TRST_CPU1# is asserted whenever HRESET_CPU1A# or HRESET_CPU1B# is asserted, and TRST_CPU2# is asserted whenever either of the HRESET#s for that CPU slot is asserted.

The reference design also asserts both TRST# signals while the RISCWatch interface is asserting OCS_OVRIDE.



1.2.1.2 HRESET PAL Equations

TITLE Hard-Reset Logic
PATTERN hrst2.pds
REVISION 0
COMPANY IBM
DATE 05/17/95 05:45pm
CHIP hreset PAL16L8

;-------------------- PIN Declarations -------------- 20plcc PIN

;PIN NC ; INPUT 1
;PIN NC ; INPUT 2
PIN 3 CKST_P2_ ; INPUT 3
PIN 4 CKST_P1_ ; INPUT 4
PIN 5 KSRS_P1A_ ; INPUT 5
PIN 6 KSRS_P1B_ ; INPUT 6
PIN 7 KSRS_P2A_ ; INPUT 7
PIN 8 KSRS_P2B_ ; INPUT 8
PIN 9 OCS_OVRIDE ; INPUT 9
;PIN NC ; gnd 10
PIN 11 HRST_ESP_ ; INPUT 11



PIN 12 CKST_ESP_ COMBINATORIAL ; OUTPUT 12
PIN 13 HRST_P1A_ COMBINATORIAL ; OUTPUT 13
PIN 14 HRST_P1B_ COMBINATORIAL ; OUTPUT 14
PIN 15 HRST_P2A_ COMBINATORIAL ; OUTPUT 15
PIN 16 HRST_P2B_ COMBINATORIAL ; OUTPUT 16
PIN 17 TRST_P1_ COMBINATORIAL ; OUTPUT 17
PIN 18 TRST_P2_ COMBINATORIAL ; OUTPUT 18
;PIN NC ; INPUT 19
;PIN NC ; vcc 20

;------------ Boolean Equation Segment ------

/CKST_ESP_ = /CKST_P1_ * /CKST_P2_

/HRST_P1A_ = /HRST_ESP_ + /KSRS_P1A_

/HRST_P1B_ = /HRST_ESP_ + /KSRS_P1B_

/HRST_P2A_ = /HRST_ESP_ + /KSRS_P2A_

/HRST_P2B_ = /HRST_ESP_ + /KSRS_P2B_

/TRST_P1_ = /OCS_OVRIDE + /KSRS_P1A_

/TRST_P2_ = /OCS_OVRIDE + /KSRS_P2A_

1.2.2 SRESET Logic

The SRESET# signal provides a method of software resetting the CPUs in the reference design. It can be used by software to restart from a know state and, in SMP systems, to sequence and initialize CPUs. This signal is negative edge sensitive.



The reference design uses the circuit shown in Figure 4 to generate the SRESET# signals to the CPUs. There are three methods of generating an SRESET# to an individual CPU. Two of the three are not CPU specific and will generate an SRESET# to all of the CPUs. Note that none of these methods will reset either the motherboard devices or any power management controller which may be in the system.

Port 92 and the MPIC registers can be used asynchronously to generate soft resets without masking each other because the SRESET PAL XORs the INIT_CPU_x_MPIC# signals with an inverted Port 92 signal. Also see the SRESET PAL Equations subsection for the SRESET PAL equations.

Figure 4 shows certain signals that are physically present on the motherboard but are not supported. These signals are subject to change or elimination from the reference design at any time. Each CPU slot is shown with reset support for two CPUs per slot; however, SRESET_CPU1B# and SRESET_CPU2B# are unsupported signals.

1.2.3 SRESET PAL equations

TITLE Soft-Reset Logic for SIO
PATTERN SRSTP2A.pds
REVISION 3.0
COMPANY IBM
DATE 09/11/95 11am
CHIP sreset PAL16L8



;------------------------ PIN Declarations --------- 20plcc PIN
PIN 1 SRS_ESP_ ; INPUT 1
PIN 2 SRS_PORT92 ; INPUT 2
PIN 3 INIT_P1A_MPIC_ ; INPUT 3
PIN 4 INIT_P1B_MPIC_ ; INPUT 4
PIN 5 INIT_P2A_MPIC_ ; INPUT 5
PIN 6 INIT_P2B_MPIC_ ; INPUT 6
PIN 7 HLTQ_P1A ; INPUT 7
PIN 8 HLTQ_P1B ; INPUT 8
PIN 9 HLTQ_P2A ; INPUT 9
;PIN NC ; gnd 10
PIN 11 HLTQ_P2B ; INPUT 11
PIN 12 RUNH_ESP COMBINATORIAL ; OUTPUT 12
PIN 13 SRS_P1A_ COMBINATORIAL ; OUTPUT 13
PIN 14 SRS_P1B_ COMBINATORIAL ; OUTPUT 14
PIN 15 SRS_P2A_ COMBINATORIAL ; OUTPUT 15
PIN 16 SRS_P2B_ COMBINATORIAL ; OUTPUT 16
PIN 17 HALT_P1 COMBINATORIAL ; OUTPUT 17
PIN 18 HALT_P2 COMBINATORIAL ; OUTPUT 18
;PIN NC ; INPUT 19
;PIN NC ; vcc 20
;
;
;
;----------------------- Boolean Equation Segment ------
;
; Enable edge sensitive Sreset on MPIC output. SRESET from ISA ; bridge is assumed to be a negative pulse.
;

EQUATIONS

/SRS_P1A_ = /SRS_ESP_ + /(/SRS_PORT92 :+: INIT_P1A_MPIC_)

/SRS_P1B_ = /SRS_ESP_ + /(/SRS_PORT92 :+: INIT_P1B_MPIC_)

/SRS_P2A_ = /SRS_ESP_ + /(/SRS_PORT92 :+: INIT_P2A_MPIC_)

/SRS_P2B_ = /SRS_ESP_ + /(/SRS_PORT92 :+: INIT_P2B_MPIC_)
;
; Halt outputs are active high when both halt inputs are high
;

/HALT_P1 = /HLTQ_P1A + /HLTQ_P1B

/HALT_P2 = /HLTQ_P2A + /HLTQ_P2B

/RUNH_ESP = HLTQ_P1A * HLTQ_P1B * HLTQ_P2A * HLTQ_P2B

1.3 SMP Reset Considerations

This section describes SMP reset and system initialization procedures. See Figure 5.



1.3.1 Hard Reset

This section describes the system initialization procedure following the assertion of HRESET. The HRESET# Logic subsection describes how HRESET is generated. See Figure 5.

Booting an SMP system is more complex than booting a uniprocessor system, and has the following additional requirements:

A three phase hard reset process is used. These phases are summarized below and are described in detail in subsequent sections:

1. After hard reset, one processor is selected as the master for the first phase of booting. All other processors are disabled. The initial master does some minimal system initialization (memory and ISA bridge) then begins resetting each processor slot in sequence until a processor is reset.

2. Upon being reset, each processor does some processor-specific initialization, tries to reset the next available processor, and then waits until all processors have been reset.

3. After all processors have been reset, the lowest numbered processor becomes the system master and proceeds with the remainder of the system initialization sequence. All other processors are placed in a loop, waiting for a memory flag to be set, after which they will branch to an address contained in a predetermined memory location.

1.3.1.1 Hard Reset Phase 1

A processor enters Hard Reset Phase 1 if it is executing instructions out of ROM (address 0xFFF00100) and if bit 15 of the HID0 register is 0. This bit is guaranteed to be a zero after the assertion of the processor's HRESET input.

HID0:15 is set to 1 so that subsequent execution from 0xFFF00100 will be correctly interpreted as a Soft Reset.

Each processor reads the System Control Register (0x8000081C). The first processor to read this register will read a 0 in the FirstRead# bit (D0). All other processors will read a 1.

The processor that reads the 0 becomes the master for the remainder of this phase of the boot process. All other processors set their MSR:IP to 0 so that on a subsequent soft reset they will begin executing out of RAM at address 0x00000100. They then begin looping until they are reset.

The Phase 1 master does some minimal system initialization (SIO, memory, &etc.) and copies the firmware image from ROM address 0xFFF00000 to RAM address 0x00000000.

The Phase 1 master sets its MSR:IP to 0 and uses the MPIC Processor Init Register to issue a Soft Reset to processor 0. Three possibilities now exist:

1. If Processor 0 was the Phase 1 master, then it has just reset itself and enters Hard Reset Phase 2, described below.

2. If Processor 0 was not the Phase 1 master, then the Phase 1 master waits up to 10ms for processor 0 to set a flag indicating that it has been successfully reset. If processor 0 has been reset, then the Phase 1 master spins in a loop until it is reset.

3. If Processor 0 was not reset, then the Phase 1 master increments the CPU sequence register by reading it and discarding the result. This ensures that the number returned by the CPU Sequence register is in sync with the number of the processor currently being reset. The Phase 1 master then tries to reset processor 1, and repeats this process until a processor is successfully reset.

1.3.1.2 Hard Reset Phase 2

A processor enters Hard Reset Phase 2 if it is executing instructions out of RAM at address 0x00000100.

Upon entering Hard Reset Phase 2, each processor sets a bit in a processor reset table to indicate that it has been reset.

The processor then reads a Proccessor ID number (PID) from the CPU Sequence Register and stores the result into its Processor Identification Register (PIR).

The processor then tries to reset the next processor, using the same procedure used in Hard Reset Phase 1.

If a subsequent processor cannot be reset, then the current processor sets the LAST_PROC_RESET flag to indicate that the last processor has been reset. If a subsequent processor is reset, then the current processor waits for the LAST_PROC_RESET flag to be set.

1.3.1.3 Hard Reset Phase 3

After all processors have been reset, the processor with the lowest Processor ID number becomes the system master for the remainder of the boot process. All other processors loop, waiting until the MEMORY_TEST_COMPLETE flag is set (which indicates that the system memory test is complete).

Then the system master initializes the rest of the system hardware.

After the system memory has been tested, the system master sets the MEMORY_TEST_COMPLETE flag, which releases all other processors from their polling loop. These other processors then begin polling a field in the residual data structure.

The system master loads the operating system loader from the selected boot device and transfers control to it.

The operating system now has control of the system. When it wants to start up the other processors, it uses two fields in the residual data structure, which is passed by the firmware. Residual.VitalProductData.SmpIar is loaded with the address that the second processor should branch to. The appropriate Residual.Cpus[].CpuState field is set to CPU_GOOD. The second processor, upon seeing CPU_GOOD in the CpuState field, branches to the address stored in the SmpIar field.

1.3.2 Soft Reset

It is often desirable to have a software-initiated system reset. For example, some operating systems give the user the option of restarting the system after a system shutdown. See Figure 5.

A processor enters Soft Reset phase if it is executing instructions from ROM address 0xFFF00100 and HID0:15 = 1. This can happen either by branching to address 0xFFF00100 or by setting MSR:IP = 1 and issuing a SRESET to the processor. The SRESET Logic subsection describes how SRESET is generated.

Upon entering Soft Reset phase, a processor writes the value 0x00 to the CPU Enable Register (Port 871). This causes a Hard Reset to be generated, which resets all system hardware and causes all processors to enter Hard Reset Phase 1.

1.4 Error Handling

The reference design offers a full set of error handling features, most of which are accomplished by the 660 Bridge. For more information, see the 660 Bridge User's Manual.

1.4.1 Data Error Checking

The reference design is initially configured to use parity, and this documentation reflects that configuration; however, the 660 Bridge can be programmed to execute an error checking and correction (ECC) algorithm on the memory data. This generates ECC check bits during memory writes and checks-corrects the data during memory reads. ECC can be implemented using normal parity DRAM. See The 660 Bridge User's Manual for more information.

For each memory read operation, eight bytes of memory are read, and parity on eight bytes is checked regardless of the transfer size; therefore, all memory must be initialized (at least up to the end of any cache line that can be accessed).

The reference design does not generate or check CPU bus address parity.

1.4.1.1 CPU to Memory Writes

During CPU to memory writes, the CPU drives data parity information onto the CPU data bus. Correct parity is then generated in the 660 and written to DRAM memory along with the data. The L2 SRAM is updated (when required) with the data and the parity information that the CPU drove onto the CPU data bus.

During CPU to memory writes, the 660 Bridge checks the data parity sourced by the CPU, and normally reports any detected parity errors via TEA#.

1.4.1.2 CPU to Memory Reads

When the CPU reads from memory, the data and accompanying parity information can come from either the L2 SRAM or from DRAM memory. If the data is sourced from the L2, the parity information also comes from the L2.

If the data is sourced by memory, the parity information also comes from memory. The L2 SRAM is updated (when required) using the data and parity from memory.

During CPU to memory reads, the 660 Bridge samples the DPE# output of the CPU to determine parity errors, and reports them back to the CPU via MCP#. The particular memory read data beat will be terminated normally with TA#.

1.4.1.3 PCI to Memory Parity Errors

During PCI to memory writes, the 660 Bridge generates the data parity that is written into DRAM memory. The 660 Bridge also checks the parity of the data and asserts PCI_PERR# if it detects a data parity error.

During PCI-to-memory reads, the 660 Bridge checks the parity of the memory data, and then generates the data parity that is driven onto the PCI bus. If there is a parity error in the data/parity returned to the 660 Bridge from the DRAM, the bridge drives PCI_PAR incorrectly to propagate the parity error (and also reports the error to the CPU via MCP#). The data beat with the bad parity is not target aborted because doing so would slow all data beats for one PCI clock (TRDY# is generated before the data is known good); however, if the agent is bursting and there is another transfer in the burst, the next cycle is stopped with target abort protocol.

During PCI to memory reads, the 660 Bridge also samples the PCI_PERR# signal, which other agents can be programmed to activate when they detect a PCI parity error.

1.4.1.4 CPU to PCI Transaction Data Parity Errors

During CPU to PCI writes, the 660 Bridge sources the PCI parity information, and monitors PCI_PERR#, which other agents can be programmed to activate when they detect a PCI parity error.

During CPU to PCI reads, the 660 Bridge checks the data parity and asserts PCI_PERR# if it detects a data parity error.

1.4.2 Illegal CPU cycles

Whenever a CPU transfer which is not supported for memory or for the PCI is detected, the cycle is terminated with a TEA# and the illegal transfer register is set. No memory or PCI cycle is initiated. Read data returned is all 1's. The CPU address is captured in the Error Address Register.

1.4.3 SERR, I/O Channel Check, and NMI Logic

The PCI bus defines a signal called SERR#, which any agent can pulse. This signal is to report error events within the devices, not bus parity errors. The signal is wired to the ISA bus bridge. The ISA bus signal IOCHCK is also wired to the ISA bridge. If either of these lines activate, the ISA bridge asserts NMI to the 660 Bridge, unless the condition is masked by a register within the ISA bridge. The NMI signal causes the 660 Bridge to generate an interrupt to the CPU and to assert MCP# to the CPU. The ISA bridge contains status registers to identify the NMI source. Software may interrogate the ISA bridge and other devices to determine the source of the error.

No address is associated with this type of error; therefore, the contents of the error address register are not defined.

1.4.4 Out of Bounds PCI Memory Accesses

If a PCI bus master runs a cycle to a system memory address above the top of physical memory, no one will respond, and the initiator master aborts the cycle. The initiating bus master must be programmed to notify the system of master aborts as needed. The system logic does not notify the CPU.

1.4.5 No Response on CPU to PCI Cycles - Master Abort

The 660 Bridge master aborts if no agent responds with DEVSEL# within eight clocks after the start of a CPU to PCI cycle. The cycle is ended with a TEA# response to the CPU, all 1's data is returned on reads, the Illegal Transfer Error register is set, and the Error Address register is held.

The 660 Bridge also checks for bus hung conditions. If a CPU to PCI cycle does not terminate within approximately 60 usec after the PCI is owned by the CPU, the cycle is terminated with TEA#. This is true for all CPU to PCI transaction types except configuration transactions. This feature may be disabled via a 660 Bridge control register.

In the case of configuration cycles that do not receive a DEVSEL# (no device present at that address), the PCI cycle is master aborted, and TA# (normal response) is returned. Write data is thrown away and all 1's are returned on read cycles. No error register is set and no address is captured in the error address register.

1.4.6 CPU to PCI Cycles That Are Target Aborted

When any CPU to PCI cycle of any sort receives a Target Abort from its target PCI agent, the CPU cycle is terminated with a TEA#, the Error Address register is held, and the Illegal Transfer Error register is set.

1.4.7 Error Status Registers

Error status registers in the 660 Bridge may be read to determine the types of outstanding errors. Errors are not accumulated while an error is outstanding; however, there will be one TEA# or MCP# for each error that occurs. For example, if an illegal transfer error causes a TEA#, a memory parity error can occur while the CPU is processing the code that handles the TEA#. The second error can occur before the error status registers are read. If so, then the second error status is not registered, but the MCP# from the memory parity error is asserted.

1.4.8 Reporting Error Addresses

One register holds the address for any memory parity error, multi-bit ECC error, or illegal transfer error when either the CPU or a PCI agent reads memory. It is also loaded on CPU cycles that cause the Illegal Transfer Error register to be set.

See the System Error Address BCR information in the Bridge Control Registers section of The IBM27-82660 PowerPC to PCI Bridge User's Manual for more information.

1.4.9 Errant Masters

Either PCI or ISA masters can access certain motherboard and ISA bridge registers. For example, various control registers such as the I/O Map Type register, the BE/LE mode bit, the Memory Control registers, etc. are accessible. Faulty code in the PCI or ISA masters can defeat password security, read the NVRAM, and cause the system to crash without recovery. Take care when writing device drivers to prevent these events.

1.4.10 Special Events Not Reported as Errors

The 660 bridge ignores this cycle, and the initiator master aborts. No data is written into system memory on writes, and the data returned on reads is indeterminate. The bus master must be programmed to respond to a target abort by alerting the host.

The data returned on a read cycle is all 1's, and write data is discarded. It is consistent with the PCI specification and allows software to scan the PCI at all possible configuration addresses.

These conditions return indeterminate data. The ISA bridge requires the byte enables, CBE#3:0, to be 1110 in order to place the data on the correct byte lane (0). Accesses other than one byte at the address BFFF FFF0h are undefined.

A DEFAULT 7 vector is returned in this case. This is the same vector that is returned on spurious interrupts.

Parity is not stored in the Flash ROM. Therefore the memory parity error signal and the DPE signal are ignored during ROM reads. The Flash or ROM should include CRC with software checking to insure integrity.

This will cause indeterminate data to be written into the Flash at an indeterminate address.

An L1 or CB-L2 cast out will cause indeterminate results.

Some of these could potentially cause damage. See the warning under the PCI configuration cycle section.

Indeterminate results will occur.