久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    【PCI】PCIe高級錯誤上報能力AER(十二)

     AMS1117LIB 2025-04-29 發(fā)布于上海

     

    正文

    AER

    AER(Advanced Error Reporting)是一種用于檢測和報告PCIe設(shè)備中發(fā)生的錯誤的機制,它允許PCIe設(shè)備檢測到并報告各種類型的錯誤。錯誤類型包含Correctable Errors 和Uncorrectable errors兩種,其中Uncorrectable errors下面又分為ERR_FATAL和ERR_NONFATAL。

    • Correctable Errors:可糾正錯誤是指錯誤發(fā)生后,硬件可以自動恢復(fù),不影響正常業(yè)務(wù)。
    • Uncorrectable errors:錯誤發(fā)生后,影響設(shè)備功能,硬件不能自動恢復(fù)
      • ERR_FATAL:致命錯誤,此錯誤類型影響了PCIe link鏈路,為了防止錯誤擴散,通常會由錯誤設(shè)備的上游橋?qū)﹀e誤設(shè)備進(jìn)行復(fù)位操作
      • ERR_NONFATAL:指影響了設(shè)備功能,但是PCIe link還是穩(wěn)定的

    image

    AER功能啟動條件:

    1. 對于EP設(shè)備和RC都應(yīng)該啟動Command Register寄存器中SERR#Enable;
    2. 對于EP設(shè)備,需要將AER中不可糾正錯誤掩碼和可糾正錯誤掩碼清空;
    3. 對于EP設(shè)備,需要將Device Control Register寄存器中Correctable Error Reporting Enable、Non-Fatal Error Reporting Enable、Fatal Error Reporting Enable、Unsupported Request Reporting Enable功能打開;
    4. 對于RC,需要將AER Root Error Command Register寄存器中Correctable Error Reporting Enable、Non-Fatal Error Reporting Enable、Fatal Error Reporting Enable功能打開

    AER相關(guān)寄存器

    image

    當(dāng)Uncorrectable Error Status Register寄存器對應(yīng)Bit為1時,Uncorrectable Error Severity Register寄存器對應(yīng)Bit為1表示ERR_FATAL,為0表示ERR_NONFATAL

    Advanced Error Reporting Extended Capability Header (O?set 00h)

    image

    Bit Location Register Description
    15:0 PCI Express Extended Capability ID,PCIe擴展Cap的ID,對于AER功能,其ID為0x0001.
    19:16 Capability Version,對于支持End-End TLP Prefix的設(shè)備,這個必須為2,其他設(shè)備可填1或2.
    31:20 Next Capability O?set,下一個Cap的偏移地址。

    Uncorrectable Error Status Register (O?set 04h)

    不可糾正錯誤狀態(tài)寄存器表示PCI Express設(shè)備上單個錯誤的錯誤檢測狀態(tài)。該寄存器不同Bit置1表示檢測到特定錯誤,軟件可以通過向相應(yīng)的位寫入1b來清除錯誤狀態(tài),寄存器含義如下:

    image

    [0] Undefined

    Undefined-從該位讀取的值是未定義的。

    [3:1] Reserve

    [4] Data Link Protocol Error Status

    可能原因:發(fā)送端數(shù)據(jù)鏈路層收到了預(yù)期之外的ACK或NAK。

    數(shù)據(jù)鏈路層在發(fā)送TLP之前,發(fā)送端會將TLP封裝,加上Sequence前綴和LCRC后綴,用于保障數(shù)據(jù)鏈路層兩端報文完整性,如下圖所示。

    image

    假設(shè)上電協(xié)商之后發(fā)送端只發(fā)送了Sequence=1的一個報文,那么發(fā)送端就預(yù)期接收Sequence=1的ACK或NAK。接收端接收到這個報文之后,應(yīng)該回復(fù)一個ACK或NAK報文(假設(shè)不聚合),這個回復(fù)的報文中Sequence也必須為1。ACK/NAK的報文格式如下。

    image

    當(dāng)接收端接收到的ACK或NCK的Sequence不等于1,那么將產(chǎn)生Data Link Protocol Error,如果Data Link Protocol Error Status位對應(yīng)的mask不為1,則將Data Link Protocol Error Status位置1,并上報錯誤。

    數(shù)據(jù)鏈路層更詳細(xì)的交互流程可參考網(wǎng)址或查看PCIe體系結(jié)構(gòu)導(dǎo)讀第7.2章節(jié)。

    [5] Surprise Down Error Status (Optional)

    該狀態(tài)為可選,如果硬件不支持,則應(yīng)硬連接至0。

    由link up狀態(tài)在L0期間突然被置位,表示物理鏈路層意外斷開。這個功能一般是橋設(shè)備支持的功能,也就是說,橋下面的EP意外鏈路斷開時,橋設(shè)備可以將該Bit置1,并上報給系統(tǒng)軟件。設(shè)備未插好、暴力熱插拔都可能產(chǎn)生該錯誤。

    當(dāng)橋設(shè)備Slot Capabilities Register的Hot-Plug Surprise bit置1時(表示支持熱插拔),橋設(shè)備將不會上報這個錯誤。

    [11:6] Reserve

    [12] Poisoned TLP Received Status

    在TLP報文中,有一個EP Bit表示這個報文是否為Poisoned TLP,當(dāng)該Bit為1時,表示這個報文攜帶的Date已經(jīng)不可靠,注意,這個EP只是表征報文攜帶的數(shù)據(jù)不可靠了,與報文的Header無關(guān)。

    [13] Flow Control Protocol Error Status (Optional)

    接收端一段時間未收到更新Credit的報文或更新Credit超過限制。

    [14] Completion Timeout Status

    一個經(jīng)常碰到的錯誤。請求端發(fā)出的Non-post請求(cfg read與memory read)在規(guī)定時間內(nèi)未收到完成報文。可通過修改請求端的Device Capabilities 2 Register 寄存器來調(diào)整超時時間。

    [15] Completer Abort Status (Optional)

    響應(yīng)者接收到請求,因為某些原因無法正確響應(yīng)這個請求,將回復(fù)Completer Abort報文給請求者,并將Completer Abort Status置1。

    可能出現(xiàn)錯誤的原因:

    • 設(shè)備接收的請求,違反了設(shè)備的某些規(guī)則,比如讀BAR空間長度超出能力;
    • 設(shè)備已經(jīng)處于某種錯誤狀態(tài),無法正確響應(yīng)請求;
    • 設(shè)備接收到存在訪問控制服務(wù)錯誤(Access Control Services Error)的請求;
    • PCIe-to-PCI橋接收到針對其連接的PCI設(shè)備的請求,但是該PCI設(shè)備無法處理該請求,則PCIe-to-PCI橋回復(fù)Completer Abort報文給請求者。

    [16] Unexpected Completion Status

    當(dāng)請求者收到非預(yù)期的完成報文,將上報該錯誤。

    可能原因:

    • 請求者接收到的完成報文中的Request ID與請求者BDF不一致;
    • 請求者接收到的完成報文中的Comleter ID與所有Outstanding請求中的Request ID不一致;
    • 請求者接收到的完成報文,檢查其中Tag,發(fā)現(xiàn)并無對應(yīng)的Outstanding請求。

    image

    [17] Receiver Overflow Status (Optional)

    接收端收到的TLP多于可用的接收緩沖空間。出現(xiàn)這種問題,要么是FC有問題,要么就是接收端發(fā)送的request由問題。

    [18] Malformed TLP Status

    接受者接收到了畸形報文,則上報該錯誤。

    可能原因:

    • 設(shè)備接收到Message報文,檢查發(fā)現(xiàn)流量類型不是TC 0;
    • 設(shè)備接收到TLP中TD位是1,但TLP又不帶ECRC,或TLP中TD位是0,但TLP又帶ECRC;
    • 設(shè)備接收到Completer報文,但報文攜帶數(shù)據(jù)長度超過設(shè)備協(xié)商的MPS(Max Payload Size);
    • 設(shè)備接收到TLP數(shù)據(jù)長度(Data Length)與包頭中的長度值不一致;
    • 設(shè)備接收到TLP發(fā)現(xiàn)違反了RCB對齊要求;
    • 設(shè)備接收到Completer報文,發(fā)現(xiàn)其完成狀態(tài)是CRS(Configuration Request Retry Status),但該Completer報文對應(yīng)的請求不是配置請求;
    • 設(shè)備接收TLP其TC域包含了一個未被分配到當(dāng)前使能的VC的值;
    • 設(shè)備接收TLP,發(fā)現(xiàn)報文中字節(jié)使能沖突,比如讀2個DW數(shù)據(jù)的請求,其Last DW BE為0;
    • RC收到Downstream Ports發(fā)送的Assert_INTx/Deassert_INTx Messages。

    [19] ECRC Error Status (Optional)

    設(shè)備接收TLP報文,ECRC校驗錯誤,這也就意味著LCRC校驗是成功的,大概率是報文通過pcie switch時,數(shù)據(jù)出現(xiàn)了問題。

    [20] Unsupported Request Error Status

    收到的報文不屬于任何一種協(xié)議規(guī)定的DLLP或TLP類型,或者報文的域段非法或越界(如MEM WRITE訪問越界)等。注意,只要是會返回Comleter報文的請求,就不會上報Unsupported Request Error,而是通過Comleter報文來指示,比如,cfg報文訪問設(shè)備未實現(xiàn)的function。

    [21] ACS Violation Status (Optional)

    接收的posted或non-posted請求中,存在訪問控制錯誤。

    [22] Uncorrectable Internal Error Status (Optional)

    PCIe IP內(nèi)部出現(xiàn)錯誤,可能情況很多,比如IP后端模塊給IP反壓導(dǎo)致丟包。

    [23] MC Blocked TLP Status (Optional)

    筆者對其不了解。

    [24] AtomicOp Egress Blocked Status (Optional)

    如果Port口將AmicOp Egress Blocking使能,則在其收到待轉(zhuǎn)發(fā)的AtomicOp Request請求時,將提前結(jié)束這個請求,并給請求者回復(fù)UR completion。

    [25] TLP Prefix Blocked Error Status (Optional)

    如果Port口將End-End TLP Prefix Blocking使能,則在其收到帶Prefix的TLP時,將提前結(jié)束這個請求,并給請求者回復(fù)UR completion(如果是Non-post的話)。

    [26] Poisoned TLP Egress Blocked Status (Optional)

    如果Port口將Poisoned TLP Egress Blocking使能,則在其收到待轉(zhuǎn)發(fā)的poisoned TLP時,將上報Poisoned TLP Egress Blocked error。

    [31:27] Reserve

    Uncorrectable Error Mask Register (O?set 08h)

    不可恢復(fù)錯誤掩碼寄存器,與狀態(tài)寄存器一一對應(yīng),當(dāng)對應(yīng)Bit為1時,表示不檢測也不上報對應(yīng)錯誤。

    image

    默認(rèn)情況下,22 Bit(Uncorrectable Internal Error Mask )和26 Bit(Poisoned TLP Egress Blocked Mask)復(fù)位值為1。

    Uncorrectable Error Severity Register (O?set 0Ch)

    不可恢復(fù)錯誤嚴(yán)重程度寄存器,當(dāng)不可恢復(fù)錯誤狀態(tài)寄存器某個Bit為1時,不可恢復(fù)錯誤嚴(yán)重程度寄存器對應(yīng)Bit為1,則表示致命錯誤(ERR_FATAL),為0則表示非致命錯誤(ERR_NONFATAL)。

    image
    image

    注意,上面默認(rèn)為1表示部分錯誤只要上報,必然為致命錯誤。

    Correctable Error Status Register (O?set 10h)

    可恢復(fù)錯誤狀態(tài)寄存器,表示硬件發(fā)生了可恢復(fù)錯誤,由硬件自行糾正之后上報錯誤狀態(tài),注意,一般來說,可糾正錯誤不會影響正常業(yè)務(wù)。

    image

    [0] Receiver Error Status

    Link errors都可以認(rèn)為是receiver error,可能原因:

    • 可能是協(xié)商過程中出現(xiàn)誤碼;
    • 可能是由于lane處于L0時的MAC錯誤;
    • 錯誤lane中接收到Control控制符號;
    • 鏈路可能從L0跳轉(zhuǎn)到Recovery狀態(tài)的信號完整性問題造成。

    [5:1] Reserve

    [6] Bad TLP Status

    先來看一張TLP處理流程圖:

    image

    從上面可以知道導(dǎo)致Bad TLP錯誤的有三種可能:

    • 接收出錯(Rx Err);
    • 數(shù)據(jù)鏈路層CRC校驗出錯(LCRC);
    • 數(shù)據(jù)鏈路層接收的報文序列號與預(yù)期序列號不一致(Sequence Number)。

    [7] Bad DLLP Status

    DLLP報文計算CRC出錯。

    [8] REPLAY_NUM Rollover Status

    TLP因為某些原因重傳,當(dāng)重傳次數(shù)超過四次則上報REPLAY_NUM Rollover錯誤。注意,一旦設(shè)備上報這個錯誤,鏈路會進(jìn)入recovery重新訓(xùn)練。

    [11:9] Reserve

    [12] Replay Timer Timeout Status

    發(fā)送端每發(fā)送一個TLP報文都會有啟動一個定時器,在規(guī)定時間內(nèi)未接收到正確的ACK/NAK,則上報Replay Timer Timeout錯誤。

    [13] Advisory Non-Fatal Error Status

    在某些情況下,非致命錯誤的檢測器不確定錯誤是否可恢復(fù),或者是否需要任何恢復(fù)動作。例如,如果RC嘗試配置請求訪問設(shè)備未實現(xiàn)的function,則完成報文中的UR狀態(tài)可以告知向RC錯誤信息,而不需要設(shè)備ERR_NONFATAL消息告知RC,因此,設(shè)備將AER中的Advisory Non-Fatal Error Status置起和device status中的Unsupported Request置起,但又不會置位AER中的Unsupported Request Error Status。

    [14] Corrected Internal Error Status

    可能是由于內(nèi)部Hard IP RAM中的ECC錯誤。

    [15] Header Log Overflow Status

    設(shè)備接收到錯誤報文,會將報文head記錄在AER的Header Log字段中,當(dāng)記滿之后再來錯誤TLP,則上報Header Log Overflow錯誤。

    [31:16] Reserve

    Correctable Error Mask Register (O?set 14h)

    可糾正錯誤掩碼寄存器,注意,默認(rèn)有3種錯誤上報不開啟。

    image

    Advanced Error Capabilities and Control Register (O?set 18h)

    image

    Bit 描述 權(quán)限
    4:0 First Error Pointer,第一個不可恢復(fù)錯誤的位置(lspci中十六進(jìn)制顯示),當(dāng)PCIe設(shè)備出現(xiàn)錯誤時,往往不止一個錯誤,找到第一個錯誤類型可通過該字段 ROS
    5 ECRC Generation Capable,表示function能否支持產(chǎn)生ECRC RO
    6 ECRC Generation Enable,當(dāng)function支持產(chǎn)生ECRC時,可通過該Bit控制function開啟ECRC功能 RWS
    7 ECRC Check Capable,表示function能否支持校驗ECRC RO
    8 ECRC Check Enable,當(dāng)function支持校驗ECRC時,可通過該Bit控制function開啟ECRC校驗功能 RWS
    9 Multiple Header Recording Capable,表示function支持多個錯誤head報文記錄能力,當(dāng)出現(xiàn)報文錯誤時,按照錯誤順序依次記錄多個TLP head。該寄存器與First Error Pointer聯(lián)動,比如First Error Pointer指示了某個錯誤,并且是錯誤TLP導(dǎo)致的,那么Header Log就記錄著這個錯誤TLP head,當(dāng)清除First Error Pointer對應(yīng)的錯誤時(對應(yīng)Bit寫1),F(xiàn)irst Error Pointer將指向下一個錯誤類型,并且Header Log與之聯(lián)動,若錯誤并非TLP導(dǎo)致,則Header Log為無效值。 RO
    10 Multiple Header Recording Enable,使能多錯誤報文head記錄能力 RWS
    11 TLP Prefix Log Present,表示function支持End to End TLP Prefix error記錄能力,錯誤TLP head記錄在AER中TLP Prefix Log Register中 ROS
    12 Completion Timeout Prefix/Header Log Capable,該Bit為1表示function記錄了一筆完成超時TLP的head,即該function發(fā)出請求超時未得到響應(yīng),則將該請求TLP記錄 RO

    Header Log Register (O?set 1Ch)

    4DW寄存器,用來存放異常TLP的head。PCIe協(xié)議要求支持AER的設(shè)備,至少支持存放一個head。

    其對應(yīng)格式為:

    image

    通過lspci -vvvs xxx命令可以查看設(shè)備的HeaderLog,例如:

    [root@localhost ~]# lspci -vvvs 00:1c.2
    00:1c.2 PCI bridge: Intel Corporation Device 7aba (rev 11) (prog-if 00 [Normal decode])
            ...
            Capabilities: [100 v1] Advanced Error Reporting
                    UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                    UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                    UESvrt: DLP+ SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                    CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
                    CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                    AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
                            MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                    HeaderLog: 00000000 00000000 00000000 00000000
                    RootCmd: CERptEn+ NFERptEn+ FERptEn+
                    RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
                             FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0
                    ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000
    		...
    

    正常情況,HeaderLog中為全0,當(dāng)出現(xiàn)異常報文時,將記錄TLP的head 4DW,比如:

    HeaderLog: 4a000001 15000004 fd000000 00000000
    

    根據(jù)head byte0(0x4a)可以知道,異常報文是帶數(shù)據(jù)的完成報文(CplD),再根據(jù)具體報文格式解析就好了,比如。

    image

    上面異常報文的錯誤是Request ID(0xfd00)不對,這筆報文對應(yīng)的是cfg0 read請求,一般源Request ID是0x0000,回復(fù)的Request ID卻是0xfd00。

    報文類型可查看以下:

    image

    注:r2表示第二Bit為0或1都可,但細(xì)分報文類型不一樣。

    更多報文類型頭部格式請查閱協(xié)議第二章節(jié)。

    Root Error Command Register (O?set 2Ch)

    注意,該寄存器只有RC才有效,普通PCIe設(shè)備沒有該字段。

    Bit 描述 權(quán)限
    0 Correctable Error Reporting Enable,可糾正錯誤中斷上報能力使能,當(dāng)該RC下游任何設(shè)備上報可糾正錯誤消息,都將觸發(fā)中斷告知系統(tǒng) RW
    1 Non-Fatal Error Reporting Enable,非致命錯誤中斷上報能力使能,當(dāng)該RC下游任何設(shè)備上報非致命錯誤消息,都將觸發(fā)中斷告知系統(tǒng) RW
    2 Fatal Error Reporting Enable,致命錯誤中斷上報能力使能,當(dāng)該RC下游任何設(shè)備上報致命錯誤消息,都將觸發(fā)中斷告知系統(tǒng) RW

    上電默認(rèn)都是關(guān)閉的,但系統(tǒng)內(nèi)核一般會全部打開。

    Root Error Status Register (O?set 30h)

    注意,該寄存器只有RC才有效,普通PCIe設(shè)備沒有該字段。

    image

    Bit 描述 權(quán)限
    0 ERR_COR Received,當(dāng)Root Port收到Correctable Error Message后該Bit被置1 RW1CS
    1 Multiple ERR_COR Received,當(dāng)Root Error Status Register中的ERR_COR Received Bit被置1且Root Port再次收到了Correctable Error Message,該Bit被置1 RW1CS
    2 ERR_FATAL/NONFATAL Received,當(dāng)Root Port接收到Fatal或者Non-Fatal Message后且該Bit為0時,該Bit被置1 RW1CS
    3 Multiple ERR_FATAL/NONFATAL Received,當(dāng)Root Error Status Register中的ERR_FATAL/NONFATAL Received Bit被置1且Root Port再次收到了Error Message,該Bit被置1 RW1CS
    4 First Uncorrectable Fatal,當(dāng)Root Port收到的第一個uncorrectable error message是ERR_FATAL error則置1 RW1CS
    5 Non-Fatal Error Messages Received,當(dāng)Root Port收到一個或者多個Non-Fatal Uncorrectable Error Messages后該Bit被置1 RW1CS
    6 Fatal Error Messages Received,當(dāng)Root Port收到一個或者多個Fatal Uncorrectable Error Messages后該Bit被置1 RW1CS
    8:7 ERR_COR Subclass,當(dāng)ERR_COR Received bit被置1,ERR_COR Subclass保存的是Root Port接收到的ERR_COR Message中ERR_COR Received 域的值 ROS/RsvdZ
    31:27 Advanced Error Interrupt Message Number,定義了Root port針對收到的error message將使用MSI/MSIX的哪個entry來產(chǎn)生中斷。這個field由HW給出的,并且可能會隨著enable MSI/MSIX entry數(shù)目的不同而變化。注意,這個值必須小于等于31,因為需要兼容MSI中斷(MSI最多32個中斷) RO

    Error Source Identification Register (O?set 34h)

    注意,該寄存器只有RC才有效,普通PCIe設(shè)備沒有該字段。

    用來保存Root Port收到的第一筆Correctable Error Message的Requester ID或Uncorrectable Fatal/Non-Fatal Error Message的Requester ID。

    TLP Prefix Log Register (O?set 38h)

    設(shè)備必須支持且使能了TLP Prefix能力,這個字段才有效。

    這個寄存器保存了觸發(fā)錯誤的TLP包的End-End TLP Prefix(local TLP Prefix報文錯誤不會記錄在此),其數(shù)據(jù)排布方式與Header Log Register相同。

    DPC

    DPC(Downstream Port Containment)是一種用于處理PCIe鏈路中錯誤情況的機制。當(dāng)PCIe鏈路上的一個設(shè)備發(fā)送錯誤信號時,DPC機制允許系統(tǒng)針對該錯誤進(jìn)行處理,以避免錯誤的傳播和影響其他設(shè)備。具體而言,DPC機制會隔離出故障設(shè)備,從而限制錯誤的影響范圍,確保其他設(shè)備繼續(xù)正常工作。注意:DPC機制依賴于AER提供的錯誤信息來進(jìn)行錯誤處理。

    AER和DPC通常結(jié)合使用,以提供更全面的錯誤處理和容錯機制。當(dāng)PCIe設(shè)備發(fā)生錯誤時,AER會檢測和報告錯誤的詳細(xì)信息,而DPC則可以根據(jù)這些錯誤信息采取相應(yīng)的措施,例如隔離故障設(shè)備,以維護(hù)整個PCIe系統(tǒng)的穩(wěn)定性和可靠性。通常,Downstream Port接收到下游發(fā)送的不可糾正錯誤消息,會將下游鏈路斷開,防止錯誤擴散,如果在調(diào)試PCIe設(shè)備時碰到link斷開情況并且系統(tǒng)未重啟,則很大可能是DPC發(fā)揮的作用。

    相關(guān)寄存器

    image

    DPC Capability Register (O?set 04h)

    DPC能力寄存器。

    image

    Bit 描述 權(quán)限
    4:0 DPC Interrupt Message Number,定義了Port針對收到的error message將使用MSI/MSIX的哪個entry來產(chǎn)生中斷通知的系統(tǒng)。這個field由HW給出的,并且可能會隨著enable MSI/MSIX entry數(shù)目的不同而變化。注意,這個值必須小于等于31,因為需要兼容MSI中斷(MSI最多32個中斷) RO
    5 RP Extensions for DPC,該位表示根端口支持特定于根端口的一組定義的DPCl擴展(即DPC 0x10之后的寄存器有效)。PCIe switch下行端口不能設(shè)置此位 RO
    6 Poisoned TLP Egress Blocking Supported,該Bit置1,表示支持阻塞 Poisoned TLP能力 RO
    7 DPC Sofware Triggering Supported,該Bit置1,表示根端口或交換機下行端口支持軟件觸發(fā)DPC。對于支持DPC的RP擴展的Root Port必須設(shè)置此位 RO
    11:8 RP PIO Log Size ,該字段表示為RP PIO日志寄存器分配了多少DWORDs,由RP PIO Header Log、RP PIO ImpSpec Log和RP PIO TLP Prefix Log組成。如果Root Port支持DPC的RP擴展,該字段的值必須大于等于4;否則,該字段的值必須為0 RO
    12 DL_Active ERR_COR Signaling Supported,表示根端口或交換機下游端口支持在鏈路轉(zhuǎn)換為DL_Active狀態(tài)時,支持使用ERR_COR進(jìn)行信號傳輸 RO

    DPC Control Register (O?set 06h)

    DPC控制寄存器。

    image

    Bit 描述 權(quán)限
    1:0 DPC Trigger Enable,用于控制DPC是否檢測下游錯誤。00,表示關(guān)閉檢測;01,表示檢測不可恢復(fù)錯誤和致命錯誤消息;02,表示檢測不可恢復(fù)錯誤、致命錯誤消息、非致命錯誤消息;03,預(yù)留 RW
    2 DPC Completion Control,這個Bit控制在DPC期間回復(fù)什么完成狀態(tài)的報文給下游。0,回復(fù)Completer Abort (CA) Completion Status完成報文;1,回復(fù)Unsupported Request (UR) Completion Status完成報文 RW
    3 DPC Interrupt Enable,該Bit置1,當(dāng)DPC檢測到問題,是否要上報中斷 RW
    4 DPC ERR_COR Enable,該Bit置1,當(dāng)DPC檢測到問題,可以發(fā)送ERR_COR消息給上游報告已觸發(fā)DPC RW
    5 Poisoned TLP Egress Blocking Enable,該Bit置1,則不允許轉(zhuǎn)發(fā)Poisoned TLP RW/RO
    6 DPC Sofware Trigger,向該Bit寫1,可以軟件觸發(fā)DPC,這個Bit讀為0 RW/RO
    7 DL_Active ERR_COR Enabl,如果設(shè)置了該位,表示根端口或交換機下游端口支持在鏈路轉(zhuǎn)換為DL_Active狀態(tài)時,支持使用ERR_COR進(jìn)行信號傳輸(即主動發(fā)出ERR_COR) RW/RO
    8 DPC SIG_SFW Enable,當(dāng)設(shè)置時,啟用發(fā)送ERR_COR消息,以指示已啟用ERR_COR信號的DPC事件(ECS有效) RW/RO

    DPC Status Register (O?set 08h)

    image

    Bit 描述 權(quán)限
    0 DPC Trigger Status,當(dāng)該Bit置1時,表示DPC已經(jīng)觸發(fā),此時這個Port下游鏈路將LTSSM轉(zhuǎn)為禁用狀態(tài)(鏈路斷開無法link),只有將此Bit寫1清除,LTSSM才能從禁用狀態(tài)釋放出來,即下游重新訓(xùn)練,注意,進(jìn)入DPC之后,必須等待100ms才能清除(鏈路link down需要一定時間),且清除之后還必須等待100ms才能訪問下游設(shè)備 RW1CS
    2:1 DPC Trigger Reason,表示是因為什么觸發(fā)DPC的。00b,表示收到未屏蔽的不可糾正錯誤;01b,表示收到ERR_NONFATAL消息;10b,表示收到ERR_FATAL消息;11b,表示信息由擴展字段(DPC Trigger Reason Extension)指示; ROS
    3 DPC Interrupt Status,表示是否產(chǎn)生了DPC中斷 RW1CS
    4 DPC RP Busy,當(dāng)觸發(fā)DPC時,可能DP內(nèi)部在繁忙,必須等待該Bit為0時,才能對DPC Trigger Status寫1 RO/RsvdZ
    6:5 DPC Trigger Reason Extension,DPC觸發(fā)原因擴展字段,當(dāng)DPC Trigger Reason字段為11b時,該字段才有效。00b,表示由RP PIO error觸發(fā)DPC;01b,表示由軟件主動觸發(fā)DPC ROS
    12:8 RP PIO First Error Pointer,該字段指示RP PIO狀態(tài)寄存器中的位位置,當(dāng)該位被設(shè)置時,該字段被認(rèn)為是有效的。當(dāng)該字段有效時,軟件將1b寫入指定的RP PIO Status位(從而清除它),該字段必須恢復(fù)到其默認(rèn)值。該字段僅適用于支持DPC的RP擴展的Root端口,否則為保留。如果該字段不為Reserved,則默認(rèn)值為11111b,表示永久保留的RP PIO狀態(tài)位,因此保證該字段不被認(rèn)為是有效的。 ROS/RsvdZ
    13 DPC SIG_SFW Status,當(dāng)該Bit置1,表示使用了SIG_SFW ERR_COR消息觸發(fā)了DPC事件 RW1CS/RsvdZ

    DPC Error Source ID Register (O?set 0Ah)

    錯誤源ID寄存器,當(dāng)Port收到ERR_NONFATAL或ERR_FATAL而觸發(fā)DPC時,該字段存放發(fā)送錯誤消息的請求者ID(BDF)。

    其他寄存器

    只有Root Port支持?jǐn)U展DPC能力(RP Extensions for DPC)才有效,本文不展開。



    如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!

      本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 人人妻人人澡人人爽人人精品电影| 亚洲日本VA午夜在线电影| A级孕妇高清免费毛片| 国产微拍精品一区二区| 99福利一区二区视频| 美日韩在线视频一区二区三区| 亚洲精品乱码久久久久久蜜桃不卡| 伊人久久大香线蕉AV五月天| 欧美高清狂热视频60一70| 免费人成黄页在线观看国产| 亚洲国产精品综合久久20| 亚洲色成人一区二区三区| 亚洲精品国产成人99久久6| 亚洲日韩性欧美中文字幕| 中文字幕无码不卡免费视频| 国产精品中文字幕一区| 少妇太爽了在线观看免费视频 | 亚洲AV国产福利精品在现观看| 久久五十路丰满熟女中出| 国产一区在线播放av| 好大好深好猛好爽视频免费| 成人国产精品中文字幕| 久久久久久伊人高潮影院| 人妻中文字幕不卡精品| 我的公强要了我高潮在线观看| 精品久久人人做爽综合| 国内大量揄拍人妻精品視頻| 亚洲男人AV天堂午夜在| 无码精品国产D在线观看| 亚洲综合无码明星蕉在线视频| 中文字幕无码av不卡一区| 国产AV无码专区亚洲AV漫画| 18禁无遮挡啪啪无码网站破解版| 精品人妻伦九区久久AAA片| 女人的天堂A国产在线观看| 色偷偷www.8888在线观看| 88国产精品欧美一区二区三区| 男人猛进出女人下面视频| 国产精品天干天干综合网| 女人被黑人躁得好爽视频| XXXXXHD亚洲日本HD|