diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2024-11-21 16:35:41 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2024-11-21 16:55:51 +0100 |
commit | 1be8d771d57fb9c892d5a1958c94734b12d3dda5 (patch) | |
tree | 2fa1b6a7e1f55b9cb23f591d229eb6897974d10a | |
parent | 62a1429ec1ec67f14c039d97627a6a7ef70a983c (diff) | |
download | seabios-1be8d771d57fb9c892d5a1958c94734b12d3dda5.tar.gz |
update pci_pad_mem64 handling
Add a new possible state: '-1' means 'use default'. In that case
seabios continue to use the current heuristic: In case memory
above 4G is present enable 64-bit guest friendly configuration.
This allows forcing the one or the other behavior by setting the
pci_pad_mem64 variable beforehand (which is done by another patch).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | src/fw/pciinit.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c index b3e359d7..df63acc1 100644 --- a/src/fw/pciinit.c +++ b/src/fw/pciinit.c @@ -55,7 +55,7 @@ u64 pcimem64_end = BUILD_PCIMEM64_END; // Resource allocation limits static u64 pci_io_low_end = 0xa000; static u64 pci_mem64_top = 0; -static u32 pci_pad_mem64 = 0; +static u32 pci_pad_mem64 = -1; struct pci_region_entry { struct pci_device *dev; @@ -1202,8 +1202,13 @@ pci_setup(void) } } - if (CPUPhysBits >= 36 && CPULongMode && RamSizeOver4G) - pci_pad_mem64 = 1; + if (pci_pad_mem64 == -1) + // when not set (via fw_cfg) enable in case memory over 4G is present + pci_pad_mem64 = RamSizeOver4G ? 1 : 0; + + if (!CPULongMode) + // force off for 32-bit CPUs + pci_pad_mem64 = 0; dprintf(1, "=== PCI bus & bridge init ===\n"); if (pci_probe_host() != 0) { |