S/390 PCI

作者
  • Pierre Morel

版权所有,IBM 公司,2020

命令行参数和 debugfs 条目

命令行参数

  • nomio

    不使用 PCI 映射 I/O (MIO) 指令。

  • norid

    忽略 RID 字段并强制每个 PCI 功能使用一个 PCI 域。

debugfs 条目

S/390 调试功能 (s390dbf) 生成视图,将各种调试结果保存在 sysfs 目录中,格式如下

  • /sys/kernel/debug/s390dbf/pci_*/

例如

  • /sys/kernel/debug/s390dbf/pci_msg/sprintf 保存来自 PCI 事件处理的消息,例如机器检查处理和全局功能设置,例如 UID 检查。

通过将 0 到 6 之间的数字通过管道传递到 /sys/kernel/debug/s390dbf/pci_*/level 来更改日志记录级别,使其更加详细或更简洁。有关详细信息,请参阅 S390 调试功能 中的 S/390 调试功能文档。

Sysfs 条目

特定于 zPCI 功能的条目以及保存 zPCI 信息的条目。

  • /sys/bus/pci/slots/XXXXXXXX

    插槽条目是使用 PCI 功能的功能标识符 (FID) 设置的。上面描述的 XXXXXXXX 格式是 8 个十六进制数字,用 0 填充,并使用小写十六进制数字。

    • /sys/bus/pci/slots/XXXXXXXX/power

    当前支持虚拟功能的物理功能,在所有虚拟功能被删除之前无法关闭电源:echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvf

  • /sys/bus/pci/devices/XXXX:XX:XX.X/

    • function_id zPCI 功能标识符,唯一标识 Z 服务器中的功能。

    • function_handle 用于配置的 PCI 功能的低级标识符。它可能对调试很有用。

    • pchid I/O 适配器的模型相关位置。

    • pfgid PCI 功能组 ID,共享相同功能的函数使用通用标识符。PCI 组定义中断、IOMMU、IOTLB 和 DMA 特性。

    • vfn 虚拟功能号,对于虚拟功能,从 1 到 N,对于物理功能,为 0。

    • pft PCI 功能类型

    • port 端口对应于该功能所连接的物理端口。它还指示虚拟功能所连接的物理功能。

    • uid 用户标识符 (UID) 可以定义为机器配置或 z/VM 或 KVM 客户机配置的一部分。如果随附的 uid_is_unique 属性为 1,则平台保证 UID 在该实例中是唯一的,并且在系统生命周期内无法附加具有相同 UID 的设备。

    • uid_is_unique 指示是否保证用户标识符 (UID) 在此 Linux 实例中是唯一的,并且保持唯一。

    • pfip/segmentX 段确定功能的隔离。它们对应于该功能的物理路径。段越不同,功能的隔离程度越高。

枚举和热插拔

PCI 地址由四个部分组成:域、总线、设备和功能,其形式为:DDDD:BB:dd.f

  • 当不使用多功能(设置了 norid,或者固件不支持多功能)时

    • 每个域只有一个功能。

    • 域是从 LPAR 创建期间定义的 zPCI 功能的 UID 设置的。

  • 当使用多功能(未设置 norid 参数)时,zPCI 功能的寻址方式不同

    • 每个域仍然只有一个总线。

    • 每个总线最多可以有 256 个功能。

    • 多功能设备的所有功能的地址的域部分,是从 LPAR 创建期间为功能零定义的 zPCI 功能的 UID 设置的。

    • 只有在功能零(devfn 为 0 的功能)被枚举后,新功能才能使用。