PCI Radeon RV100 detection hang on sparc64

Dave Airlie airlied at gmail.com
Fri Sep 7 00:18:15 PDT 2012


On Fri, Sep 7, 2012 at 4:18 AM, David Miller <davem at davemloft.net> wrote:
> From: Michel Dänzer <michel at daenzer.net>
> Date: Thu, 06 Sep 2012 18:55:51 +0200
>
>> On Don, 2012-09-06 at 17:41 +0300, Meelis Roos wrote:
>>> This is with initialyy unmodified 3.6.0-rc4-00101-g0809095 kernel in
>>> Ultra 10 (clean, without my "Video RAM" hack that I talked in other
>>> sparclinux posts). When I saw that Sun XVR-100 was detected fine by the
>>> kernel, I compiled radeon drm driver with modesetting enabled and tried
>>> it:
>>>
>>> [drm] radeon defaulting to kernel modesetting.
>>> [drm] radeon kernel modesetting enabled.
>>> PCI: Enabling device: (0000:02:02.0), cmd 82
>>> [drm] initializing kernel modesetting (RV100 0x1002:0x5159 0x1002:0x0908).
>>> [drm] register mmio base: 0x10000000
>>> [drm] register mmio size: 32768
>>> [drm:radeon_device_init] *ERROR* Unable to find PCI I/O BAR
>>>
>>> And here the machine hangs. Debugging printk-s reveal that it does not
>>> find any active I/O port resources and then continues into initializing
>>> the card. Down in igp_read_bios_from_vram() it successfully ioremaps
>>> memory region 0 (vram_base=1ff08000000 and size=40000) and tries to read
>>> 2 bytes from there and hangs on reading bios[0].
>>
>> Is the card initialized by OpenFirmware? E.g., does it display anything
>> before the kernel boots?
>
> I think Meelis gave you every single detail you need to know to
> analyze and fix this bug.
>
> He says it crashes on reading bios[0].
>
> If you look at the function he tells you the crash occurs in, you'll
> see clearly that bios is an ioremap()'d pointer.
>
> You cannot dereference ioremap()'d pointers, you must use the proper
> accessors such as readl().

we should just skip the igp reading function on not-x86, since IGP on
not x86 makes no sense.

the other option is to readl out the whole bios from vram instead.

Dave.


More information about the dri-devel mailing list