Flush instruction cache before starting aa64 kernel
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
This commit is contained in:
parent
7a1af0ff6d
commit
4fa957c61c
@ -0,0 +1,39 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: dann frazier <dann.frazier@canonical.com>
|
||||||
|
Date: Thu, 25 Aug 2022 17:08:09 -0600
|
||||||
|
Subject: [PATCH] linuxefi: Invalidate i-cache before starting the kernel
|
||||||
|
|
||||||
|
We need to flush the memory range of the code we are about to execute
|
||||||
|
from the instruction cache before we can safely execute it. Not doing
|
||||||
|
so appears to be the source of rare synchronous exceptions a user
|
||||||
|
is seeing on a Cortex-A72-based platform while executing the Linux EFI
|
||||||
|
stub. Notably they seem to correlate with an instruction on a cache
|
||||||
|
line boundary.
|
||||||
|
|
||||||
|
Signed-off-by: dann frazier <dann.frazier@canonical.com>
|
||||||
|
---
|
||||||
|
grub-core/loader/efi/linux.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/grub-core/loader/efi/linux.c b/grub-core/loader/efi/linux.c
|
||||||
|
index 277f352e0c..e413bdcc23 100644
|
||||||
|
--- a/grub-core/loader/efi/linux.c
|
||||||
|
+++ b/grub-core/loader/efi/linux.c
|
||||||
|
@@ -16,6 +16,7 @@
|
||||||
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include <grub/cache.h>
|
||||||
|
#include <grub/err.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/types.h>
|
||||||
|
@@ -210,6 +211,9 @@ grub_efi_linux_boot (grub_addr_t kernel_addr, grub_size_t kernel_size,
|
||||||
|
asm volatile ("cli");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ /* Invalidate the instruction cache */
|
||||||
|
+ grub_arch_sync_caches((void *)kernel_addr, kernel_size);
|
||||||
|
+
|
||||||
|
hf = (handover_func)((char *)kernel_addr + handover_offset + offset);
|
||||||
|
hf (grub_efi_image_handle, grub_efi_system_table, kernel_params);
|
||||||
|
|
@ -280,3 +280,4 @@ Patch0279: 0279-ieee1275-implement-vec5-for-cas-negotiation.patch
|
|||||||
Patch0280: 0280-blscfg-Don-t-root-device-in-emu-builds.patch
|
Patch0280: 0280-blscfg-Don-t-root-device-in-emu-builds.patch
|
||||||
Patch0281: 0281-loader-arm64-linux-Remove-magic-number-header-field-.patch
|
Patch0281: 0281-loader-arm64-linux-Remove-magic-number-header-field-.patch
|
||||||
Patch0282: 0282-Correct-BSS-zeroing-on-aarch64.patch
|
Patch0282: 0282-Correct-BSS-zeroing-on-aarch64.patch
|
||||||
|
Patch0283: 0283-linuxefi-Invalidate-i-cache-before-starting-the-kern.patch
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
Name: grub2
|
Name: grub2
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 2.06
|
Version: 2.06
|
||||||
Release: 58%{?dist}
|
Release: 59%{?dist}
|
||||||
Summary: Bootloader with support for Linux, Multiboot and more
|
Summary: Bootloader with support for Linux, Multiboot and more
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
URL: http://www.gnu.org/software/grub/
|
URL: http://www.gnu.org/software/grub/
|
||||||
@ -530,6 +530,9 @@ mv ${EFI_HOME}/grub.cfg.stb ${EFI_HOME}/grub.cfg
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 04 2022 Robbie Harwood <rharwood@redhat.com> - 2.06-59
|
||||||
|
- Flush instruction cache before starting aa64 kernel
|
||||||
|
|
||||||
* Fri Sep 09 2022 Robbie Harwood <rharwood@redhat.com> - 2.06-58
|
* Fri Sep 09 2022 Robbie Harwood <rharwood@redhat.com> - 2.06-58
|
||||||
- Bump spec for grub.macros gettext changes from Jens
|
- Bump spec for grub.macros gettext changes from Jens
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user