A method, system, and apparatus for preventing input/output (I/O) adapters used
by an operating system (OS) image, in a logically partitioned data processing system,
from fetching or corrupting data from a memory location allocated to another OS
image within the data processing system is provided. A hypervisor prevents transmission
of data between an input/output adapter in one of the logical partitions and memory
locations assigned to other logical partitions during a direct memory access (DMA)
operation by assigning each of the input/output adapters a range of I/O bus DMA
addresses. The I/O adapters (IOAs) are connected to PCI host bridges via terminal
bridges. A single terminal bridge may support multiple IOAs, in which case every
terminal bridge has a plurality of sets of range registers, each associated with
a respective one of the IOAs to which it is connected. An arbiter is provided which
selects one of the input/output adapters to use the PCI bus. The terminal bridge
can examine the grant signals from the arbiter to the IOAs, to determine which
set of range registers is to be used.