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
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.
More information about the xorg