Most of 32-bit kernels (Unix/OS/whatever) usually have PAE support, so in fact
they can cope with 36 bits of memory. The CPU PAE support started around
Pentium. Windows XP+ has support for this.
I think one can go with 2GB MMIO hole. The PCIe > 4GB is a question, I don't
think Windows have good support for this. So, using 2GB memory hole and having
MMIO < 4GB seems like a good idea.