Intel
®
81341 and 81342 I/O Processors
December 2007
Developer’s Manual
Order Number: 315037-002US
415
Messaging Unit—Intel
®
81341 and 81342
4.5.2
Inbound Post Queue
The Inbound Post Queue holds posted messages placed there by other processors for
the Intel XScale
®
processor to process. This queue is read from the queue tail by the
Intel XScale
®
processor. It is written to the queue head by external host I/O interface
agents on the 81341 and 81342’s internal bus through the Address Translation Unit
Chapter 2.0, “Address Translation Unit (PCI-X)”
or
Translation Unit (PCI Express)”
for more details on inbound ATU addressing and the
ATU). The tail pointer is maintained by the Intel XScale
®
processor. The head pointer is
maintained by the MU hardware.
For a host I/O interface write transaction that accesses the Inbound Queue Port, the
MU writes the data to the local memory location address in the Inbound Post Head
Pointer Register.
When the data written to the Inbound Queue Port is written to local memory, the MU
hardware increments the Inbound Post Head Pointer Register.
An Intel XScale
®
processor interrupt may be generated when the Inbound Post Queue
is written. The Inbound Post Queue Interrupt bit in the Inbound Interrupt Status
Register indicates the interrupt status. The interrupt is cleared when the Inbound Post
Queue Interrupt bit is cleared. The interrupt can be masked by the Inbound Interrupt
Mask Register. Software must be aware of the state of the Inbound Post Queue
Interrupt Mask bit to insure that the full condition is recognized by the core processor.
In addition, to insure that the queue does not get overwritten, software must process
messages from the tail of the queue before incrementing the tail pointer and clearing
this interrupt. Once cleared, an interrupt is NOT generated when the head and tail
pointers remain unequal (i.e. queue status is Not Empty). Only a new message posting
the in the inbound queue generates a new interrupt. Therefore, when software leaves
any unprocessed messages in the post queue when the interrupt is cleared, software
must retain the information that the Inbound Post queue status.
From the time that the host I/O interface write transaction is received on the internal
bus by the MU until the data is written in local memory and the Inbound Post Head
Pointer Register is incremented, any internal bus transaction that attempts to access
the Inbound Post Queue Port is signalled a Retry.
The Intel XScale
®
processor may read messages from the Inbound Post Queue by
reading the data from the local memory location pointed to by the Inbound Post Tail
Pointer Register. The Intel XScale
®
processor must then increment the Inbound Post
Tail Pointer Register. When the Inbound Post Queue is full (head
12
and tail
13
pointers
are equal and the head pointer was last updated by hardware), the hardware retries
any write until a slot in the queue becomes available. A slot in the post queue becomes
available by the Intel XScale
®
processor incrementing the tail pointer.
12.During normal operation, the Inbound Post Queue Head Pointer is only managed by
hardware
.
Software
can also update the Head Pointer using the
“Inbound Post Head Pointer Register -
during initialization. However, the Inbound Post Queue logic does not make a distinction
on whether the Head Pointer is updated using hardware or software.
13.The Inbound Post Queue Tail Pointer is only managed by
software
using the
during normal operation and initialization.