get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 118070,
    "url": "https://patches.dpdk.org/api/patches/118070/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20221012123817.112225-1-fidaullah.noonari@emumba.com/",
    "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": "<20221012123817.112225-1-fidaullah.noonari@emumba.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221012123817.112225-1-fidaullah.noonari@emumba.com",
    "date": "2022-10-12T12:38:17",
    "name": "[v4] usertools: add check for IOMMU support in dpdk-devbind",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "03c6784356c4f558111aed46ebd4cbec944e278d",
    "submitter": {
        "id": 2545,
        "url": "https://patches.dpdk.org/api/people/2545/?format=api",
        "name": "Fidaullah Noonari",
        "email": "fidaullah.noonari@emumba.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20221012123817.112225-1-fidaullah.noonari@emumba.com/mbox/",
    "series": [
        {
            "id": 25186,
            "url": "https://patches.dpdk.org/api/series/25186/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=25186",
            "date": "2022-10-12T12:38:17",
            "name": "[v4] usertools: add check for IOMMU support in dpdk-devbind",
            "version": 4,
            "mbox": "https://patches.dpdk.org/series/25186/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/118070/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/118070/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 871DEA00C4;\n\tWed, 12 Oct 2022 14:38:25 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7AF2243053;\n\tWed, 12 Oct 2022 14:38:25 +0200 (CEST)",
            "from mail-wr1-f50.google.com (mail-wr1-f50.google.com\n [209.85.221.50]) by mails.dpdk.org (Postfix) with ESMTP id AC3394303E\n for <dev@dpdk.org>; Wed, 12 Oct 2022 14:38:24 +0200 (CEST)",
            "by mail-wr1-f50.google.com with SMTP id n12so26006591wrp.10\n for <dev@dpdk.org>; Wed, 12 Oct 2022 05:38:24 -0700 (PDT)",
            "from localhost.localdomain (58-65-164-30.nayatel.pk. [58.65.164.30])\n by smtp.gmail.com with ESMTPSA id\n l32-20020a05600c1d2000b003b47b913901sm6540845wms.1.2022.10.12.05.38.22\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 12 Oct 2022 05:38:24 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=emumba-com.20210112.gappssmtp.com; s=20210112;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=OBKtsIeeNaNVQ379DDFJNgBnQ6NN+MB54vsX6uajn5Q=;\n b=YadbHZ4sKY0KpKMM//2x9JSagjp8NimHGztXJjWKZDnpZivIsuDlwajZL1V+yvtdwH\n 6zfcCdoGu+cjgAiZb1N2DDyQaMjx87c6+h1YTKm0gNVTL5GrBEl1b7DDTuFIw7WpUFKB\n Cg2FASdqFDJYFDMDIkkES7sHe7ACy+Rmb+cYBQXfEFOzgdTAcyXBfWMplSPZ2nzfp3Rm\n hiA2CVYSTVzPN2qZdDDkTtqlswArwlASWadJ5sHM8SqiLAJgR10q6nG6UuP92L9VeY4v\n 1+qSUUhghqrL4mYbPfx2caJfBrC19rAGS93QUHFxuyBEwOyOohSC4+SP+HhHxw/7Dlou\n tIKA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=OBKtsIeeNaNVQ379DDFJNgBnQ6NN+MB54vsX6uajn5Q=;\n b=4ioY3JKBwCpf5X+g8ddddzbKLWlwmpgDUmtOwWXmJkJynRu3VVVnLJW+E12gq7vPwB\n 4+QERvI5U6vSsv6Dsy2d5FsMhcXuL8ciRDPPRcjCnkEmTbETMlZac8kUt7IjRv8HVLr0\n 8gqYG1dwaoGCo2jX04OHMAgNsMvFqSCawmcpQX4ALoHM4JwlgaIsvrqHaz9qs9DU6L7L\n K90p+0ZrBwjpwRJxfwisxQLd+R4prS51nnYoHmcAhTCEu06XytgELn6Tw/K0G1xRDn9h\n xMcG4Qx5InKG4bXCtU999MKnGoINHUeEDLSUmKJ91L6ym134x744TLM+7gX0wNIzaX7c\n DUUg==",
        "X-Gm-Message-State": "ACrzQf1/5cjHcbMQXn5OWfUqVc6KuXEzZ6wfZqeO0A/oL5wOkpYrj1d0\n OnieCzb/ya46zAEpew8stSdx",
        "X-Google-Smtp-Source": "\n AMsMyM4JM7ku9KDPxoBzkcPwBfsKCHm2RRHyGlJMtFrfAu6NnImmE6RO/iRdFbMp/VBK0y8GsYJ+Bg==",
        "X-Received": "by 2002:a5d:588e:0:b0:22e:5601:f6d with SMTP id\n n14-20020a5d588e000000b0022e56010f6dmr18112926wrf.207.1665578304427;\n Wed, 12 Oct 2022 05:38:24 -0700 (PDT)",
        "From": "Fidaullah Noonari <fidaullah.noonari@emumba.com>",
        "To": "stephen@networkplumber.org",
        "Cc": "dev@dpdk.org,\n\tFidaullah Noonari <fidaullah.noonari@emumba.com>",
        "Subject": "[PATCH v4] usertools: add check for IOMMU support in dpdk-devbind",
        "Date": "Wed, 12 Oct 2022 17:38:17 +0500",
        "Message-Id": "<20221012123817.112225-1-fidaullah.noonari@emumba.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220321122727.614290-1-fidaullah.noonari@emumba.com>",
        "References": "<20220321122727.614290-1-fidaullah.noonari@emumba.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "binding with vfio driver, when IOMMU is disabled, causes program to crash.\nthis patch adds a flag for noiommmu-mode. when this is set, if IOMMU is\ndisabled, it changes vfio into unsafe noiommu mode and prints warning\nmessage.\n\nSigned-off-by: Fidaullah Noonari <fidaullah.noonari@emumba.com>\n---\n usertools/dpdk-devbind.py | 45 +++++++++++++++++++++++++++++++++++++++\n 1 file changed, 45 insertions(+)",
    "diff": "diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py\nindex 4d9c1be666..d875ff23d6 100755\n--- a/usertools/dpdk-devbind.py\n+++ b/usertools/dpdk-devbind.py\n@@ -100,6 +100,7 @@\n b_flag = None\n status_flag = False\n force_flag = False\n+noiommu_flag = False\n args = []\n \n \n@@ -470,6 +471,37 @@ def unbind_all(dev_list, force=False):\n         unbind_one(d, force)\n \n \n+def has_iommu():\n+    \"\"\"Check if IOMMU is enabled on system\"\"\"\n+    return len(os.listdir(\"/sys/class/iommu\")) > 0\n+\n+\n+def check_noiommu_mode():\n+    \"\"\"checks and enables the noiommu mode for vfio drivers\"\"\"\n+    global noiommu_flag\n+    filename = \"/sys/module/vfio/parameters/enable_unsafe_noiommu_mode\"\n+\n+    try:\n+        with open(filename,\"r\") as f:\n+            if f.read(1) == \"1\":\n+                return\n+    except OSError as err:\n+        sys.exit(f\"Error: failed to enable unsafe noiommu mode - Cannot open {filename}: {err}\")\n+\n+    if not noiommu_flag:\n+        print(\"Error: failed to bind vfio-pci - IOMMU support is disabled\")\n+        print(\"Info: use --noiommu-mode for binding in noiommu mode\")\n+        sys.exit()\n+\n+    try:\n+        with open(filename, \"w\") as f:\n+            f.write(\"1\")\n+            f.close()\n+    except OSError as err:\n+        sys.exit(f\"Error: failed to enable unsafe noiommu mode - Cannot open {filename}: {err}\")\n+    print(\"Warning: enabling unsafe no IOMMU mode for vfio drivers\")\n+\n+\n def bind_all(dev_list, driver, force=False):\n     \"\"\"Bind method, takes a list of device locations\"\"\"\n     global devices\n@@ -496,6 +528,10 @@ def bind_all(dev_list, driver, force=False):\n     except ValueError as ex:\n         sys.exit(ex)\n \n+    # check for IOMMU support\n+    if driver == \"vfio-pci\" and not has_iommu():\n+        check_noiommu_mode()\n+\n     for d in dev_list:\n         bind_one(d, driver, force)\n \n@@ -638,6 +674,7 @@ def parse_args():\n     global status_flag\n     global status_dev\n     global force_flag\n+    global noiommu_flag\n     global args\n \n     parser = argparse.ArgumentParser(\n@@ -691,6 +728,12 @@ def parse_args():\n Override restriction on binding devices in use by Linux\"\n WARNING: This can lead to loss of network connection and should be used with caution.\n \"\"\")\n+    parser.add_argument(\n+        '--noiommu-mode',\n+        action='store_true',\n+        help=\"\"\"\n+if IOMMU is not available, Enables no IOMMU mode for vfio drivers.\n+        \"\"\")\n     parser.add_argument(\n         'devices',\n         metavar='DEVICE',\n@@ -710,6 +753,8 @@ def parse_args():\n         status_dev = \"all\"\n     if opt.force:\n         force_flag = True\n+    if opt.noiommu_mode:\n+        noiommu_flag = True\n     if opt.bind:\n         b_flag = opt.bind\n     elif opt.unbind:\n",
    "prefixes": [
        "v4"
    ]
}