ARM Technical Support Knowledge Articles

How do I enable the 64KB page size kernel on ARCH64?

Applies to: Embedded Software

Scenario

I want to enable support for the 64KB page size kernel for performance analysis or case debug. I configure the kernel to support 64K page. However, the 64KB page size kernel cannot mount the root file system successfully because the init task or BusyBox binary cannot run. How do I enable a 64KB page size kernel and avoid such these problems?

Answer

To enable the 64KB page size support, you must modify configuration files and rebuild the kernel. Your current root file systems determine whether you need to rebuild your root file system.

A 4KB page size kernel supports both AARCH32 and AARCH64 in EL0, while a 64KB page size kernel supports only AARCH64 in EL0. When the 64KB page size is enabled, the configuration item CONFIG_COMPAT is disabled. Therefore, if your root file system is built with the AARCH32 toolchain, you must rebuild it with the AARCH64 toolchain.

The same applies to other userspace binaries. If they are built by the AARCH32 toolchain, you must rebuild it with the AARCH64 toolchain.

Consider the Juno board for example. To implement the 64KB page size kernel, perform the following steps:

       1. Get the latest Juno release code and place it in your working directory, for example work_dir.

           For details about how to download the latest code base, see community.arm.com/docs/DOC-10804

       2. Modify the default setting in the configuration file to enable the 64KB page size.

           In the work_dir/linux/linaro/configs/vexpress64.conf configuration file, add the following entry:

           CONFIG_ARM64_64K_PAGES=y

       3. Fix GPU driver compilation errors.

           For now, the enablement of the 64KB page size causes GPU driver compilation errors. 

           In the work_dir/linux/linaro/configs/vexpress64.conf configuration file, remove the following entries:

     CONFIG_MALI_MIDGARD=y

     CONFIG_MALI_EXPERT=y

     CONFIG_MALI_PLATFORM_FAKE=y

     CONFIG_MALI_PLATFORM_THIRDPARTY=y

     CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="juno_soc"

       4. Compile the BusyBox system.

     >: cd work_dir

     >: ./build_scripts/build-all.sh juno-BusyBox

     >: ./build_scripts/build-all.sh juno-BusyBox package

After these steps, you can find the following images in the work_dir/output/juno-BusyBox/uboot directory:

 If the RAMDisk image is built with the AARCH64 toolchain, you do not need to change it.

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential