【PCIe 5.0 - 103】SR-IOV 【4】

承接【PCIe 5.0 - 102】SR-IOV【3】

PCIe 系列SR-IOV导航:
【PCIe 5.0 - 100】SR-IOV【1】
【PCIe 5.0 - 101】SR-IOV【2】
【PCIe 5.0 - 102】SR-IOV【3】
【PCIe 5.0 - 103】SR-IOV 【4】

NVMe 2.0b 系列SR-IOV导航:

【NVMe2.0b 14-9】NVMe SR-IOV

9.4 SR-IOV Error Handling

  SR-IOV设备利用第6.2节中定义的Error Reporting机制。非特定function的错误仅记录在PF中。

  6.2节定义了两种错误报告示例:baseline Capability和Advanced Error Reporting Capability。所有PCI Express设备都需要baseline error reporting capabilities,并定义了最低错误报告要求。Advanced Error Reporting Capability是可选的,定义为更强大的错误报告,并通过特定的PCI Express Capability结构实现。

9.4.1 Baseline Error Reporting

  所有SR-IOV设备都必须支持baseline error reporting capabilities,并进行一些修改以实现降低成本和实现复杂性的目标。

  这些控制位仅在PF中有意义。 VF在决定生成error Messages时应使用相关PF中的错误报告控制位。

以下字段在 VF 中是RsvdP:

1. Command register (9.3.4.1.3)

  • SERR# Enable
  • Parity Error Response

2. Device Control register (9.3.5.4)

  • Correctable Reporting Enable
  • Non-Fatal Reporting Enable
  • Fatal Reporting Enable
  • Unsupported Request (UR) Reporting Enable

  每个 VF 应实现一种机制以提供独立于任何其他Function的错误状态。这对于为特定Function的错误提供 SI 隔离是必要的。

  必须在每个 VF 中实现以下baseline error reporting状态位:

1. Status register (9.3.4.1.4)

  • Master Data Parity Error
  • Signaled Target Abort
  • Received Target Abort
  • Received Master Abort
  • Signaled System Error
  • Detected Parity Error

2. Device Status register (9.3.5.5)

  • Correctable Error Detected
  • Non-Fatal Error Detected
  • Fatal Error Detected
  • Unsupported Request Detected

  每个 VF 在发出错误信号时都应使用自己的Routing ID。

9.4.2 Advanced Error Reporting

  Advanced Error Reporting Capability是可选的。如果AER未在PF中实施,也不得在相关VF中实施。如果AER在PF中实现,它在VF中是可选的。

  第6.2.4节将错误分类为Function-specific和non-Function-specific。每个实现Advanced Error Reporting Capability的VF都必须为特定Function的错误维护自己的错误报告状态。

9.4.2.1 VF Header Log

  在VF中实现AER的设备可以在与单个PF关联的VF之间共享Header Log Registers。有关详细信息,参阅第9.4.2.10节。

  PF的Header logging Registers独立于其关联的VF,且必须使用专用存储空间来实现。

  在实现一组减少的Header Log Registers时,Function可能没有空间来记录与错误相关的header。在这种情况下,Function应按照第6.2.4节的要求更新Uncorrectable Error Status Register,Advanced Error Capabilities和Control register;但是,当读取Header Log Register时,它应返回全1以指示溢出情况并且没有记录header。

9.4.2.2 Advanced Error Reporting Capability Changes

  图7-122描述了 AER extended capability。

9.4.2.3 Advanced Error Reporting Extended Capability Header Changes (Offset 00h)

  该寄存器包含 PCI Express Extended Capability ID、 Capability Version和Next Capability Offset。 这些字段没有改变,并在第 7.8.4.1 节中描述。

9.4.2.4 Uncorrectable Error Status Register Changes (Offset 04h)

  Uncorrectable Error Status寄存器指示单个错误的错误检测状态。定义为non-Function-specific的错误记录在PF中。VF中仅记录Function-specific的错误。

  除非在表9-33中注明,PF和VF功能在第7.8.4.2节中定义。

表9-33 Uncorrectable Error Status Register Changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
4Data Link Protocol Error StatusBase0b
5Surprise Down Error StatusBase0b
13Flow Control Protocol Error StatusBase0b
17Receiver Overflow StatusBase0b
18Malformed TLP StatusBase0b
19ECRC Error StatusBase0b

