From: Ard Biesheuvel > Sent: 28 April 2018 07:41 > On 27 April 2018 at 23:35, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > setup_efi_pci() tries to save a copy of each PCI option ROM as this may > > be necessary for the device driver for the PCI device to have access too. > > > > On some systems the efi_pci_io_protocol_64's romimage and romsize fields > > contain invalid data, which looks a bit like pointers pointing back into > > other EFI code or data. Interpreting these pointers as romsize leads to > > a very large value and if we then try to alloc this amount of memory to > > save a copy the alloc call fails. > > > > This leads to a "Failed to alloc mem for rom" error being printed on the > > EFI console for each PCI device. > > > > This commit avoids the printing of these errors, by checking romsize > > before doing the alloc and if it is larger then 256M silently ignore the > > ROM fields instead of trying to alloc mem and fail. > > > > The UEFI spec limits the size of option ROMs to 16 MiB, so I'd prefer > we use that as the upper bound instead. Copying even 16MB of rom data into physical memory on the 'off chance' that the kernel might need it seems a waste of memory. I can't help feeling that some kind of caching would be more appropriate. David ��.n��������+%������w��{.n�����{����*jg��������ݢj����G�������j:+v���w�m������w�������h�����٥