diff mbox

[3/3] target-arm: A64: fix use 12 bit page tables for aarch64

Message ID 1406217175-30267-4-git-send-email-alex.bennee@linaro.org
State New
Headers show

Commit Message

Alex Bennée July 24, 2014, 3:52 p.m. UTC
The aarch64 architecture only support 4k+ pages so using a smaller value
for QEMU's internal page table handling only makes us less efficient.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Comments

Peter Maydell July 24, 2014, 4:12 p.m. UTC | #1
On 24 July 2014 16:52, Alex Bennée <alex.bennee@linaro.org> wrote:
> The aarch64 architecture only support 4k+ pages so using a smaller value
> for QEMU's internal page table handling only makes us less efficient.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>
> diff --git a/target-arm/cpu.h b/target-arm/cpu.h
> index c83f249..33359b9 100644
> --- a/target-arm/cpu.h
> +++ b/target-arm/cpu.h
> @@ -1051,11 +1051,18 @@ bool write_cpustate_to_list(ARMCPU *cpu);
>  #if defined(CONFIG_USER_ONLY)
>  #define TARGET_PAGE_BITS 12
>  #else
> -/* The ARM MMU allows 1k pages.  */
> -/* ??? Linux doesn't actually use these, and they're deprecated in recent
> -   architecture revisions.  Maybe a configure option to disable them.  */
> +#if defined(TARGET_AARCH64)
> +/* You can't configure 1k pages on aarch64 hardware */

"AArch64" (here and in commit messages).

Also, qemu-system-aarch64 still supports all the 32 bit
CPUs, including the ARMv5 ones (v5 is the last revision
that supported 1K pages). So we'd have to at least remove
those CPUs from the TARGET_AARCH64 system emulator
compilation, if we can't come up with anything cleverer.

thanks
-- PMM
diff mbox

Patch

diff --git a/target-arm/cpu.h b/target-arm/cpu.h
index c83f249..33359b9 100644
--- a/target-arm/cpu.h
+++ b/target-arm/cpu.h
@@ -1051,11 +1051,18 @@  bool write_cpustate_to_list(ARMCPU *cpu);
 #if defined(CONFIG_USER_ONLY)
 #define TARGET_PAGE_BITS 12
 #else
-/* The ARM MMU allows 1k pages.  */
-/* ??? Linux doesn't actually use these, and they're deprecated in recent
-   architecture revisions.  Maybe a configure option to disable them.  */
+#if defined(TARGET_AARCH64)
+/* You can't configure 1k pages on aarch64 hardware */
+#define TARGET_PAGE_BITS 12
+#else
+/* The ARM MMU allows 1k pages - although they are not used by Linux
+ * FIXME?: they're deprecated in recent architecture revisions and
+ * this does create a performance hit. Maybe a configure option to
+ * disable them?
+ */
 #define TARGET_PAGE_BITS 10
 #endif
+#endif
 
 #if defined(TARGET_AARCH64)
 #  define TARGET_PHYS_ADDR_SPACE_BITS 48