9.4.2.5 Uncorrectable Error Mask Register Changes (Offset 08h)

  除非在表9-34中注明,PF和VF功能在第 7.8.4.3 节中定义。 标记为RsvdP的VF字段,PF设置适用于VF。 标记为0b的VF字段,该错误不适用于 VF。

表9-34 Uncorrectable Error Mask Register Changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
4Data Link Protocol Error MaskBase0b
5Surprise Down Error MaskBase0b
12Poisoned TLP Received MaskBaseRsvdP
13Flow Control Protocol Error MaskBase0b
14Completion Timeout MaskBaseRsvdP
15Completer Abort MaskBaseRsvdP
16Unexpected Completion MaskBaseRsvdP
17Receiver Overflow MaskBase0b
18Malformed TLP MaskBase0b
19ECRC Error MaskBase0b
20Unsupported Request Error MaskBaseRsvdP
21ACS Violation MaskBaseRsvdP

9.4.2.6 Uncorrectable Error Severity Register Changes (Offset 0Ch)

  除非在表9-35中注明,PF和VF功能在第7.8.4.4节中定义。 标记为RsvdP的VF字段,PF设置适用于 VF。 标记为0b的VF字段,该错误不适用于VF。

表9-35 Uncorrectable Error Severity Register Changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
4Data Link Protocol Error SeverityBase0b
5Surprise Down Error SeverityBase0b
12Poisoned TLP Received SeverityBaseRsvdP
13Flow Control Protocol Error SeverityBase0b
14Completion Timeout Error SeverityBaseRsvdP
15Completer Abort Error SeverityBaseRsvdP
16Unexpected Completion Error SeverityBaseRsvdP
17Receiver Overflow SeverityBase0b
18Malformed TLP SeverityBase0b
19ECRC Error SeverityBase0b
20Unsupported Request Error SeverityBaseRsvdP
21ACS Violation SeverityBaseRsvdP

9.4.2.7 Correctable Error Status Register Changes (Offset 10h)

  Correctable Error Status寄存器指示各个可纠正错误的错误检测状态。定义为non-Function-specific的错误记录在PF中。VF中仅记录Function-specific的错误。

  除非表9-36中另有说明,PF和VF功能在第7.8.4.5节中定义。

表9-36 Correctable Error Status Register Changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
0Receiver Error StatusBase0b
6Bad TLP StatusBase0b
7Bad DLLP StatusBase0b
8REPLAY_NUM Rollover StatusBase0b
12Replay Timer Timeout StatusBase0b
15Header Log Overflow Status
如果 VF 实现了 Header Log 共享(9.4.2.1节),该位硬连线到 0b。
BaseBase/0b

9.4.2.8 Correctable Error Mask Register Changes (Offset 14h)

  除非在表 9-37 中注明,PF和VF功能在7.8.4.6 节中定义。 对于标记为 RsvdP 的VF字段,PF设置适用于VF。

表9-37 Correctable Error Mask Register Changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
0Receiver Error MaskBaseRsvdP
6Bad TLP MaskBaseRsvdP
7Bad DLLP MaskBaseRsvdP
8REPLAY_NUM Rollover MaskBaseRsvdP
12Replay Timer Timeout MaskBaseRsvdP
13Advisory Non-Fatal Error MaskBaseRsvdP
15Header Log Overflow Mask
如果 VF 实现了 Header Log 共享(9.4.2.1节),该位硬连线到 0b。
BaseBase/RsvdP

9.4.2.9 Advanced Error Capabilities and Control Register Changes (Offset 18h)

  除非在表 9-38 中注明,PF和VF功能在7.8.4.7 节中定义。 对于标记为 RsvdP 的VF字段,PF设置适用于VF。

表9-38 Advanced Error Capabilities and Control Register Changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
6ECRC Generation EnableBaseRsvdP
8ECRC Check EnableBaseRsvdP
9Multiple Header Recording Capable -
如果VF实现了Header Log共享(9.4.2.1节),该位硬连线到 0b。
BaseBase / 0b
10Multiple Header Recording Enable -
如果VF实现了Header Log共享(9.4.2.1节),该位为RsvdP。
BaseBase /RsvdP
11TLP Prefix Log Present - 如果 VF实现Header Log共享(9.4.2.1 节),当 Header Log 由于溢出条件而包含所有 1 时,该位为 0b。BaseBase

