Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/3088/?format=api
https://patches.dpdk.org/api/patches/3088/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1423470639-15744-15-git-send-email-mukawa@igel.co.jp/", "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": "<1423470639-15744-15-git-send-email-mukawa@igel.co.jp>", "list_archive_url": "https://inbox.dpdk.org/dev/1423470639-15744-15-git-send-email-mukawa@igel.co.jp", "date": "2015-02-09T08:30:37", "name": "[dpdk-dev,v7,14/14] doc: Add port hotplug framework section to programmers guide", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "0823c32aab43a05ad2b600b148f96d7526c5e344", "submitter": { "id": 64, "url": "https://patches.dpdk.org/api/people/64/?format=api", "name": "Tetsuya Mukawa", "email": "mukawa@igel.co.jp" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1423470639-15744-15-git-send-email-mukawa@igel.co.jp/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/3088/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/3088/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 887EC6A95;\n\tMon, 9 Feb 2015 09:31:26 +0100 (CET)", "from mail-pa0-f42.google.com (mail-pa0-f42.google.com\n\t[209.85.220.42]) by dpdk.org (Postfix) with ESMTP id E7D207EEF\n\tfor <dev@dpdk.org>; Mon, 9 Feb 2015 09:31:19 +0100 (CET)", "by mail-pa0-f42.google.com with SMTP id bj1so32442482pad.1\n\tfor <dev@dpdk.org>; Mon, 09 Feb 2015 00:31:19 -0800 (PST)", "from localhost.localdomain (napt.igel.co.jp. [219.106.231.132])\n\tby mx.google.com with ESMTPSA id\n\tpp9sm15497875pbb.65.2015.02.09.00.31.17\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tMon, 09 Feb 2015 00:31:18 -0800 (PST)" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=zjLSHEfXjCsFnmLCdiqhLpy60sm3zXwUicl0LTZj6zw=;\n\tb=g6hE5PLn+OYvEMdW+u9IwzLHU9EamB4lZCR6JqaeDNYAx/IpSO4RObcscHQOEIF9k5\n\tD+6/asJOyktW6qPBxCKH0b41O4R6pyVHDVNY1MNPN/e221YsslnihCRAwahlN0upW2+K\n\tnFsN/ILDsG8JlBYHrdAA9dTYP1cCfzz51qaRO8extxKbxsSWX5oT1xCgpln+7qnrTTg2\n\tcymbRufGUtQTelJh/CeaVfw/XZI/La6XjPj5mlmLA6+YyPOt+nnjCeXztwIe7eWoMgZJ\n\tt9ZAaxYb9Yq3Tvg3Uzj5+0hQeFmZ61fM5TbJF6aGz8XATNyQDnVR97meB6IKkJKi9Y42\n\tCLTA==", "X-Gm-Message-State": "ALoCoQn3QN3PndA5E8p6JR76lXSHxGFXvMFgUeWK9Tr1K22qBXKwvpRd7zMHoK+/dv6gYqCCWnqL", "X-Received": "by 10.70.15.196 with SMTP id z4mr26470892pdc.20.1423470679208;\n\tMon, 09 Feb 2015 00:31:19 -0800 (PST)", "From": "Tetsuya Mukawa <mukawa@igel.co.jp>", "To": "dev@dpdk.org", "Date": "Mon, 9 Feb 2015 17:30:37 +0900", "Message-Id": "<1423470639-15744-15-git-send-email-mukawa@igel.co.jp>", "X-Mailer": "git-send-email 1.9.1", "In-Reply-To": "<1423470639-15744-1-git-send-email-mukawa@igel.co.jp>", "References": "<1422763322-13742-4-git-send-email-mukawa@igel.co.jp>\n\t<1423470639-15744-1-git-send-email-mukawa@igel.co.jp>", "Subject": "[dpdk-dev] [PATCH v7 14/14] doc: Add port hotplug framework section\n\tto programmers guide", "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": "This patch adds a new section for describing port hotplug framework.\n\nSigned-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>\n---\n doc/guides/prog_guide/index.rst | 1 +\n doc/guides/prog_guide/port_hotplug_framework.rst | 110 +++++++++++++++++++++++\n 2 files changed, 111 insertions(+)\n create mode 100644 doc/guides/prog_guide/port_hotplug_framework.rst", "diff": "diff --git a/doc/guides/prog_guide/index.rst b/doc/guides/prog_guide/index.rst\nindex 8d86dd4..428b76b 100644\n--- a/doc/guides/prog_guide/index.rst\n+++ b/doc/guides/prog_guide/index.rst\n@@ -70,6 +70,7 @@ Programmer's Guide\n packet_classif_access_ctrl\n packet_framework\n vhost_lib\n+ port_hotplug_framework\n source_org\n dev_kit_build_system\n dev_kit_root_make_help\ndiff --git a/doc/guides/prog_guide/port_hotplug_framework.rst b/doc/guides/prog_guide/port_hotplug_framework.rst\nnew file mode 100644\nindex 0000000..355ae28\n--- /dev/null\n+++ b/doc/guides/prog_guide/port_hotplug_framework.rst\n@@ -0,0 +1,110 @@\n+.. BSD LICENSE\n+ Copyright(c) 2015 IGEL Co.,Ltd. All rights reserved.\n+ All rights reserved.\n+\n+ Redistribution and use in source and binary forms, with or without\n+ modification, are permitted provided that the following conditions\n+ are met:\n+\n+ * Redistributions of source code must retain the above copyright\n+ notice, this list of conditions and the following disclaimer.\n+ * Redistributions in binary form must reproduce the above copyright\n+ notice, this list of conditions and the following disclaimer in\n+ the documentation and/or other materials provided with the\n+ distribution.\n+ * Neither the name of IGEL Co.,Ltd. nor the names of its\n+ contributors may be used to endorse or promote products derived\n+ from this software without specific prior written permission.\n+\n+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+\n+Port Hotplug Framework\n+======================\n+\n+The Port Hotplug Framework provides DPDK applications with the ability to\n+attach and detach ports at runtime. Because the framework depends on PMD\n+implementation, the ports that PMDs cannot handle are out of scope of this\n+framework. Furthermore, after detaching a port from a DPDK application, the\n+framework doesn't provide a way for removing the devices from the system.\n+For the ports backed by a physical NIC, the kernel will need to support PCI\n+Hotplug feature.\n+\n+Overview\n+--------\n+\n+The basic requirements of the Port Hotplug Framework are:\n+\n+* DPDK applications that use the Port Hotplug Framework must manage their\n+ own ports.\n+\n+ The Port Hotplug Framework is implemented to allow DPDK applications to\n+ manage ports. For example, when DPDK applications call the port attach\n+ function, the attached port number is returned. DPDK applications can\n+ also detach the port by port number.\n+\n+* Kernel support is needed for attaching or detaching physical device\n+ ports.\n+\n+ To attach new physical device ports, the device will be recognized by\n+ userspace driver I/O framework in kernel at first. Then DPDK\n+ applications can call the Port Hotplug functions to attach the ports.\n+ For detaching, steps are vice versa.\n+\n+* Before detaching, they must be stopped and closed.\n+\n+ DPDK applications must call \"rte_eth_dev_stop()\" and\n+ \"rte_eth_dev_close()\" APIs before detaching ports. These functions will\n+ start finalization sequence of the PMDs.\n+\n+* The framework doesn't affect legacy DPDK applications behavior.\n+\n+ If the Port Hotplug functions aren't called, all legacy DPDK apps can\n+ still work without modifications.\n+\n+Port Hotplug API overview\n+-------------------------\n+\n+* Attaching a port\n+\n+ \"rte_eal_dev_attach()\" API attaches a port to DPDK application, and\n+ returns the attached port number. Before calling the API, the device\n+ should be recognized by an userspace driver I/O framework. The API\n+ receives a pci address like \"0000:01:00.0\" or a virtual device name\n+ like \"eth_pcap0,iface=eth0\". In the case of virtual device name, the\n+ format is the same as the general \"--vdev\" option of DPDK.\n+\n+* Detaching a port\n+\n+ \"rte_eal_dev_detach()\" API detaches a port from DPDK application, and\n+ returns a pci address of the detached device or a virtual device name\n+ of the device.\n+\n+Reference\n+---------\n+\n+ \"testpmd\" supports the Port Hotplug Framework.\n+\n+Limitations\n+-----------\n+\n+* The Port Hotplug APIs are not thread safe.\n+\n+* The framework can only be enabled with Linux. BSD is not supported.\n+\n+* To detach a port, the port should be backed by a device that igb_uio\n+ manages. VFIO is not supported.\n+\n+* Not all PMDs support detaching feature.\n+ To know whether a PMD can support detaching, search for the\n+ \"RTE_PCI_DRV_DETACHABLE\" flag in PMD implementation. If the flag is\n+ defined in the PMD, detaching is supported.\n", "prefixes": [ "dpdk-dev", "v7", "14/14" ] }{ "id": 3088, "url": "