Two Types Of Double-Hosted ChainsThere are two basic arrangements for double-hosted chains: sharing and non-sharin g. Sharing Double-Hosted ChainIn a sharing double-hosted chain, traffic is allowed to flow from end to end. Either host may target any of the devices in the chain, including the other host. In this arrangement, one host is the master host bridge and the other is the slave host bridge. The determination about which host is master or slave is not defined in the specification, but must be defined before reset occurs. Most likely, the system board layout will determine master/slave host bridges ” possibly through a strapping option on the motherboard. Figure 17-4 on page 431 depicts a sharing double-hosted chain with master and slave host bridges. Figure 17-4. Sharing Double-Hosted Chain With Master/Slave Host Bridges
If Possible, Assign All Devices To Master Host BridgeThe HyperTransport specification recommends that all resources in a sharing double-hosted chain be assigned to the master host bridge if possible; this eliminates a potential deadlock condition in peer-to-peer transactions. The Slave Command Register Master Host and Default Direction bits in PCI configuration space are used to program tunnel devices with the information needed to recognize the "upstream vs. downstream" directions. This is important because interior devices always issue requests and responses in the upstream direction. They only accept responses in the downstream direction. If Slave Must Access Devices, It Uses Peer-to-Peer TransfersAs illustrated in Figure 17-4 on page 431, the slave host in a sharing double-hosted chain may be required to access the devices on the link. To do so, it may have its Command Register Act as Slave bit set = 1. When this is done, all packets it issues travel first to the master host bridge where they are reissued back to the target devices as peer-to-peer transactions. Non-Sharing Double-Hosted ChainA non-sharing double-hosted chain appears logically as two distinct chains with a host bridge at each end. Software May Break The ChainSoftware chooses a point to break the chain in two parts and then:
Figure 17-5 on page 433 depicts a non-sharing double-hosted chain. Figure 17-5. Non-Sharing Double-Hosted Chain
Additional Notes About Double-Hosted ChainsInitialization In A Double-Hosted ChainOne of the responsibilities of a master host bridge in a double-hosted chain is to help with initialization after reset. Following low-level link initialization, the slave host bridge "sleeps" pending set up by the master. The basic steps in master initialization include:
Type 0 Configuration Cycles In A Double-Hosted ChainBecause all host bridges tend to own UnitID 0, a configuration cycle carrying a device number field of "0" in a double-hosted chain might be misinterpreted. The direction a type 0 configuration cycle request is traveling determines which host bridge is the target. If configuration software wishes to prevent a host bridge (e.g. the slave host) in a double-hosted chain from accessing another host's configuration space, the Host Command Register host hide bit may be set = 1. |