获取方法:setpci -s <BDF> 0x10.L=0xFFFFFFFF 写全 1 后 0x10.L 回读;或对未分配的设备直接 lspci -xxx 查看。64 位 BAR 可追加高 32 位(低 32 位 高 32 位)或粘贴 8 字节小端流。

预设:

BAR 解码规则速记

  • Bit 0 = 0 为 Memory BAR,= 1 为 I/O BAR(I/O 单个 BAR 最大 256 字节)
  • Memory BAR:Bit 1 = 1 表示 64 位地址(占用相邻两个 BAR 槽位),Bit 2 = 1 表示可预取
  • 大小 = ~(回读值 & 掩码) + 1:Memory 掩码 0xFFFFFFF0,I/O 掩码 0xFFFFFFFC;大小同时就是对齐要求
  • 固件分配时按大小对齐放置 BAR,因此某些地址区间会留下对齐空洞(见"地址规划"标签页)
  • Resized BAR:若设备带 Resizable BAR Capability(ExtCapID 0x15),BAR 可软件重设为更大粒度