Rediff patch for kernel v5.10.64

This commit is contained in:
Mikhail Novosyolov 2021-09-14 22:36:28 +03:00
parent 3663c10b2d
commit 0f662eabce

View file

@ -1,7 +1,7 @@
From 460b2ff3c8509372228afae9e869aa375b85c319 Mon Sep 17 00:00:00 2001 From f2c459c92298deb7054414bd857fe26723be5dab Mon Sep 17 00:00:00 2001
From: Alexey Sheplyakov <asheplyakov@altlinux.org> From: Alexey Sheplyakov <asheplyakov@altlinux.org>
Date: Tue, 10 Nov 2020 19:05:39 +0400 Date: Tue, 10 Nov 2020 19:05:39 +0400
Subject: [PATCH 607/625] Fixed secondary CPUs boot on BE-M1000 SoC Subject: [PATCH 607/631] Fixed secondary CPUs boot on BE-M1000 SoC
The secure world on BE-M1000 SoC denies execution attempts outside of The secure world on BE-M1000 SoC denies execution attempts outside of
the ranges [0x80000000, 0x8FFFFFFF] [0xA0000000, 0xBFFFFFFF]. Thus the ranges [0x80000000, 0x8FFFFFFF] [0xA0000000, 0xBFFFFFFF]. Thus
@ -19,7 +19,7 @@ ones) and forcibly relocate the kernel to a low(er) address.
1 file changed, 60 insertions(+), 1 deletion(-) 1 file changed, 60 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c
index 22ece1ad68a8..897708508909 100644 index c1b57dfb1277..411f1546d171 100644
--- a/drivers/firmware/efi/libstub/arm64-stub.c --- a/drivers/firmware/efi/libstub/arm64-stub.c
+++ b/drivers/firmware/efi/libstub/arm64-stub.c +++ b/drivers/firmware/efi/libstub/arm64-stub.c
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
@ -60,10 +60,10 @@ index 22ece1ad68a8..897708508909 100644
+} +}
+ +
/* /*
* Although relocatable kernels can fix up the misalignment with respect to * Distro versions of GRUB may ignore the BSS allocation entirely (i.e., fail
* MIN_KIMG_ALIGN, the resulting virtual text addresses are subtly out of * to provide space, and fail to zero it). Check for this condition by double
@@ -46,6 +72,19 @@ static u64 min_kimg_align(void) @@ -79,6 +105,19 @@ static bool check_image_region(u64 base, u64 size)
return efi_nokaslr ? MIN_KIMG_ALIGN : EFI_KIMG_ALIGN; return ret;
} }
+static inline efi_status_t efi_low_alloc(unsigned long size, unsigned long align, +static inline efi_status_t efi_low_alloc(unsigned long size, unsigned long align,
@ -82,7 +82,7 @@ index 22ece1ad68a8..897708508909 100644
efi_status_t handle_kernel_image(unsigned long *image_addr, efi_status_t handle_kernel_image(unsigned long *image_addr,
unsigned long *image_size, unsigned long *image_size,
unsigned long *reserve_addr, unsigned long *reserve_addr,
@@ -55,6 +94,13 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, @@ -88,6 +127,13 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
efi_status_t status; efi_status_t status;
unsigned long kernel_size, kernel_memsize = 0; unsigned long kernel_size, kernel_memsize = 0;
u32 phys_seed = 0; u32 phys_seed = 0;
@ -94,9 +94,9 @@ index 22ece1ad68a8..897708508909 100644
+ } + }
+ } + }
if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { /*
if (!efi_nokaslr) { * Although relocatable kernels can fix up the misalignment with
@@ -69,7 +115,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, @@ -112,7 +158,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
efi_nokaslr = true; efi_nokaslr = true;
} }
} else { } else {
@ -106,7 +106,7 @@ index 22ece1ad68a8..897708508909 100644
} }
} }
@@ -91,6 +138,15 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, @@ -138,6 +185,15 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
status = EFI_OUT_OF_RESOURCES; status = EFI_OUT_OF_RESOURCES;
} }
@ -120,9 +120,9 @@ index 22ece1ad68a8..897708508909 100644
+ } + }
+ +
if (status != EFI_SUCCESS) { if (status != EFI_SUCCESS) {
if (IS_ALIGNED((u64)_text, min_kimg_align())) { if (!check_image_region((u64)_text, kernel_memsize)) {
/* efi_err("FIRMWARE BUG: Image BSS overlaps adjacent EFI memory region\n");
@@ -113,6 +169,9 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, @@ -162,6 +218,9 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
} }
*image_addr = *reserve_addr; *image_addr = *reserve_addr;