From: Mark Rutland <mark.rutland@arm.com>
To: "Suzuki K. Poulose" <suzuki.poulose@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, catalin.marinas@arm.com,
will.deacon@arm.com, steve.capper@linaro.org,
marc.zyngier@arm.com, ard.biesheuvel@linaro.org,
christoffer.dall@linaro.org,
Jeremy Linton <jeremy.linton@arm.com>
Subject: Re: [PATCHv3 10/11] arm64: Add 16K page size support
Date: Thu, 15 Oct 2015 15:06:46 +0100 [thread overview]
Message-ID: <20151015140646.GJ8825@leverpostej> (raw)
In-Reply-To: <1444821634-1689-11-git-send-email-suzuki.poulose@arm.com>
Hi,
> +config ARM64_16K_PAGES
> + bool "16KB"
> + help
> + The system will use 16KB pages support. AArch32 emulation
> + requires applications compiled with 16K(or multiple of 16K)
> + aligned segments.
Nit: missing space before '('
Nit: 'a multiple of'
> @@ -503,6 +517,7 @@ config XEN
> config FORCE_MAX_ZONEORDER
> int
> default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
> + default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
> default "11"
I'm a little lost here. How are these numbers derived?
> menuconfig ARMV8_DEPRECATED
> @@ -689,9 +704,9 @@ config COMPAT
> the user helper functions, VFP support and the ptrace interface are
> handled appropriately by the kernel.
>
> - If you also enabled CONFIG_ARM64_64K_PAGES, please be aware that you
> - will only be able to execute AArch32 binaries that were compiled with
> - 64k aligned segments.
> + If you use a page size other than 4KB(i.e, 16KB or 64KB), please be aware
Nit: missing space before '(' please.
> diff --git a/arch/arm64/include/asm/fixmap.h b/arch/arm64/include/asm/fixmap.h
> index 8b9884c..a294c70 100644
> --- a/arch/arm64/include/asm/fixmap.h
> +++ b/arch/arm64/include/asm/fixmap.h
> @@ -55,8 +55,10 @@ enum fixed_addresses {
> * Temporary boot-time mappings, used by early_ioremap(),
> * before ioremap() is functional.
> */
> -#ifdef CONFIG_ARM64_64K_PAGES
> +#if defined(CONFIG_ARM64_64K_PAGES)
> #define NR_FIX_BTMAPS 4
> +#elif defined (CONFIG_ARM64_16K_PAGES)
> +#define NR_FIX_BTMAPS 16
> #else
> #define NR_FIX_BTMAPS 64
> #endif
We could include <linux/sizes.h> and simplify this to:
#define NR_FIX_BTMAPS (SZ_256K / PAGE_SIZE)
Which works for me locally.
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index 5eac6a2..90c7ff2 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -25,6 +25,8 @@
>
> #ifdef CONFIG_ARM64_4K_PAGES
> #define THREAD_SIZE_ORDER 2
> +#elif defined(CONFIG_ARM64_16K_PAGES)
> +#define THREAD_SIZE_ORDER 0
> #endif
> #define THREAD_SIZE 16384
The above looks correct.
As an open/general question, why do both THREAD_SIZE_ORDER and
THREAD_SIZE exist? One really should be defined in terms of the other.
As far as I can tell,the only user of THREAD_SIZE_ORDER outside of arch
code is fork.c, which could calculate it as:
ilog2(DIV_ROUND_UP(THREAD_SIZE, PAGE_SIZE))
Though I suspect we can't do that in a macro here for fear of a fragile
build, so that's something for another time.
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index b6aa9e0..2ed57a8 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -624,7 +624,12 @@ ENDPROC(__secondary_switched)
> #define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN64_SHIFT
> #define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN64_ON
>
> -#else
> +#elif defined(CONFIG_ARM64_16K_PAGES)
> +
> +#define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN16_SHIFT
> +#define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN16_ON
> +
> +#elif defined(CONFIG_ARM64_4K_PAGES)
>
> #define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN4_SHIFT
> #define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN4_ON
I assume you'll s/ON/SUPPORTED/ per comments in another thread.
Otherwise this looks fine to me.
Thanks,
Mark.
WARNING: multiple messages have this Message-ID (diff)
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 10/11] arm64: Add 16K page size support
Date: Thu, 15 Oct 2015 15:06:46 +0100 [thread overview]
Message-ID: <20151015140646.GJ8825@leverpostej> (raw)
In-Reply-To: <1444821634-1689-11-git-send-email-suzuki.poulose@arm.com>
Hi,
> +config ARM64_16K_PAGES
> + bool "16KB"
> + help
> + The system will use 16KB pages support. AArch32 emulation
> + requires applications compiled with 16K(or multiple of 16K)
> + aligned segments.
Nit: missing space before '('
Nit: 'a multiple of'
> @@ -503,6 +517,7 @@ config XEN
> config FORCE_MAX_ZONEORDER
> int
> default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
> + default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
> default "11"
I'm a little lost here. How are these numbers derived?
> menuconfig ARMV8_DEPRECATED
> @@ -689,9 +704,9 @@ config COMPAT
> the user helper functions, VFP support and the ptrace interface are
> handled appropriately by the kernel.
>
> - If you also enabled CONFIG_ARM64_64K_PAGES, please be aware that you
> - will only be able to execute AArch32 binaries that were compiled with
> - 64k aligned segments.
> + If you use a page size other than 4KB(i.e, 16KB or 64KB), please be aware
Nit: missing space before '(' please.
> diff --git a/arch/arm64/include/asm/fixmap.h b/arch/arm64/include/asm/fixmap.h
> index 8b9884c..a294c70 100644
> --- a/arch/arm64/include/asm/fixmap.h
> +++ b/arch/arm64/include/asm/fixmap.h
> @@ -55,8 +55,10 @@ enum fixed_addresses {
> * Temporary boot-time mappings, used by early_ioremap(),
> * before ioremap() is functional.
> */
> -#ifdef CONFIG_ARM64_64K_PAGES
> +#if defined(CONFIG_ARM64_64K_PAGES)
> #define NR_FIX_BTMAPS 4
> +#elif defined (CONFIG_ARM64_16K_PAGES)
> +#define NR_FIX_BTMAPS 16
> #else
> #define NR_FIX_BTMAPS 64
> #endif
We could include <linux/sizes.h> and simplify this to:
#define NR_FIX_BTMAPS (SZ_256K / PAGE_SIZE)
Which works for me locally.
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index 5eac6a2..90c7ff2 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -25,6 +25,8 @@
>
> #ifdef CONFIG_ARM64_4K_PAGES
> #define THREAD_SIZE_ORDER 2
> +#elif defined(CONFIG_ARM64_16K_PAGES)
> +#define THREAD_SIZE_ORDER 0
> #endif
> #define THREAD_SIZE 16384
The above looks correct.
As an open/general question, why do both THREAD_SIZE_ORDER and
THREAD_SIZE exist? One really should be defined in terms of the other.
As far as I can tell,the only user of THREAD_SIZE_ORDER outside of arch
code is fork.c, which could calculate it as:
ilog2(DIV_ROUND_UP(THREAD_SIZE, PAGE_SIZE))
Though I suspect we can't do that in a macro here for fear of a fragile
build, so that's something for another time.
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index b6aa9e0..2ed57a8 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -624,7 +624,12 @@ ENDPROC(__secondary_switched)
> #define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN64_SHIFT
> #define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN64_ON
>
> -#else
> +#elif defined(CONFIG_ARM64_16K_PAGES)
> +
> +#define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN16_SHIFT
> +#define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN16_ON
> +
> +#elif defined(CONFIG_ARM64_4K_PAGES)
>
> #define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN4_SHIFT
> #define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN4_ON
I assume you'll s/ON/SUPPORTED/ per comments in another thread.
Otherwise this looks fine to me.
Thanks,
Mark.
next prev parent reply other threads:[~2015-10-15 14:06 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
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 [this message]
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=20151015140646.GJ8825@leverpostej \
--to=mark.rutland@arm.com \
--cc=ard.biesheuvel@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=jeremy.linton@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=steve.capper@linaro.org \
--cc=suzuki.poulose@arm.com \
--cc=will.deacon@arm.com \
/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.