lspci -vvv获取的PCI设备地址无效?

lspci -vvv获取的PCI设备地址无效?

我尝试读取 PCI 设备内存区域(我知道我要查找的内容是距该设备的偏移量),因此首先我尝试获取 PCI 设备内存已映射的系统内存地址。为了做到这一点,我这样做lspci-vvv我得到:

00:1a.8 Memory controller
Subsystem: Dell Device
Flags: bus master, fast devsel, latency 64, IRQ 139
Memory at 601d198000 (64-bit, non-prefetchable) [size=16K]
Memory at 601d000000 (64-bit, non-prefetchable) [size=1M]
Capabilities: <access denied>
Kernel driver in use: nvm-mem-drv

到目前为止一切顺利,现在我尝试在 dd 的帮助下查看该内存中的内容

dd if=/dev/mem iflag=skip_bytes skip=‭412803399680 bs=512 count=1 | hexdump -C

令人惊讶的是我得到的是:

dd:读取“/dev/mem”时出错:地址错误0+0 记录输入 0+0 记录输出 复制 0 个字节,9,3556e-05 秒,0,0 kB/s

我设置得“令人惊讶”,因为这种方法在其他平台上对我有用。

现在的问题是为什么DD说地址不好?我注意到的第一件事是该平台上的地址比其他平台上的地址长(恰好是两位数)。所以我想也许我传递给的是什么跳过溢出 - 我尝试通过以 512 块为单位指定“skip”来修复它,但该方法也返回地址错误。所以我在这里有点迷失,lspci 是在欺骗我还是发生了什么事? :|

PS:我还验证了内核 CONFIG_STRICT_DEVMEM 未设置。我可以很好地阅读其他地址。

相关内容