]> TLD Linux GIT Repositories - packages/grub2.git/blobdiff - efi-net-fix.patch
- fix for ext4 fs with metadata_csum_seed
[packages/grub2.git] / efi-net-fix.patch
index b36640470ecec045a67512baeb92239d8f00b7bd..41872c001d2da17788408ef25884f1d264c5ee6b 100644 (file)
@@ -1,7 +1,30 @@
-diff -ur grub-2.02-beta3.orig/grub-core/net/drivers/efi/efinet.c grub-2.02-beta3/grub-core/net/drivers/efi/efinet.c
---- grub-2.02-beta3.orig/grub-core/net/drivers/efi/efinet.c    2016-02-28 02:07:41.000000000 +0000
-+++ grub-2.02-beta3/grub-core/net/drivers/efi/efinet.c 2016-03-21 07:56:01.589768000 +0000
-@@ -330,6 +330,7 @@
+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;
@@ -9,7 +32,7 @@ diff -ur grub-2.02-beta3.orig/grub-core/net/drivers/efi/efinet.c grub-2.02-beta3
  
    dp = grub_efi_get_device_path (hnd);
    if (! dp)
-@@ -383,6 +384,21 @@
+@@ -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);
@@ -31,3 +54,6 @@ diff -ur grub-2.02-beta3.orig/grub-core/net/drivers/efi/efinet.c grub-2.02-beta3
      return;
    }
  }
+-- 
+1.8.5.3
+