/ 详情

【SP2】x86物理机acpi_cpufreq 驱动加载失败,但是不报错

Accepted
Bug
Opened this issue  
2021-05-20 10:22

【环境信息】
系统:x86_64物理机
转测20.03-LTS-SP2第二轮版本
【问题复现步骤】
挂载OS镜像,软件选择处选择虚拟化
安装成功后启动
modprobe acpi_cpufreq
lsmod | grep cpufreq
【预期结果】
模块加载成功,lsmod可以查看到模块或者模块加载失败,modprobe有FAIL打印
【实际结果】
输入图片说明
输入图片说明

Attachments
baizhilaoda 2021-05-20 10:20
baizhilaoda 2021-05-20 10:20

Comments (10)

baizhilaoda created缺陷
baizhilaoda set priority to Secondary
baizhilaoda set related repository to openEuler/kernel
展开全部操作日志

Hey baizhilaoda, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot .
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

openeuler-ci-bot added
 
sig/Kernel
label

acpi_cpufreq 肯定没加载上的。

目前 X86 使用的调频驱动都是 intel_pstate 调频驱动

1 首先说你目录不存在的问题


systemd 刚开始去检查 /sys/module/acpi_cpufreq 的目录,但是这个驱动没有加载,因此不会有这个目录。

将该 CONFIG 设置成 Y
这个目录就正常有了

输入图片说明

但是 initstate 这个目录是不会有的,因为不是按照模块加载的。

2 其次说modprobe 驱动加载的问题


调试驱动加载过程

perf probe layout_and_allocate
perf probe  find_module_sections
echo 1 >  /sys/kernel/debug/tracing/events/module/module_load/enable 

开启initcall 调试

echo 1 >  /sys/module/kernel/parameters/initcall_debug
echo 1 >   /sys/kernel/debug/tracing/events/initcall/enable

输入图片说明

可以看到驱动其实返回了 -17

21 #define EEXIST          17      /* File exists */

输入图片说明

perf trace modprobe acpi-cpufreq

  1.747 ( 0.004 ms): modprobe/3833 mmap(len: 453137, prot: READ, flags: PRIVATE, fd: 3                   ) = 0x7fa9b8b92000
     1.752 (21.456 ms): modprobe/3833 finit_module(fd: 3</usr/lib/modules/4.19.90+/kernel/drivers/cpufreq/acpi-cpufreq.ko>, uargs: 0x562611d1f410) = -1 EEXIST File exists
    23.216 ( 0.005 ms): modprobe/3833 munmap(addr: 0x7fa9b8b92000, len: 453137                              ) = 0
    23.223 ( 0.002 ms): modprobe/3833 close(fd: 3</usr/lib/modules/4.19.90+/kernel/drivers/cpufreq/acpi-cpufreq.ko>) = 0
    23.227 ( 0.006 ms): modprobe/3833 munmap(addr: 0x7fa9b8d41000, len: 360471                              ) = 0
    23.235 ( 0.008 ms): modprobe/3833 munmap(addr: 0x7fa9b8c77000, len: 823906                              ) = 0
    23.245 ( 0.008 ms): modprobe/3833 munmap(addr: 0x7fa9b8c01000, len: 479339                              ) = 0
    23.255 ( 0.004 ms): modprobe/3833 munmap(addr: 0x7fa9b92d0000, len: 21223                               ) = 0
    23.261 ( 0.003 ms): modprobe/3833 munmap(addr: 0x7fa9b92cd000, len: 9854                                ) = 0
    23.284 (         ): modprobe/3833 exit_group(            

可以看到 modprobe 不会把 EEXIST 当成错误(因为在他看来,你的设备已经找到了合适的驱动)

使用 insmod 可以看到实际的返回信息

insmod acpi-cpufreq.ko
insmod: ERROR: could not insert module acpi-cpufreq.ko: File exists

至于 systemd 在启动阶段,为什么要去插入和读取 acpi_cpufreq 驱动。
麻烦找负责 systemd 的兄弟确认下

该错误没啥实际影响。
建议 issue 关掉吧。谢谢

成坚 (CHENG Jian) changed issue state from 待办的 to 已完成
baizhilaoda changed issue state from 已完成 to 已验收

Sign in to comment

Status
Assignees
Projects
Milestones
Pull Requests
Successfully merging a pull request will close this issue.
Branches
Planed to start   -   Planed to end
-
Top level
Priority
Duration (hours)
Confirm
参与者(3)
5329419 openeuler ci bot 1578984659