list_is_vga_only() can't handle empty memlists
The PCI boot logic tries to check if a memlist only has vga related memory; however, it doesn't consider the fact that this memlist can actually be empty and therefore blows up. We opt to treat a memlist which has nothing inside of it as NOT being vga only and require that there be at least one valid memlist for this to happen.
Updated by Robert Mustacchi almost 2 years ago
I tested this in two ways:
- By using a platform that was causing this style of memlist to come up and verifying that we now correctly get through the initalization logic and all the way up through PCIe device enum.
- By using existing platforms (e.g. generic x86 systems) and booting them under these boots. To verify that nothing had changed in two ways:
- Looking at differences in a prtconf -vP between the two systems. The only thing that had changed were some minors being attached and detached. Critically all the hardware properties such as what memory addresses were assigned to BARs were the same.
- Using pcieadm to dump configuration space for all devices before and after this change and comparing its contents. Configuration space had not changed except in one or two cases where a page allocation order was switched around (e.g. one device got an MSI address of
Updated by Electric Monk almost 2 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit 39c0b5e4200a84f97338ca1d3c81e5f81af49f70 Author: Robert Mustacchi <firstname.lastname@example.org> Date: 2022-01-15T18:40:54.000Z 14366 list_is_vga_only() can't handle empty memlists Reviewed by: Yuri Pankov <email@example.com> Reviewed by: Toomas Soome <firstname.lastname@example.org> Approved by: Dan McDonald <email@example.com>