<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=utf-8">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 15">
<meta name="Originator" content="Microsoft Word 15">
<link rel="File-List" href="cid:filelist.xml@01D819C1.C97A7D20"><link rel="Edit-Time-Data" href="cid:editdata.mso"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:Zoom>170</w:Zoom>
<w:SpellingState>Clean</w:SpellingState>
<w:DocumentKind>DocumentEmail</w:DocumentKind>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="376">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Link"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;
        mso-font-alt:"Calisto MT";
        mso-font-charset:0;
        mso-generic-font-family:roman;
        mso-font-pitch:variable;
        mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;
        mso-font-alt:"Times New Roman";
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:-469750017 -1073732485 9 0 511 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-unhide:no;
        mso-style-qformat:yes;
        mso-style-parent:"";
        margin:0in;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-noshow:yes;
        mso-style-priority:99;
        color:purple;
        text-decoration:underline;
        text-underline:single;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-style-unhide:no;
        margin:0in;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
p.xmsonormal, li.xmsonormal, div.xmsonormal
        {mso-style-name:x_msonormal;
        mso-style-unhide:no;
        margin:0in;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
span.xspelle
        {mso-style-name:x_spelle;
        mso-style-unhide:no;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        mso-style-noshow:yes;
        mso-style-unhide:no;
        mso-ansi-font-size:11.0pt;
        mso-bidi-font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:Calibri;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-default-props:yes;
        font-size:10.0pt;
        mso-ansi-font-size:10.0pt;
        mso-bidi-font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;
        mso-header-margin:.5in;
        mso-footer-margin:.5in;
        mso-paper-source:0;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0in 5.4pt 0in 5.4pt;
        mso-para-margin:0in;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman",serif;}
</style><![endif]--><!--[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="blue" vlink="purple" style="tab-interval:.5in;word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman"">Abner,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman"">I do not know if this patter is being used yet, but there is great value in it for all platforms that are intended to be synced
 with edk2.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman"">The idea of testing an edk2 change against all available open source platforms that use edk2 would increase confidence in the
 edk2 change.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman"">From a CI agent perspective, there are no issues with pulling more repos and running tests and providing results that can block
 an edk2 change if it breaks a specific platform.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman"">Mike<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman""><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="mso-fareast-font-family:"Times New Roman"">From:</span></b><span style="mso-fareast-font-family:"Times New Roman""> Chang, Abner (HPS SW/FW Technologist) <abner.chang@hpe.com>
<br>
<b>Sent:</b> Friday, February 4, 2022 8:15 AM<br>
<b>To:</b> Kinney, Michael D <michael.d.kinney@intel.com>; Leif Lindholm <leif@nuviainc.com>; devel@edk2.groups.io; Ni, Ray <ray.ni@intel.com><br>
<b>Cc:</b> Andrew Fish <afish@apple.com>; Sami Mujawar <Sami.Mujawar@arm.com><br>
<b>Subject:</b> Re: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add header files of RISC-V processor package<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;mso-fareast-font-family:"Times New Roman";color:black">BTW Mike,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;mso-fareast-font-family:"Times New Roman";color:black">Can Core CI on edk2 repo allow the modules referred in the DSC/FDF (e.g., OvmgRiscV64.dsc) to stay in edk2-platform?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;mso-fareast-font-family:"Times New Roman";color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;mso-fareast-font-family:"Times New Roman";color:black">Abner<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;mso-fareast-font-family:"Times New Roman";color:black"><o:p> </o:p></span></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="mso-fareast-font-family:"Times New Roman"">
<hr size="2" width="98%" align="center">
</span></div>
<div id="divRplyFwdMsg">
<p class="MsoNormal" style="mso-outline-level:1"><b><span style="mso-fareast-font-family:"Times New Roman";color:black">From:</span></b><span style="mso-fareast-font-family:"Times New Roman";color:black"> Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
<b>Sent:</b> Saturday, January 22, 2022 1:37 AM<br>
<b>To:</b> Chang, Abner (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>>; Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a> <<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>>; Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
<b>Cc:</b> Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
<b>Subject:</b> RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add header files of RISC-V processor package</span><span style="mso-fareast-font-family:"Times New Roman"">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="mso-fareast-font-family:"Times New Roman""> <o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="xmsonormal">I would recommend adding the Platform DSC required to run RISC-V with QEMU to
<span class="xspelle">OvmfPkg</span> so it can be part of CI for edk2 repo so any change to edk2 that is used by RISC-V can be verified by build and boot to shell.<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">I would like to see the <span class="xspelle">ArmVirtPkg</span> merged into
<span class="xspelle">OvmfPkg</span> too so <span class="xspelle">OvmfPkg</span> <span class="xspelle">
providse</span> FW build for all support CPU <span class="xspelle">Archs</span> running through QEMU to support edk2 CI that can build and boot to shell in an Azure Pipelines agent.<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">Mike<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></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="xmsonormal" style="mso-outline-level:1"><b>From:</b> Chang, Abner (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>>
<br>
<b>Sent:</b> Friday, January 21, 2022 9:13 AM<br>
<b>To:</b> Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>><br>
<b>Cc:</b> Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
<b>Subject:</b> Re: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add header files of RISC-V processor package<o:p></o:p></p>
</div>
</div>
<p class="xmsonormal"> <o:p></o:p></p>
<div>
<p class="xmsonormal" style="background:white"><span style="font-size:12.0pt;color:black">Ok Mike and Leif,</span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="background:white"><span style="font-size:12.0pt;color:black">Another question regarding to the location of RISC-V Virtual package for QEMU. What is the location and package you think RISC-V or other processor architectures should
 stay with?</span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="background:white"><span style="font-size:12.0pt;color:black"> </span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="background:white"><span style="font-size:12.0pt;color:black">Thanks</span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="background:white"><span style="font-size:12.0pt;color:black">Abner</span><o:p></o:p></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="mso-fareast-font-family:"Times New Roman"">
<hr size="1" width="98%" align="center">
</span></div>
<div id="x_divRplyFwdMsg">
<p class="xmsonormal" style="mso-outline-level:1"><b><span style="color:black">From:</span></b><span style="color:black"> Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
<b>Sent:</b> Saturday, January 15, 2022 12:21 AM<br>
<b>To:</b> Chang, Abner (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>>; Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a> <<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>>; Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
<b>Cc:</b> Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
<b>Subject:</b> RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add header files of RISC-V processor package</span>
<o:p></o:p></p>
<div>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="xmsonormal" style="margin-bottom:12.0pt">Hi Abner,<br>
<br>
We already have a package for common platform content in the edk2 repo.<br>
This is the MdeModulePkg.<br>
<br>
However, the number of common platform features added to the MdeModulePkg over<br>
time has made this a very large package, and this can be measured by how complex the<br>
Maintainer.txt rules are for this package.<br>
<br>
The revised approach is to create feature packages that platforms can add<br>
if their platform requires that specific feature category.  Examples are<br>
NetworkPkg, SecurityPkg, FmpDevicePkg, FatPkg, RedfishPkg, SourceLevelDebugPkg.<br>
<br>
Instead of adding another generic package such as CommonPlatformPkg, I<br>
would prefer to see the libs/modules either added to existing packages<br>
that match the feature category, or create new feature packages if <br>
there is a new feature category.<br>
<br>
We also try to limit the edk2 repo to components that are directly related<br>
the UEFI/PI specifications and are not Si/Platform specific.  Si/Platform<br>
specific features go into the edk2-platforms repo.  An example of a generic<br>
feature in the edk2-platforms repo is Features/Ext4.  The UEFI spec only<br>
specifies FAT for UEFI boot from file system.<br>
<br>
There are a number of other feature packages in edk2-platforms in the<br>
Features directory, so you should review those as well to see if there<br>
is natural landing zone for any of your components.<br>
<br>
Mike<br>
<br>
<br>
> -----Original Message-----<br>
> From: Chang, Abner (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>><br>
> Sent: Friday, January 14, 2022 3:15 AM<br>
> To: Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Ni, Ray<br>
> <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>><br>
> Cc: Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
> Subject: RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add header files of RISC-V processor package<br>
> <br>
> <br>
> <br>
> > -----Original Message-----<br>
> > From: Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
> > Sent: Friday, January 14, 2022 12:38 AM<br>
> > To: Chang, Abner (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>>; Leif<br>
> > Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>; <a href="mailto:devel@edk2.groups.io">
devel@edk2.groups.io</a>; Ni, Ray<br>
> > <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
> > Cc: Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar<br>
> > <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
> > Subject: RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add header<br>
> > files of RISC-V processor package<br>
> ><br>
> > Hi Abner,<br>
> ><br>
> > General recommendations included below.  Of course each<br>
> > lib/modules/include needs to be reviewed and the<br>
> > best location selected.  I am aware that there are components in edk2 that<br>
> > do not follow these general<br>
> > recommendations.  This is due to content that was added before these<br>
> > recommendations were established<br>
> > and we have work to do to get everything aligned.<br>
> ><br>
> > Mike<br>
> ><br>
> > > -----Original Message-----<br>
> > > From: Chang, Abner (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>><br>
> > > Sent: Wednesday, January 12, 2022 9:34 PM<br>
> > > To: Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; Leif Lindholm<br>
> > <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>; <a href="mailto:devel@edk2.groups.io">
devel@edk2.groups.io</a>; Ni, Ray<br>
> > > <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>><br>
> > > Cc: Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar<br>
> > <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
> > > Subject: RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add<br>
> > header files of RISC-V processor package<br>
> > ><br>
> > > HI Mike,<br>
> > > It is no problem to meet there. However, I am not available to join the<br>
> > design meeting in the next two weeks. Before we can get<br>
> > > together to discuss the best locations, do you have information regarding<br>
> > the rationale of driver/library location?<br>
> > ><br>
> > > What is the best location for,<br>
> > > - Processor ARCH dependent modules<br>
> ><br>
> > MdePkg for libs<br>
> > UefiCpuPkg for modules<br>
> ><br>
> > > - Common modules for all processor ARCHs<br>
> ><br>
> > Feature Packages based on the common feature.  Add to existing if it fits.<br>
> > Create new for completely new feature area.<br>
> ><br>
> > > - Platform module that is specific to processor ARCH?<br>
> ><br>
> > edk2-platform repository<br>
> How about Leif's suggestion? The CommonPlatformPkg on edk2?<br>
> <br>
> Abner<br>
> <br>
> ><br>
> > The only exception so far are platform modules used to support<br>
> > OvmfPkg/QEMU to support CI.<br>
> > In this case the modules are added to OvmfPkg.<br>
> ><br>
> > > - Platform module that is common to processor ARCHs?<br>
> ><br>
> > edk2-platform repository<br>
> ><br>
> > The only exception so far are platform modules used to support<br>
> > OvmfPkg/QEMU to support CI.<br>
> > In this case the modules are added to OvmfPkg.<br>
> ><br>
> > ><br>
> > > Thanks<br>
> > > Abner<br>
> > ><br>
> > > > -----Original Message-----<br>
> > > > From: Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
> > > > Sent: Monday, January 10, 2022 11:58 PM<br>
> > > > To: Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Chang,<br>
> > Abner<br>
> > > > (HPS SW/FW Technologist) <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>>; Kinney, Michael D<br>
> > > > <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>><br>
> > > > Cc: Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar<br>
> > > > <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
> > > > Subject: RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add<br>
> > header<br>
> > > > files of RISC-V processor package<br>
> > > ><br>
> > > > Hi Abner,<br>
> > > ><br>
> > > > I see comments from Leif as well.<br>
> > > ><br>
> > > > Do you think a discussion in the design meeting Ray Ni runs would be<br>
> > > > valuable<br>
> > > > to review all the modules/libs/includes and discuss options for the best<br>
> > > > location for them to reside in the edk2 repos?<br>
> > > ><br>
> > > > Thanks,<br>
> > > ><br>
> > > > Mike<br>
> > > ><br>
> > > > > -----Original Message-----<br>
> > > > > From: Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
> > > > > Sent: Monday, January 10, 2022 7:55 AM<br>
> > > > > To: Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Chang,<br>
> > > > Abner <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>>; Kinney, Michael D<br>
> > > > > <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>><br>
> > > > > Cc: Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Sami Mujawar<br>
> > > > <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
> > > > > Subject: RE: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add<br>
> > > > header files of RISC-V processor package<br>
> > > > ><br>
> > > > > Hi Abner,<br>
> > > > ><br>
> > > > > I would also like to see some proposals on adding the RiscV CPU scoped<br>
> > > > content<br>
> > > > > to the existing MdePkg/UefiCpuPkg instead of adding a new top level<br>
> > CPU<br>
> > > > package.<br>
> > > > ><br>
> > > > > There is already some work started to move some of the ARM specific<br>
> > > > content<br>
> > > > > from ARM CPU packages into MdePkg.<br>
> > > > ><br>
> > > > > Thanks,<br>
> > > > ><br>
> > > > > Mike<br>
> > > > ><br>
> > > > > > -----Original Message-----<br>
> > > > > > From: Leif Lindholm <<a href="mailto:leif@nuviainc.com">leif@nuviainc.com</a>><br>
> > > > > > Sent: Monday, January 10, 2022 5:11 AM<br>
> > > > > > To: <a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Chang, Abner <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>><br>
> > > > > > Cc: Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Kinney, Michael D<br>
> > > > <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; Sami Mujawar<br>
> > <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>><br>
> > > > > > Subject: Re: [edk2-devel] [PATCH 01/79] ProcessorPkg/Include: Add<br>
> > > > header files of RISC-V processor package<br>
> > > > > ><br>
> > > > > > On Sat, Jan 08, 2022 at 12:07:53 +0800, Abner Chang wrote:<br>
> > > > > > > (This is migrated from edk2-platforms:Silicon/RISC-V)<br>
> > > > > > ><br>
> > > > > > > RISC-V processor package library definitions.<br>
> > > > > > ><br>
> > > > > > > IndustryStandard/RiscV.h<br>
> > > > > > > -Add RiscV.h which conform with RISC-V Privilege Spec v1.10.<br>
> > > > > > ><br>
> > > > > > > RiscVImpl.h<br>
> > > > > > > -Definition of EDK2 RISC-V implementation.<br>
> > > > > > ><br>
> > > > > > > Signed-off-by: Abner Chang <<a href="mailto:abner.chang@hpe.com">abner.chang@hpe.com</a>><br>
> > > > > > > Co-authored-by: Daniel Schaefer <<a href="mailto:daniel.schaefer@hpe.com">daniel.schaefer@hpe.com</a>><br>
> > > > > > > Co-authored-by: Gilbert Chen <<a href="mailto:gilbert.chen@hpe.com">gilbert.chen@hpe.com</a>><br>
> > > > > > > Reviewed-by: Leif Lindholm <<a href="mailto:leif.lindholm@linaro.org">leif.lindholm@linaro.org</a>><br>
> > > > > ><br>
> > > > > > Hmm, no.<br>
> > > > > > I gave a reviewed-by for that patch to be merged into edk2-platforms<br>
> > > > > > once upon a time. This is not relevant for migration to edk2.<br>
> > > > > ><br>
> > > > > > My proposal for migrating this code would be as follows:<br>
> > > > > > - Announce a hold on merging new code to RiscV portions of<br>
> > > > > >   edk2-platforms.<br>
> > > > > > - Apply any and all bugfixes and CI/uncrustify fixes in place in<br>
> > > > > >   edk2-platforms.<br>
> > > > > > - Get some level of agreement for what to do instead of<br>
> > > > > >   RiscVPlatformPkg - i.e. slot into MdeModulePkg instead.<br>
> > > > > >   -  If that cannot be reached within a few days, create a new<br>
> > > > > >      top-level directory called "CommonPlatformPkg" or something,<br>
> > > > > >      with you, Daniel(/Gilbert?), Sami, me as maintainers.<br>
> > > > > >      - Move all of the RiscVPlatformPkg code under there instead.<br>
> > > > > >      - I'll follow with ArmPlatformPkg.<br>
> > > > > >      - PC/AT code should move across too over time.<br>
> > > > > > - Move the rest of the code across unmodified as massive single<br>
> > > > > >   patches per package (potentially more patches than that for<br>
> > > > > >   RiscVPlatformPkg).<br>
> > > > > >   - Drop all existing Reviewed-by/Acked-by.<br>
> > > > > >   - After each "move" patch, insert a "fixup" patch to address the<br>
> > > > > >     things that need fixing due to path/name changes.<br>
> > > > > ><br>
> > > > > > /<br>
> > > > > >     Leif<br>
> > > > > ><br>
> > > > > > > Cc: Leif Lindholm <<a href="mailto:leif.lindholm@linaro.org">leif.lindholm@linaro.org</a>><br>
> > > > > > > Cc: Gilbert Chen <<a href="mailto:gilbert.chen@hpe.com">gilbert.chen@hpe.com</a>><br>
> > > > > > > ---<br>
> > > > > > >  .../Include/IndustryStandard/RiscV.h          | 156<br>
> > ++++++++++++++++++<br>
> > > > > > >  .../RISC-V/ProcessorPkg/Include/RiscVImpl.h   |  87 ++++++++++<br>
> > > > > > >  2 files changed, 243 insertions(+)<br>
> > > > > > >  create mode 100644 Silicon/RISC-<br>
> > > > V/ProcessorPkg/Include/IndustryStandard/RiscV.h<br>
> > > > > > >  create mode 100644 Silicon/RISC-<br>
> > V/ProcessorPkg/Include/RiscVImpl.h<br>
> > > > > > ><br>
> > > > > > > diff --git a/Silicon/RISC-<br>
> > > > V/ProcessorPkg/Include/IndustryStandard/RiscV.h b/Silicon/RISC-<br>
> > > > > > V/ProcessorPkg/Include/IndustryStandard/RiscV.h<br>
> > > > > > > new file mode 100644<br>
> > > > > > > index 0000000000..2a992394ed<br>
> > > > > > > --- /dev/null<br>
> > > > > > > +++ b/Silicon/RISC-<br>
> > V/ProcessorPkg/Include/IndustryStandard/RiscV.h<br>
> > > > > > > @@ -0,0 +1,156 @@<br>
> > > > > > > +/** @file<br>
> > > > > > > +  RISC-V package definitions.<br>
> > > > > > > +<br>
> > > > > > > +  Copyright (c) 2019, Hewlett Packard Enterprise Development LP.<br>
> > All<br>
> > > > rights reserved.<BR><br>
> > > > > > > +<br>
> > > > > > > +  SPDX-License-Identifier: BSD-2-Clause-Patent<br>
> > > > > > > +<br>
> > > > > > > +**/<br>
> > > > > > > +<br>
> > > > > > > +#ifndef RISCV_INDUSTRY_STANDARD_H_<br>
> > > > > > > +#define RISCV_INDUSTRY_STANDARD_H_<br>
> > > > > > > +<br>
> > > > > > > +#if defined (MDE_CPU_RISCV64)<br>
> > > > > > > +#define RISC_V_XLEN_BITS 64<br>
> > > > > > > +#else<br>
> > > > > > > +#endif<br>
> > > > > > > +<br>
> > > > > > > +#define RISC_V_ISA_ATOMIC_EXTENSION                 (0x00000001 <<<br>
> > 0)<br>
> > > > > > > +#define RISC_V_ISA_BIT_OPERATION_EXTENSION<br>
> > (0x00000001<br>
> > > > << 1)<br>
> > > > > > > +#define RISC_V_ISA_COMPRESSED_EXTENSION             (0x00000001<br>
> > <<<br>
> > > > 2)<br>
> > > > > > > +#define RISC_V_ISA_DOUBLE_PRECISION_FP_EXTENSION<br>
> > > > (0x00000001 << 3)<br>
> > > > > > > +#define RISC_V_ISA_RV32E_ISA                        (0x00000001 << 4)<br>
> > > > > > > +#define RISC_V_ISA_SINGLE_PRECISION_FP_EXTENSION<br>
> > > > (0x00000001 << 5)<br>
> > > > > > > +#define RISC_V_ISA_ADDITIONAL_STANDARD_EXTENSION<br>
> > > > (0x00000001 << 6)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_1                       (0x00000001 << 7)<br>
> > > > > > > +#define RISC_V_ISA_INTEGER_ISA_EXTENSION            (0x00000001<br>
> > <<<br>
> > > > 8)<br>
> > > > > > > +#define<br>
> > > > RISC_V_ISA_DYNAMICALLY_TRANSLATED_LANGUAGE_EXTENSION<br>
> > > > (0x00000001 << 9)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_2                       (0x00000001 << 10)<br>
> > > > > > > +#define RISC_V_ISA_DECIMAL_FP_EXTENSION             (0x00000001<br>
> > <<<br>
> > > > 11)<br>
> > > > > > > +#define RISC_V_ISA_INTEGER_MUL_DIV_EXTENSION<br>
> > (0x00000001<br>
> > > > << 12)<br>
> > > > > > > +#define RISC_V_ISA_USER_LEVEL_INTERRUPT_SUPPORTED<br>
> > > > (0x00000001 << 13)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_3                       (0x00000001 << 14)<br>
> > > > > > > +#define RISC_V_ISA_PACKED_SIMD_EXTENSION<br>
> > (0x00000001 <<<br>
> > > > 15)<br>
> > > > > > > +#define RISC_V_ISA_QUAD_PRECISION_FP_EXTENSION<br>
> > > > (0x00000001 << 16)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_4                       (0x00000001 << 17)<br>
> > > > > > > +#define RISC_V_ISA_SUPERVISOR_MODE_IMPLEMENTED<br>
> > > > (0x00000001 << 18)<br>
> > > > > > > +#define RISC_V_ISA_TRANSATIONAL_MEMORY_EXTENSION<br>
> > > > (0x00000001 << 19)<br>
> > > > > > > +#define RISC_V_ISA_USER_MODE_IMPLEMENTED<br>
> > (0x00000001<br>
> > > > << 20)<br>
> > > > > > > +#define RISC_V_ISA_VECTOR_EXTENSION                 (0x00000001 <<<br>
> > 21)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_5                       (0x00000001 << 22)<br>
> > > > > > > +#define RISC_V_ISA_NON_STANDARD_EXTENSION<br>
> > (0x00000001<br>
> > > > << 23)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_6                       (0x00000001 << 24)<br>
> > > > > > > +#define RISC_V_ISA_RESERVED_7                       (0x00000001 << 25)<br>
> > > > > > > +<br>
> > > > > > > +//<br>
> > > > > > > +// RISC-V CSR definitions.<br>
> > > > > > > +//<br>
> > > > > > > +//<br>
> > > > > > > +// Machine information<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MVENDORID     0xF11<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MARCHID       0xF12<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MIMPID        0xF13<br>
> > > > > > > +#define RISCV_CSR_MACHINE_HARRID        0xF14<br>
> > > > > > > +//<br>
> > > > > > > +// Machine Trap Setup.<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MSTATUS       0x300<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MISA          0x301<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MEDELEG       0x302<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MIDELEG       0x303<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MIE           0x304<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MTVEC         0x305<br>
> > > > > > > +<br>
> > > > > > > +#define RISCV_TIMER_COMPARE_BITS      32<br>
> > > > > > > +//<br>
> > > > > > > +// Machine Timer and Counter.<br>
> > > > > > > +//<br>
> > > > > > > +//#define RISCV_CSR_MACHINE_MTIME         0x701<br>
> > > > > > > +//#define RISCV_CSR_MACHINE_MTIMEH        0x741<br>
> > > > > > > +//<br>
> > > > > > > +// Machine Trap Handling.<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MSCRATCH      0x340<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MEPC          0x341<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MCAUSE        0x342<br>
> > > > > > > +  #define MACHINE_MCAUSE_EXCEPTION_ MASK 0x0f<br>
> > > > > > > +  #define MACHINE_MCAUSE_INTERRUPT      (RISC_V_XLEN_BITS -<br>
> > 1)<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MBADADDR      0x343<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MIP           0x344<br>
> > > > > > > +<br>
> > > > > > > +//<br>
> > > > > > > +// Machine Protection and Translation.<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MBASE         0x380<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MBOUND        0x381<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MIBASE        0x382<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MIBOUND       0x383<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MDBASE        0x384<br>
> > > > > > > +#define RISCV_CSR_MACHINE_MDBOUND       0x385<br>
> > > > > > > +<br>
> > > > > > > +//<br>
> > > > > > > +// Supervisor mode CSR.<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SSTATUS    0x100<br>
> > > > > > > +  #define SSTATUS_SIE_BIT_POSITION      1<br>
> > > > > > > +  #define SSTATUS_SPP_BIT_POSITION      8<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SIE        0x104<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SSCRATCH   0x140<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SEPC       0x141<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SCAUSE     0x142<br>
> > > > > > > +  #define SCAUSE_USER_SOFTWARE_INT        0<br>
> > > > > > > +  #define SCAUSE_SUPERVISOR_SOFTWARE_INT  1<br>
> > > > > > > +  #define SCAUSE_USER_TIMER_INT           4<br>
> > > > > > > +  #define SCAUSE_SUPERVISOR_TIMER_INT     5<br>
> > > > > > > +  #define SCAUSE_USER_EXTERNAL_INT        8<br>
> > > > > > > +  #define SCAUSE_SUPERVISOR_EXTERNAL_INT  9<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_STVAL      0x143<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SIP        0x144<br>
> > > > > > > +#define RISCV_CSR_SUPERVISOR_SATP       0x180<br>
> > > > > > > +<br>
> > > > > > > +#if defined (MDE_CPU_RISCV64)<br>
> > > > > > > +  #define RISCV_SATP_MODE_MASK          0xF000000000000000<br>
> > > > > > > +  #define RISCV_SATP_MODE_BIT_POSITION  60<br>
> > > > > > > +#endif<br>
> > > > > > > +    #define RISCV_SATP_MODE_OFF         0<br>
> > > > > > > +    #define RISCV_SATP_MODE_SV32        1<br>
> > > > > > > +    #define RISCV_SATP_MODE_SV39        8<br>
> > > > > > > +    #define RISCV_SATP_MODE_SV48        9<br>
> > > > > > > +    #define RISCV_SATP_MODE_SV57        10<br>
> > > > > > > +    #define RISCV_SATP_MODE_SV64        11<br>
> > > > > > > +<br>
> > > > > > > +  #define SATP64_ASID_MASK              0x0FFFF00000000000<br>
> > > > > > > +  #define SATP64_PPN_MASK               0x00000FFFFFFFFFFF<br>
> > > > > > > +<br>
> > > > > > > +#define RISCV_CAUSE_MISALIGNED_FETCH        0x0<br>
> > > > > > > +#define RISCV_CAUSE_FETCH_ACCESS            0x1<br>
> > > > > > > +#define RISCV_CAUSE_ILLEGAL_INSTRUCTION     0x2<br>
> > > > > > > +#define RISCV_CAUSE_BREAKPOINT              0x3<br>
> > > > > > > +#define RISCV_CAUSE_MISALIGNED_LOAD         0x4<br>
> > > > > > > +#define RISCV_CAUSE_LOAD_ACCESS             0x5<br>
> > > > > > > +#define RISCV_CAUSE_MISALIGNED_STORE        0x6<br>
> > > > > > > +#define RISCV_CAUSE_STORE_ACCESS            0x7<br>
> > > > > > > +#define RISCV_CAUSE_USER_ECALL              0x8<br>
> > > > > > > +#define RISCV_CAUSE_HYPERVISOR_ECALL        0x9<br>
> > > > > > > +#define RISCV_CAUSE_SUPERVISOR_ECALL        0xa<br>
> > > > > > > +#define RISCV_CAUSE_MACHINE_ECALL           0xb<br>
> > > > > > > +#define RISCV_CAUSE_FETCH_PAGE_FAULT        0xc<br>
> > > > > > > +#define RISCV_CAUSE_LOAD_PAGE_FAULT         0xd<br>
> > > > > > > +#define RISCV_CAUSE_STORE_PAGE_FAULT        0xf<br>
> > > > > > > +#define RISCV_CAUSE_FETCH_GUEST_PAGE_FAULT  0x14<br>
> > > > > > > +#define RISCV_CAUSE_LOAD_GUEST_PAGE_FAULT   0x15<br>
> > > > > > > +#define RISCV_CAUSE_STORE_GUEST_PAGE_FAULT  0x17<br>
> > > > > > > +<br>
> > > > > > > +//<br>
> > > > > > > +// Machine Read-Write Shadow of Hypervisor Read-Only Registers<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_HTIMEW                0xB01<br>
> > > > > > > +#define RISCV_CSR_HTIMEHW               0xB81<br>
> > > > > > > +//<br>
> > > > > > > +// Machine Host-Target Interface (Non-Standard Berkeley<br>
> > Extension)<br>
> > > > > > > +//<br>
> > > > > > > +#define RISCV_CSR_MTOHOST               0x780<br>
> > > > > > > +#define RISCV_CSR_MFROMHOST             0x781<br>
> > > > > > > +<br>
> > > > > > > +#endif<br>
> > > > > > > diff --git a/Silicon/RISC-V/ProcessorPkg/Include/RiscVImpl.h<br>
> > > > b/Silicon/RISC-V/ProcessorPkg/Include/RiscVImpl.h<br>
> > > > > > > new file mode 100644<br>
> > > > > > > index 0000000000..14092df174<br>
> > > > > > > --- /dev/null<br>
> > > > > > > +++ b/Silicon/RISC-V/ProcessorPkg/Include/RiscVImpl.h<br>
> > > > > > > @@ -0,0 +1,87 @@<br>
> > > > > > > +/** @file<br>
> > > > > > > +  RISC-V package definitions.<br>
> > > > > > > +<br>
> > > > > > > +  Copyright (c) 2016 - 2019, Hewlett Packard Enterprise<br>
> > Development<br>
> > > > LP. All rights reserved.<BR><br>
> > > > > > > +<br>
> > > > > > > +  SPDX-License-Identifier: BSD-2-Clause-Patent<br>
> > > > > > > +<br>
> > > > > > > +**/<br>
> > > > > > > +<br>
> > > > > > > +#ifndef RISCV_H_<br>
> > > > > > > +#define RISCV_H_<br>
> > > > > > > +<br>
> > > > > > > +#include <Uefi.h><br>
> > > > > > > +#include <IndustryStandard/RiscV.h><br>
> > > > > > > +<br>
> > > > > > > +#define _ASM_FUNC(Name, Section)    \<br>
> > > > > > > +  .global   Name                  ; \<br>
> > > > > > > +  .section  #Section, "ax"        ; \<br>
> > > > > > > +  .type     Name, %function       ; \<br>
> > > > > > > +  .p2align  2                     ; \<br>
> > > > > > > +  Name:<br>
> > > > > > > +<br>
> > > > > > > +#define ASM_FUNC(Name) _ASM_FUNC(ASM_PFX(Name), .text.<br>
> > ##<br>
> > > > Name)<br>
> > > > > > > +<br>
> > > > > > > +#if defined (MDE_CPU_RISCV64)<br>
> > > > > > > +typedef UINT64 RISC_V_REGS_PROTOTYPE;<br>
> > > > > > > +#else<br>
> > > > > > > +#endif<br>
> > > > > > > +<br>
> > > > > > > +//<br>
> > > > > > > +// Structure for 128-bit value<br>
> > > > > > > +//<br>
> > > > > > > +typedef struct {<br>
> > > > > > > +  UINT64            Value64_L;<br>
> > > > > > > +  UINT64            Value64_H;<br>
> > > > > > > +} RISCV_UINT128;<br>
> > > > > > > +<br>
> > > > > > > +#define RISCV_MACHINE_CONTEXT_SIZE  0x1000<br>
> > > > > > > +typedef struct _RISCV_MACHINE_MODE_CONTEXT<br>
> > > > RISCV_MACHINE_MODE_CONTEXT;<br>
> > > > > > > +<br>
> > > > > > > +///<br>
> > > > > > > +/// Exception handlers in context.<br>
> > > > > > > +///<br>
> > > > > > > +typedef struct _EXCEPTION_HANDLER_CONTEXT {<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS InstAddressMisalignedHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS InstAccessFaultHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS IllegalInstHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS BreakpointHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS LoadAddrMisalignedHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS LoadAccessFaultHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS StoreAmoAddrMisalignedHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS StoreAmoAccessFaultHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS EnvCallFromUModeHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS EnvCallFromSModeHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS EnvCallFromHModeHander;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS EnvCallFromMModeHander;<br>
> > > > > > > +} EXCEPTION_HANDLER_CONTEXT;<br>
> > > > > > > +<br>
> > > > > > > +///<br>
> > > > > > > +/// Exception handlers in context.<br>
> > > > > > > +///<br>
> > > > > > > +typedef struct _INTERRUPT_HANDLER_CONTEXT {<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS SoftwareIntHandler;<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS TimerIntHandler;<br>
> > > > > > > +} INTERRUPT_HANDLER_CONTEXT;<br>
> > > > > > > +<br>
> > > > > > > +///<br>
> > > > > > > +/// Interrupt handlers in context.<br>
> > > > > > > +///<br>
> > > > > > > +typedef struct _TRAP_HANDLER_CONTEXT {<br>
> > > > > > > +  EXCEPTION_HANDLER_CONTEXT ExceptionHandlerContext;<br>
> > > > > > > +  INTERRUPT_HANDLER_CONTEXT IntHandlerContext;<br>
> > > > > > > +} TRAP_HANDLER_CONTEXT;<br>
> > > > > > > +<br>
> > > > > > > +///<br>
> > > > > > > +/// Machine mode context used for saveing hart-local context.<br>
> > > > > > > +///<br>
> > > > > > > +typedef struct _RISCV_MACHINE_MODE_CONTEXT {<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS PeiService;                /// PEI service.<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS MachineModeTrapHandler;    ///<br>
> > Machine<br>
> > > > mode trap handler.<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS HypervisorModeTrapHandler; ///<br>
> > Hypervisor<br>
> > > > mode trap handler.<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS SupervisorModeTrapHandler; ///<br>
> > Supervisor<br>
> > > > mode trap handler.<br>
> > > > > > > +  EFI_PHYSICAL_ADDRESS UserModeTrapHandler;       /// USer<br>
> > mode<br>
> > > > trap handler.<br>
> > > > > > > +  TRAP_HANDLER_CONTEXT MModeHandler;              /// Handler for<br>
> > > > machine mode.<br>
> > > > > > > +} RISCV_MACHINE_MODE_CONTEXT;<br>
> > > > > > > +<br>
> > > > > > > +#endif<br>
> > > > > > > --<br>
> > > > > > > 2.31.1<br>
> > > > > > ><br>
> > > > > > ><br>
> > > > > > ><br>
> > > > > > > <br>
> > > > > > ><br>
> > > > > > ><br>
> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</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/86394">View/Reply Online (#86394)</a> |    |  <a target="_blank" href="https://groups.io/mt/88278483/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><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>