I'm trying to understand how the X server maps the expansion ROM to read the BIOS parameters.
As far as I can tell, the server temporarily maps the ROM to copy it. If the BAR is programmed, but not enabled, the address in the BAR is used, otherwise the server picks an unused address at which to map it. The problem is that on my system, the BAR is unprogrammed, and the address picked by the server is not in the range allocated to the host bridge. My system has several host bridges, and they are allocated disjoint ranges of MMIO space. Each bridge responds only to host addresses within its range. I think the server picks the address in getValidBIOSBase(), where it finds the bridge to which the adapter is connected, and finds a window in its preferred_mem or preferred_pmem range. These ranges are set up in xf86GetPciBridgeInfo(), and as far as I can tell, they will be identical for all host bridges in the system. This seems wrong to me, because I think I need to set up the preferred_mem/pmem range for each host bridge to reflect just the address range to which it responds. There is a comment in getValidBIOSBase() that says "Note that this doesn't deal with host bridges yet. But the fix for that belongs elsewhere." Is this referring to my problem? If so, where is "elsewhere"? Thanks for any insight! Bjorn _______________________________________________ Xpert mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xpert