Linux下通过EDAC功能检测PCIE硬件错误

发布时间:2024年01月14日

1 EDAC的作用

The ``edac`` kernel module's goal is to detect and report hardware errors that occur within the computer system running under linux.

? ? ? ? ? ? ? ? 《Documentation/admin-guide/ras.rst》

EDAC可以检测物理内存的错误 和 PCIE的错误,本文主要分析后者。

2 机理分析

2.1 创建edac专用的工作队列

edac_init();
    -> edac_workqueue_setup();
        -> alloc_ordered_workqueue();

2.2 PCIE的工作项

2.2.1 初始化工作项

edac_pci_add_device();
    -> INIT_DELAYED_WORK(&pci->work, edac_pci_workq_function);

2.2.2 工作项处理函数:?edac_pci_workq_function();

edac_pci_workq_function();
    -> pci->edac_check();
        -> edac_pci_generic_check();
            -> edac_pci_do_parity_check();
                -> edac_pci_dev_parity_test();
    -> edac_queue_work(&pci->work, delay);    //周期执行edac_pci_workq_function(),周期时间为1秒

2.2.3 获取PCIE错误的具体函数:edac_pci_dev_parity_test();

此函数会读取每个PCIE设备的配置头空间中的Status寄存器,从中读取具体的错误信息。

3 相关的模块参数:check_pci_errors

/sys/module/edac_core/parameters/check_pci_errors

4 查看错误信息:?/sys/devices/system/edac/pci/

/sys/devices/system/edac/pci/pci_nonparity_count

/sys/devices/system/edac/pci/pci_parity_count

文章来源:https://blog.csdn.net/u010936265/article/details/135525460
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。