From 42e56a6309ca5b9fc126234ab01d7fc10558ad92 Mon Sep 17 00:00:00 2001 From: Penny Zheng Date: Tue, 7 Apr 2020 16:53:46 +0800 Subject: [PATCH] config: add arm64-specific configs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a few arm64-specific configs and classify them into seven new categories , that is, 1. base architecture-dependent options(base.conf) It also includes varient-specific features, like CONFIG_ARM64_PMEM is one ARMv8.2 arichitectural features. 2. crypto-related options(crypto.conf) ARMv8 adds cryptographic instructions that could significantly improve performance on tasks such as AES encryption and SHA1 and SHA256 hashing. 3. device tree related options(dt.conf) The "Open Firmware Device Tree", or simply Device Tree (DT), is a data structure and language for describing hardware, which is commonly used in arm architecture. 4. ARM errata workarounds options(errata.conf) There are many Kconfig entires under "Kernel Features" -> "ARM errata workarounds via the alternatives framework", which provides software workarounds to mitigate systems affected by those erratum. Vendor-specific option will be left to users to decide. 5. pci related options(pci.conf) a simplified pci host controller for mach-virt. 6. serial devices options(serial.conf) CONFIG_SERIAL_OF_PLATFORM is used for all 8250 compatible serial ports that are probed through device tree. 7. rtc related options(rtc.conf) we don't have KVM’s paravirtualized clock and ptp implementation is still under experimental mode, so we need rtc on aarch64. QEMU provides an emulated ARM AMBA PrimeCell PL031 RTC. Fixes: #1004 Signed-off-by: Penny Zheng --- kernel/configs/fragments/arm64/base.conf | 42 +++++++++++++++++++++ kernel/configs/fragments/arm64/crypto.conf | 6 +++ kernel/configs/fragments/arm64/dt.conf | 4 ++ kernel/configs/fragments/arm64/erratum.conf | 15 ++++++++ kernel/configs/fragments/arm64/pci.conf | 3 ++ kernel/configs/fragments/arm64/rtc.conf | 10 +++++ kernel/configs/fragments/arm64/serial.conf | 3 ++ 7 files changed, 83 insertions(+) create mode 100644 kernel/configs/fragments/arm64/base.conf create mode 100644 kernel/configs/fragments/arm64/crypto.conf create mode 100644 kernel/configs/fragments/arm64/dt.conf create mode 100644 kernel/configs/fragments/arm64/erratum.conf create mode 100644 kernel/configs/fragments/arm64/pci.conf create mode 100644 kernel/configs/fragments/arm64/rtc.conf create mode 100644 kernel/configs/fragments/arm64/serial.conf diff --git a/kernel/configs/fragments/arm64/base.conf b/kernel/configs/fragments/arm64/base.conf new file mode 100644 index 0000000000..cc43544ba5 --- /dev/null +++ b/kernel/configs/fragments/arm64/base.conf @@ -0,0 +1,42 @@ +CONFIG_ARM64=y +CONFIG_ARM64_4K_PAGES=y + +# ARM servers are often multi-cores, following configs improve +# the CPU scheduler's decision making. +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y + +# Virtual address space size (48-bit) +CONFIG_ARM64_VA_BITS_48=y +CONFIG_ARM64_VA_BITS=48 +# Physical address space size (48-bit) +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_PA_BITS=48 + +# Use the maximum number of CPUs supported by KVM (255) +CONFIG_NR_CPUS=255 + +CONFIG_PERF_EVENTS=y + +# No architected NMI +CONFIG_ARM64_PSEUDO_NMI=y +CONFIG_ARM64_SVE=y + +# Arm64 prefers to use REFCOUNT_FULL by default. +CONFIG_REFCOUNT_FULL=y + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +CONFIG_ARM64_CNP=y +CONFIG_ARM64_PMEM=y +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_UAO=y +# end of ARMv8.2 architectural feature diff --git a/kernel/configs/fragments/arm64/crypto.conf b/kernel/configs/fragments/arm64/crypto.conf new file mode 100644 index 0000000000..2f72487af0 --- /dev/null +++ b/kernel/configs/fragments/arm64/crypto.conf @@ -0,0 +1,6 @@ +# ARMv8 adds cryptographic instructions that could significantly improve +# performance on tasks such as AES encryption and SHA1 and SHA256 hashing. +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_SHA256_ARM64=y diff --git a/kernel/configs/fragments/arm64/dt.conf b/kernel/configs/fragments/arm64/dt.conf new file mode 100644 index 0000000000..b5d78f830d --- /dev/null +++ b/kernel/configs/fragments/arm64/dt.conf @@ -0,0 +1,4 @@ +# Device Tree and Open Firmware support +CONFIG_DTC=y +CONFIG_OF=y +CONFIG_OF_PMEM=y diff --git a/kernel/configs/fragments/arm64/erratum.conf b/kernel/configs/fragments/arm64/erratum.conf new file mode 100644 index 0000000000..482588079d --- /dev/null +++ b/kernel/configs/fragments/arm64/erratum.conf @@ -0,0 +1,15 @@ +# ARM errata workarounds via the alternatives framework. +# Vendor-specific option will be left to users to decide. +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y + diff --git a/kernel/configs/fragments/arm64/pci.conf b/kernel/configs/fragments/arm64/pci.conf new file mode 100644 index 0000000000..cc2077e123 --- /dev/null +++ b/kernel/configs/fragments/arm64/pci.conf @@ -0,0 +1,3 @@ +# It brings PCI support to mach-virt based upon an idealised host controller. +CONFIG_PCI_HOST_COMMON=y +CONFIG_PCI_HOST_GENERIC=y diff --git a/kernel/configs/fragments/arm64/rtc.conf b/kernel/configs/fragments/arm64/rtc.conf new file mode 100644 index 0000000000..7ed80cf2f3 --- /dev/null +++ b/kernel/configs/fragments/arm64/rtc.conf @@ -0,0 +1,10 @@ +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_SYSTOHC=y +# RTC interfaces +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# QEMU provides an emulated ARM AMBA PrimeCell PL031 RTC. +CONFIG_RTC_DRV_PL031=y diff --git a/kernel/configs/fragments/arm64/serial.conf b/kernel/configs/fragments/arm64/serial.conf new file mode 100644 index 0000000000..6c76fd2964 --- /dev/null +++ b/kernel/configs/fragments/arm64/serial.conf @@ -0,0 +1,3 @@ +# This option is used for all 8250 compatible serial ports +# that are probed through device tree. +CONFIG_SERIAL_OF_PLATFORM=y