From: jeremy.linton@arm.com (Jeremy Linton)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 08/11] arm64: Check for selected granule support
Date: Wed, 14 Oct 2015 16:13:47 -0500 [thread overview]
Message-ID: <561EC58B.9080408@arm.com> (raw)
In-Reply-To: <1444821634-1689-9-git-send-email-suzuki.poulose@arm.com>
On 10/14/2015 06:20 AM, Suzuki K. Poulose wrote:
> + * Checks if the selected granule size is supported by the CPU.
> + * If it doesn't park the CPU
The problem is when you park the boot CPU.
I think for EFI there is a slightly better error mechanism. This tweak
will print an error and return to the EFI boot manager rather than
hanging the machine without any notification. Now it prints:
EFI stub: Booting Linux Kernel...
EFI stub: ERROR: 16K granule not supported by this machine
EFI stub: ERROR: Failed to relocate kernel
FS4:\>
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
arch/arm64/kernel/efi-stub.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm64/kernel/efi-stub.c b/arch/arm64/kernel/efi-stub.c
index 816120e..90fb868 100644
--- a/arch/arm64/kernel/efi-stub.c
+++ b/arch/arm64/kernel/efi-stub.c
@@ -25,6 +25,20 @@ efi_status_t __init
handle_kernel_image(efi_system_table_t *sys_table_arg,
unsigned long kernel_size, kernel_memsize = 0;
unsigned long nr_pages;
void *old_image_addr = (void *)*image_addr;
+ u32 aa64mmfr0_el1;
+
+#ifdef CONFIG_ARM64_16K_PAGES
+ /*
+ * check to see if this kernel image is
+ * compatible with the current system
+ */
+ asm volatile("mrs %0, ID_AA64MMFR0_EL1" : "=r" (aa64mmfr0_el1));
+ aa64mmfr0_el1 >>= ID_AA64MMFR0_TGRAN16_SHIFT;
+ if ((aa64mmfr0_el1 & ID_AA64MMFR0_TGRAN4_ON) == 0) {
+ pr_efi_err(sys_table_arg, "16K granule not supported by
this machine\n");
+ return EFI_UNSUPPORTED;
+ }
+#endif
/* Relocate the image, if required. */
kernel_size = _edata - _text;
--
2.4.3
WARNING: multiple messages have this Message-ID (diff)
From: Jeremy Linton <jeremy.linton@arm.com>
To: "Suzuki K. Poulose" <suzuki.poulose@arm.com>,
linux-arm-kernel@lists.infradead.org
Cc: mark.rutland@arm.com, steve.capper@linaro.org,
ard.biesheuvel@linaro.org, marc.zyngier@arm.com,
catalin.marinas@arm.com, will.deacon@arm.com,
linux-kernel@vger.kernel.org, christoffer.dall@linaro.org
Subject: Re: [PATCHv3 08/11] arm64: Check for selected granule support
Date: Wed, 14 Oct 2015 16:13:47 -0500 [thread overview]
Message-ID: <561EC58B.9080408@arm.com> (raw)
In-Reply-To: <1444821634-1689-9-git-send-email-suzuki.poulose@arm.com>
On 10/14/2015 06:20 AM, Suzuki K. Poulose wrote:
> + * Checks if the selected granule size is supported by the CPU.
> + * If it doesn't park the CPU
The problem is when you park the boot CPU.
I think for EFI there is a slightly better error mechanism. This tweak
will print an error and return to the EFI boot manager rather than
hanging the machine without any notification. Now it prints:
EFI stub: Booting Linux Kernel...
EFI stub: ERROR: 16K granule not supported by this machine
EFI stub: ERROR: Failed to relocate kernel
FS4:\>
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
arch/arm64/kernel/efi-stub.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm64/kernel/efi-stub.c b/arch/arm64/kernel/efi-stub.c
index 816120e..90fb868 100644
--- a/arch/arm64/kernel/efi-stub.c
+++ b/arch/arm64/kernel/efi-stub.c
@@ -25,6 +25,20 @@ efi_status_t __init
handle_kernel_image(efi_system_table_t *sys_table_arg,
unsigned long kernel_size, kernel_memsize = 0;
unsigned long nr_pages;
void *old_image_addr = (void *)*image_addr;
+ u32 aa64mmfr0_el1;
+
+#ifdef CONFIG_ARM64_16K_PAGES
+ /*
+ * check to see if this kernel image is
+ * compatible with the current system
+ */
+ asm volatile("mrs %0, ID_AA64MMFR0_EL1" : "=r" (aa64mmfr0_el1));
+ aa64mmfr0_el1 >>= ID_AA64MMFR0_TGRAN16_SHIFT;
+ if ((aa64mmfr0_el1 & ID_AA64MMFR0_TGRAN4_ON) == 0) {
+ pr_efi_err(sys_table_arg, "16K granule not supported by
this machine\n");
+ return EFI_UNSUPPORTED;
+ }
+#endif
/* Relocate the image, if required. */
kernel_size = _edata - _text;
--
2.4.3
next prev parent reply other threads:[~2015-10-14 21:13 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-14 11:20 [PATCHv3 00/11] arm64: 16K translation granule support Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 11:20 ` [PATCHv3 01/11] arm64: Move swapper pagetable definitions Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 11:42 ` Mark Rutland
2015-10-14 11:42 ` Mark Rutland
2015-10-14 12:41 ` Suzuki K. Poulose
2015-10-14 12:41 ` Suzuki K. Poulose
2015-10-14 11:20 ` [PATCHv3 02/11] arm64: Handle section maps for swapper/idmap Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 12:06 ` Mark Rutland
2015-10-14 12:06 ` Mark Rutland
2015-10-14 13:21 ` Suzuki K. Poulose
2015-10-14 13:21 ` Suzuki K. Poulose
2015-10-14 14:51 ` Mark Rutland
2015-10-14 14:51 ` Mark Rutland
2015-10-14 15:08 ` Suzuki K. Poulose
2015-10-14 15:08 ` Suzuki K. Poulose
2015-10-14 15:14 ` Mark Rutland
2015-10-14 15:14 ` Mark Rutland
2015-10-14 11:20 ` [PATCHv3 03/11] arm64: Introduce helpers for page table levels Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 17:07 ` Mark Rutland
2015-10-14 17:07 ` Mark Rutland
2015-10-15 9:35 ` Suzuki K. Poulose
2015-10-15 9:35 ` Suzuki K. Poulose
2015-10-15 10:37 ` Mark Rutland
2015-10-15 10:37 ` Mark Rutland
2015-10-15 11:40 ` Christoffer Dall
2015-10-15 11:40 ` Christoffer Dall
2015-10-15 11:37 ` Christoffer Dall
2015-10-15 11:37 ` Christoffer Dall
2015-10-15 12:44 ` Mark Rutland
2015-10-15 12:44 ` Mark Rutland
2015-10-15 13:14 ` Suzuki K. Poulose
2015-10-15 13:14 ` Suzuki K. Poulose
2015-10-15 13:30 ` Christoffer Dall
2015-10-15 13:30 ` Christoffer Dall
2015-10-15 13:48 ` Suzuki K. Poulose
2015-10-15 13:48 ` Suzuki K. Poulose
2015-10-15 14:15 ` Christoffer Dall
2015-10-15 14:15 ` Christoffer Dall
2015-10-14 11:20 ` [PATCHv3 04/11] arm64: Calculate size for idmap_pg_dir at compile time Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 17:12 ` Mark Rutland
2015-10-14 17:12 ` Mark Rutland
2015-10-14 11:20 ` [PATCHv3 05/11] arm64: Handle 4 level page table for swapper Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 17:15 ` Mark Rutland
2015-10-14 17:15 ` Mark Rutland
2015-10-14 11:20 ` [PATCHv3 06/11] arm64: Clean config usages for page size Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 11:20 ` [PATCHv3 07/11] arm64: Kconfig: Fix help text about AArch32 support with 64K pages Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 17:16 ` Mark Rutland
2015-10-14 17:16 ` Mark Rutland
2015-10-14 11:20 ` [PATCHv3 08/11] arm64: Check for selected granule support Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 17:24 ` Mark Rutland
2015-10-14 17:24 ` Mark Rutland
2015-10-14 17:32 ` Mark Rutland
2015-10-14 17:32 ` Mark Rutland
2015-10-15 9:45 ` Suzuki K. Poulose
2015-10-15 9:45 ` Suzuki K. Poulose
2015-10-15 10:39 ` Mark Rutland
2015-10-15 10:39 ` Mark Rutland
2015-10-14 21:13 ` Jeremy Linton [this message]
2015-10-14 21:13 ` Jeremy Linton
2015-10-15 9:48 ` Suzuki K. Poulose
2015-10-15 9:48 ` Suzuki K. Poulose
2015-10-15 10:45 ` Mark Rutland
2015-10-15 10:45 ` Mark Rutland
2015-10-15 11:25 ` Suzuki K. Poulose
2015-10-15 11:25 ` Suzuki K. Poulose
2015-10-15 12:37 ` Mark Rutland
2015-10-15 12:37 ` Mark Rutland
2015-10-15 12:58 ` Suzuki K. Poulose
2015-10-15 12:58 ` Suzuki K. Poulose
2015-10-16 8:03 ` Ard Biesheuvel
2015-10-16 8:03 ` Ard Biesheuvel
2015-10-15 14:47 ` Jeremy Linton
2015-10-15 14:47 ` Jeremy Linton
2015-10-15 15:02 ` Suzuki K. Poulose
2015-10-15 15:02 ` Suzuki K. Poulose
2015-10-15 15:11 ` Mark Rutland
2015-10-15 15:11 ` Mark Rutland
2015-10-16 8:11 ` Ard Biesheuvel
2015-10-16 8:11 ` Ard Biesheuvel
2015-10-14 11:20 ` [PATCHv3 09/11] arm64: Add page size to the kernel image header Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 17:27 ` Mark Rutland
2015-10-14 17:27 ` Mark Rutland
2015-10-15 9:19 ` Suzuki K. Poulose
2015-10-15 9:19 ` Suzuki K. Poulose
2015-10-14 11:20 ` [PATCHv3 10/11] arm64: Add 16K page size support Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
2015-10-14 15:40 ` Jeremy Linton
2015-10-14 15:40 ` Jeremy Linton
2015-10-14 15:53 ` Suzuki K. Poulose
2015-10-14 15:53 ` Suzuki K. Poulose
2015-10-15 14:06 ` Mark Rutland
2015-10-15 14:06 ` Mark Rutland
2015-10-15 14:48 ` Suzuki K. Poulose
2015-10-15 14:48 ` Suzuki K. Poulose
2015-10-15 15:36 ` Steve Capper
2015-10-15 15:36 ` Steve Capper
2015-10-15 15:48 ` Suzuki K. Poulose
2015-10-15 15:48 ` Suzuki K. Poulose
2015-10-14 11:20 ` [PATCHv3 11/11] arm64: 36 bit VA Suzuki K. Poulose
2015-10-14 11:20 ` Suzuki K. Poulose
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=561EC58B.9080408@arm.com \
--to=jeremy.linton@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.