<div dir="ltr"><div dir="ltr"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="font-size:small;background-color:rgb(255,255,255)">Le jeu. 27 juin 2019 à 12:38, Oliver O'Halloran <<a href="mailto:oohall@gmail.com">oohall@gmail.com</a>> a écrit :<br></div></div></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, Jun 27, 2019 at 7:54 PM Alexandre Ghiti <<a href="mailto:aghiti@upmem.com" target="_blank">aghiti@upmem.com</a>> wrote:<br>
><br>
> Hi everyone,<br>
><br>
> We are currently testing our RDIMM in a Talos server which runs custom hostboot/skiboot from RaptorCS team.<br>
> Our RDIMM (single-rank) is 'rejected' during calibration as half the DRAMs fail the DQS alignment step. We know, for some internal reasons, that if this step tries to access the DRAMs with BG1=1, it will fail, which will happen if address inversion is enabled (see RCD jedec JESD82-31 section 2.9): so half the failing DRAMs would represent the side-b.<br>
><br>
> I did not succeed to disable address inversion, certainly because the piece of HW that does the actual calibration supposes the address inversion is activated and then invert the corresponding bits to prevent RCD inversion.<br>
><br>
> My questions are:<br>
> - Is the CCS responsible for executing the calibrations ?<br>
> - Is there anyway to modify its behaviour ? (I don't think the calibration steps are purely HW...)<br>
><br>
> Thanks for your answers, and if this is not the place to discuss such things, please do not hesitate to say so.<br>
<br>
We don't mind hearing about this sort of thing, but it's very outside<br>
our area of expertise. Memory training is handled by the hardware<br>
procedures in hostboot, but it sounds like you've already tried to<br>
fiddle with the stuff in src/import/chips/p9/procedures/hwp/memory<br>
without luck? I'll see if I can find someone who might have more of a<br>
clue.<br></blockquote><div><br></div><div><br></div><div>Yes, I know that the memory training happens in the function p9_mss_draminit_training.</div><div><br></div><div>From my understanding, it is done by setting the register DDRPHY_PC_INIT_CAL_CONFIG0_P0 (Power9</div><div>Processor Registers Specification, Volume 3) with the calibration steps we want to do.</div><div><br></div><div>Then, those steps are indeed executed by setting the field CCS_INST_ARR1_00_DDR_CALIBRATION_ENABLE<br>of MC01.MCBIST.CCS.CCS_INST_ARR1_00 register. So to me it seems those steps are entirely HW.<br></div><div><br>Note that we do not have a Centaur platform, our processor is the Nimbus version.<br><br></div><div>Thanks again for your quick answer,</div><div><br></div><div>Alex </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Oliver<br>
</blockquote></div></div>