diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 608c435e..e55dd727 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -124,13 +124,29 @@ elseif (BUILD_TARGET STREQUAL "smp-arm64") OUTPUT_VARIABLE CONFIG_ARM64_VHE OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM_GIC_V3\" { print $2; exit; }" "${KERNEL_DIR}/.config" OUTPUT_VARIABLE CONFIG_ARM_GIC_V3 OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND bash -c "gawk '/CPU implementer/ { print \$4; exit; }' /proc/cpuinfo" + OUTPUT_VARIABLE CPU_IMPLEMENTER OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND bash -c "gawk '/CPU architecture/ { print \$3; exit; }' /proc/cpuinfo" + OUTPUT_VARIABLE CPU_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND bash -c "gawk '/CPU variant/ { print \$4; exit; }' /proc/cpuinfo" + OUTPUT_VARIABLE CPU_VARIANT OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND bash -c "gawk '/CPU part/ { print \$4; exit; }' /proc/cpuinfo" + OUTPUT_VARIABLE CPU_PART OUTPUT_STRIP_TRAILING_WHITESPACE) message("Host kernel CONFIG_NR_CPUS=${CONFIG_NR_CPUS}") message("Host kernel CONFIG_HZ=${CONFIG_HZ}") if(CONFIG_ARM_GIC_V3 STREQUAL "y") add_definitions(-DCONFIG_ARM_GIC_V3=y) - #add_definitions(-DCONFIG_HAS_NMI=y) + # NMI by priority doesn't work with ThunderX2 + if(CPU_IMPLEMENTER STREQUAL "0x43" AND CPU_ARCH STREQUAL "8" AND + CPU_VARIANT STREQUAL "0x1" AND CPU_PART STREQUAL "0x0af") + add_definitions(-DCONFIG_HAS_NMI=n) + message("CONFIG_HAS_NMI isn't defined for ThunderX2") + else() + add_definitions(-DCONFIG_HAS_NMI=y) + message("CONFIG_HAS_NMI is defined") + endif() else(CONFIG_ARM_GIC_V3 STREQUAL "y") message(FATAL_ERROR "Host kernel must have GIC v3 enabled") endif(CONFIG_ARM_GIC_V3 STREQUAL "y")