<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1084494528;
mso-list-type:hybrid;
mso-list-template-ids:-1942436792 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Ray,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I applied this change to an internal desktop machine and did below tests:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">boot it to shell
<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">reboot the system to shell.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Eric<o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Ni, Ray
<br>
<b>Sent:</b> Wednesday, January 15, 2020 3:43 PM<br>
<b>To:</b> devel@edk2.groups.io; Dong, Eric <eric.dong@intel.com><br>
<b>Cc:</b> Laszlo Ersek <lersek@redhat.com><br>
<b>Subject:</b> RE: [edk2-devel] [PATCH] UefiCpuPkg/Library/MpInitLib: Remove BSP index == 0 Assumption.<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">Eric,</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><br>
<span style="color:black">What unit test was done for this patch?</span><br>
<br>
<span style="color:purple">> -----Original Message-----</span><br>
<span style="color:purple">> From: <a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a> <<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>> On Behalf Of Dong, Eric</span><br>
<span style="color:purple">> Sent: Wednesday, January 15, 2020 2:07 PM</span><br>
<span style="color:purple">> To: <a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a></span><br>
<span style="color:purple">> Cc: Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Laszlo Ersek <<a href="mailto:lersek@redhat.com">lersek@redhat.com</a>></span><br>
<span style="color:purple">> Subject: [edk2-devel] [PATCH] UefiCpuPkg/Library/MpInitLib: Remove BSP index == 0 Assumption.</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> REF: <a href="https://bugzilla.tianocore.org/show_bug.cgi?id=2392">https://bugzilla.tianocore.org/show_bug.cgi?id=2392</a></span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> Current code implementation assumes BSP index is 0 at the begin.</span><br>
<span style="color:purple">> This code change removes this assumption. It get BSP index from</span><br>
<span style="color:purple">> the saved data structure if it existed.</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> Cc: Ray Ni <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>></span><br>
<span style="color:purple">> Cc: Laszlo Ersek <<a href="mailto:lersek@redhat.com">lersek@redhat.com</a>></span><br>
<span style="color:purple">> Signed-off-by: Eric Dong <<a href="mailto:eric.dong@intel.com">eric.dong@intel.com</a>></span><br>
<span style="color:purple">> ---</span><br>
<span style="color:purple">> UefiCpuPkg/Library/MpInitLib/MpLib.c | 10 ++++++----</span><br>
<span style="color:purple">> 1 file changed, 6 insertions(+), 4 deletions(-)</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c</span><br>
<span style="color:purple">> index 6ec9b172b8..922c87b766 100644</span><br>
<span style="color:purple">> --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c</span><br>
<span style="color:purple">> +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c</span><br>
<span style="color:purple">> @@ -636,7 +636,7 @@ ApWakeupFunction (</span><br>
<span style="color:purple">> // to initialize AP in InitConfig path.</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> // NOTE: IDTR.BASE stored in CpuMpData->CpuData[0].VolatileRegisters points to a different IDT shared by all APs.</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> //</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> - RestoreVolatileRegisters (&CpuMpData->CpuData[0].VolatileRegisters, FALSE);</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> + RestoreVolatileRegisters (&CpuMpData->CpuData[CpuMpData->BspNumber].VolatileRegisters, FALSE);</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> InitializeApData (CpuMpData, ProcessorNumber, BistData, ApTopOfStack);</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> ApStartupSignalBuffer = CpuMpData->CpuData[ProcessorNumber].StartupApSignal;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> @@ -1615,6 +1615,7 @@ MpInitLibInitialize (</span><br>
<span style="color:purple">> UINTN ApResetVectorSize;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> UINTN BackupBufferAddr;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> UINTN ApIdtBase;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> + UINT64 BspTopOfStack;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> OldCpuMpData = GetCpuMpDataFromGuidedHob ();</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> if (OldCpuMpData == NULL) {</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> @@ -1677,7 +1678,7 @@ MpInitLibInitialize (</span><br>
<span style="color:purple">> CpuMpData->BackupBufferSize = ApResetVectorSize;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> CpuMpData->WakeupBuffer = (UINTN) -1;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> CpuMpData->CpuCount = 1;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> - CpuMpData->BspNumber = 0;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> + CpuMpData->BspNumber = OldCpuMpData != NULL ? OldCpuMpData->BspNumber : 0;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> CpuMpData->WaitEvent = NULL;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> CpuMpData->SwitchBspFlag = FALSE;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> CpuMpData->CpuData = (CPU_AP_DATA *) (CpuMpData + 1);</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> @@ -1704,11 +1705,12 @@ MpInitLibInitialize (</span><br>
<span style="color:purple">> // Don't pass BSP's TR to APs to avoid AP init failure.</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> //</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> VolatileRegisters.Tr = 0;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> - CopyMem (&CpuMpData->CpuData[0].VolatileRegisters, &VolatileRegisters, sizeof (VolatileRegisters));</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> + CopyMem (&CpuMpData->CpuData[CpuMpData->BspNumber].VolatileRegisters, &VolatileRegisters, sizeof</span><br>
<span style="color:purple">> (VolatileRegisters));</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> //</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> // Set BSP basic information</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> //</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> - InitializeApData (CpuMpData, 0, 0, CpuMpData->Buffer + ApStackSize);</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> + BspTopOfStack = CpuMpData->Buffer + (CpuMpData->BspNumber + 1) * CpuMpData->CpuApStackSize;</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> + InitializeApData (CpuMpData, CpuMpData->BspNumber, 0, BspTopOfStack);</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> //</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> // Save assembly code information</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> //</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> --</span><br>
<span style="color:purple">> 2.23.0.windows.1</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> -=-=-=-=-=-=</span><br>
<span style="color:purple">> Groups.io Links: You receive all messages sent to this group.</span><br>
<span style="color:purple">> </span><br>
<span style="color:purple">> View/Reply Online (#53263): <a href="https://edk2.groups.io/g/devel/message/53263">https://edk2.groups.io/g/devel/message/53263</a></span><br>
<span style="color:purple">> Mute This Topic: <a href="https://groups.io/mt/69712223/1712937">https://groups.io/mt/69712223/1712937</a></span><br>
<span style="color:purple">> Group Owner: <a href="mailto:devel+owner@edk2.groups.io">devel+owner@edk2.groups.io</a></span><br>
<span style="color:purple">> Unsubscribe: <a href="https://edk2.groups.io/g/devel/unsub">https://edk2.groups.io/g/devel/unsub</a> [ray.ni@intel.com]</span><br>
<span style="color:purple">> -=-=-=-=-=-=</span><o:p></o:p></span></p>
</div>
</div>
</body>
</html>
<div width="1" style="color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>
You receive all messages sent to this group.
<p>
<a target="_blank" href="https://edk2.groups.io/g/devel/message/53265">View/Reply Online (#53265)</a> |
|
<a target="_blank" href="https://groups.io/mt/69712223/1813853">Mute This Topic</a>
| <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>
<br>
<a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> |
<a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |
<a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>
[edk2-devel-archive@redhat.com]<br>
<div width="1" style="color:white;clear:both">_._,_._,_</div>