DPDK patches and discussions
 help / color / mirror / Atom feed
From: Kyle Larose <klarose@sandvine.com>
To: "dev@dpdk.org" <dev@dpdk.org>
Subject: [dpdk-dev] client_server example application crash with virtio
Date: Fri, 26 Feb 2016 16:46:45 +0000	[thread overview]
Message-ID: <D76BBBCF97F57144BB5FCF08007244A731150C35@wtl-exchp-2.sandvine.com> (raw)

I just ran into an issue trying to run the client server example application using virito. Whenever the client (running as a secondary process) tried to send packets, it would crash. I traced the issue to an invalid vtpci_ops structure:

(gdb) p *vq->hw->vtpci_ops
$6 = {
  read_dev_cfg = 0x756d2073726f7470,
  write_dev_cfg = 0x6562206562207473,
  reset = 0x6425206e65657774,
  get_status = 0x20642520646e6120,
  set_status = 0x766973756c636e69,
  get_features = 0x7561666544202e65,
  set_features = 0xa5d64255b20746c,
  get_isr = 0x0,
  set_config_irq = 0x657472203a444d50,
  get_queue_num = 0x705f65626778635f,
  setup_queue = 0x203a7325203a646d,
  del_queue = 0x20746b702078616d,
  notify_queue = 0x7473756d206e656c
}

It looks like this is not being initialized in secondary processes, because we short-circuit the ethdev init here, before we call vtpci_init.

	if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
		rx_func_get(eth_dev);
		return 0;
	}

Has  anyone submitted a patch to fix this?

I found that the following seemed to make it work, though I'm not sure it's appropriate. I can submit it as a patch if nobody else has done so yet. (I'd clean it up to return an error code if the init fails).

git diff drivers/net/virtio/virtio_ethdev.c
diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index caa970c..5002847 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1002,6 +1002,8 @@ rx_func_get(struct rte_eth_dev *eth_dev)
                eth_dev->rx_pkt_burst = &virtio_recv_mergeable_pkts;
        else
                eth_dev->rx_pkt_burst = &virtio_recv_pkts;
+
+    vtpci_init(eth_dev->pci_dev, (struct virtio_hw*)eth_dev->data->dev_private);
 }

 /*

Thanks,

Kyle

             reply	other threads:[~2016-02-26 16:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-26 16:46 Kyle Larose [this message]
2016-02-26 17:38 Kyle Larose

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D76BBBCF97F57144BB5FCF08007244A731150C35@wtl-exchp-2.sandvine.com \
    --to=klarose@sandvine.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).