Linux内核机器ID,linux-如何强制内核重新读取/重新初始化PCI设备ID?

我的机器(正在运行Linux内核3.2.38的计算机)在引导时具有错误的PCI设备的子系统ID(子设备和子供应商ID).如果我然后在系统仍处于启动状态(即热插拔)时物理地拔出PCI设备并重新插入,则它将获得正确的ID.

请注意,错误的子设备ID和子供应商ID与设备的设备ID和供应商ID相同(请参见下面的lspci输出中的前两行).

以下是热插入设备之前和之后lspci -vvnn的输出:

热插拔之前:

0b:0f.0 Bridge [0680]: Device [1a88:4d45] (rev 05)

Subsystem: Device [1a88:4d45]

Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-

Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR-

Latency: 32 (250ns min, 63750ns max)

Interrupt: pin A routed to IRQ 10

Region 0: I/O ports at 2100 [size=256]

Region 1: I/O ports at 2000 [size=256]

Region 2: Memory at 92920000 (32-bit, non-prefetchable) [size=64]

热插拔后:

0b:0f.0 Bridge [0680]: Device [1a88:4d45] (rev 05)

Subsystem: Device [007d:5a14]

Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-

Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR-

Interrupt: pin A routed to IRQ 10

Region 0: I/O ports at 2100 [disabled] [size=256]

Region 1: I/O ports at 2000 [disabled] [size=256]

Region 2: [virtual] Memory at 92920000 (32-bit, non-prefetchable) [size=64]

我的问题:是否有一种方法可以在不热插拔设备的情况下固定ID?例如强制内核重新读取PCI设备ID,例如通过执行PCI总线重新扫描/重新枚举/重新配置?

任何帮助将不胜感激.谢谢.

PS.请注意,该问题实际上与内核/软件无关,因为即使启动到UEFI内部Shell中也存在该问题.

PPS.在这种情况下,PCI设备为MEN F206N,“我的机器”为MEN F22P

解决方法:

您可以通过以下方式强制重新扫描PCI:

#回声1> / sys /总线/ pci /重新扫描

标签:pci-e,pci,linux,pci-bus

来源: https://codeday.me/bug/20191029/1961621.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值