get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/7477/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 7477,
    "url": "https://patches.dpdk.org/api/patches/7477/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/56158FE8.8090208@steffenbauch.de/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<56158FE8.8090208@steffenbauch.de>",
    "list_archive_url": "https://inbox.dpdk.org/dev/56158FE8.8090208@steffenbauch.de",
    "date": "2015-10-07T21:34:32",
    "name": "[dpdk-dev] testpmd hanging using virtualbox and virtio",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": true,
    "hash": "016e98e9b3902def386b1876aa0d137cdf884f9c",
    "submitter": {
        "id": 345,
        "url": "https://patches.dpdk.org/api/people/345/?format=api",
        "name": "Steffen Bauch",
        "email": "mail@steffenbauch.de"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/56158FE8.8090208@steffenbauch.de/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/7477/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/7477/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 64C998D87;\n\tWed,  7 Oct 2015 23:34:43 +0200 (CEST)",
            "from minos.steffenbauch.de (minos.steffenbauch.de [91.250.119.163])\n\tby dpdk.org (Postfix) with ESMTP id BB45C68A5\n\tfor <dev@dpdk.org>; Wed,  7 Oct 2015 23:34:42 +0200 (CEST)",
            "from localhost (localhost.localdomain [127.0.0.1])\n\tby minos.steffenbauch.de (Postfix) with ESMTP id 62B9460B87\n\tfor <dev@dpdk.org>; Wed,  7 Oct 2015 23:34:42 +0200 (CEST)",
            "from minos.steffenbauch.de ([127.0.0.1])\n\tby localhost (minos.steffenbauch.de [127.0.0.1]) (amavisd-new,\n\tport 10026) with ESMTP id W9WpD9rLT98e for <dev@dpdk.org>;\n\tWed,  7 Oct 2015 23:34:41 +0200 (CEST)",
            "from [10.1.1.213] (ipb2193648.dynamic.kabel-deutschland.de\n\t[178.25.54.72])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128\n\tbits)) (No client certificate requested)\n\tby minos.steffenbauch.de (Postfix) with ESMTPSA id 7196760B44\n\tfor <dev@dpdk.org>; Wed,  7 Oct 2015 23:34:41 +0200 (CEST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=steffenbauch.de;\n\th=content-transfer-encoding:content-type:content-type\n\t:mime-version:user-agent:date:date:message-id:subject:subject\n\t:from:from:received:received; s=main; t=1444253681; x=\n\t1446068082; bh=UD+e71r+OtZF0y+qjsKXMrGjTm/cAVjfqfFnoqJfki8=; b=T\n\tHaJa1ARdcPx4CD6uLA1VWGi5fOtf6DfN9qZK+nfdyEydFCaziuCKYce/I86EAsZJ\n\tzJfOUaxxUybmyslebCnqqAy71q81ZtEvIu2e14Z4eYp3nI0/1W8w1pIofeeLYJiL\n\tzOi/DVsVxM0JDsQHl2O1dWydiCiHkoBgLtCgaTMrfw=",
        "To": "dev@dpdk.org",
        "From": "Steffen Bauch <mail@steffenbauch.de>",
        "Message-ID": "<56158FE8.8090208@steffenbauch.de>",
        "Date": "Wed, 7 Oct 2015 23:34:32 +0200",
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101\n\tThunderbird/38.2.0",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=utf-8; format=flowed",
        "Content-Transfer-Encoding": "7bit",
        "Subject": "[dpdk-dev] testpmd hanging using virtualbox and virtio",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Hi,\n\nI would like to request help using DPDK, virtualbox and virtio to \nexchange data between two virtual machines (generator and receiver). To \nbe able to describe my problem I have created a github repository with a \nsample setup using vagrant.\n\nThe setup is using DPDK 2.1.0, uio_pci_generic and rte_virtio_pmd on the \ngenerator and the plain kernel virtio-net driver on the receiver.\n\nsb@host ~ $ vagrant --version\nVagrant 1.7.4\n\nsb@host ~ $ virtualbox -h\nOracle VM VirtualBox Manager 4.3.30\n[...]\n\nsb@host ~ $ git clone \nhttps://github.com/steffenbauch/vagrant-dpdk-virtio-trial.git\n\nsb@host ~ $ cd vagrant-dpdk-virtio-trial/\n\nsb@host ~ $ vagrant up\n\nsb@host ~ $ vagrant ssh generator\n\nvagrant@vagrant-ubuntu-vivid-64:~/$ cd dpdk/x86_64-native-linuxapp-gcc/app\n\nvagrant@vagrant-ubuntu-vivid-64:~/dpdk/x86_64-native-linuxapp-gcc/app$ \nsudo ./testpmd -b 0000:00:03.0 -c 3 -n 1 -- -i\nEAL: Detected lcore 0 as core 0 on socket 0\nEAL: Detected lcore 1 as core 1 on socket 0\nEAL: Support maximum 128 logical core(s) by configuration.\nEAL: Detected 2 lcore(s)\nEAL: VFIO modules not all loaded, skip VFIO support...\nEAL: Setting up physically contiguous memory...\nEAL: Ask a virtual area of 0x200000 bytes\nEAL: Virtual area found at 0x7fc5ee600000 (size = 0x200000)\nEAL: Ask a virtual area of 0x200000 bytes\nEAL: Virtual area found at 0x7fc5ee200000 (size = 0x200000)\nEAL: Ask a virtual area of 0x200000 bytes\nEAL: Virtual area found at 0x7fc5ede00000 (size = 0x200000)\nEAL: Ask a virtual area of 0x11400000 bytes\nEAL: Virtual area found at 0x7fc5dc800000 (size = 0x11400000)\nEAL: Ask a virtual area of 0x2e400000 bytes\nEAL: Virtual area found at 0x7fc5ae200000 (size = 0x2e400000)\nEAL: Ask a virtual area of 0x200000 bytes\nEAL: Virtual area found at 0x7fc5ade00000 (size = 0x200000)\nEAL: Requesting 512 pages of size 2MB from socket 0\nEAL: TSC frequency is ~2195200 KHz\nEAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using \nunreliable clock cycles !\nEAL: Master lcore 0 is ready (tid=f03568c0;cpuset=[0])\nEAL: lcore 1 is ready (tid=addff700;cpuset=[1])\nEAL: PCI device 0000:00:03.0 on NUMA socket -1\nEAL:   probe driver: 1af4:1000 rte_virtio_pmd\nEAL:   Device is blacklisted, not initializing\nEAL: PCI device 0000:00:08.0 on NUMA socket -1\nEAL:   probe driver: 1af4:1000 rte_virtio_pmd\nEAL: PCI device 0000:00:09.0 on NUMA socket -1\nEAL:   probe driver: 1af4:1000 rte_virtio_pmd\nInteractive-mode selected\nConfiguring Port 0 (socket 0)\n\n[blocking]\n\nAt this point the process is hanging and not progressing towards the \ncommand line prompt.\n\nI attached with gdb to the process and identified the configuration of \nthe promiscious mode as the hanging call\n\n(gdb) bt\n#0  0x00007fc5ef50ec4d in nanosleep () at \n../sysdeps/unix/syscall-template.S:81\n#1  0x00007fc5ef541e84 in usleep (useconds=<optimized out>) at \n../sysdeps/unix/sysv/linux/usleep.c:32\n#2  0x00000000004e857d in virtio_dev_promiscuous_disable ()\n#3  0x00000000004b5daf in rte_eth_dev_start ()\n#4  0x0000000000435df0 in start_port ()\n#5  0x0000000000431591 in main ()\n\nApparently the initialization is hanging sleeping in a while loop in \nvirtio_send_command().\n\nIn an experiment I temporarily disabled the functions for setting the \npromiscous mode and multicast mode and was able to progress to to the \ncommand line prompt of testpmd. It was possible to send a burst of 32 \nframes towards the receiver (using start tx_first).\n\nDue to missing knowledge about the gory details of virtio I can not fix \nthe problem and request help.\n\n      int ret;\n@@ -481,13 +481,13 @@ virtio_dev_promiscuous_enable(struct rte_eth_dev *dev)\n\n      ret = virtio_send_command(hw->cvq, &ctrl, dlen, 1);\n      if (ret)\n-        PMD_INIT_LOG(ERR, \"Failed to enable promisc\");\n+        PMD_INIT_LOG(ERR, \"Failed to enable promisc\"); */\n  }\n\n  static void\n-virtio_dev_promiscuous_disable(struct rte_eth_dev *dev)\n+virtio_dev_promiscuous_disable(__attribute__((unused)) struct \nrte_eth_dev *dev)\n  {\n-    struct virtio_hw *hw = dev->data->dev_private;\n+/*    struct virtio_hw *hw = dev->data->dev_private;\n      struct virtio_pmd_ctrl ctrl;\n      int dlen[1];\n      int ret;\n@@ -504,13 +504,13 @@ virtio_dev_promiscuous_disable(struct rte_eth_dev \n*dev)\n\n      ret = virtio_send_command(hw->cvq, &ctrl, dlen, 1);\n      if (ret)\n-        PMD_INIT_LOG(ERR, \"Failed to disable promisc\");\n+        PMD_INIT_LOG(ERR, \"Failed to disable promisc\"); */\n  }\n\n  static void\n-virtio_dev_allmulticast_enable(struct rte_eth_dev *dev)\n+virtio_dev_allmulticast_enable(__attribute__((unused)) struct \nrte_eth_dev *dev)\n  {\n-    struct virtio_hw *hw = dev->data->dev_private;\n+/*    struct virtio_hw *hw = dev->data->dev_private;\n      struct virtio_pmd_ctrl ctrl;\n      int dlen[1];\n      int ret;\n@@ -527,13 +527,13 @@ virtio_dev_allmulticast_enable(struct rte_eth_dev \n*dev)\n\n      ret = virtio_send_command(hw->cvq, &ctrl, dlen, 1);\n      if (ret)\n-        PMD_INIT_LOG(ERR, \"Failed to enable allmulticast\");\n+        PMD_INIT_LOG(ERR, \"Failed to enable allmulticast\"); */\n  }\n\n  static void\n-virtio_dev_allmulticast_disable(struct rte_eth_dev *dev)\n+virtio_dev_allmulticast_disable(__attribute__((unused)) struct \nrte_eth_dev *dev)\n  {\n-    struct virtio_hw *hw = dev->data->dev_private;\n+/*    struct virtio_hw *hw = dev->data->dev_private;\n      struct virtio_pmd_ctrl ctrl;\n      int dlen[1];\n      int ret;\n@@ -550,7 +550,7 @@ virtio_dev_allmulticast_disable(struct rte_eth_dev *dev)\n\n      ret = virtio_send_command(hw->cvq, &ctrl, dlen, 1);\n      if (ret)\n-        PMD_INIT_LOG(ERR, \"Failed to disable allmulticast\");\n+        PMD_INIT_LOG(ERR, \"Failed to disable allmulticast\"); */\n  }\n\n  /*",
    "diff": "diff --git a/drivers/net/virtio/virtio_ethdev.c \nb/drivers/net/virtio/virtio_ethdev.c\nindex 465d3cd..e463c54 100644\n--- a/drivers/net/virtio/virtio_ethdev.c\n+++ b/drivers/net/virtio/virtio_ethdev.c\n@@ -462,9 +462,9 @@ virtio_dev_close(struct rte_eth_dev *dev)\n  }\n\n  static void\n-virtio_dev_promiscuous_enable(struct rte_eth_dev *dev)\n+virtio_dev_promiscuous_enable(__attribute__((unused)) struct \nrte_eth_dev *dev)\n  {\n-    struct virtio_hw *hw = dev->data->dev_private;\n+/*    struct virtio_hw *hw = dev->data->dev_private;\n      struct virtio_pmd_ctrl ctrl;\n      int dlen[1];\n",
    "prefixes": [
        "dpdk-dev"
    ]
}