That looks quite strange. I guess the kernel should map the ROM at the address OpenBoot/OF assigned to it. ( 10020000 ).
The address you see is a raw physical I/O address, which is a concatenation of the I/O window physical address for that PCI controller and the PCI bus assigned address.
This is what we store in the resource values.
The pci_assign_resource() path must have some bug that causes the resource values to be set incorrectly or similar.
Meelis, what is the value of pci_resource_start(pdev, PCI_ROM_RESOURCE) before the pci_map_rom() call?
[drm] radeon_read_bios: pci_resource_start(ROM)=000001FF10020000
I am a little confused here. ROM addressis OK but after pci_map_rom it results in address that corresponds to another device?
That's certainly a bug.
So after pci_map_rom() pci_resource_start(ROM)=000001FF00000000, right?
I double checked it - yes:
before pci_map_rom: [drm] radeon_read_bios: pci_resource_start(ROM)=000001FF10020000
radeon 0000:02:02.0: BAR 6: assigned [mem 0x1ff00000000-0x1ff0001ffff]
after pci_map_rom:
[drm] radeon_read_bios, bios=000001ff00000000, pci_resource_start(ROM)=000001FF00000000, size=46592
[drm] radeon_read_bios: found ROM signature at 000001ff00000000 [drm] radeon_read_bios: bios=000001ff00000000, size=46592