函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\nmi.c Create Date:2022-07-27 08:34:43
Last Modify:2022-05-22 06:29:32 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:do_nmi

函数原型:__attribute__((__externally_visible__)) notrace void do_nmi(struct pt_regs *regs, long error_code)

返回类型:void

参数:

类型参数名称
struct pt_regs *regs
longerror_code
513  如果IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_SMP)且cpu_is_offline(当前cpu ID())则返回
516  如果Operations with implied preemption/interrupt protection. These* operations can be used without worrying about preemption or interrupt.(nmi_state)不等于NMI_NOT_RUNNING
517  抢占保护下的写CPU(nmi_state, NMI_LATCHED)
518  返回
520  抢占保护下的写CPU(nmi_state, NMI_EXECUTING)
521  抢占保护下的写CPU(nmi_cr2, read_cr2())
522  nmi_restart :
531  如果此条件成立可能性小(为编译器优化)(is_debug_stack(sp))则
532  debug_stack_set_zero()
533  抢占保护下的写CPU(In x86_64, we need to handle breakpoint -> NMI -> breakpoint, 1)
537  nmi_enter()
539  inc_irq_stat(__nmi_count)
541  如果非ignore_nmisdefault_do_nmi(regs)
544  nmi_exit()
547  如果此条件成立可能性小(为编译器优化)(Operations with implied preemption/interrupt protection. These* operations can be used without worrying about preemption or interrupt.(In x86_64, we need to handle breakpoint -> NMI -> breakpoint))则
548  debug_stack_reset()
549  抢占保护下的写CPU(In x86_64, we need to handle breakpoint -> NMI -> breakpoint, 0)
553  如果此条件成立可能性小(为编译器优化)(Operations with implied preemption/interrupt protection. These* operations can be used without worrying about preemption or interrupt.(nmi_cr2) != read_cr2())则write_cr2(Operations with implied preemption/interrupt protection. These* operations can be used without worrying about preemption or interrupt.(nmi_cr2))
555  如果this_cpu_dec_return(nmi_state)则转到:nmi_restart
558  如果ser_mode(regs) determines whether a register set came from user* modemds_user_clear_cpu_buffers - Mitigation for MDS and TAA vulnerability* Clear CPU buffers if the corresponding static key is enabled