4. THE RESULTS
4.2. THE FINAL STUDY
4.2.1. Listening Comprehension
The configuration rules for VGA Palette Snooping are more easily understood by example.
The decoding behavior for palette snooping is noted in the examples using the format xRyW where x and y describe the palette address decoding behavior of the device during reads (R) and writes (W) respectively. The symbols for x and y may be as follows:
Symbol Palette Address Decoding Method - subtractive decoding
+ positive decoding
i ignore access
s snoop access
12.3.1. VGA and GFX on PCI Bus 0
CPU
VGA
GFX +R+W
iRsW
12.3.2. GFX Downstream of Subtractive Bridge
CPU
VGA +RsW GFX
iRsW -B
-R-W
12.3.3. VGA Downstream of Subtractive Bridge
CPU
GFX iRsW VGA
+R+W -B
-R-W
12.3.4. GFX Downstream of Positive Bridge
CPU
VGA +RsW GFX
iR+W +B
iR+W
12.3.5. VGA Downstream of Positive Bridge
CPU
GFX iRsW VGA
+R+W +B
+R+W
12.3.6. VGA and GFX Downstream of Subtractive Bridge
CPU
GFX VGA
iRsW +R+W
-B -R-W
12.3.7. VGA and GFX Downstream of Positive Bridge
CPU
GFX VGA
iRsW +R+W
+B +R+W
12.3.8. GFX Downstream of VGA on Same Path
CPU
+B GFX
iR+W iR+W +B
+R+W VGA
+RsW
12.3.9. VGA Downstream of GFX on Same Path
CPU
+B VGA
+R+W +R+W
+B
+R+W GFX
iRsW
12.3.10. GFX Far Downstream of VGA on Same Path
CPU
+B VGA
iR+W
+RsW +B
iR+W
GFX iR+W
12.3.11. VGA Far Downstream of GFX on Same Path
CPU
+B GFX
+R+W
iRsW +B
+R+W
VGA +R+W
12.3.12. Illegal - Write Never Gets to GFX
CPU
GFX VGA iRsW
+R+W +B
+R+W
-B -R-W
12.3.13. Illegal - Write Never Gets to VGA
CPU
VGA GFX +R+W iR+W +B
iR+W
-B -R-W
12.3.14. Illegal - Two Devices Respond to Writes
CPU
VGA GFX +R+W iR+W +B
iR+W
+B +R+W
Chapter 13 Slot Numbering
13.1. Introduction
PCI system software uniquely addresses every PCI device with a bus number and a device number. These two numbers are used by system hardware to deliver Configuration transactions to the proper bus and enable (assert IDSEL to) the proper device.
In addition to this unique logical identification, many situations require the unique physical identification of each device. Physical identification of a particular expansion board is often simple if there is only one board of each type in the system. But the situation becomes more difficult if the system contains multiple expansion boards of the same type. The following situations illustrate the need for the user physically to identify a particular expansion board, when multiple identical expansion boards are installed in a system:
1. When plugging in an external cable, the user must identify the appropriate expansion board.
2. When configuring items such as the operating system, device drivers, and protocol stacks, the user must identify the device to the software. For example, when configuring network controllers, the user must typically specify a controller (identified by slot number) and then assign a network address and the protocols to use with that controller.
3. If an expansion board fails in a system, software such as diagnostic tools must have a way to identify to the user which expansion board has failed so that the user can physically replace it.
4. Hot-plug operations are required by the PCI Hot-Plug Specification to use physical slot numbers in the user interface.
PCI bus numbers throughout the system can change with the introduction or removal of one PCI-to-PCI bridge anywhere in the system, so bus and device numbers are not suitable for the user to physically identify the device. The slot number is the constant physical property by which the user identifies an expansion board. Software must translate between this constant physical property (slot number) used by the human user and the logical identifier (bus and device number) used by the system software.
Systems containing PCI slots typically partition the slots physically into two kinds of groups.
Algorithms for translating between logical and physical slot identifications vary depending upon in which kind of group the slot is located. The group associated most closely with the CPU that
initializes the PCI Configuration Space is called the main chassis. A group of PCI slots that can be connected to and disconnected from the main chassis is said to reside in a PCI expansion chassis. At the system vendor’s option, an expansion chassis can be tightly coupled physically to the main chassis or can be separated from the main chassis by a great distance. In general, if a chassis containing PCI slots can be connected and disconnected from a main chassis, that chassis is considered an expansion chassis and must use the slot numbering mechanisms described here for expansion chassis. If an expansion chassis does not use the slot numbering mechanisms described here, the system vendor must provide a proprietary mechanism for translating between logical and physical slot identifiers.
For slots in the main chassis the translation between logical bus and device numbers and physical slot numbers is made possible by a slot number field in the IRQ routing table in system ROMs that follow the PCI BIOS Specification14. For PCI expansion chassis the same translation is made possible by two registers, Chassis Number and Slot Number, in certain PCI-to-PCI bridges.
The registers are required only in some bridges because they are unnecessary for bridges on expansion boards or in the main chassis. They are required in bridges that provide additional expansion slots in expansion chassis.
PCI expansion chassis are often built with multiple PCI-to-PCI bridges arranged in a hierarchical fashion. Three examples are shown in Figures 13-3 through 13-5. The slot numbering algorithm presented later in this chapter calculates the slot number of a device by traversing the bus
hierarchy in a predetermined order. Each time the algorithm encounters the beginning of a new chassis, it remembers the chassis number and begins accumulating the number of expansion slots until it reaches either the device it is trying to identify or the beginning of another chassis.
Device numbers for expansion slots, bridges, and other devices must be assigned in a specific order to enable the algorithm properly to determine the chassis and slot number.
The remainder of this chapter focuses on three areas of requirements for slot numbering in expansion chassis:
1. Expansion chassis device numbering requirements. System software assumes PCI device numbers are assigned in a particular order in expansion chassis.
2. The slot numbering registers in bridges used to create expansion slots.
3. The software algorithm that uses the expansion chassis device numbering assumptions and the contents of the slot numbering registers to translate between logical and physical device identifications for devices located in PCI slots in expansion chassis.