x86/PCI: never allocate PCI MMIO resources below BIOS_END

When we move a PCI device or assign resources to a device not configured
by the BIOS, we want to avoid the BIOS region below 1MB. Note that if the
BIOS places devices below 1MB, we leave them there.

See https://bugzilla.kernel.org/show_bug.cgi?id=15744
and https://bugzilla.kernel.org/show_bug.cgi?id=15841

Tested-by: Andy Isaacson <adi@hexapodia.org>
Tested-by: Andy Bailey <bailey@akamai.com>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

authored by Bjorn Helgaas and committed by Jesse Barnes 55051feb b91ce4d1

+3
+3
arch/x86/pci/i386.c
··· 72 72 return start; 73 73 if (start & 0x300) 74 74 start = (start + 0x3ff) & ~0x3ff; 75 + } else if (res->flags & IORESOURCE_MEM) { 76 + if (start < BIOS_END) 77 + start = BIOS_END; 75 78 } 76 79 return start; 77 80 }