Okay for those who want to get 7970 working well with cgminer on linux, I've been up most of the night since I got the card (lol) trying to get it working and then fiddled with settings to find a sweet spot.
Firstly: There is no actual "stable release" driver for this GPU yet. The driver you're directed to is a special release not really version numbered (like 12.1 etc). The 12.1 driver does NOT work with 7970 so when I put the 7970 in the machine with 6970s it didn't even show up. Then when I installed the GCN ati driver amd-driver-installer-8.921-x86.x86_64.run the 6970s wouldn't show up! Goddamn amd. I modified the xorg to add the extra devices, and xorg would start up but cgminer would just crash opencl when starting. After much searching around sharky suggested I change the card order, so I put the 7970 into slot 1 and the 6970s into slots 2-4. Again the ati driver didn't show up the 6x devices with aticonfig --lsa, and wouldn't configure the xorg for more than just the 7970. Then I checked the GPU positions
lspci | grep VGA
01:00.0 VGA compatible controller: ATI Technologies Inc Device 6798
02:00.0 VGA compatible controller: ATI Technologies Inc Device 6718
07:00.0 VGA compatible controller: ATI Technologies Inc Device 6718
08:00.0 VGA compatible controller: ATI Technologies Inc Device 6718
I used the PCI bus position entries and edited the xorg.conf file into the following generic version:
Section "Monitor"
Identifier "aticonfig-Monitor[0]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection
Section "Monitor"
Identifier "aticonfig-Monitor[1]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection
Section "Monitor"
Identifier "aticonfig-Monitor[2]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection
Section "Monitor"
Identifier "aticonfig-Monitor[3]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection
Section "Device"
Identifier "aticonfig-Device[0]-0"
Driver "fglrx"
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "aticonfig-Device[1]-0"
Driver "fglrx"
BusID "PCI:2:0:0"
EndSection
Section "Device"
Identifier "aticonfig-Device[2]-0"
Driver "fglrx"
BusID "PCI:7:0:0"
EndSection
Section "Device"
Identifier "aticonfig-Device[3]-0"
Driver "fglrx"
BusID "PCI:8:0:0"
EndSection
Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "aticonfig-Screen[1]-0"
Device "aticonfig-Device[1]-0"
Monitor "aticonfig-Monitor[1]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "aticonfig-Screen[2]-0"
Device "aticonfig-Device[2]-0"
Monitor "aticonfig-Monitor[2]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "aticonfig-Screen[3]-0"
Device "aticonfig-Device[3]-0"
Monitor "aticonfig-Monitor[3]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
This would still only show up one device with aticonfig --lsa, but cgminer could detect them all.
cgminer -n
[2012-02-09 09:49:19] CL Platform 0 vendor: Advanced Micro Devices, Inc.
[2012-02-09 09:49:19] CL Platform 0 name: AMD Accelerated Parallel Processing
[2012-02-09 09:49:19] CL Platform 0 version: OpenCL 1.1 AMD-APP (844.4)
[2012-02-09 09:49:19] Platform 0 devices: 4
[2012-02-09 09:49:19] GPU 0 AMD Radeon HD 7900 Series hardware monitoring enabled
[2012-02-09 09:49:19] GPU 1 AMD Radeon HD 6900 Series hardware monitoring enabled
[2012-02-09 09:49:19] GPU 2 AMD Radeon HD 6900 Series hardware monitoring enabled
[2012-02-09 09:49:19] GPU 3 AMD Radeon HD 6900 Series hardware monitoring enabled
[2012-02-09 09:49:19] 4 GPU devices max detected
After much playing around, I found the particular card I had would run stable at clockspeeds of 1200/1050. The 7970 has a mandatory no-more-than 150 difference between the GPU engine clockspeed and the GPU memory clockspeed much like the 6970 had a 125 difference. Note that with windows overclocking tools they can get around this using other backdoors to the devices which I can't do. Powertune of +5% provided the most boost to performance as I've seen with the 6970s and going over this made no difference.
On first successful running, I noticed the dreaded CPU usage bug was back! Luckily I heard this was not universal and
export GPU_USE_SYNC_OBJECTS=1
fixed it.
Then I played around with various combinations of gpu threads and intensities and found that there is an inflexion point in intensity where the CPU usage jumps up from the usually very low usage. With 1 GPU thread, an intensity up to 13 does not increase CPU usage. With 2 threads an intensity of 11 does not. More threads did not help hashrate.
Now bear in mind that this is an unmodified cgminer 2.2.3 so no new fancy kernels, but here is the final performance with intensity 11, engine 1200, memory 1050, powertune 5. See if you can spot the 790 amongst these
:
GPU 0: 71.0C 4125RPM | 694.5/694.8Mh/s | A:355 R:1 HW:0 U:10.18/m I:11
GPU 1: 72.5C 5107RPM | 426.4/427.4Mh/s | A:200 R:0 HW:0 U: 5.73/m I: 9
GPU 2: 73.0C 4341RPM | 425.1/426.9Mh/s | A:214 R:1 HW:0 U: 6.14/m I: 9
GPU 3: 72.5C 3892RPM | 434.6/436.1Mh/s | A:227 R:1 HW:0 U: 6.51/m I: 9
So that's with the now ancient poclbm kernel in cgminer that was modified recently just to work with 7970 aka GCN but has no real performance enhancements. Now I need to fiddle with kernels and wait to see what diablo comes up with as well.
edit: Note that GCN ONLY works with the 2.6 SDK which has lousy performance on other cards, so I kept my old .bin files for the 6970s so that cgminer would just use those instead of regenerating them after I installed the new driver and sdk.