
ERR003751
Chip Errata for the i.MX 6Dual/6Quad and i.MX 6DualPlus/6QuadPlus, Rev. 6.1, 06/2016
144
NXP Semiconductors
Description:
When multiple PM_PME TLPs are received by an RC, the PME Requester ID of the first received
PM_PME is overwritten with the Requester ID of the subsequent PM_PME in the PME Requester
ID field of the Root Status register. The correct operation is to store the Requester ID of the initial
PM_PME and only update the PME Requester ID field, once software has cleared the PME Status
bit to acknowledge the receipt of the initial PM_PME TLP.
Following is an example scenario for this erratum:
1. Send two PM_PME TLPs with different Requester IDs upstream to the core.
2. Read back the contents of the Root Status Register. The PME Status and PME Pending bits
should both be set to 1. The Requester ID in the PME Requester ID field corresponds to the
second PM_PME and not the initial PM_PME received by the core.
Projected Impact:
The Requester ID of the initial PM_PME is lost and not correctly stored in the Root Status register.
Workarounds:
If multiple devices requested a power mode state change, possibly some of them would not get
served if the requester ID is overwritten. However, according to Section 5.3.3.3 of PCIe
Specification, all agents that are capable of generating PM_PME must implement a PME Service
Timeout mechanism to ensure that their PME requests are serviced within a reasonable amount of
time.
If there is a time-out, the PM_PME TLP should be re-sent. So, this should not be an issue.
Proposed Solution:
No fix scheduled
Linux BSP Status:
Software workaround not implemented in Linux BSP. Functionality or mode of operation in which
the erratum may manifest itself is not used.
ERR003751
PCIe: 9000413207—PME Requester ID overwritten when two PMEs
are received consecutively