On Fri, Sep 7, 2012 at 4:18 AM, David Miller <davem@xxxxxxxxxxxxx> wrote: > From: Michel Dänzer <michel@xxxxxxxxxxx> > 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. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel