From 1a0094f7c95a8e30fd8ebdf5beb494504e0f048c Mon Sep 17 00:00:00 2001 From: Xu Qiang Date: Thu, 7 Nov 2019 16:29:55 +0800 Subject: [PATCH] drivers: support nmi by sdei ascend inclusion category: feature bugzilla: NA CVE: NA ------------ SDEI is a set of interfaces used for communication between the OS and ATF. The Ascend uses the SDEI interface to implement the NMI function. NMI depends on the soft lockup detector. The OS of the Ascend runs on EL1. Signed-off-by: Xu Qiang Signed-off-by: Lijun Fang Reviewed-by: Hanjun Guo Signed-off-by: Yang Yingliang --- arch/arm64/configs/davinci_defconfig | 13 +++++++++++-- arch/arm64/configs/mini_defconfig | 14 ++++++++++++-- arch/arm64/kernel/sdei.c | 2 ++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/arch/arm64/configs/davinci_defconfig b/arch/arm64/configs/davinci_defconfig index 17c2c98145fb..0ad1e3af433e 100644 --- a/arch/arm64/configs/davinci_defconfig +++ b/arch/arm64/configs/davinci_defconfig @@ -502,7 +502,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y # CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set -# CONFIG_ARM_SDE_INTERFACE is not set +CONFIG_ARM_SDE_INTERFACE=y CONFIG_DMIID=y # CONFIG_DMI_SYSFS is not set # CONFIG_FW_CFG_SYSFS is not set @@ -630,6 +630,8 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_RSEQ=y CONFIG_HAVE_CLK=y CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_NMI_WATCHDOG=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_ARCH=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y @@ -3693,7 +3695,14 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y # # Debug Lockups and Hangs # -# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 +CONFIG_SDEI_WATCHDOG=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=1 CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set diff --git a/arch/arm64/configs/mini_defconfig b/arch/arm64/configs/mini_defconfig index 83f160925e0a..8f047d42cfed 100644 --- a/arch/arm64/configs/mini_defconfig +++ b/arch/arm64/configs/mini_defconfig @@ -489,7 +489,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y # CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set -# CONFIG_ARM_SDE_INTERFACE is not set +CONFIG_ARM_SDE_INTERFACE=y CONFIG_DMIID=y # CONFIG_DMI_SYSFS is not set # CONFIG_FW_CFG_SYSFS is not set @@ -560,6 +560,8 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_RSEQ=y CONFIG_HAVE_CLK=y CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_NMI_WATCHDOG=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_ARCH=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y @@ -3167,7 +3169,15 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y # # Debug Lockups and Hangs # -# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 +CONFIG_SDEI_WATCHDOG=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set diff --git a/arch/arm64/kernel/sdei.c b/arch/arm64/kernel/sdei.c index ea94cf8f9dc6..ecdeb93c9e29 100644 --- a/arch/arm64/kernel/sdei.c +++ b/arch/arm64/kernel/sdei.c @@ -145,6 +145,7 @@ bool _on_sdei_stack(unsigned long sp, struct stack_info *info) unsigned long sdei_arch_get_entry_point(int conduit) { +#ifndef CONFIG_ARCH_ASCEND /* * SDEI works between adjacent exception levels. If we booted at EL1 we * assume a hypervisor is marshalling events. If we booted at EL2 and @@ -156,6 +157,7 @@ unsigned long sdei_arch_get_entry_point(int conduit) return 0; } +#endif if (IS_ENABLED(CONFIG_VMAP_STACK)) { if (init_sdei_stacks()) return 0; -- GitLab