ATI Radeon CrossFire On Linux
Once the CrossFire chain has been created, the chain must be enabled. To enable the chain, run aticonfig --adapter=0 --crossfire=on. After that, another X restart is required. Finally, CrossFire should then be enabled. To see CrossFire chains that have been created and their status, run aticonfig --lsch. This initial setup process can be a bit of a headache, but fortunately it should be improved with time. We have been told to eventually expect the CrossFire setup process to be handled through the AMD Catalyst Control Center Linux Edition (AMDCCCLE).
Additionally, when graphics cards are changed around or upgraded, the CrossFire chain may need to be removed and then recreated. To delete all CrossFire chains, run aticonfig --adapter=all --cfd. During our testing process we had run into one peculiar problem. We were changing the test system from a Radeon HD 4870 X2 to two separate RV770 graphics cards. The layout of the PCI bus had changed as a result and we ended up with one interesting problem. The ATI Linux driver had decided that just having two Radeon HD 4800 series weren't enough but that it also wanted to try CrossFire on a Marvell Gigabit Ethernet Controller! Haven't you ever wanted to split your GPU rendering workload with a network controller? Though when it would start probing the Marvell 88E8056 ASIC, the system would lock up.
So what had happened? Well, ATI isn't working on any CrossFire to span network devices, but swapping out the graphics cards had left AMD's Persistent Configuration Store Data-Base in a slightly troubled state. Previously Bus ID 03:00.0 was the Radeon HD 4870 X2, but when swapping out the graphics cards, the two new graphics cards ended up being at 01:00.0 and 02:00.0, but the CrossFire entry for the 03:00.0 remained in the AMDPCSDB. When the system booted back up, it didn't check to see if the bus locations were still valid or matched ATI's vendor ID, but it was left to assume everything was in a working state. As soon as the ATI Linux driver started banging the Marvell Gigabit Ethernet Controller that happened to be at 03:00.0, the system had went down hard.
If you experience this problem, replace /etc/ati/amdpcsdb with the /etc/ati/amdpcsdb.default file. However, as the AMDPCSDB will be rewritten when exiting X, be sure to replace that file without X running or cut power to the system after replacing the file. We hope that a proper fix will take place in a future release.