S/390 PCI

作者
  • Pierre Morel

版权所有,IBM Corp. 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

    slot 条目是使用 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 唯一标识 Z 服务器中功能的 zPCI 功能标识符。

    • 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,或者固件不支持多功能)

    • 每个域只有一个功能。

    • 域从 zPCI 功能的 UID 设置,如 LPAR 创建期间所定义的那样。

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

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

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

    • 多功能设备的所有功能的地址的域部分都从 zPCI 功能的 UID 设置,如 LPAR 创建中为功能零定义的那样。

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