<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:10.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.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;}
--></style>
</head>
<body lang="en-IT" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">> From: Jerin Jacob <jerinjacobk@gmail.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> Date: Thursday, 18 November 2021 at 07:17<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> To: Elena Agostini <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> Cc: dpdk-dev <dev@dpdk.org><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> Subject: Re: [PATCH v1 1/1] app/test-gpudev: introduce ethdev to rx/tx packets using GPU memory<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> External email: Use caution opening links or attachments>
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> On Thu, Nov 18, 2021 at 12:28 AM <eagostini@nvidia.com> wrote:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > From: Elena Agostini <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > This patch introduces ethdev in test-gpudev app to provide:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > - an example to show how GPU memory can be used to send and receive packets<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > - an useful tool to measure network metrics when using GPU memory with<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > io forwarding<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > With this feature test-gpudev can:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > - RX packets in CPU or GPU memory<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > - Store packets in the gpudev communication list<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > - TX receive packets from the communication list<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > It's a simulation of a multi-core application.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > Signed-off-by: Elena Agostini <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > ---<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > app/test-gpudev/main.c | 471 +++++++++++++++++++++++++++++++++++++++--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > 1 file changed, 452 insertions(+), 19 deletions(-)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > diff --git a/app/test-gpudev/main.c b/app/test-gpudev/main.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > index 250fba6427..daa586c64e 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > --- a/app/test-gpudev/main.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +++ b/app/test-gpudev/main.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > @@ -10,6 +10,8 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <stdarg.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <errno.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <getopt.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#include <stdbool.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#include <signal.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <rte_common.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <rte_malloc.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > @@ -19,22 +21,98 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <rte_ethdev.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <rte_mempool.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <rte_mbuf.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#include <rte_launch.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#include <rte_lcore.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#include <rte_per_lcore.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > #include <rte_gpudev.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#ifndef ACCESS_ONCE<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&x)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#ifndef WRITE_ONCE<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#define WRITE_ONCE(x, v) (ACCESS_ONCE(x) = (v))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +#endif> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> Better to have a public version of this macro as it uses just in this<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> test application.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thanks for taking time to review this patch.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I can actually use the RTE_GPU_VOLATILE macro exposed in the gpudev library<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">to replace both of them.<o:p></o:p></span></p>
</div>
</div>
</body>
</html>