+++ /dev/null
-From 886d93184b894a29b0bef1f2467230a20c7a33ce Mon Sep 17 00:00:00 2001
-From: Mark Salter <msalter@redhat.com>
-Date: Tue, 8 Apr 2014 10:58:11 -0400
-Subject: [PATCH] reopen SNP protocol for exclusive use by grub
-
-While working with pxeboot of grub on an ARM platform, I noticed
-very poor network performance while grub was loading a kernel
-and initramfs. The performance during the loading of grub itself
-seemed reasonable. Digging into the issue, I found that the UEFI
-firmware was periodically polling for network packets while grub
-was downloading files. This was causing timeouts and retries in
-the grub network stack.
-
-The solution I found was to reopen the SNP protocol for exclusive
-use. This forces UEFI to shutdown its use of SNP so that grub is
-not competing for incoming packets.
-
-Signed-off-by: Mark Salter <msalter@redhat.com>
----
- grub-core/net/drivers/efi/efinet.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/grub-core/net/drivers/efi/efinet.c b/grub-core/net/drivers/efi/efinet.c
-index 2b344d6..a6e4c79 100644
---- a/grub-core/net/drivers/efi/efinet.c
-+++ b/grub-core/net/drivers/efi/efinet.c
-@@ -223,6 +223,7 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
- {
- struct grub_net_card *card;
- grub_efi_device_path_t *dp;
-+ grub_efi_simple_network_t *net;
-
- dp = grub_efi_get_device_path (hnd);
- if (! dp)
-@@ -250,6 +251,21 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
- &pxe_mode->dhcp_ack,
- sizeof (pxe_mode->dhcp_ack),
- 1, device, path);
-+ net = grub_efi_open_protocol (card->efi_handle, &net_io_guid,
-+ GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE);
-+ if (net) {
-+ if (net->mode->state == GRUB_EFI_NETWORK_STOPPED
-+ && efi_call_1 (net->start, net) != GRUB_EFI_SUCCESS)
-+ continue;
-+
-+ if (net->mode->state == GRUB_EFI_NETWORK_STOPPED)
-+ continue;
-+
-+ if (net->mode->state == GRUB_EFI_NETWORK_STARTED
-+ && efi_call_3 (net->initialize, net, 0, 0) != GRUB_EFI_SUCCESS)
-+ continue;
-+ card->efi_net = net;
-+ }
- return;
- }
- }
---
-1.8.5.3
-