9.4.2.10 Header Log Register Changes (Offset 1Ch)

  Header Log寄存器捕获TLP header来检测相对应的错误。另见第PCIe Base 9.4.2.1节。

  在VF中实现AER的设备可以在与单个PF关联的VF之间共享Header Log寄存器。共享Header Log必须存储至少一个header。

  PF的Header logging Registers独立于其关联的VF,并且必须使用专用存储空间来实现。

  当在VF中检测到错误时,应按照第6.2节的规定记录错误。如果实现了一组共享的Header Log寄存器,则VF可能没有空间来记录header。在这种情况下,VF应按照第6.2节的要求更新其Uncorrectable
Error Status Register和Advanced Error Capabilities和Control register;但是,当读取该VF的Header Log Register时,它应返回全1以指示溢出情况。

  当VF的First Error Pointer有效时,VF的header log entry应被锁定并保持有效。如第6.2节中所定义,当Uncorrectable Error Status寄存器的相应位被Set时,First Error Pointer寄存器有效。当header log entry被锁定时,其他错误不应覆盖此VF或任何其他VF的锁定条目。当一个header entry被解锁时,它可以为任何共享header logs的VF记录一个新的错误。

  除表9-39中另有说明,PF和VF功能在第7.8.4.8节中定义。

表9-39 Header Log Register changes
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
127:0与错误相关的 TLP Header(附加要求如上所述)BaseBase

9.4.2.11 Root Error Command Register Changes (Offset 2Ch)

  Device不用该寄存器。

9.4.2.12 Root Error Status Register Changes (Offset 30h)

  Device不用该寄存器。

9.4.2.13 Error Source Identification Register Changes (Offset 34h)

  Device不用该寄存器。

9.4.2.14 TLP Prefix Log Register Changes (Offset 38h)

  对于PF和VF,如果支持End-End TLP Prefixes,则应该实现该寄存器。

  对于VF,如果实现了一组共享的Header Log寄存器(第9.4.2.1节),当Header Log由于溢出条件而包含全1时,该寄存器的内容是未定义的。

9.5 SR-IOV Interrupts

  支持SR-IOV的设备使用第6.1节中定义的相同中断信号机制。

9.5.1 Interrupt Mechanisms

  信号中断的三种方法:

  • INTx
  • MSI
  • MSI-X

  PF可以实现INTx,VF不得实现INTx。如果请求中断资源,PF和VF应实现MSI或MSI-X或两者都实现。每个PF和VF都必须实施自己独特的中断功能。

9.5.1.1 MSI Interrupts

  除非表9-40中另有说明, MSI Capability和PF和VF功能在第7.7节中定义。

表9-40 MSI Capability: Message Control
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
8Per-Vector Masking Capable1b1b

9.5.1.2 MSI-X Interrupts

  MSI-X Capability在第7.7节中定义并在图9-24中描述。
MSI-X Capability

图9-24 MSI-X Capability

  PF和VF功能与7.7.2 节中定义的 Function 的功能相同。

  注意,对于VF,Table Offset和PBA Offset值是相对于 VF 的Memory地址空间的。

9.5.1.3 Address Range Isolation

  如果映射了MSI-X表或MSI-XPBA地址空间的BAR还映射了与MSI-X结构无关的其他可用地址空间,其他地址空间中使用的位置(例如,用于 CSR)不得与任一 MSI-X 结构所在的位置共享任何自然对齐的System Page Size地址范围。允许MSI-X表和MSI-X PBA共存于自然对齐的System Page Size地址范围内,但它们不得相互重叠。

9.6 SR-IOV Power Management

  本节定义 PCI Express SR-IOV power management capabilities和协议。

  如第5章所述,PF 需要实现Power Management Capability。

  而对于VF,Power Management Capability是可选的。

