uevent文件是空的,lspci列不出来pci设备class

busybox-1.20.22
[root@zxfirewall:~]$lspci 
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000
(null) Class 0000: 0000:0000

可能是CONFIG_HOTPLUG没开启
lib/Makefile中
lib-$(CONFIG_HOTPLUG) += kobject_uevent.o

开启方法
CONFIG_HOTPLUG
General setup  --->  
  [*] Support for hot-pluggable devices


另:

PCI 全称 Peripheral Component Interconnect,本地话叫外围设备互联,顾名思义,其就是用于连接外设的,比如声卡、网卡等

现代 CPU 的速度都远远快于外围设备,这个速度间的不匹配就需要一个“连接器”(桥,Bridge)来缓冲一下。因此 CPU 都是直接和一个主桥相联,这个主桥下就是 0 号 PCI 总线。(MIPS 和主桥间是通过 64 bit SysAD 总线,在 x86 上是通过前端总线相联)。

PCI 设备寻址

PCI 设备由一个 8 bit 的总线号,一个 5 bit 的设备编号以及一个 3 bit 的功能编号来标识

因此一个主桥下最多拥有 256 个总线,这个对大型系统上而言是不够的,为此 Linux 引入 PCI 域的概念,每个 PCI 域可拥有 256 个总线,而每个总线可有 32 个设备,每个设备则可以是多功能板(如音频设备加 CD-ROM 驱动器,最多 8 个功能)。所以每个功能都可以用一个 16 bit 的值来标识,该值用作 PCI 总线内设备的唯一地址

例如在 Malta 板上,lspci 则有如下输出:

0000:00:00.0   Galileo GT64xxx Bridge(0x11ab/0x4620)
0000:00:0a.0   Intel PIIX4 Bridge (0x8086/0x7110)
0000:00:0a.1   Intel PIIX4 IDE (0x8086/0x7111)
0000:00:0a.2   Intel PIIX4 USB (0x8086/0x7112)
0000:00:0a.3   Intel PIIX4 Power (0x8086/0x7113)
0000:00:0b.0   AMD PCNET32 ethernet (0x1022/0x2000)
0000:00:0c.0   Crystal sound card (0x1013/0x6005)

0000 即为 PCI 域
00 则为 PCI Bus 号
00, 0a, 0b, 0c 则为设备号
0, 1, 2, 3 则为功能号,其皆属于 0a 这个设备,则 IDE, USB, Power 皆在同一 PIIX4 桥内



原文地址:https://www.cnblogs.com/mull/p/4477816.html