On Fri, Mar 23, 2018 at 02:11:33PM -0500, Mike Travis wrote: > A GPU inserted into a PCIe I/O slot disappears during system startup. > The problem centers around GRUB and a specific VGA init function in > efi_uga.c. This causes an LER (link error recorvery) because the MMIO > memory has not been enabled before attempting access. > > The fix is to add the same coding used in other VGA drivers, specifically > to add a check to insure that it is indeed a VGA controller. And then > enable the MMIO address space with the specific bits. > > Signed-off-by: Mike Travis <mike.tra...@hpe.com> > Reviewed-by: Michael Chang <mch...@suse.com> > --- > grub-2.02/grub-core/video/efi_uga.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > Index: grub-2.02/grub-core/video/efi_uga.c > =================================================================== > --- grub-2.02/grub-core/video/efi_uga.c.orig > +++ grub-2.02/grub-core/video/efi_uga.c > @@ -95,9 +95,19 @@ find_card (grub_pci_device_t dev, grub_p > { > struct find_framebuf_ctx *ctx = data; > grub_pci_address_t addr; > + grub_uint32_t class;
s/class/subclass/ > addr = grub_pci_make_address (dev, GRUB_PCI_REG_CLASS); > - if (grub_pci_read (addr) >> 24 == 0x3) > + class = grub_pci_read (addr); subclass = (grub_pci_read (addr) >> 16) & 0xffff; > + if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA) if (subclass != GRUB_PCI_CLASS_SUBCLASS_VGA) > + return 0; > + > + /* Enable MEM address spaces */ > + { > + grub_pci_address_t rcaddr = grub_pci_make_address (dev, > GRUB_PCI_REG_COMMAND); > + grub_pci_write_word (rcaddr, grub_pci_read_word (rcaddr) | > GRUB_PCI_COMMAND_MEM_ENABLED); > + } Please drop these curly brackets. Daniel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel