PCI Radeon RV100 detection hang on sparc64
David Miller
davem at davemloft.net
Fri Apr 4 13:52:02 PDT 2014
From: Meelis Roos <mroos at linux.ee>
Date: Tue, 1 Oct 2013 11:43:20 +0300 (EEST)
>> > > 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?
>
> I read more code and tried a couple of more things.
>
> Using ofpci_debug=1 I get sensible output for scsi:
>
> PCI: scan_bus[/pci at 1f,0/pci at 1] bus no 2
> * /pci at 1f,0/pci at 1/scsi at 1
> create device, devfn: 8, type: scsi-2
> class: 0x10000 device name: 0000:02:01.0
> parse addresses (40 bytes) @ fffff8003fedc1c0
> start: 1ff00002000, end: 1ff000020ff, i: 14
> start: 1ff00010000, end: 1ff0001ffff, i: 30
> adding to system ...
>
> adding to system refers to pci_device_add(dev, bus) and that does not
> modify the PCI bus available windows in any way, at least by my reafing
> of the PCI code, so the PCI code does not know the resource ranges are
> now busy?
I finally did some digging into this, and I think the issue is that
sparc needs to do pci_claim_resource() calls over all the PCI device
resources which are valid after we finish adding the PCI devices.
I'll try to follow up with a patch some time next week.
More information about the dri-devel
mailing list