2.基于PMU的NMI perf event,当PMU的计数器溢出时会触发NMI中断,对应的中断处理例程是 kernel/watchdog.c: watchdog_overflow_callback(),hard lockup detector就在其中,它会检查上述hrtimer的中断次数(hrtimer_interrupts)是否在保持递增,如果停滞则表明hrtimer中断未得到响应,也就是发生了hard lockup。 因为有些系统...
在smpboot_thread_fn()函数中,会先调用setup回调,即watchdog_enable()函数,初始化一个高精度定时器,设置工作任务为watchdog_timer_fn()函数。 watchdog_nmi_enable()为弱定义,本代码配置中没有配置CONFIG_HARDLOCKUP_DETECTOR,所有没有走/kernel/watchdog_hld.c里面的函数。 修改当前线程的优先级和调度策略:(...
在watchdog_nmi_enable中调用了perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL); watchdog_nmi_enable|-->wd_attr->sample_period =hw_nmi_get_sample_period(watchdog_thresh);|-->perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_call...
点击(此处)折叠或打开 staticintwatchdog_enable(intcpu) { struct task_struct*p=per_cpu(softlockup_watchdog,cpu); interr=0; /*enable the perf event*/ err=watchdog_nmi_enable(cpu); /*Regardless oferrabove,fall throughandstart softlockup*/ /*create the watchdog thread*/ if(!p){ //创建...
- 同样作为NMI Watchdog,SDEI Watchdog的优先级高于PMU Watchdog,因此要禁用SDEI Watchdog才会使能PMU Watchdog;虚拟机不支持SDEI Watchdog,因此要注意通过配置内核参数将其禁用 ### 41.3 操作步骤 针对ARM架构虚拟机配置NMI Watchdog的操作步骤如下: 1. 在虚拟机的引导配置文件grub.cfg中添加如下参数:nmi_watchd...
err=watchdog_nmi_enable(cpu); /*Regardless oferrabove,fall throughandstart softlockup*/ /*create the watchdog thread*/ if(!p){ //创建watchdog内核线程 p=kthread_create(watchdog,(void*)(unsigned long)cpu,"watchdog/%d",cpu); if(IS_ERR(p)){ ...
on_each_cpu(enable_ioapic_nmi_watchdog_single,NULL,1);touch_nmi_watchdog(); } 開發者ID:12rafael,項目名稱:jellytimekernel,代碼行數:5,代碼來源:nmi.c 示例10: sec_debug_panic_handler ▲點讚 1▼ staticintsec_debug_panic_handler(struct notifier_block *nb,unsignedlongl,void*buf){unsignedint...
=> watchdog_enable() ``` - step1: 初始化用于hardlockup的perf事件 - step2: 初始化高精度时钟 ## Hardlockup的Perf事件 X86平台很巧妙的利用PMI的NMI模式,实现hardlockup检测。 ### 事件的配置 NMI watchdog所需的Perf事件创建逻辑如下: ```c ...
上面的的补丁将sdei_cpuhp_up/sdei_cpuhp_down的调用时机从CPUHP_AP_ARM_SDEI_STARTING后移到了CPUHP_AP_ONLINE_DYN,导致sdei watchdog事件的register在enable之后,enable时事件还未register,所以sdei watchdog enable会失败 系统启动时的事件注册是在lockup_detector_init->watchdog_nmi_probe里面注册,所以系统启动...
NMIIE Bit4 NMI中断允许。该位允许NMI中断 0 中断禁止 1 中断允许 WDTIE Bit0 WDT中断允许位,该位允许WDTIFG的定时器模式中断,在看门狗模式下,该位不必设置。 0 中断禁止 1 中断允许 IFG1 中断标志寄存器1 NMIIFG Bit4 NMI中断标志。NMIIFG必须由软件清除。