get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40053,
    "url": "http://patches.dpdk.org/api/patches/40053/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1526395965-133647-1-git-send-email-harry.van.haaren@intel.com/",
    "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": "<1526395965-133647-1-git-send-email-harry.van.haaren@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1526395965-133647-1-git-send-email-harry.van.haaren@intel.com",
    "date": "2018-05-15T14:52:45",
    "name": "[dpdk-dev] eal/service: improve error checking of coremasks",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "5e29581aceb74725294e72a5e27cb78df0109ee9",
    "submitter": {
        "id": 317,
        "url": "http://patches.dpdk.org/api/people/317/?format=api",
        "name": "Van Haaren, Harry",
        "email": "harry.van.haaren@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1526395965-133647-1-git-send-email-harry.van.haaren@intel.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/40053/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/40053/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 030A71B84E;\n\tTue, 15 May 2018 16:52:53 +0200 (CEST)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n\tby dpdk.org (Postfix) with ESMTP id 589201B84C\n\tfor <dev@dpdk.org>; Tue, 15 May 2018 16:52:51 +0200 (CEST)",
            "from orsmga007.jf.intel.com ([10.7.209.58])\n\tby fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t15 May 2018 07:52:50 -0700",
            "from silpixa00399779.ir.intel.com ([10.237.223.187])\n\tby orsmga007.jf.intel.com with ESMTP; 15 May 2018 07:52:48 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.49,403,1520924400\"; d=\"scan'208\";a=\"41121336\"",
        "From": "Harry van Haaren <harry.van.haaren@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Harry van Haaren <harry.van.haaren@intel.com>, thomas@monjalon.net,\n\tvipin.varghese@intel.com",
        "Date": "Tue, 15 May 2018 15:52:45 +0100",
        "Message-Id": "<1526395965-133647-1-git-send-email-harry.van.haaren@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "Subject": "[dpdk-dev] [PATCH] eal/service: improve error checking of coremasks",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://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": "<https://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 commit improves the error checking performed on the\ncore masks (or lists) of the service cores, in particular\nwith respect to the data-plane (RTE) cores of DPDK.\n\nWith this commit, invalid configurations are detected at\nruntime, and warning messages are printed to inform the user.\n\nFor example specifying the coremask as 0xf, and the service\ncoremask as 0xff00 is invalid as not all service-cores are\ncontained within the coremask. A warning is now printed to\ninform the user.\n\nReported-by: Vipin Varghese <vipin.varghese@intel.com>\nSigned-off-by: Harry van Haaren <harry.van.haaren@intel.com>\n\n---\n\nCc: thomas@monjalon.net\nCc: vipin.varghese@intel.com\n\n@Thomas, please consider this patch for RC4, it adds checks\nand prints warnings, better usability, no functional changes.\n\n---\n lib/librte_eal/common/eal_common_options.c | 39 ++++++++++++++++++++++++++++++\n 1 file changed, 39 insertions(+)",
    "diff": "diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c\nindex ecebb29..b6b569f 100644\n--- a/lib/librte_eal/common/eal_common_options.c\n+++ b/lib/librte_eal/common/eal_common_options.c\n@@ -315,6 +315,7 @@ eal_parse_service_coremask(const char *coremask)\n \tunsigned int count = 0;\n \tchar c;\n \tint val;\n+\tuint32_t taken_lcore_count = 0;\n \n \tif (coremask == NULL)\n \t\treturn -1;\n@@ -358,6 +359,10 @@ eal_parse_service_coremask(const char *coremask)\n \t\t\t\t\t\t\"lcore %u unavailable\\n\", idx);\n \t\t\t\t\treturn -1;\n \t\t\t\t}\n+\n+\t\t\t\tif (cfg->lcore_role[idx] == ROLE_RTE)\n+\t\t\t\t\ttaken_lcore_count++;\n+\n \t\t\t\tlcore_config[idx].core_role = ROLE_SERVICE;\n \t\t\t\tcount++;\n \t\t\t}\n@@ -374,11 +379,27 @@ eal_parse_service_coremask(const char *coremask)\n \tif (count == 0)\n \t\treturn -1;\n \n+\tif (core_parsed && taken_lcore_count != count) {\n+\t\tRTE_LOG(ERR, EAL,\n+\t\t\t\"Warning: not all service cores were in the coremask - ensure -c or -l includes service cores\\n\");\n+\t}\n+\n \tcfg->service_lcore_count = count;\n \treturn 0;\n }\n \n static int\n+eal_service_cores_parsed(void)\n+{\n+\tint idx;\n+\tfor (idx = 0; idx < RTE_MAX_LCORE; idx++) {\n+\t\tif (lcore_config[idx].core_role == ROLE_SERVICE)\n+\t\t\treturn 1;\n+\t}\n+\treturn 0;\n+}\n+\n+static int\n eal_parse_coremask(const char *coremask)\n {\n \tstruct rte_config *cfg = rte_eal_get_configuration();\n@@ -387,6 +408,10 @@ eal_parse_coremask(const char *coremask)\n \tchar c;\n \tint val;\n \n+\tif (eal_service_cores_parsed())\n+\t\tRTE_LOG(ERR, EAL,\n+\t\t\t\"Warning: Service cores parsed before dataplane cores. Ensure -c is before -s or -S.\\n\");\n+\n \tif (coremask == NULL)\n \t\treturn -1;\n \t/* Remove all blank characters ahead and after .\n@@ -418,6 +443,7 @@ eal_parse_coremask(const char *coremask)\n \t\t\t\t\t        \"unavailable\\n\", idx);\n \t\t\t\t\treturn -1;\n \t\t\t\t}\n+\n \t\t\t\tcfg->lcore_role[idx] = ROLE_RTE;\n \t\t\t\tlcore_config[idx].core_index = count;\n \t\t\t\tcount++;\n@@ -449,6 +475,7 @@ eal_parse_service_corelist(const char *corelist)\n \tunsigned count = 0;\n \tchar *end = NULL;\n \tint min, max;\n+\tuint32_t taken_lcore_count = 0;\n \n \tif (corelist == NULL)\n \t\treturn -1;\n@@ -490,6 +517,9 @@ eal_parse_service_corelist(const char *corelist)\n \t\t\t\t\t\t\tidx);\n \t\t\t\t\t\treturn -1;\n \t\t\t\t\t}\n+\t\t\t\t\tif (cfg->lcore_role[idx] == ROLE_RTE)\n+\t\t\t\t\t\ttaken_lcore_count++;\n+\n \t\t\t\t\tlcore_config[idx].core_role =\n \t\t\t\t\t\t\tROLE_SERVICE;\n \t\t\t\t\tcount++;\n@@ -504,6 +534,11 @@ eal_parse_service_corelist(const char *corelist)\n \tif (count == 0)\n \t\treturn -1;\n \n+\tif (core_parsed && taken_lcore_count != count) {\n+\t\tRTE_LOG(ERR, EAL,\n+\t\t\t\"Warning: not all service cores were in the coremask - ensure -c or -l includes service cores\\n\");\n+\t}\n+\n \treturn 0;\n }\n \n@@ -516,6 +551,10 @@ eal_parse_corelist(const char *corelist)\n \tchar *end = NULL;\n \tint min, max;\n \n+\tif (eal_service_cores_parsed())\n+\t\tRTE_LOG(ERR, EAL,\n+\t\t\t\"Warning: Service cores parsed before dataplane cores. Ensure -l is before -s or -S.\\n\");\n+\n \tif (corelist == NULL)\n \t\treturn -1;\n \n",
    "prefixes": [
        "dpdk-dev"
    ]
}