<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>