提交 1a0094f7 编写于 作者: X Xu Qiang 提交者: Xie XiuQi

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: NXu Qiang <xuqiang36@huawei.com>
Signed-off-by: NLijun Fang <fanglijun3@huawei.com>
Reviewed-by: NHanjun Guo <guohanjun@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 6441c1fe
...@@ -502,7 +502,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y ...@@ -502,7 +502,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y
# #
CONFIG_ARM_PSCI_FW=y CONFIG_ARM_PSCI_FW=y
# CONFIG_ARM_PSCI_CHECKER is not set # CONFIG_ARM_PSCI_CHECKER is not set
# CONFIG_ARM_SDE_INTERFACE is not set CONFIG_ARM_SDE_INTERFACE=y
CONFIG_DMIID=y CONFIG_DMIID=y
# CONFIG_DMI_SYSFS is not set # CONFIG_DMI_SYSFS is not set
# CONFIG_FW_CFG_SYSFS is not set # CONFIG_FW_CFG_SYSFS is not set
...@@ -630,6 +630,8 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y ...@@ -630,6 +630,8 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_RSEQ=y CONFIG_HAVE_RSEQ=y
CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK=y
CONFIG_HAVE_HW_BREAKPOINT=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_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_ARCH_JUMP_LABEL=y
...@@ -3693,7 +3695,14 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y ...@@ -3693,7 +3695,14 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y
# #
# Debug Lockups and Hangs # 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_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
......
...@@ -489,7 +489,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y ...@@ -489,7 +489,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y
# #
CONFIG_ARM_PSCI_FW=y CONFIG_ARM_PSCI_FW=y
# CONFIG_ARM_PSCI_CHECKER is not set # CONFIG_ARM_PSCI_CHECKER is not set
# CONFIG_ARM_SDE_INTERFACE is not set CONFIG_ARM_SDE_INTERFACE=y
CONFIG_DMIID=y CONFIG_DMIID=y
# CONFIG_DMI_SYSFS is not set # CONFIG_DMI_SYSFS is not set
# CONFIG_FW_CFG_SYSFS is not set # CONFIG_FW_CFG_SYSFS is not set
...@@ -560,6 +560,8 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y ...@@ -560,6 +560,8 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_RSEQ=y CONFIG_HAVE_RSEQ=y
CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK=y
CONFIG_HAVE_HW_BREAKPOINT=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_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_ARCH_JUMP_LABEL=y
...@@ -3167,7 +3169,15 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y ...@@ -3167,7 +3169,15 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y
# #
# Debug Lockups and Hangs # 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_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
......
...@@ -145,6 +145,7 @@ bool _on_sdei_stack(unsigned long sp, struct stack_info *info) ...@@ -145,6 +145,7 @@ bool _on_sdei_stack(unsigned long sp, struct stack_info *info)
unsigned long sdei_arch_get_entry_point(int conduit) 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 * SDEI works between adjacent exception levels. If we booted at EL1 we
* assume a hypervisor is marshalling events. If we booted at EL2 and * 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) ...@@ -156,6 +157,7 @@ unsigned long sdei_arch_get_entry_point(int conduit)
return 0; return 0;
} }
#endif
if (IS_ENABLED(CONFIG_VMAP_STACK)) { if (IS_ENABLED(CONFIG_VMAP_STACK)) {
if (init_sdei_stacks()) if (init_sdei_stacks())
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册