Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/3479/?format=api
http://patches.dpdk.org/api/patches/3479/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1424314187-25177-15-git-send-email-mukawa@igel.co.jp/", "project": { "id": 1, "url": "http://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": "<1424314187-25177-15-git-send-email-mukawa@igel.co.jp>", "list_archive_url": "https://inbox.dpdk.org/dev/1424314187-25177-15-git-send-email-mukawa@igel.co.jp", "date": "2015-02-19T02:49:45", "name": "[dpdk-dev,v9,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": "http://patches.dpdk.org/api/people/64/?format=api", "name": "Tetsuya Mukawa", "email": "mukawa@igel.co.jp" }, "delegate": null, "mbox": "http://patches.dpdk.org/project/dpdk/patch/1424314187-25177-15-git-send-email-mukawa@igel.co.jp/mbox/", "series": [], "comments": "http://patches.dpdk.org/api/patches/3479/comments/", "check": "pending", "checks": "http://patches.dpdk.org/api/patches/3479/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 EDB6AB59B;\n\tThu, 19 Feb 2015 03:51:14 +0100 (CET)", "from mail-pa0-f48.google.com (mail-pa0-f48.google.com\n\t[209.85.220.48]) by dpdk.org (Postfix) with ESMTP id EA7ECB4F6\n\tfor <dev@dpdk.org>; Thu, 19 Feb 2015 03:50:38 +0100 (CET)", "by pabrd3 with SMTP id rd3so5994284pab.4\n\tfor <dev@dpdk.org>; Wed, 18 Feb 2015 18:50:38 -0800 (PST)", "from localhost.localdomain (napt.igel.co.jp. [219.106.231.132])\n\tby mx.google.com with ESMTPSA id\n\tiy1sm17860786pbb.14.2015.02.18.18.50.36\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tWed, 18 Feb 2015 18:50:37 -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=ivCxrwMiURUoqmf/W10w9YqqF/GNF3AHvnJxPaAzw6w7OpvgBNKh0FM4TAhWin+gOa\n\t3eptqehfY/zALyvNfc1EsvE0/KBfszG+YHr+CEgzO3o2qquGDhiNQ6PiI2CkZhLTNSvX\n\tfcTLWhHZhze9BX9bcQfiiyvxUIQCDa/JaxHqUs+bVTn7WW57ypy4r0vF4RA+y6zyCYeh\n\tBRBmbigIRm29YsoiIBxk0ogI0dVgeFWorW2vGYgEqrlSwJa69A99BGGa6F+xZJMQYuD3\n\to2Ayn+jIxeSVtc/k3e0YnxUnUR5/7H66nMNTS0tDSNMQlFvMjaEZte6Rs1KQggUpMVj1\n\t8Ang==", "X-Gm-Message-State": "ALoCoQkid05p7YRTXAfL/ILz/4BS9P9t457VaEnQpZBC4jRsSXWLlLdif1BsU9y5C52ZW0qc2Ddd", "X-Received": "by 10.68.253.233 with SMTP id ad9mr3496121pbd.167.1424314238392; \n\tWed, 18 Feb 2015 18:50:38 -0800 (PST)", "From": "Tetsuya Mukawa <mukawa@igel.co.jp>", "To": "dev@dpdk.org", "Date": "Thu, 19 Feb 2015 11:49:45 +0900", "Message-Id": "<1424314187-25177-15-git-send-email-mukawa@igel.co.jp>", "X-Mailer": "git-send-email 1.9.1", "In-Reply-To": "<1424314187-25177-1-git-send-email-mukawa@igel.co.jp>", "References": "<1424060073-23484-12-git-send-email-mukawa@igel.co.jp>\n\t<1424314187-25177-1-git-send-email-mukawa@igel.co.jp>", "Subject": "[dpdk-dev] [PATCH v9 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", "v9", "14/14" ] }{ "id": 3479, "url": "