<html><body><p><font size="2">I can answer one question.</font><br><br><tt><font size="2">> Also, why 65529 and not 64*1024=65536?<br>With the 9-byte ECC algorithm there are 6 bytes leftover.  We don't cross chips with the data/ecc so the last 6 bytes are not part of the image.</font></tt><br><font size="2"><br>--<br>Dan Crowell<br>Senior Software Engineer - Power Systems Enablement Firmware<br>IBM Rochester: t/l 553-2987<br>dcrowell@us.ibm.com</font><br><br><img width="16" height="16" src="cid:1__=09BB0EAFDFF648B68f9e8a93df938690918c09B@" border="0" alt="Inactive hide details for "Marty E. Plummer" ---07/19/2019 11:31:07 AM---> On Thu, Jul 18, 2019 at 07:11:09AM -0500, Dean Sanne"><font size="2" color="#424282">"Marty E. Plummer" ---07/19/2019 11:31:07 AM---> On Thu, Jul 18, 2019 at 07:11:09AM -0500, Dean Sanner wrote: > Here is info on how to extract and</font><br><br><font size="2" color="#5F5F5F">From:        </font><font size="2">"Marty E. Plummer" <hanetzer@startmail.com></font><br><font size="2" color="#5F5F5F">To:        </font><font size="2">Dean Sanner <dsanner@us.ibm.com></font><br><font size="2" color="#5F5F5F">Cc:        </font><font size="2">Stewart Smith <stewart@linux.ibm.com>, Daniel M Crowell <dcrowell@us.ibm.com>, openpower-firmware@lists.ozlabs.org</font><br><font size="2" color="#5F5F5F">Date:        </font><font size="2">07/19/2019 11:31 AM</font><br><font size="2" color="#5F5F5F">Subject:        </font><font size="2">[EXTERNAL] Re: [OpenPower-Firmware] SBE questions</font><br><hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br><br><br><tt><font size="2">> On Thu, Jul 18, 2019 at 07:11:09AM -0500, Dean Sanner wrote:<br>> Here is info on how to extract and remove the ECC on the SBE SEEPROM image.<br>> There are<br>> actually 4 unique SEEPROMs that the SBE treats as a logical "flash".  The<br>> following<br>> commands are from IBM's service processor -- you will have to tweak, but in<br>> general<br>> just need to read the "-a" address, offset 0 for 65529 bytes, then append<br>> all the images<br>> together.  Notice that the althernate is on a different I2C bus, but same<br>> addresses:<br>> <br>> #Read primary image and reconstruct<br>> iicmaster -b /dev/iic/L02C0E06P01  -t 24C512 -a 0xa8 -W 2 -o 0 --file=./sbe_0 -r 65529<br>> iicmaster -b /dev/iic/L02C0E06P01  -t 24C512 -a 0xaa -W 2 -o 0 --file=./sbe_1 -r 65529<br>> iicmaster -b /dev/iic/L02C0E06P01  -t 24C512 -a 0xac -W 2 -o 0 --file=./sbe_2 -r 65529<br>> iicmaster -b /dev/iic/L02C0E06P01  -t 24C512 -a 0xae -W 2 -o 0 --file=./sbe_3 -r 65529<br>> cat sbe_0 sbe_1 sbe_2 sbe_3 > sbe.bin.ecc<br>> <br>> To remove ECC use this tool from op-build<br>> <op-build repo>/output/host/bin/ecc --remove ./sbe.bin.ecc --output sbe.bin<br>> --p8<br>So, I'm having a bit of trouble following these instructions. Googling<br>iicmaster leads me to this github repo[1], and following an issue trail<br>shows that iicmaster is to be replaced with fsidbg[2] going forward. Using<br>it in a loop yeilds the following:<br>```<br>root@bmc:~# for i in {0..12}; do echo 'Scanning /dev/i2c-'$i && /tmp/fsidbg /dev/i2c-$i -s; done<br>Scanning /dev/i2c-0<br>found 6 devices:<br>5C 5E D4 D6 DC DE <br>Scanning /dev/i2c-1<br>found 6 devices:<br>5C 5E D4 D6 DC DE <br>Scanning /dev/i2c-2<br>found 0 devices:<br>Scanning /dev/i2c-3<br>found 0 devices:<br>Scanning /dev/i2c-4<br>found 4 devices:<br>70 72 F0 F2 <br>Scanning /dev/i2c-5<br>found 4 devices:<br>70 72 F0 F2 <br>Scanning /dev/i2c-6<br>found 0 devices:<br>Scanning /dev/i2c-7<br>found 0 devices:<br>Scanning /dev/i2c-8<br>found 0 devices:<br>Scanning /dev/i2c-9<br>found 0 devices:<br>Scanning /dev/i2c-10<br>found 0 devices:<br>Scanning /dev/i2c-11<br>found 1 devices:<br>B2 <br>Scanning /dev/i2c-12<br>found 4 devices:<br>1A 9A CC D2<br>```<br>Given the two sysfs eeprom interfaces are on busses 0 and 1 (and per the<br>devicetree for the openbmc build source) I've tried using the fsidbg<br>read command on addresses 0xD4-DE I can only reliably grab 8k worth of<br>stuff, and they don't 'look' like 'XIP SEPM' images anyways. Those<br>0xa8-0xae addresses, are they 'fixed' and always true for every p9 cpu?<br>Also, why 65529 and not 64*1024=65536? And how does /dev/iic/L02C0E06P01<br>translate to say /dev/i2c-0 and friends? Note that using the stripping<br>mechanism on the combined 4x32k dumps I've got via my method (simply a<br>cat from a sysfs interface[3]) ends up with a final binary of 29056b in<br>size, so I don't think thats right considering the XIP header specifies<br>some portions beyond this size limit.<br><br>If you could help with this I'd appreciate it, thanks for all that you<br>have already helped with!<br><br>Regards,<br>Marty<br><br>[1]: <a href="https://github.com/eddiejames/iicmaster">https://github.com/eddiejames/iicmaster</a> <br>[2]: <a href="https://github.com/eddiejames/fsidbg">https://github.com/eddiejames/fsidbg</a> <br>[3]: /sys/devices/platform/ahb/ahb:apb/ahb:apb:i2c@1e78a000/+<br>1e78a040.i2c-bus/i2c-0/0-0056/eeprom<br>1e78a040.i2c-bus/i2c-0/0-0054/eeprom<br>1e78a040.i2c-bus/i2c-0/0-0057/eeprom<br>1e78a040.i2c-bus/i2c-0/0-0055/eeprom<br>1e78a080.i2c-bus/i2c-1/1-0056/eeprom<br>1e78a080.i2c-bus/i2c-1/1-0054/eeprom<br>1e78a080.i2c-bus/i2c-1/1-0057/eeprom<br>1e78a080.i2c-bus/i2c-1/1-0055/eeprom<br><br></font></tt><br><br><BR>
</body></html>