Show a cover letter.

GET /api/covers/125/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 125,
    "url": "http://patches.dpdk.org/api/covers/125/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20230908131737.1714750-1-artemyko@nvidia.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": "<20230908131737.1714750-1-artemyko@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230908131737.1714750-1-artemyko@nvidia.com",
    "date": "2023-09-08T13:17:34",
    "name": "[v4,0/2] fix memory initialization deadlock",
    "submitter": {
        "id": 3172,
        "url": "http://patches.dpdk.org/api/people/3172/?format=api",
        "name": "Artemy Kovalyov",
        "email": "artemyko@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20230908131737.1714750-1-artemyko@nvidia.com/mbox/",
    "series": [
        {
            "id": 29463,
            "url": "http://patches.dpdk.org/api/series/29463/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29463",
            "date": "2023-09-08T13:17:34",
            "name": "fix memory initialization deadlock",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/29463/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/125/comments/",
    "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 1BF8542548;\n\tFri,  8 Sep 2023 15:17:49 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B9889402AF;\n\tFri,  8 Sep 2023 15:17:48 +0200 (CEST)",
            "from NAM11-CO1-obe.outbound.protection.outlook.com\n (mail-co1nam11on2059.outbound.protection.outlook.com [40.107.220.59])\n by mails.dpdk.org (Postfix) with ESMTP id EC06440285\n for <dev@dpdk.org>; Fri,  8 Sep 2023 15:17:46 +0200 (CEST)",
            "from DM6PR13CA0033.namprd13.prod.outlook.com (2603:10b6:5:bc::46) by\n DM6PR12MB4044.namprd12.prod.outlook.com (2603:10b6:5:21d::17) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6768.30; Fri, 8 Sep 2023 13:17:45 +0000",
            "from CY4PEPF0000EE38.namprd03.prod.outlook.com\n (2603:10b6:5:bc:cafe::7) by DM6PR13CA0033.outlook.office365.com\n (2603:10b6:5:bc::46) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.10 via Frontend\n Transport; Fri, 8 Sep 2023 13:17:45 +0000",
            "from mail.nvidia.com (216.228.118.233) by\n CY4PEPF0000EE38.mail.protection.outlook.com (10.167.242.12) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6768.25 via Frontend Transport; Fri, 8 Sep 2023 13:17:44 +0000",
            "from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com\n (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Fri, 8 Sep 2023\n 06:17:40 -0700",
            "from drhqmail201.nvidia.com (10.126.190.180) by\n drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.986.37; Fri, 8 Sep 2023 06:17:40 -0700",
            "from nvidia.com (10.127.8.9) by mail.nvidia.com (10.126.190.180)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37 via Frontend\n Transport; Fri, 8 Sep 2023 06:17:39 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Bi39lFR5LobVLSueyO4/VRJ9zOET8D5eTe7WLnjrgp9KnX21kGbNxznfbJUo8xUmJDlUKm1mp8GtcoEE6en8PhQV0laQEqpItBEpjORHnA85nmM3nIoqBrJ1qmiKUKyXK6cOLO2y7csk0uCPOrNs0OtUUW6Vaus8W56/996cXxYOpfmeyht3ZGAW4RzK8j4xyqEbC1i8KPRzhhJcq77+GcC5m/7UQgV8ff53odwvmD5B+FWwqhK7TiW3aLFoDIhl9yY70mdKAQOBo9L6aMFUsaJmpIqVlA/Xmw6vF0s9G5cMvH8DUuzN3fSZdiN5LHdFFsxBKqkAyh4I+nsO0Ei0Cw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=IlN/qo7sEQjq6xFzPdwC34DnJrKgmJYKas0b3T8CXp8=;\n b=BRM3Z7pbRvs97fwCeu4LjoMLYRM5sS0ZlQPPYVFCpX8bgXa6Zi7/u8icXB8+R3d0khrqihWmbG4ai71epfyVTtuiNd3BRxGJqzltFpY2h6foRdPQ08q68y4fqA9AjGPHaO6XnK9q9DMd7ahLltWNvHxyZfI9tpWs8bdZbXU//6N7381M7bZfwhlgqRdGju/pUQ6tEg2V/z28+V/I6Xaoq8gPC4eX9jb5IZ7rVB2yD9eC24qZscgDlP94k+pLT+WpTdamUUcaE0Kl8pKLKh6H4Z+7g62vOIe6ydjGgC7NVh5A4S2ivLGjbKYJcJLx5uImFoMeI+JlhweJC9hmZ3x0AA==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.118.233) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=IlN/qo7sEQjq6xFzPdwC34DnJrKgmJYKas0b3T8CXp8=;\n b=oJuWA7cjTtOFt/wjjCkksMXJrPSngxSdKacpeRePSFnVRPunGYP3WUDM/GQlz8aE3PTat4CVZAUiLRFqcgGoRi/1AiRjDO//KSrRkV9yLleH2TICCE2pBXGj3e1lbQ07b81of8iyAUiyd9BBHR7t92VlCTpiXghB8yqO5+r/h8jY8K6uibLLauOcDFY8tbKx7D9VH7OS264B/MhiYiyw/cKWwQU3xpON87GX39uynas5W+ReT+i3IbUSUI5AqCpgLA3408TTwDZL4xgRviFzJS6BlCQ/d9J7PFLe5b1lg/y0j7jDeEHKxzXWLeRuuNaTbOdsKbTnBytAZB5pa6LK4Q==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.118.233)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.118.233 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C",
        "From": "Artemy Kovalyov <artemyko@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "Thomas Monjalon <thomas@monjalon.net>, Ophir Munk <ophirmu@nvidia.com>",
        "Subject": "[PATCH v4 0/2] fix memory initialization deadlock",
        "Date": "Fri, 8 Sep 2023 16:17:34 +0300",
        "Message-ID": "<20230908131737.1714750-1-artemyko@nvidia.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20230830103303.2428995-1-artemyko@nvidia.com>",
        "References": "<20230830103303.2428995-1-artemyko@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-NV-OnPremToCloud": "ExternallySecured",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "CY4PEPF0000EE38:EE_|DM6PR12MB4044:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "71210f49-9c4d-4e12-40e5-08dbb06dfd13",
        "X-LD-Processed": "43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n +cc5P+HHtm0gree91E0a+JBMNnaRBNtS77/Xw9fB5OWUMSkH0E7WjvXb8pwBvilM/3qN22yVB1hvfD5n8KIjzIrVzfELzv4pw8Czi+AZOc45n0zK9PeWc3lVob2KY/HdMe3Kmxf5nxoFomu0IQAIGfVvpklJWNc2p4D5uBWHW97ZAq2Kk68SpJrZ4pu9JrfViwBBI/b5QCJ9YW3eHVoF9qPTQrVyLDMr670XNpWNpxNzgaHYUkqGRubkA0n+pwu2ICABLTpRhuRVUV9kJ8P4opILjuShYIY/6XDJ3JupvkeZWVoURCZdjRL3D+T3bFbjZekDtDREboVlsFaz8XnsOaP18W8/BiGRk3KghI6ilnivdj6Wf60Fnp6Q05b/DRaYmNlbuwb2K0CJG5SPsI9Om/Do6vcYO8/I9zqUtDfgrBGLugVBcaj3QKFt5XgNNJMqGdKkziu6wpjTHtMe8jxQ9C6nuEM4DhnXk6/YDkxNx/OPPOAV2oXjuhJjRKfWUCiCQWE03g4rEaWGG5nPPYj8VlKa/GPxmXMnJuAdGA1tq69m6sMTj+rc5zZSzBwI0NpBk2anUeGcEb4dtJNg/Iw+cEd8YGi9ZvZnK7StqB70DGUQbMk3A2jdD57dmC3H3e5rD1FZtlVmUKgDS9jPptqXNYy/VDfeTxAlsLN67dgzHBdLw21BfJYBhIpw3GyfArEo45ThSJjoBbOEzbq/HT8m5R1DJu8DPC1RK0+ayYf18hwvPTbWew//NxlgycOdXld7",
        "X-Forefront-Antispam-Report": "CIP:216.228.118.233; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge2.nvidia.com; CAT:NONE;\n SFS:(13230031)(4636009)(346002)(39860400002)(396003)(376002)(136003)(1800799009)(451199024)(186009)(82310400011)(40470700004)(36840700001)(46966006)(8676002)(5660300002)(8936002)(70586007)(4326008)(40480700001)(41300700001)(54906003)(70206006)(316002)(6916009)(2906002)(40460700003)(36860700001)(47076005)(82740400003)(83380400001)(55016003)(2616005)(1076003)(26005)(6286002)(107886003)(426003)(336012)(86362001)(356005)(7636003)(478600001)(36756003)(7696005)(6666004);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "08 Sep 2023 13:17:44.5940 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 71210f49-9c4d-4e12-40e5-08dbb06dfd13",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.233];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n CY4PEPF0000EE38.namprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR12MB4044",
        "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": "The issue arose due to the change in the DPDK read-write lock\nimplementation. That change added a new flag, RTE_RWLOCK_WAIT, designed\nto prevent new read locks while a write lock is in the queue. However,\nthis change has led to a scenario where a recursive read lock, where a\nlock is acquired twice by the same execution thread, can initiate a\nsequence of events resulting in a deadlock:\n\nProcess 1 takes the first read lock.\nProcess 2 attempts to take a write lock, triggering RTE_RWLOCK_WAIT due\nto the presence of a read lock. This makes process 2 enter a wait loop\nuntil the read lock is released.\nProcess 1 tries to take a second read lock. However, since a write lock\nis waiting (due to RTE_RWLOCK_WAIT), it also enters a wait loop until\nthe write lock is acquired and then released.\n\nBoth processes end up in a blocked state, unable to proceed, resulting\nin a deadlock scenario.\n\nFollowing these changes, the RW-lock no longer supports\nrecursion, implying that a single thread shouldn't obtain a read lock if\nit already possesses one. The problem arises during initialization: the\nrte_eal_init() function acquires the memory_hotplug_lock, and later on,\nthere are sequences of calls leading to rte_memseg_list_walk() which acquires\nit again without releasing it. This scenario introduces the risk of a\npotential deadlock when concurrent write locks are applied to the same\nmemory_hotplug_lock. To address this we resolved the issue by replacing\nrte_memseg_list_walk() with rte_memseg_list_walk_thread_unsafe().\n\nImplementing a lock annotation for rte_memseg_list_walk() to\nproactively identify bugs similar to this one during compile time.\n\nArtemy Kovalyov (2):\n  eal: fix memory initialization deadlock\n  eal: annotate rte_memseg_list_walk()\n\n lib/eal/common/eal_common_dynmem.c     | 5 ++++-\n lib/eal/common/eal_memalloc.h          | 3 ++-\n lib/eal/common/eal_private.h           | 3 ++-\n lib/eal/include/generic/rte_rwlock.h   | 4 ++++\n lib/eal/include/rte_lock_annotations.h | 5 +++++\n lib/eal/include/rte_memory.h           | 4 +++-\n lib/eal/linux/eal_memalloc.c           | 7 +++++--\n 7 files changed, 25 insertions(+), 6 deletions(-)"
}