<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; ">
<div>Hi Yunhong,</div>
<div><br>
</div>
<div>I haven't seen the pci-flavor design from John. All that I have seen so far about it is from Yongli's Wiki. I think that might be the disconnect between us. I would be very glad to see it in a whole. I would like also to encourage you to look at our proposal
as posted in the meeting minutes (also in our google doc). We know how we can get there. But I would like to see the complete pci-flavor design and see how we can use it to meet our requirements, and/or address our concerns.</div>
<div><br>
</div>
<div>thanks,</div>
<div>Robert</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div>
<div>On 1/10/14 1:30 PM, "Jiang, Yunhong" <<a href="mailto:yunhong.jiang@intel.com">yunhong.jiang@intel.com</a>> wrote:</div>
</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div 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">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:PMingLiU;
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:MingLiU;
panose-1:2 2 5 9 0 0 0 0 0 0;}
@font-face
{font-family:MingLiU;
panose-1:2 2 5 9 0 0 0 0 0 0;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"\@PMingLiU";
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@MingLiU";
panose-1:2 2 5 9 0 0 0 0 0 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"PMingLiU","serif";
mso-fareast-language:ZH-TW;}
h5
{mso-style-priority:9;
mso-style-link:"Heading 5 Char";
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:10.0pt;
font-family:"PMingLiU","serif";
mso-fareast-language:ZH-TW;
font-weight:bold;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"PMingLiU","serif";
mso-fareast-language:ZH-TW;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:MingLiU;
mso-fareast-language:ZH-TW;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";
mso-fareast-language:ZH-TW;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin:0cm;
margin-bottom:.0001pt;
text-indent:21.0pt;
font-size:12.0pt;
font-family:"PMingLiU","serif";
mso-fareast-language:ZH-TW;}
span.Heading5Char
{mso-style-name:"Heading 5 Char";
mso-style-priority:9;
mso-style-link:"Heading 5";
font-family:"Cambria","serif";
color:#243F60;
mso-fareast-language:ZH-TW;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;
mso-fareast-language:ZH-TW;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";
mso-fareast-language:ZH-TW;}
span.xc4
{mso-style-name:xc4;}
span.timestamp
{mso-style-name:timestamp;}
span.hyperlink-whois
{mso-style-name:hyperlink-whois;}
span.hyperlink-channel
{mso-style-name:hyperlink-channel;}
span.EmailStyle28
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle29
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle30
{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:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:132448665;
mso-list-type:hybrid;
mso-list-template-ids:1337893538 -1720712416 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-text:"%1\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-text:"%2\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:42.0pt;
text-indent:-21.0pt;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:63.0pt;
text-indent:-21.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:84.0pt;
text-indent:-21.0pt;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-text:"%5\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:105.0pt;
text-indent:-21.0pt;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:126.0pt;
text-indent:-21.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:147.0pt;
text-indent:-21.0pt;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-text:"%8\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:168.0pt;
text-indent:-21.0pt;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:189.0pt;
text-indent:-21.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></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]-->
<div lang="ZH-CN" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Robert, thanks for your reply. Please check reply prefix with ‘yjiang5’.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">--jyh<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif; ">From:</span></b><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif; "> Robert Li (baoli) [<a href="mailto:baoli@cisco.com">mailto:baoli@cisco.com</a>]
<br>
<b>Sent:</b> Friday, January 10, 2014 9:16 AM<br>
<b>To:</b> Jiang, Yunhong; OpenStack Development Mailing List (not for usage questions); Irena Berezovsky; Sandhya Dasu (sadasu); Itzik Brown;
<a href="mailto:john@johngarbutt.com">john@johngarbutt.com</a>; He, Yongli<br>
<b>Subject:</b> Re: [openstack-dev] [nova] [neutron] PCI pass-through network support<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Hi Yunhong,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">I appreciate your comments. Please see inline…<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">--Robert<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">On 1/10/14 1:40 AM, "Jiang, Yunhong" <<a href="mailto:yunhong.jiang@intel.com">yunhong.jiang@intel.com</a>> wrote:<o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Robert, sorry that I’m not fan of * your group * term. To me, *your group” mixed two thing. It’s an extra property provided by configuration,
and also it’s a very-not-flexible mechanism to select devices (you can only select devices based on the ‘group name’ property).</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2">
<!--[if !supportLists]--><span lang="EN-US" style="color:black"><span style="mso-list:Ignore">1)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman'; ">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">A dynamic group is much better. For example, user may want to select GPU device based on vendor id, or based on vendor_id+device_id.
In another word, user want to create group based on vendor_id, or vendor_id+device_id and select devices from these group. John’s proposal is very good, to provide an API to create the PCI flavor(or alias). I prefer flavor because it’s more openstack style.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:0cm"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">I'm not sure what you mean by a dynamic group. But a PCI group can be dynamically created on the controller. The whitelist definition allows
the grouping based on vendor_id or vendor_id + product_id, etc. The name of PCI group makes more sense in terms of SRIOV, but the name of PCI flavor may make more sense for GPU because a user may want something from a specific vendor as you have indicated. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">So far, our discussion has been largely based on the infrastructure that is currently existing in nova, or largely confined within the existing
PCI passthrough implemenation. If my understanding is correct, then devices belonging to different aliases shouldn't overlap. Otherwise, the stats accounting would become useless. So the question is do we allow overlapping of devices that can be classified
into different aliases at the same time. If the answer is yes, then some fundamental change would be required. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yjiang5] no, the devices belongs to different alias can overlap. The alias (or flavor) is purely a definition of the PCI property
requirement, that’s the reason I think the pci_flavor is much better name. Why do you think stats accounting is useless if device is overlap?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Talking about the flexibility you mentioned earlier, let me try to describe this if I understand you correctly:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> -- whitelist defines devices available in a compute node. The collection of them determines all the devices available in a cloud.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> -- At any time, PCI groups (or PCI flavors) can be defined on the controller that defines criteria (in terms of vendor_id, product_id,
bdf, etc) to locate a particular device.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">I don't think it's a bad idea. But Would it require the controller to manage all the PCI devices available in the cloud? and/or how would stats
be managed per PCI flavor? Can we clearly define how to enable this maximum flexibility? It's certainly not there today.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yjiang5] The stats has nothing to do with PCI flavor. The stats gives the status of the devices in the cloud, and the PCI flavor
is * just * for user requirement like the instance flavor.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2">
<!--[if !supportLists]--><span lang="EN-US" style="color:black"><span style="mso-list:Ignore">2)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman'; ">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">As for the second thing of your ‘group’, I’d understand it as an extra property provided by configuration. I don’t
think we should put it into the white list, which is to configure devices that are assignable. I’d add another configuration option to provide extra attribute to devices. When nova compute is up, it will parse this configuration and add them to the corresponding
PCI devices. I don’t think adding another configuration will cause too many trouble to deployment. Openstack already have a lot of configuration items
</span><span lang="EN-US" style="font-size:10.5pt;font-family:Wingdings;color:#1F497D;mso-fareast-language:ZH-CN">J</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Not sure how exactly it's going to be done. But the patches that Yongli has posted seems to be adding the pci-flaovr into the whitelist. We are
just trying to see the pci-flavor in a different angle (as posted in this thread), and that would make things a lot different. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yongli] I don’t like yongli’s patch either
</span><span lang="EN-US" style="font-size:10.5pt;font-family:Wingdings;color:#1F497D;mso-fareast-language:ZH-CN">J</span><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> I think his implementation is
different with John’s pci-flavor design.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div>
<p class="MsoListParagraph"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2">
<!--[if !supportLists]--><span lang="EN-US" style="color:black"><span style="mso-list:Ignore">3)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman'; ">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">I think currently we mixed the neutron and nova design. To me, Neutron SRIOV support is a user of nova PCI support.
Thus we should firstly analysis the requirement from neutron PCI support to nova PCI support in a more generic way, and then, we can discuss how we enhance the nova PCI support, or, if you want, re-design the nova PCI support. IMHO, if don’t consider network,
current implementation should be ok.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoListParagraph"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">I don't see that we are trying to mix the design. But I agree that we should provide SRIOV requirements, which we have already discussed in our
previous threads. Let me try it here, and folks, please add yours if I'm missing anything:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> 1. A SRIOV device can be used as a NIC to be attached to a VM (or domain). This implies that a PCI passthrough device is recognized
as an SRIOV device and corresponding networking handling as required by the domain is performed to attach it to the VM as a NIC.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yjiang5] For “is recognized as an SRIOV device”, it can be achieved by check the “PF” property of PCI devices, or it can be achieved
by simply check the vendor_id/device_id. What’s the exact meaning of “corresponding networking handling”? Is it about the nova PCI deice design? I’d think it as a Neutron specific functionality. Or, you need translate it to PCI device requirement.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> 2. A SRIOV device should be selected to be attached to a VM based on the VM's network connectivity.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yjiang5] This requirement is not clear. So the key is “based on the VM’s network connectivity”, right? If yes, can I translate the
requirement to “need specific the network connectivity property for a PCI devices and track that information”? If yes, it need more information as a requirement, like how the VM’s network connectivity information provide, statically at installation time,
or dynamically decided at neutron side? will it be changed whenever attach/de-attach to instance or it will be stablel. After answer these question, we will check if user defined property (the pci_extra_info configuration proposed ) meet this requirement.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> 3. If a VM has multiple SRIOV NICs, it should be possible to locate the SRIOV device assigned to the corresponding NIC.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:5.25pt;text-indent:5.25pt"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yjiang5] You mean locate the SRIOV device to the NIC, or locate NIC to the SRIOV device?<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:5.25pt;text-indent:5.25pt"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">If former, it’s not about the PCI support, but neutron/network issue on how to track
the PCI information in the NIC definition.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:5.25pt;text-indent:5.25pt"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">If latter, then it means we need extend the PCI device object, to not only track the
allocation status (free/assigned), but track the allocation information (NIC name).<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> 4. A SRIOV-capable compute node may not be used as a host for VMs that don't require SRIOV capability<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:9.0pt"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">[yjiang5] IMHO, a) This is just scheduler policy and should be achieved through specific scheduler filter.
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:47.25pt;text-indent:15.75pt"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">b) From design point of view, nova PCI support need only provide method to get PCI
information on a compute node, and method to get PCI request information on an instance create. As how to achieve the filter, it’s the implementation detail of that specific filter.
<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> 5. Specifically as required by 2 & 3, pci-flavor (or pci-alias, or pci-group, whatever it's called) should be allowed in —nic and
neutron commands. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> [yjiang5] I like this type of requirement, clearly and specifically </span><span lang="EN-US" style="font-size:10.5pt;font-family:Wingdings;color:#1F497D;mso-fareast-language:ZH-CN">J</span><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">
This is about how to fetch the PCI request information. Currently we only get it through instance flavor extra specs. With the neutron support, we need fetch such information from nic side. There are possibly have more source of request, like image property
may require some specific devices like encryption devices. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">When exploring the existing nova PCI passthrough, we figured out how to meet those requirements, and as a result we started the conversation.
SRIOV requirements would certainly influence the overall PCI passthrough design, I presume. The bottom line is that we want those requirements to be met.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2">
<!--[if !supportLists]--><span lang="EN-US" style="color:black"><span style="mso-list:Ignore">4)<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman'; ">
</span></span></span><!--[endif]--><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">IMHO, the core for nova PCI support is *<b>PCI property</b>*. The property means not only generic PCI devices like vendor
id, device id, device type, compute specific property like BDF address, the adjacent switch IP address, but also user defined property like nuertron’s physical net name etc. And then, it’s about how to get these property, how to select/group devices based
on the property, how to store/fetch these properties.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoListParagraph"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">I agree. But that's exactly what we are trying to accomplish.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Thanks</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">--jyh</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif; color: black; ">From:</span></b><span lang="EN-US" style="font-size: 10pt; font-family: Tahoma, sans-serif; color: black; "> Robert Li (baoli) [<a href="mailto:baoli@cisco.com">mailto:baoli@cisco.com</a>]
<br>
<b>Sent:</b> Thursday, January 09, 2014 8:49 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions); Irena Berezovsky; Sandhya Dasu (sadasu); Jiang, Yunhong; Itzik Brown;
<a href="mailto:john@johngarbutt.com">john@johngarbutt.com</a>; He, Yongli<br>
<b>Subject:</b> Re: [openstack-dev] [nova] [neutron] PCI pass-through network support</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US" style="color:black"> <o:p></o:p></span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Hi Folks,</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">With John joining the IRC, so far, we had a couple of productive meetings in an effort to come to consensus and move forward. Thanks John for
doing that, and I appreciate everyone's effort to make it to the daily meeting. Let's reconvene on Monday. </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">But before that, and based on our today's conversation on IRC, I'd like to say a few things. I think that first of all, we need to get agreement
on the terminologies that we are using so far. With the current nova PCI passthrough</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> PCI whitelist: defines all the available PCI passthrough devices on a compute node. </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#333333;background:whitesmoke">pci_passthrough_whitelist=[{
"vendor_id":"xxxx","product_id":"xxxx"}] </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> PCI Alias: criteria defined on the controller node with which requested PCI passthrough devices can be selected from all the PCI passthrough
devices available in a cloud. </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> Currently it has the following format: </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#333333;background:whitesmoke">pci_alias={"vendor_id":"xxxx",
"product_id":"xxxx", "name":"str"}</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> nova flavor extra_specs: request for PCI passthrough devices can be specified with extra_specs in the format for example:</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#333333;background:whitesmoke">"pci_passthrough:alias"="name:count"</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">As you can see, currently a PCI alias has a name and is defined on the controller. The implications for it is that when matching it against the
PCI devices, it has to match the vendor_id and product_id against all the available PCI devices until one is found. The name is only used for reference in the extra_specs. On the other hand, the whitelist is basically the same as the alias without a name.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">What we have discussed so far is based on something called PCI groups (or PCI flavors as Yongli puts it). Without introducing other complexities,
and with a little change of the above representation, we will have something like:</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#333333;background:whitesmoke">pci_passthrough_whitelist=[{ "vendor_id":"xxxx","product_id":"xxxx", "name":"str"}] </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">By doing so, we eliminated the PCI alias. And we call the "name" in above as a PCI group name. You can think of it as combining the definitions
of the existing whitelist and PCI alias. And believe it or not, a PCI group is actually a PCI alias. However, with that change of thinking, a lot of benefits can be harvested:</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * the implementation is significantly simplified</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * provisioning is simplified by eliminating the PCI alias</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * a compute node only needs to report stats with something like: PCI group name:count. A compute node processes all the PCI passthrough
devices against the whitelist, and assign a PCI group based on the whitelist definition.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * on the controller, we may only need to define the PCI group names. if we use a nova api to define PCI groups (could be private or
public, for example), one potential benefit, among other things (validation, etc), they can be owned by the tenant that creates them. And thus a wholesale of PCI passthrough devices is also possible.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * scheduler only works with PCI group names. </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * request for PCI passthrough device is based on PCI-group</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * deployers can provision the cloud based on the PCI groups</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> * Particularly for SRIOV, deployers can design SRIOV PCI groups based on network connectivities.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Further, to support SRIOV, we are saying that PCI group names not only can be used in the extra specs, it can also be used in the —nic option
and the neutron commands. This allows the most flexibilities and functionalities afforded by SRIOV.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Further, we are saying that we can define default PCI groups based on the PCI device's class.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">For vnic-type (or nic-type), we are saying that it defines the link characteristics of the nic that is attached to a VM: a nic that's connected
to a virtual switch, a nic that is connected to a physical switch, or a nic that is connected to a physical switch, but has a host macvtap device in between. The actual names of the choices are not important here, and can be debated.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">I'm hoping that we can go over the above on Monday. But any comments are welcome by email.</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Thanks,</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; ">Robert</span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: black; "> </span><span lang="EN-US" style="color:black"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</span>
</body>
</html>