9.6.1 VF Device Power Management States

  如果 VF 没有实现 Power Management Capability,则 VF 的行为就好像它已被program到其相关 PF 的等效power state。

  如果 VF 实现了Power Management Capability,除非在第 9.6.4 节中另有注明,则功能在第 7.5 节中定义。

  如果 VF 实现了Power Management Capability,如果 PF Set到比 VF 更低的power state,则Device行为未定义。 软件应通过在降低其相关 PF 的power state之前将所有 VF 置于更低的power state来避免这种情况。

  处于 D0 状态的 VF 处于 D0active 状态时,VF 需要已经完成其内部初始化并且 VF 的Bus Master Enable位被设置(参见第 9.3.4.1.3 节)或 SR-IOV Control Extended Capability中的 VF MSE 位( 请参阅第 9.3.3.3 节)被设置。 当出现以下任何一种情况时,VF 的内部初始化(internal initialization)必须已经完成:

  • VF已成功响应(未返回CRS)到Configuration Request。
  • 向VF发出FLR后,至少满足以下条件之一:
    • 发出FLR以来已过去至少1.0秒。
    • VF支持Function Readiness Status,并且在发出FLR 后,收到来自 VF 的带有Reason Code FLR Completed的 FRS Message。
    • 自发FLR 以来,至少已经过了 FLR Time 。 FLR Time 是
      (1) 与 VF 相关的Readiness Time Reporting capability中的 FLR Time 值或
      (2) 由系统软件/固件确定的值[比如ACPI 表]
  • 在 PF 中设置 VF Enable 后,至少满足以下条件之一:
    • 设置 VF Enable 后至少 1.0 秒。
    • PF支持Function Readiness Status,并且在设置VF Enable后,收到来自PF的FRS Message,Reason Code为VF Enabled。
  • 将VF 从 D3Hot转换为 D0 后,至少满足以下条件之一:
    • 自发出进入D0的请求以来,至少已过去 10 毫秒。
    • VF 支持Function Readiness Status,并且在发出进入 D0 的请求后,收到来自 VF 的 FRS Message,Reason Code 为 D3Hot to D0 Transition Completed。
    • 自发出进入 D0 的请求以来,至少已经过了 D3Hot 到 D0 时间。 D3Hot 到 D0 时间是
      (1) 与 VF 关联的 Readiness Time Reporting capability 中的 D3Hot 到 D0 时间,或
      (2) 由系统软件/固件决定的值

9.6.2 PF Device Power Management States

  PF 的power management state (D-state) 对其相关的 VF 具有全局影响。如果 VF 没有实现Power Management Capability,那么它的行为就好像它处于其关联 PF 的等效 power state。

  如果 VF 实现了 Power Management Capability,如果 PF 置于比 VF 更低的 power state,则Device行为未定义。软件应通过在降低其相关连 PF 的 power state之前将所有 VF 置于更低的power state来避免这种情况。

当 PF 进入 D3Hot 状态时:

  • 如果 No_Soft_Reset 位清零,则 PF 在 D3Hot 到 D0 转换时执行内部reset,并且其所有配置状态返回成默认值。

    注意:Reset PF 会重置 VF Enable,这意味着 VF 不再存在,并且在 D3Hot 到 D0 转换完成后,任何 VF 特定上下文都将丢失。
  • 如果No_Soft_Reset 位被设置,则不会发生内部reset。 SR-IOV extended capability保持原来的状态,关联的 VF 也保持enable。

  当 PF 进入 D3Cold 状态时,VF 不再存在,任何 VF 特定上下文都将丢失,PME 事件只能由 PF 发起。

强烈建议在 Multi-Function Device 的所有 Functions 中设置 No_Soft_Reset 位。 该建议针对PF。

9.6.3 Link Power Management State

  VF Power State不影响Link Power State。

  Link Power State 仅由 PF 中的设置控制,与 VF 的 D-state 无关。

9.6.4 VF Power Management Capability

  下表列出了对 PF 和 VFs Power Management Capability 的要求。

  除非在表 9-41 和表 9-42 中注明,PF 和 VF 功能在第 7.5 节中定义。

表9-41 SR-IOV Power Management Control/Status (PMCSR)
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
14:13Data_ScaleBase00b
12:9Data_SelectBase0000b
3No_Soft_Reset - 如果 VF 实现了 Power Management Capability,则该字段的 VF 值必须与关联的 PF 值相同。BaseBase

表9-42 SR-IOV Power Management Data Register
Bit LocationPF和VF寄存器与Base的差异PF属性VF属性
7:0DataBase00000000b

9.6.5 VF EmergencyPower Reduction State

  如果 VF 中的 Emergency Power Reduction Supported 字段不为零,则该 VF 与关联的 PF 同时进入和退出 Emergency Power Reduction State。 软件可以使用 PF 中的 Emergency Power Reduction Detected 位来模拟 VF 中的相应位。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值