[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: EFI Network drivers being disabled when booting with Grub via PXE
From: |
Gustavo Henrique |
Subject: |
Re: EFI Network drivers being disabled when booting with Grub via PXE |
Date: |
Tue, 6 Jul 2021 18:23:39 -0300 |
Hi Andrei,
That was exactly the problem! Changing this code line solves it.
Thank you so much sir!
Em sex., 2 de jul. de 2021 às 15:17, Andrei Borzenkov <arvidjaar@gmail.com>
escreveu:
> On 02.07.2021 14:15, Gustavo Henrique wrote:
> > Hi,
> >
> >> What exactly "boot the UEFI Shell" means? How do you "boot" it? What
> >> grub command(s) do you use?
> >
> > I have a .efi that is an UEFI Shell application (boot_shell.efi). I boot
> it
> > by using these two commands:
> >
> > 1. chainloader (hd0,msdos1)/boot_shell.efi
> > 2. boot (hd0,msdos1)/boot_shell.efi
> >
>
> "boot" command does not need or interpret any argument.
>
> Educated guess is that grub opens SNP protocol on network card in
> exclusive mode that kicks off everything else. When you boot off local
> storage (USB) grub network driver is not loaded.
>
> EFI chainloader command is using StartImage call so grub itself remains
> loaded and protocol opened on network card remains active. This may
> explain why attempt to reinstate these protocols fails.
>
> If you are willing to check it, try removing
> GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE in
> grub-core/net/drivers/efi/efinet.c:open_card():
>
> /* Try to reopen SNP exlusively to close any active MNP protocol instance
> that may compete for packet polling
> */
> net = grub_efi_open_protocol (dev->efi_handle, &net_io_guid,
> GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE);
>
> Note that as explained in comments the reason for this is to avoid
> packet loss. So removing EXCLUSIVE may result in failed network
> communication.
>
>