On Fri, Jun 21, 2024 at 03:20:19PM GMT, Igor Mammedov wrote:
diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c index bb44dc296047..a43876a931c9 100644 --- a/src/fw/pciinit.c +++ b/src/fw/pciinit.c @@ -1189,11 +1189,16 @@ pci_setup(void)
if (CPUPhysBits) { pci_mem64_top = 1LL << CPUPhysBits;
if (CPUPhysBits > 46) {
// Old linux kernels have trouble dealing with more than 46
// phys-bits, so avoid that for now. Seems to be a bug in the
// virtio-pci driver. Reported: centos-7, ubuntu-18.04
pci_mem64_top = 1LL << 46;
if (CPUPhysBits > 44) {
// Old linux kernels have trouble dealing with more than 44/46
// phys-bits. Seems to be a bug in the virtio-pci driver.
// 46: centos-7, ubuntu-18.04
// 44: ubuntu-16.04
// Limit the used address space to mitigate the bug, except we are
// running in a guest with more than 1TB of memory installed.
Is it possible to fix those broken drivers (centos-7 for example) and ditch this heuristic altogether? The rest of downstream can pick it up from there if they care about their customers.
Some further testing showed that this is not version-specific but arch specific. Old 32-bit kernels fail >44, old 64-bit kernels fail >46.
Note that 44 = 32 + 12, i.e. this could be pfn (page frame number) hitting MAX_UINT32. Should that be the case the fix is probably not easy (didn't check the kernel source though).
Also note that releasing a kernel fix is not enough, you also have to respin install media. Distros which are *that* old typically don't get regular install media updates any more ...
In short: The idea to fix distros and drop the heuristic is IMHO not realistic.
take care, Gerd