Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/3696/?format=api
http://patches.dpdk.org/api/patches/3696/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1424837093-5661-14-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": "<1424837093-5661-14-git-send-email-mukawa@igel.co.jp>", "list_archive_url": "https://inbox.dpdk.org/dev/1424837093-5661-14-git-send-email-mukawa@igel.co.jp", "date": "2015-02-25T04:04:51", "name": "[dpdk-dev,v14,13/13] doc: Add port hotplug framework section to programmers guide", "commit_ref": null, "pull_url": null, "state": "changes-requested", "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/1424837093-5661-14-git-send-email-mukawa@igel.co.jp/mbox/", "series": [], "comments": "http://patches.dpdk.org/api/patches/3696/comments/", "check": "pending", "checks": "http://patches.dpdk.org/api/patches/3696/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 DB370AD80;\n\tWed, 25 Feb 2015 05:06:38 +0100 (CET)", "from mail-pd0-f176.google.com (mail-pd0-f176.google.com\n\t[209.85.192.176]) by dpdk.org (Postfix) with ESMTP id 7F2FDAD83\n\tfor <dev@dpdk.org>; Wed, 25 Feb 2015 05:05:47 +0100 (CET)", "by pdbnh10 with SMTP id nh10so1808424pdb.11\n\tfor <dev@dpdk.org>; Tue, 24 Feb 2015 20:05:47 -0800 (PST)", "from localhost.localdomain (napt.igel.co.jp. [219.106.231.132])\n\tby mx.google.com with ESMTPSA id\n\ty7sm3140021pdp.92.2015.02.24.20.05.44\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tTue, 24 Feb 2015 20:05:46 -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=KiE8efR5E2P+qJXhlhAtOziuAtpXtfoVrOAG3BK0I9c=;\n\tb=W5fv91riDw28d0DS2ppuNNpIHn4r+YM5YkmTfpjeeAi0QagKWLP5+eNu6sSs7B5Jxr\n\t6gNQt3xQqOFqRzWDELVAs+SVUhHvie7HkbI5QsZtGWLg9f4RFN6lVwfusJz/aLAmReep\n\t9PpjexdDf9ceYxZsYWzT/X6ZDotpQvV63q8+l2QMp8+quebeeFbwLF4YFXz0GA3buGvW\n\tYVDFiQTXCKAtX/9wiS23GmVE898qMjM554WuJFbRUyplluMkrktYvIWs7EhS7jL8bXV/\n\taJ3YDXSsk5mhsNvuCj4qSOyOoztZD8O1msmfexKbYVIT1Px3aChHgNrdTo9Ti7dRhtNk\n\t+z4A==", "X-Gm-Message-State": "ALoCoQkt+Hib4IHs8mamMOikll6dor3qrrdbUuIwg4jFq3a8nLawYUIG+214Opvd5YRFEEXdGYia", "X-Received": "by 10.67.3.196 with SMTP id by4mr2095023pad.74.1424837146939;\n\tTue, 24 Feb 2015 20:05:46 -0800 (PST)", "From": "Tetsuya Mukawa <mukawa@igel.co.jp>", "To": "dev@dpdk.org", "Date": "Wed, 25 Feb 2015 13:04:51 +0900", "Message-Id": "<1424837093-5661-14-git-send-email-mukawa@igel.co.jp>", "X-Mailer": "git-send-email 1.9.1", "In-Reply-To": "<1424837093-5661-1-git-send-email-mukawa@igel.co.jp>", "References": "<1424060073-23484-2-git-send-email-mukawa@igel.co.jp>\n\t<1424837093-5661-1-git-send-email-mukawa@igel.co.jp>", "Subject": "[dpdk-dev] [PATCH v14 13/13] doc: Add port hotplug framework\n\tsection to 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 de69682..60a6ac5 100644\n--- a/doc/guides/prog_guide/index.rst\n+++ b/doc/guides/prog_guide/index.rst\n@@ -71,6 +71,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", "v14", "13/13" ] }{ "id": 3696, "url": "