<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=utf-8">
<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;}
@font-face
{font-family:Aptos;
panose-1:2 11 0 4 2 2 2 2 2 4;}
@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:0in;
font-size:10.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#467886;
text-decoration:underline;}
span.emailstyle20
{mso-style-name:emailstyle20;
font-family:"Aptos",sans-serif;
color:windowtext;}
span.EmailStyle200
{mso-style-type:personal;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span class="EmailStyle200"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"></span></span><span class="EmailStyle200"><span style="font-size:11.0pt"><o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Maxime,<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">Do you think you might be able to look at the info below (probably got lost in the many emails this last week / weekend).<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">Kind regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">-ChrisB<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Chris Brezovec (cbrezove) <cbrezove@cisco.com><br>
<b>Date: </b>Saturday, November 2, 2024 at 12:00</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;color:black">PM<br>
<b>To: </b>dev@dpdk.org <dev@dpdk.org>, maxime.coquelin@redhat.com <maxime.coquelin@redhat.com><br>
<b>Cc: </b>Roger Melton (rmelton) <rmelton@cisco.com>, Walt Robinson (walrobin) <walrobin@cisco.com><br>
<b>Subject: </b>Re: 32-bit virtio failing on DPDK v23.11.1 (and tags)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span class="emailstyle20"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"></span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Hi Maxime / team,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I have been going through the 12+ virtio commits between the last known working version and the first place we noticed this being broken. It does appear to be a change in this commit:
</span><a href="https://github.com/DPDK/dpdk/commit/a632f0f64ffba3553a18bdb51a670c1b603c0ce6"><span style="font-size:11.0pt">https://github.com/DPDK/dpdk/commit/a632f0f64ffba3553a18bdb51a670c1b603c0ce6</span></a><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I focused on the virtio_alloc_queue_headers() and virtio_free_queue_headers() functions. I think I have narrowed it down to to the hdr_mem setting. The following changes seem to be working in my test environment
(which is a little limited).</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I was hoping you could look at these changes and hopefully help get a fix in for 24.11.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">-ChrisB</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">---</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">drivers/net/virtio/virtqueue.c | 2 +-</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">1 file changed, 1 insertion(+), 1 deletion(-)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">diff --git a/drivers/net/virtio/virtqueue.c b/drivers/net/virtio/virtqueue.c</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">index 6f419665f1..fc7f7a9c55 100644</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">--- a/drivers/net/virtio/virtqueue.c</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">+++ b/drivers/net/virtio/virtqueue.c</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">@@ -344,7 +344,7 @@ virtio_alloc_queue_headers(struct virtqueue *vq, int numa_node, const char *name</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (vq->hw->use_va)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> *hdr_mem = (uintptr_t)(*hdr_mz)->addr;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> else</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">- *hdr_mem = (uintptr_t)(*hdr_mz)->iova;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">+ *hdr_mem = (*hdr_mz)->iova;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> return 0;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">}</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">-- </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">2.35.6</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Chris Brezovec (cbrezove) <cbrezove@cisco.com><br>
<b>Date: </b>Tuesday, September 3, 2024 at 10:43</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;color:black">AM<br>
<b>To: </b>dev@dpdk.org <dev@dpdk.org>, maxime.coquelin@redhat.com <maxime.coquelin@redhat.com><br>
<b>Cc: </b>Roger Melton (rmelton) <rmelton@cisco.com>, Walt Robinson (walrobin) <walrobin@cisco.com><br>
<b>Subject: </b>Re: 32-bit virtio failing on DPDK v23.11.1 (and tags)</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">Hi Maxime / others,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I am just following up to see if you have had any chance to look at what I previously sent and had any ideas regarding the issue.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thanks in advance!</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">-ChrisB</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Chris Brezovec (cbrezove) <cbrezove@cisco.com><br>
<b>Date: </b>Wednesday, August 28, 2024 at 5:27</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;color:black">PM<br>
<b>To: </b>dev@dpdk.org <dev@dpdk.org>, maxime.coquelin@redhat.com <maxime.coquelin@redhat.com><br>
<b>Cc: </b>common-dpio-core-team(mailer list) <common-dpio-core-team@cisco.com><br>
<b>Subject: </b>32-bit virtio failing on DPDK v23.11.1 (and tags)</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">HI Maxime,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">My name is Chris Brezovec, we met and talked about some 32 bit virtio issues we were seeing at Cisco during the DPDK summit last year. There was also a back and forth between you and Dave Johnson at Cisco
last September regarding the same issue. I have attached some of the email chain from that conversation that resulted in this commit being made to dpdk v23.11 (</span><a href="https://github.com/DPDK/dpdk/commit/8c41645be010ec7fa0df4f6c3790b167945154b4"><span style="font-size:11.0pt">https://github.com/DPDK/dpdk/commit/8c41645be010ec7fa0df4f6c3790b167945154b4</span></a><span style="font-size:11.0pt">).</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">We recently picked up the v23.11.1 DPDK release and saw that 32 bit virtio is not working again, but 64-bit virtio is working. We are noticing CVQ timeouts - PMD receives no response from host and this leads
to failure of the port to start. We were able to recreate this issue using testpmd. We have done some tracing through the virtio changes made during the development of the v23.xx DPDK release, and believe we have identified the following rework commit to
have caused a failure (</span><a href="https://github.com/DPDK/dpdk/commit/a632f0f64ffba3553a18bdb51a670c1b603c0ce6"><span style="font-size:11.0pt">https://github.com/DPDK/dpdk/commit/a632f0f64ffba3553a18bdb51a670c1b603c0ce6</span></a><span style="font-size:11.0pt">).</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">We have also tested v23.07, v23.11, v23.11.2-rc2, v24.07 and they all seem to see the same issue when running in 32-bit mode using testpmd.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">We were hoping you might be able to take a quick look at the two commits and see if there might be something obvious missing in the refactor work that might have caused this issue. I am thinking there might
a location or two in the code that should be using the VIRTIO_MBUF_ADDR() or similar macro that might have been missed.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">ChrisB</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">This is some of the testpmd output seen on v23.11.2-rc2:</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">LD_LIBRARY_PATH=/home/rmelton/scratch/dpdk-v23.11.2-rc2.git/build/lib /home/rmelton/scratch/dpdk-v23.11.2-rc2.git/build/app/dpdk-testpmd -l 2-3 -a 0000:07:00.0 --log-level pmd.net.iavf.*,8
--log-level lib.eal.*,8 --log-level=lib.eal:info --log-level=lib.eal:debug --log-level=lib.ethdev:info --log-level=lib.ethdev:debug --log-level=lib.virtio:warning --log-level=lib.virtio:info --log-level=lib.virtio:debug --log-level=pmd.*:debug --iova-mode=pa
-- -i</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">— snip —</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_send_command(): vq->vq_desc_head_idx = 0, status = 255, vq->hw->cvq = 0x76d9acc0 vq = 0x76d9ac80</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_send_command_split(): vq->vq_queue_index = 2</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_send_command_split(): vq->vq_free_cnt=64</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">vq->vq_desc_head_idx=0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_dev_promiscuous_disable(): Failed to disable promisc</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">Failed to disable promiscuous mode for device (port 0): Resource temporarily unavailable</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">Error during restoring configuration for device (port 0): Resource temporarily unavailable</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_dev_stop(): stop</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">Fail to start port 0: Resource temporarily unavailable</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">Done</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_send_command(): vq->vq_desc_head_idx = 0, status = 255, vq->hw->cvq = 0x76d9acc0 vq = 0x76d9ac80</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_send_command_split(): vq->vq_queue_index = 2</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_send_command_split(): vq->vq_free_cnt=64</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">vq->vq_desc_head_idx=0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">virtio_dev_promiscuous_enable(): Failed to enable promisc</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas">Error during enabling promiscuous mode for port 0: Resource temporarily unavailable - ignore </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas"> </span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>