Configuring PCI bus address space for Hot Swap (Solaris)

To allow hot swapping of boards in your CompactPCI Solaris system, adequate address space must be preconfigured. To maximize the number of slots available for hot swapping:

This topic describes how to allocate space for hot swapping.

Note: Windows system address space is configured automatically during installation of the Hot Swap Kit. On a Linux system, the Hot Swap driver allocates and de-allocates memory for inserted or removed boards.

PCI bus segments and space windows

The PCI architecture allows a system to include a tree of PCI buses. Most CompactPCI systems have at least two PCI bus segments: one on the processor board and one or more dedicated to CompactPCI slots. There is at least one bus segment per 8 CompactPCI slots. PCI-to-PCI bridges connect these buses. The following illustration shows PCI bus slots and segments:

Each device requires a certain amount of address space on the bridges. At boot time, the system BIOS configures address space windows on each bridge to define the range of addresses (that is, the bus number or memory address) that are allocated behind that bridge. The following illustration shows segments and allocated address space on bridge:

Boards can be hot-inserted only into slots for which memory has been preallocated. Memory is usually allocated as follows:

To maximize the number of slots available for hot swapping, you should have all slots populated at boot time or have no slots populated at boot time.

Using leftover allocated space

Usually, each address space window cannot be less than 1 MB in size. If allocations to boards behind the bridge do not add up to an integral number of megabytes, some fraction of a megabyte will be available in the window and unallocated. This unallocated space is then available for insertion of additional boards whose address space requirements are small enough. For example, if a board requires two 128K memory regions, and a CompactPCI bus segment contains only one of these boards at boot time, hot-insertion of up to three additional boards into that segment can be accommodated. The following illustration shows a PCI bus with a 256K board inserted:

However, if an 8-slot segment has four slots occupied at boot time with the boards, no more boards can be hot-inserted into that segment because four boards occupy exactly one megabyte of address space. The following illustration shows a PCI bus with four 256K boards inserted:

Some boards (such as the CG 6000C board) have an address space requirement of two 1 MB memory regions. Since this requirement exactly matches the 1 MB granularity, you cannot add more of these boards than were present at start-up without rebooting. The following illustration shows a PCI bus with a CG 6000C board inserted: