<div class="socmaildefaultfont" dir="ltr" style="font-family:Arial, Helvetica, sans-serif;font-size:10.5pt" ><div dir="ltr" >Hi Artem,</div>
<div dir="ltr" > </div>
<div class="mail-signature-container" dir="ltr" >The OCC FIRDATA collection is only run if there were system errors that require FIRDATA to be collected.</div>
<div class="mail-signature-container" dir="ltr" >You said that <font size="2" face="Default Monospace,Courier New,Courier,monospace" >sometimes data written in the FIRDATA partition has ECC errors.</font></div>
<div class="mail-signature-container" dir="ltr" >Does this mean that sometimes the OCC FIRDATA does not have ECC errors or is that just when the OCC has not written any FIRDATA at all?</div>
<div class="mail-signature-container" dir="ltr" >ECC errors would indicate that at least some data got written to PNOR.</div>
<div class="mail-signature-container" dir="ltr" > </div>
<div class="mail-signature-container" dir="ltr" >In the trace you provided It looks like there is a timeout waiting for a response over IPMI. Since you said you added a call to getInfo() to OCC main.c, can I assume this trace was taken when the OCC goes active at runtime? That's not really when the OCC is suppose to be using the IPMI bus and I wonder if its OK to do so.</div>
<div class="mail-signature-container" dir="ltr" > </div>
<div class="mail-signature-container" dir="ltr" >All,</div>
<div class="mail-signature-container" dir="ltr" >I can double check the code, but I think we will need to see what's happening on the other side of the IPMI interface.</div>
<div class="mail-signature-container" dir="ltr" > </div>
<div class="mail-signature-container" dir="ltr" ><br>Thanks,<br>Doug Gilbert<br><br>"For it must needs be, that there is an opposition in all things..." 2 Nephi 2:11</div>
<div dir="ltr" > </div>
<div dir="ltr" > </div>
<blockquote data-history-content-modified="1" data-history-expanded="1" dir="ltr" style="border-left:solid #aaaaaa 2px; margin-left:5px; padding-left:5px; direction:ltr; margin-right:0px" >----- Original message -----<br>From: Artem Senichev <artemsen@gmail.com><br>To: openpower-firmware@lists.ozlabs.org<br>Cc: dgilbert@us.ibm.com<br>Subject: [EXTERNAL] [POWER8] OCC Firdata over IPMI<br>Date: Wed, May 22, 2019 2:43 AM<br>
<div><font size="2" face="Default Monospace,Courier New,Courier,monospace" >Hi all,<br><br>The current OCC implementation for POWER8 has a bug and sometimes data<br>written in the FIRDATA partition has ECC errors.<br>In these cases, hostboot stops the IPL, so we don't get a SEL and we<br>have to clean up FIRDATA or overwrite PNOR image to boot the host.<br><br>Meanwhile, the latest commit to the OCC project (master_p8) adds<br>support for writing FIRDATA to the PNOR flash over IPMI:<br><br><a href="https://github.com/open-power/occ/commit/a2856b77a618e35f597e3e472868a2617eec67fa" target="_blank">https://github.com/open-power/occ/commit/a2856b77a618e35f597e3e472868a2617eec67fa</a><br>commit a2856b77a618e35f597e3e472868a2617eec67fa<br>Author: Douglas Gilbert <dgilbert@us.ibm.com><br>Date: Wed Oct 10 14:39:53 2018 -0500<br><br>But I can't get it to work properly, the IPMI subsystem in the OCC<br>unable to send/receive messages.<br>I have added single getInfo() call to the main thread routine of OCC<br>and got the following log from OCC:<br><br>-------------------------------------------------------------------------------<br>TRACEBUFFER: Mixed buffer<br>-------------------------------------------------------------------------------<br> Sec Usec PID Comp Line Entry Data Filename <br>-------------------------------------------------------------------------------<br>00000000.000066848| 0|IMP |1189|IMP: I am the FIR master|main.c<br>00000000.000105630| 1|IMP | 247|IMP: dcom_initialize_roles: Overriding chip_id[0] with node_id[0]|dcom/dcom.c<br>00000000.000108200| 1|IMP | 274|IMP: Proc ChipId=0, NodeId=0, isDcm=0, isDcmMaster=1, ChipEC=0x220ea049|dcom/dcom.c<br>00000000.000211615| 1|IMP | 566|IMP: Sensor Initialization Complete|sensor/sensor.c<br>00000000.000255155| 1|IMP | 95|IMP: Initializing ppc405 watchdog. period=3, reset_ctrl=0|timer/timer.c<br>00000000.009108846| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009213643| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.009215700| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009217861| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.009321970| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.009324756| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.009327406| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.009329405| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009434201| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.009436258| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009438420| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.009542530| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.009545328| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.009547978| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.009549976| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009552138| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.009656183| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.009658875| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.009661528| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000801|firdata/native.c<br>00000000.009663526| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009665688| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.009769873| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.009772720| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.009775443| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.009777445| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009779610| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.009883653| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.009886350| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.009889000| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.009890998| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.009995795| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.009997851| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010202701| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.010204760| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010206938| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.010311475| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.010314256| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.010316906| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.010318905| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010321070| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.010425151| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.010427843| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.010430496| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000801|firdata/native.c<br>00000000.010432633| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000004, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010434793| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.010538976| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.010541743| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.010544391| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.010546388| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010548545| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.010652583| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.010655270| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.010657915| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.010659911| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010768355| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.010770408| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010772586| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.010876588| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.010879316| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.010881961| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.010883958| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010988753| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.010990805| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.010992965| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.011097068| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.011099850| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.011102495| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.011104491| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011106651| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.011210690| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.011213373| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.011216026| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000801|firdata/native.c<br>00000000.011218020| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011220176| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.011324356| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.011327123| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.011329771| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.011331768| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011333925| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.011437963| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.011440650| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.011443441| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.011445438| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011550341| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000804|firdata/native.c<br>00000000.011552395| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011554571| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.011658576| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.011661305| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.011664100| 1|INF | 52|INF: xscom_read(000B0022)=0000000000000801|firdata/native.c<br>00000000.011666093| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011668253| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.011772436| 1|INF | 171|INF: >>pollCtrl|firdata/pnor_ipmi.c<br>00000000.011775218| 1|INF | 71|INF: xscom_write(000B0020)=D1010100D00100E4|firdata/native.c<br>00000000.011777868| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.011779861| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.011884656| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.011886705| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.012091550| 1|INF | 52|INF: xscom_read(000B0022)=0000000000080000|firdata/native.c<br>00000000.012093600| 1|INF | 158|INF: writeLPC> Poll on ECCB Status, poll_time=0x0000000000000000, stat=0x0000000000000000|firdata/lpc.c<br>00000000.012397973| 1|INF | 182|INF: LpcDD::pollComplete> LPC error or timeout: addr=0xD00100E4, status=0x0000000000080000|firdata/lpc.c<br>00000000.012400101| 1|INF | 242|INF: readLPC> D00100E4[1] = 00000000|firdata/lpc.c<br>00000000.012401973| 1|ERR | 183|INF: ERR: polling loop encountered an error. rc = -1, exiting|firdata/pnor_ipmi.c<br>00000000.012403923| 1|ERR | 387|INF: ERR: send_ipmi_msg: cmd 0x2 Failed rc = -1|firdata/pnor_ipmi.c<br>00000000.012405805| 1|ERR | 425|INF: ERR: getInfo: ping BMC faild with rc = 0xffffffff|firdata/pnor_ipmi.c<br><br>We have HIOMAP support for our bundle (OpenBMC+OpenPOWER), it looks like<br>the entire solution works fine except the OCC project, it is the last<br>component that directly writes data to the PNOR flash.<br><br>Can anybody help me with that? Any idea how to make it work?<br><br>--<br>Regards,<br>Artem Senichev<br>Software Engineer, YADRO.</font><br> </div></blockquote>
<div dir="ltr" > </div></div><BR>