xf86-video-ati - (EE) RADEON(0): Unable to map MMIO aperture. Unknown error 999 (2)

Hans J. Harff hansjharff at mindspring.com
Mon Oct 15 10:31:51 PDT 2007

Now, I am by no means an expert at this stuff, but that doesn't prevent me from
making educated guesses ;)

I have been perusing some of the sources, trying to trace down the problem when
initializing the card. The problem arises in radeon_driver.c when calling

line 2646: if (xf86SetOperatingState(resVga, info->pEnt->index, ResUnusedOpr))
line 2647:     goto fail;

Tracing xf86SetOperatingState() to xorg/xserver/hw/xfree86/common/xf86Bus.c, I
find the function xf86ResourceBrokerInit():

line 1358: xf86ResourceBrokerInit(void)
line 1367: osRes = xf86AccResFromOS(osRes);
line 1373: resPci = ResourceBrokerInitPci(&osRes);
line 1374: Acc = xf86JoinResLists(xf86DupResList(osRes), resPci);

and Acc is then used in xf86SetOperatingState(), which fails when called by the
Radeon driver.

Tracing xf86AccResFromOS() to xorg/xserver/hw/xfree86/os-support/bus/linuxPci.c, I
find a lot of interesting comments (put there by idr?):

line 248: * This scheme requires that the kernel allow mmap()'ing of a host bridge's I/O
line 249: * and memory spaces through its /proc/bus/pci/BUS/DFN entry.  Which one is
line 250: * determined by a prior ioctl().
line 251: *
line 252: * For the sparc64 port, this means 2.4.12 or later.  For ppc, this
line 253: * functionality is almost, but not quite there yet.  Alpha and other kernel
line 254: * ports to multi-domain architectures still need to implement this.

line 262: * Another requirement to port this scheme to another multi-domain architecture
line 263: * is to add the appropriate entries in the pciControllerSizes array below.
line 264: *
line 265: * TO DO:  Address the deleterious reaction some host bridges have to master
line 266: *         aborts.  This is already done for secondary PCI buses, but not yet
line 267: *         for accesses to primary buses (except for the SPARC port, where
line 268: *         master aborts are avoided during PCI scans).
line 269: */

line 326: /*
line 327:  * This is ugly, but until I can extract this information from the kernel,
line 328:  * it'll have to do.  The default I/O space size is 64K, and 4G for memory.
line 329:  * Anything else needs to go in this table.  (PowerPC folk take note.)
line 330:  *
line 331:  * Note that Linux/SPARC userland is 32-bit, so 4G overflows to zero here.
line 332:  *
line 333:  * Please keep this table in ascending vendor/device order.
line 334:  */

line 591: /* FIXME: The old code reserved domain 0 for a special purpose.  The
line 592:  * FIXME: new code just uses whatever domains the kernel tells it,
line 593:  * FIXME: but there is no way to get a domain < 0.  What should
line 594:  * FIXME: happen here?
line 595:  *
line 596:  if (domain <= 0)
line 597:  break;
line 598:  */

Am I on to something? If so, it appears that the problem is not caused by the ATI driver.

Best Regards,


More information about the xorg mailing list