rhdAtomInit() function fails if the card is not primary as it assumes that BIOS is mapped to 0xC0000, which is not true.
After looking more into this problem, 0xC00000 is probably OK (don't know details about POSTing non-primary VGA cards but looks like VGA is enabled so this can work). The problem is that after POSTing, the ATOM signature disappears from the BIOS! I've dumper the BIOS from the rhdAtomGetDataTable() function using this code: if (atom_romhdr_off + sizeof(ATOM_ROM_HEADER) > BIOSImageSize) { xf86DrvMsg(scrnIndex,X_ERROR, "%s: AtomROM header extends beyond BIOS image\n",__func__); return FALSE; } + FILE *f = fopen("/opt/rom.bin","w"); + fwrite(base, 1, BIOSImageSize,f); + fclose(f); if (memcmp("ATOM",&atom_rom_hdr->uaFirmWareSignature,4)) { When the card is primary, the file is 64512 bytes, contains ATOM signature and works. When the card is secondary, the file is only 49152 bytes and the ATOM signature is missing (see attachment). Log says: (II) RADEON(0): initializing int10 (II) Attempted to read BIOS 128KB from /sys/bus/pci/devices/0000:01:00.0/rom: got 63KB (--) RADEON(0): Chipset: "ATI Radeon X1650" (ChipID = 0x71c1) (WW) RADEON(0): R500 support is under development. Please report any issues to xorg-driver-ati@lists.x.org (--) RADEON(0): Linear framebuffer at 0x00000000c0000000 (--) RADEON(0): BIOS at 0xfe7c0000 (II) RADEON(0): PCIE card detected (II) RADEON(0): ATOM BIOS detected (II) RADEON(0): Getting BIOS copy from legacy VBIOS location (EE) RADEON(0): rhdAtomGetDataTable: No AtomBios signature found (II) RADEON(0): Query for AtomBIOS Init: failed (II) RADEON(0): Query for AtomBIOS Set FB Space: failed
(In reply to comment #1) > After looking more into this problem, 0xC00000 is probably OK (don't know > details about POSTing non-primary VGA cards but looks like VGA is enabled so > this can work). Sorry, my bad. It's not OK. The file is 49152 because it's ROM of the primary card. No wonder there's no ATOM signature there.
There's special trickery needed for reading the rom on secondary cards. I should have a patch committed soon.
this should be fixed in 965a5dbcd9dc4bf1cdd7f2bbdec15e9733b2e090 at least with libpciaccess.
Thank you, I confirm that the bug is now fixed. The radeon driver can now initialize two non-primary X1650Pro cards. Tested without libpciaccess.
But shutting down the X server and trying to start it again, it does not work - it's again not able to load the BIOS (see the attached log).
Created attachment 16786 [details] log from failed second X start
Can you try again with my latest commit? Also, you may have better luck with a libpciaccess enabled xserver.
Testing version with last commit "RADEON: don't enable legacy bios table based init yet", now with only 2 cards in the machine: X1650Pro and R7000. R7000 is not configured at all in X, only primary card option is changed in BIOS SETUP. X1650Pro as secondary card: I can shut down and start X server and it works. X1650Pro as primary card: only 2 cycles work, X hangs when starting for the 3rd time
Created attachment 16800 [details] X1650Pro as secondary - 1st correct start
Created attachment 16801 [details] X1650Pro as secondary - 2nd correct start
Created attachment 16802 [details] X1650Pro as secondary - 3rd correct start
Created attachment 16803 [details] X1650Pro as primary - 1st correct start
Created attachment 16804 [details] X1650Pro as primary - 2nd correct start
Created attachment 16805 [details] X1650Pro as primary - 3rd failed start
Is this still an issue with KMS?
I cannot test this anymore.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.