All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suzuki.Poulose@arm.com (Suzuki K. Poulose)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 08/11] arm64: Check for selected granule support
Date: Thu, 15 Oct 2015 13:58:57 +0100	[thread overview]
Message-ID: <561FA311.3020802@arm.com> (raw)
In-Reply-To: <20151015123727.GH8825@leverpostej>

On 15/10/15 13:37, Mark Rutland wrote:
> On Thu, Oct 15, 2015 at 12:25:33PM +0100, Suzuki K. Poulose wrote:
>> On Thu, Oct 15, 2015 at 11:45:15AM +0100, Mark Rutland wrote:
>>> On Wed, Oct 14, 2015 at 04:13:47PM -0500, Jeremy Linton wrote:
>>>> On 10/14/2015 06:20 AM, Suzuki K. Poulose wrote:


>>
>> ----8>----
>>
>> Author: Suzuki K. Poulose <suzuki.poulose@arm.com>
>> Date:   Wed Oct 14 11:25:16 2015 +0100
>>
>>      arm64: Check for selected granule support
>>
>>      Ensure that the selected page size is supported by the CPU(s). If it isn't
>>      park the CPU. A check is added to the EFI stub to detect if the boot CPU
>>      supports the page size, failing which, we fail the boot gracefully, with
>>      an error message.
>>
>>      Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com>
>>      [ Added a check to EFI stub ]
>>      Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
>
> Your sign-off should be last, given you are taking resposibility for
> Jeremy's patch.

OK, I was a bit confused about how it should look like. I kept it on top
so that I could add [ ] for Jeremy's contribution.

>
> However, I would prefer that the EFI stub addition were a separate/later
> patch.

OK, that makes sense.

>
>> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
>> index a7f3d4b..72d814c 100644
>> --- a/arch/arm64/include/asm/sysreg.h
>> +++ b/arch/arm64/include/asm/sysreg.h

>> +#define ID_AA64MMFR0_TGRAN4_NI		0xf
>> +#define ID_AA64MMFR0_TGRAN4_ON		0x0
>> +#define ID_AA64MMFR0_TGRAN64_NI		0xf
>> +#define ID_AA64MMFR0_TGRAN64_ON		0x0
>> +#define ID_AA64MMFR0_TGRAN16_NI		0x0
>> +#define ID_AA64MMFR0_TGRAN16_ON		0x1
>
> I still don't like "ON" here -- I thought these would also be changed
> s/ON/SUPPORTED/.

I know and I expected that. I have "_ON" in my 'CPU feature' series, which
will/can be reused here. Hence kept it _ON. I can change it everywhere to
_SUPPORTED, since I may need to spin another version for that.


>>   #include <linux/efi.h>
>>   #include <asm/efi.h>
>> +#include <asm/sysreg.h>
>>   #include <asm/sections.h>
>
> Nit: include order.

OK

