<html><body><p><font size="2">Sorry for the delay, it took awhile to make sure the data could be released.  It turns out that these registers were accidentally not included in the register documents that IBM released.</font><br><br><font size="2">Here are the documents.</font><br><br><font size="2" color="#121212" face="Arial">POWER9  Processor Registers Specification - Vol 1-3</font><u><font size="2" color="#4178BE" face="Arial"><br></font></u><a href="https://ibm.ent.box.com/s/ddcdl3g0otdzyiajhkfe3jjh2oy5p3mt" target="_blank"><u><font color="#0000FF" face="Arial">https://ibm.ent.box.com/s/ddcdl3g0otdzyiajhkfe3jjh2oy5p3mt</font></u></a><u><font size="2" color="#4178BE" face="Arial"><br></font></u><a href="https://ibm.ent.box.com/s/gcg7o0sgke0cdqqw2z9pc9xc7zgjj1wu" target="_blank"><u><font color="#0000FF" face="Arial">https://ibm.ent.box.com/s/gcg7o0sgke0cdqqw2z9pc9xc7zgjj1wu</font></u></a><u><font size="2" color="#4178BE" face="Arial"><br></font></u><a href="https://ibm.ent.box.com/s/flt3hs6eiwd9glq3yzzff0flnup2j7p0" target="_blank"><u><font color="#0000FF" face="Arial">https://ibm.ent.box.com/s/flt3hs6eiwd9glq3yzzff0flnup2j7p0</font></u></a><br><font size="2" face="Arial">You get there from the IBM OpenPOWER Portal:</font><br><font size="2" face="Arial"> </font><br><a href="https://www-355.ibm.com/systems/power/openpower/tgcmDocumentRepository.xhtml?aliasId=POWER9_Sforza"><u><font size="2" color="#0000FF" face="Arial">https://www-355.ibm.com/systems/power/openpower/tgcmDocumentRepository.xhtml?aliasId=POWER9_Sforza</font></u></a><br><font size="2" face="Arial"> </font><br><font size="2" face="Arial">If you look under "Power9Processor - Sforza Module" you will see " POWER9 Processor Registers Specification".  If you go to the links within Read and Download it brings you to the PDFs that are within the box links above.</font><br><br><font size="2">Note that Raptor has some copies on their wiki too - <a href="https://wiki.raptorcs.com/wiki/Category:Documentation">https://wiki.raptorcs.com/wiki/Category:Documentation</a></font><br><br><font size="2">Here is the description of the missing registers until the documents get updated (which will likely take awhile).</font><br><i>(See attached file: MCP0XLT_regs.txt)</i><br><br><br><font size="2">I talked to our memory team and here is the answer they gave for your specific questions.</font><br><br><font size="2">According to the JEDEC spec, BG1 is supported for 16Gb DRAM that use x4 or x8 DRAM widths.  BG1 is not supported for 16Gb DRAM that are a x16 DRAM width.  Currently, the code has plug rules in place that will fail for anything other x4 or x8, meaning that a x16 part will be deconfigured in step 7 (see plug_rules.C).  The code will not support x16 parts and would need to be updated. Additionally x16 is not officially supported by the Nimbus hardware. If you are trying to add in x16 support, you will have an uphill battle against both the code and the hardware.</font><br><font size="2">As another note: 0b10010 is the LSB for the port mapping.</font><br><i>(See attached file: 16Gb Addressing.png)</i><br><br><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:3__=09BB0CEADFC5FE5F8f9e8a93df938690918c09B@" border="0" alt="Inactive hide details for Krystian Hebel ---01/28/2021 02:42:34 PM---Update: I have found out that the way MCAs are mapped is c"><font size="2" color="#424282">Krystian Hebel ---01/28/2021 02:42:34 PM---Update: I have found out that the way MCAs are mapped is calculated in  istep 7.4 and put into appro</font><br><br><font size="2" color="#5F5F5F">From:        </font><font size="2">Krystian Hebel <krystian.hebel@3mdeb.com></font><br><font size="2" color="#5F5F5F">To:        </font><font size="2">openpower-firmware@lists.ozlabs.org</font><br><font size="2" color="#5F5F5F">Cc:        </font><font size="2">firmware@3mdeb.com</font><br><font size="2" color="#5F5F5F">Date:        </font><font size="2">01/28/2021 02:42 PM</font><br><font size="2" color="#5F5F5F">Subject:        </font><font size="2">[EXTERNAL] Re: [OpenPower-Firmware] Undocumented SCOM registers and DIMM addressing</font><br><font size="2" color="#5F5F5F">Sent by:        </font><font size="2">"OpenPower-Firmware" <openpower-firmware-bounces+dcrowell=us.ibm.com@lists.ozlabs.org></font><br><hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br><br><br><tt><font size="2">Update: I have found out that the way MCAs are mapped is calculated in <br>istep 7.4 and put into appropriate registers in 14.5. All other <br>questions are still open.<br><br>On 19.01.2021 15:22, Krystian Hebel wrote:<br>> Hello,<br>><br>> I'm analyzing memory initialization code as a part of preparation for <br>> coreboot port for Talos II. I have encountered a few undocumented <br>> registers, all of them (so far) have SCOM addresses 0x0501082X. In the <br>> part of code I am analyzing, the first write to those registers <br>> happens in istep 13.8, but as it is done by an initfile, I didn't pay <br>> too much attention and assumed that this is just the default, <br>> non-configurable value.<br>><br>> Registers from the same group appear again in 13.13 for setting up the <br>> translation between controller addresses and DIMM addresses. This time <br>> they are at least named by constants: MCA_MBA_MCP0XLT{0,1,2}. Field <br>> names can also be found in header files, but without any explanation <br>> as to what they exactly configure. I haven't analyzed further code yet <br>> so can't tell if this is the last place where they are accessed.<br>><br>> I have decoded, more or less, which port address is assigned to which <br>> DIMM bit and under what circumstances, but there are still some <br>> unanswered questions, or assumptions I would like to confirm. <br>> Nevertheless, it would be nice to have a proper documentation of all <br>> pieces required for the initialization of the platform.<br>><br>> How many port address bits there are? Is it either 40 or 56 bits, as <br>> mentioned in section 10.2 of POWER9 Processor User's Manual? How are <br>> port addresses from all ports (MCAs) mapped to the address space seen <br>> by CPU?<br>><br>> Which bit numbers are more significant? I assume lower port address <br>> bit number is more significant, seeing that the highest numbers are <br>> always allocated, and lower only if needed. On the other hand, if that <br>> is the case, wouldn't assigning higher number/less significant address <br>> to D-bit improve performance due to interleaving? Assuming that both <br>> DIMMs have the same size to avoid holes, of course.<br>><br>> I assume that bits which are not encoded in `enum xlate_bit_maps` are <br>> hardwired to column bits 0-3 and row bits 0-14. There is also <br>> `PORT_ADDRESS_22` in enumeration that isn't used anywhere in the code, <br>> is it also hardwired? Also, why some of the map fields in registers <br>> are 5 bits, while other are only 3 bits long? Given that the registers <br>> are sparsely filled (at least from what can be decoded from the header <br>> files) I don't think this is done just to pack more data in one register.<br>><br>> I have also noticed that both BG bits are mapped, even for 16Gb <br>> devices, which according to DDR4 specification have only two bank <br>> groups, so they should use just BG0. Was this an overlook or is there <br>> any purpose for mapping both bank group bits?<br>><br>> I hope that wasn't too much questions for one email.<br>><br>> Best regards,<br>><br>-- <br>Krystian Hebel<br>Firmware Engineer<br><a href="https://3mdeb.com">https://3mdeb.com</a>  | @3mdeb_com<br><br>_______________________________________________<br>OpenPower-Firmware mailing list<br>OpenPower-Firmware@lists.ozlabs.org<br><a href="https://lists.ozlabs.org/listinfo/openpower-firmware">https://lists.ozlabs.org/listinfo/openpower-firmware</a> <br><br></font></tt><br><br><BR>
</body></html>