I have a few questions regarding the PCI Host Bridge Resource Allocation Protocol specification that can be found here.
From what I can gather, for each PCI root bridge runs the SubmitResources() that points to a descriptor table requesting resources for that PCI root bridge.
My first question is how many resource descriptors can a root bridge point to? for example, in theory, can a root bridge be assigned the address range 0xC0000000 - 0xCFFFFFFF and then from 0xE0000000 - 0xFFFFFFFF. Would in theory that be possible or does a root bridge just have to be assigned 1 block of I/O and memory addresses?
Secondly, I have seen on some forums where people are wanting to use an external GPU with their laptop, but they don't have enough memory space for it to be mapped under 4GB, so they edit the ACPI DSDT table that tells Windows what ranges the PCI root bus decodes and they add a QWORD entry under the PCI bus in a range above for 4GB, Windows then maps the GPU into that space.
My question is, just because Windows has mapped the GPU above 4GB, that doesn't necessarily mean that the underlying hardware (the root bridge) is set up to forward that range onto the PCI bus does it? Although thinking about it maybe they mapped it above physical memory and I believe anything above physical memory is then also forwarded onto the root PCI bus.
Any help would be greatly appreciated,