>
>>
>> +#if defined(CONFIG_ARM64_4K_PAGES)
>> +#define PAGE_SIZE_STR	"4K"
>> +#elif defined(CONFIG_ARM64_64K_PAGES)
>> +#define PAGE_SIZE_STR	"64K"
>> +#endif
>> +
>>   efi_status_t __init handle_kernel_image(efi_system_table_t *sys_table_arg,
>>   					unsigned long *image_addr,
>>   					unsigned long *image_size,
>> @@ -25,6 +32,17 @@ 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;
>> +	u64 aa64mmfr0_el1;
>> +
>> +	/*
>> +	 * Check to see if the CPU supports the requested pagesize
>> +	 */
>> +	asm volatile("mrs %0, ID_AA64MMFR0_EL1" : "=r" (aa64mmfr0_el1));
>
> Can we not use read_cpuid() or similar here?

Yes, I will try that out. I didn't want to include additional header-files
in efi-stub.c.


>> +	aa64mmfr0_el1 >>= ID_AA64MMFR0_TGRAN_SHIFT;
>
> ... and can we not do the shift and mask in one go?
>

>> +	if ((aa64mmfr0_el1 & 0xf) != ID_AA64MMFR0_TGRAN_SUPPORTED) {
>> +		pr_efi_err(sys_table_arg, PAGE_SIZE_STR" granule not supported by the CPU\n");
>
> Nit: space before the first quote, please.

Will do

Thanks
Suzuki

WARNING: multiple messages have this Message-ID (diff)
From: "Suzuki K. Poulose" <Suzuki.Poulose@arm.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Jeremy Linton <jeremy.linton@arm.com>,
	linux-arm-kernel@lists.infradead.org, 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: Thu, 15 Oct 2015 13:58:57 +0100	[thread overview]
Message-ID: <561FA311.3020802@arm.com> (raw)
In-Reply-To: <20151015123727.GH8825@leverpostej>

On 15/10/15 13:37, Mark Rutland wrote:
> On Thu, Oct 15, 2015 at 12:25:33PM +0100, Suzuki K. Poulose wrote:
>> On Thu, Oct 15, 2015 at 11:45:15AM +0100, Mark Rutland wrote:
>>> On Wed, Oct 14, 2015 at 04:13:47PM -0500, Jeremy Linton wrote:
>>>> On 10/14/2015 06:20 AM, Suzuki K. Poulose wrote:


>>
>> ----8>----
>>
>> Author: Suzuki K. Poulose <suzuki.poulose@arm.com>
>> Date:   Wed Oct 14 11:25:16 2015 +0100
>>
>>      arm64: Check for selected granule support
>>
>>      Ensure that the selected page size is supported by the CPU(s). If it isn't
>>      park the CPU. A check is added to the EFI stub to detect if the boot CPU
>>      supports the page size, failing which, we fail the boot gracefully, with
>>      an error message.
>>
>>      Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com>
>>      [ Added a check to EFI stub ]
>>      Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
>
> Your sign-off should be last, given you are taking resposibility for
> Jeremy's patch.

OK, I was a bit confused about how it should look like. I kept it on top
so that I could add [ ] for Jeremy's contribution.

>
> However, I would prefer that the EFI stub addition were a separate/later
> patch.

OK, that makes sense.

>
>> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
>> index a7f3d4b..72d814c 100644
>> --- a/arch/arm64/include/asm/sysreg.h
>> +++ b/arch/arm64/include/asm/sysreg.h

>> +#define ID_AA64MMFR0_TGRAN4_NI		0xf
>> +#define ID_AA64MMFR0_TGRAN4_ON		0x0
>> +#define ID_AA64MMFR0_TGRAN64_NI		0xf
>> +#define ID_AA64MMFR0_TGRAN64_ON		0x0
>> +#define ID_AA64MMFR0_TGRAN16_NI		0x0
>> +#define ID_AA64MMFR0_TGRAN16_ON		0x1
>
> I still don't like "ON" here -- I thought these would also be changed
> s/ON/SUPPORTED/.

I know and I expected that. I have "_ON" in my 'CPU feature' series, which
will/can be reused here. Hence kept it _ON. I can change it everywhere to
_SUPPORTED, since I may need to spin another version for that.


>>   #include <linux/efi.h>
>>   #include <asm/efi.h>
>> +#include <asm/sysreg.h>
>>   #include <asm/sections.h>
>
> Nit: include order.

OK

>
>>
>> +#if defined(CONFIG_ARM64_4K_PAGES)
>> +#define PAGE_SIZE_STR	"4K"
>> +#elif defined(CONFIG_ARM64_64K_PAGES)
>> +#define PAGE_SIZE_STR	"64K"
>> +#endif
>> +
>>   efi_status_t __init handle_kernel_image(efi_system_table_t *sys_table_arg,
>>   					unsigned long *image_addr,
>>   					unsigned long *image_size,
>> @@ -25,6 +32,17 @@ 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;
>> +	u64 aa64mmfr0_el1;
>> +
>> +	/*
>> +	 * Check to see if the CPU supports the requested pagesize
>> +	 */
>> +	asm volatile("mrs %0, ID_AA64MMFR0_EL1" : "=r" (aa64mmfr0_el1));
>
> Can we not use read_cpuid() or similar here?

Yes, I will try that out. I didn't want to include additional header-files
in efi-stub.c.


>> +	aa64mmfr0_el1 >>= ID_AA64MMFR0_TGRAN_SHIFT;
>
> ... and can we not do the shift and mask in one go?
>

>> +	if ((aa64mmfr0_el1 & 0xf) != ID_AA64MMFR0_TGRAN_SUPPORTED) {
>> +		pr_efi_err(sys_table_arg, PAGE_SIZE_STR" granule not supported by the CPU\n");
>
> Nit: space before the first quote, please.

Will do

Thanks
Suzuki


  reply	other threads:[~2015-10-15 12:58 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
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 [this message]
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=561FA311.3020802@arm.com \
    --to=suzuki.poulose@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.