I think this was heavily discussed a while back, and lead to some naughty work arounds in the i945 code. because having such big a "hole" lead to no resources being placed after the MMCONF area.
I think with a dynamic resource there are some place above the address. Which gets normally used.
Besides the mentioned file, the acpi_tables does following:
For the acpi it takes it from resource system:
unsigned long acpi_fill_mcfg(unsigned long current) { device_t dev; struct resource *res;
dev = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_K8M890CE_5, 0); if (!dev) return current;
res = find_resource(dev, K8T890_MMCONFIG_MBAR); if (res) { current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *) current, res->base, 0x0, 0x0, 0xff); } return current; }
Thanks, Rudolf