]> TLD Linux GIT Repositories - packages/grub2.git/blobdiff - efi-net-fix.patch
- merged 2.12 from PLD
[packages/grub2.git] / efi-net-fix.patch
diff --git a/efi-net-fix.patch b/efi-net-fix.patch
deleted file mode 100644 (file)
index 41872c0..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-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
-