一个modalias匹配不同的设备正常吗?

一个modalias匹配不同的设备正常吗?

最近又有网友问为什么他们正在加载fjes模块。当我试图理解这个问题时,我意识到 Linux 也在为我加载相同的模块。

现在,这是模块的信息modinfo

filename:       /lib/modules/4.8.0-2-amd64/kernel/drivers/net/fjes/fjes.ko
version:        1.1
license:        GPL
description:    FUJITSU Extended Socket Network Device Driver
author:         Taku Izumi <[email protected]>
srcversion:     3411C5E01C7BDA50105EEE7
alias:          acpi*:PNP0C02:*
depends:        
intree:         Y
vermagic:       4.8.0-2-amd64 SMP mod_unload modversions 
signat:         PKCS#7
signer:         
sig_key:        
sig_hashalgo:   md4

我觉得这很奇怪。我的网络适配器是 Realtek PCI Express 卡,模块支持它r8169

我检查的第一件事是这个模块是否已被任何特定的包添加。我正在进行 Debian 测试,所以我用dpkg -S.它由内核镜像包本身提供:

# dpkg -S /lib/modules/4.8.0-2-amd64/kernel/drivers/net/fjes/fjes.ko
linux-image-4.8.0-2-amd64: /lib/modules/4.8.0-2-amd64/kernel/drivers/net/fjes/fjes.ko

我注意到这个模块的模态别名看起来非常通用。它甚至没有指定供应商。所以我决定看看哪些设备/sys/devices具有与该字符串匹配的模态别名。我得到了五个结果,因此我编写了一个小脚本来打印有关它们的更多信息。这就是我得到的:

./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/PNP0C02:03
    modalias:      acpi:PNP0C02:
    path:          \_SB_.PCI0.PDRC
    physical_node -> ../../../../pnp0/00:08

./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C02:01
    modalias:      acpi:PNP0C02:
    path:          \_SB_.PCI0.LPCB.SIO1
    physical_node -> ../../../../../pnp0/00:04

./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/INT3F0D:00
    modalias:      acpi:INT3F0D:PNP0C02:
    path:          \_SB_.PCI0.LPCB.CWDT
    physical_node -> ../../../../../pnp0/00:03

./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C02:02
    modalias:      acpi:PNP0C02:
    path:          \_SB_.PCI0.LPCB.RMSC
    physical_node -> ../../../../../pnp0/00:06

./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C02:00
    modalias:      acpi:PNP0C02:
    path:          \_SB_.PCI0.LPCB.LDRC
    physical_node -> ../../../../../pnp0/00:01

上面的数据是/sys/devices/....行modaliaspath是这些文件的内容,并且physical_node是指向 中目录的符号链接的目标/sys/devices

它们中的每一个确实都与不同的物理设备相关联,但我不知道它们是什么。我只能说我的系统上安装的其他驱动程序模块没有匹配的别名acpi:PNP0C02:

这些是我留下的问题:

  1. PCI0.LPCBACPI 树中的 是什么意思?我从 Ubuntu 常见问题解答中推断出ACPI 技巧和技巧那它或许(或者我应该推断它应该?)与电池有关。然而,这是一台台式电脑,而不是笔记本电脑;
  2. 为什么我有三个不同的设备,它们都别名为同一设备?这不是给内核带来麻烦吗?
  3. 模块是否fjes配置不当,无法使用这样的模态别名?应该打开一个错误吗?

相关内容