get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2196605,
    "url": "http://patchwork.ozlabs.org/api/patches/2196605/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260215131115.3352282-1-padmarao.begari@amd.com/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api",
        "name": "U-Boot",
        "link_name": "uboot",
        "list_id": "u-boot.lists.denx.de",
        "list_email": "u-boot@lists.denx.de",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260215131115.3352282-1-padmarao.begari@amd.com>",
    "list_archive_url": null,
    "date": "2026-02-15T13:10:47",
    "name": "[RFC] cmd: part: add dupcheck command to detect duplicate PARTUUIDs",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "d436605b29e55a810dea7d9b0c5b7b2fe194f066",
    "submitter": {
        "id": 89329,
        "url": "http://patchwork.ozlabs.org/api/people/89329/?format=api",
        "name": "Padmarao Begari",
        "email": "padmarao.begari@amd.com"
    },
    "delegate": {
        "id": 3651,
        "url": "http://patchwork.ozlabs.org/api/users/3651/?format=api",
        "username": "trini",
        "first_name": "Tom",
        "last_name": "Rini",
        "email": "trini@ti.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260215131115.3352282-1-padmarao.begari@amd.com/mbox/",
    "series": [
        {
            "id": 492214,
            "url": "http://patchwork.ozlabs.org/api/series/492214/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=492214",
            "date": "2026-02-15T13:10:47",
            "name": "[RFC] cmd: part: add dupcheck command to detect duplicate PARTUUIDs",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492214/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196605/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196605/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256\n header.s=selector1 header.b=S4guuknq;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=amd.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=amd.com header.i=@amd.com header.b=\"S4guuknq\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=amd.com",
            "phobos.denx.de;\n spf=fail smtp.mailfrom=Padmarao.Begari@amd.com"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fDRBc16sHz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 00:11:51 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 75FB380FA1;\n\tSun, 15 Feb 2026 14:11:42 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 6E8D68309A; Sun, 15 Feb 2026 14:11:41 +0100 (CET)",
            "from CY3PR05CU001.outbound.protection.outlook.com\n (mail-westcentralusazlp170130007.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c112::7])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id AFE2880B98\n for <u-boot@lists.denx.de>; Sun, 15 Feb 2026 14:11:38 +0100 (CET)",
            "from BY3PR05CA0012.namprd05.prod.outlook.com (2603:10b6:a03:254::17)\n by LV8PR12MB9408.namprd12.prod.outlook.com (2603:10b6:408:208::7)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.15; Sun, 15 Feb\n 2026 13:11:34 +0000",
            "from SJ5PEPF000001C9.namprd05.prod.outlook.com\n (2603:10b6:a03:254:cafe::79) by BY3PR05CA0012.outlook.office365.com\n (2603:10b6:a03:254::17) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.11 via Frontend Transport; Sun,\n 15 Feb 2026 13:11:31 +0000",
            "from satlexmb08.amd.com (165.204.84.17) by\n SJ5PEPF000001C9.mail.protection.outlook.com (10.167.242.37) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9632.12 via Frontend Transport; Sun, 15 Feb 2026 13:11:32 +0000",
            "from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com\n (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Sun, 15 Feb\n 2026 07:11:32 -0600",
            "from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com\n (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Sun, 15 Feb\n 2026 07:11:30 -0600",
            "from xhdkummari40.xilinx.com (10.180.168.240) by satlexmb08.amd.com\n (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17 via Frontend\n Transport; Sun, 15 Feb 2026 07:11:28 -0600"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2",
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=P+HbiZiTiZET13wJWOFhDk2371rfstk6zwjqMS7YnmxTf0N/A6foUSpZEfBcFQ3DnabKROxd3PJUo2HU9mItBNA8GCmYsKFrFkgTjINrJAXTK3gJbizrwUOLbgbYwQ7IbdY7+jrp2xvs8364RetUI1PSq9cgoVV6td5Y7tIEPzCbXvj3/dPE+1ZXLSGKbT3jjQCuau9nWiG27XAg0G/d7KQb52wfnkV5K+0txvovV9uwMz3lAkAbB8vxexBc+PjTrZm/YO6EswjtXLIKdzhowKIk6GWyX0HCPsJjOEWJ6h9Zp4hJ6k1jnN3WPXfDB6Eb9N+pH7lAx3yuGGvmb/ylRg==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\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=35Yi/rQfI2sDlkPD8MtTFVTHeV6Y/mo97KuANHbu8MI=;\n b=B+bc+gDu7chLPUJ0+gGo88p3kSWGs7YOIMff3QSrnkWdGx4aYxInNkVF8LextNGTCFudWDxHohYr0kNvzTOHu/gczcfzyrCuGy05kbI/8wIPXdtPba73PhJQzDOLangNhSr9RTID6a5A5/Q/EolXywqT6NqjUWTMz/KCu6PQbjSK60I6S+jewnZuuNcx9arCGq03J6iFFfXpl71VVMNb8kcv/7U/zeOVTp/z0u4NmKNO3ZLiCwIbiApeCM5JB+bSg34n0rxE6csKZksJsm0yxPc+caIcAXz6CAQkyO9ZBvFni0pkotUzPGR4yV7p5t4Bov3O0wwKSwKLumJ/V7La5Q==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=amd.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=amd.com; dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=35Yi/rQfI2sDlkPD8MtTFVTHeV6Y/mo97KuANHbu8MI=;\n b=S4guuknqaThdGugaRNiiI2HJm63hcuj8jq0OqNMF7mAZ2Esh+f9ToB+esuZss6kFR2s3wmya8kFdGAgEB2YY6Mi8tZbWGjsl0gb+sJhzLQGmq3U62b8EE3R06NtpagppOuSzm012OMo2N9p4sp16TmLZiVXRCG7l+wTg1fb2p8U=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": [
            "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C",
            "None (SATLEXMB04.amd.com: padmarao.begari@amd.com does not\n designate permitted sender hosts)"
        ],
        "From": "Padmarao Begari <padmarao.begari@amd.com>",
        "To": "<u-boot@lists.denx.de>, <michal.simek@amd.com>",
        "CC": "<git@amd.com>, <padmarao.begari@amd.com>, John Toomey\n <john.toomey@amd.com>, Tom Rini <trini@konsulko.com>, Quentin Schulz\n <quentin.schulz@cherry.de>, Rasmus Villemoes <ravi@prevas.dk>",
        "Subject": "[RFC PATCH] cmd: part: add dupcheck command to detect duplicate\n PARTUUIDs",
        "Date": "Sun, 15 Feb 2026 18:40:47 +0530",
        "Message-ID": "<20260215131115.3352282-1-padmarao.begari@amd.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SJ5PEPF000001C9:EE_|LV8PR12MB9408:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "7401f743-b682-4d1c-c7cf-08de6c93bdaa",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|376014|1800799024|36860700013|82310400026;",
        "X-Microsoft-Antispam-Message-Info": "\n 0PEy2c5l0L3oJiPXDFI3ax2fjWl3Q4uRYQKkJ4w6fnoWp/lKd1ET5w6bz9VaxJyMctWuEaCADU0P4j8FBFwEFsKK3wbxk0jLDxhCR/my6a1oS5h5DQDom1/gLvFIY29KPUF4ZPs7+CV8vJzoUZ2qaBBnh3dp0HrD5QDqkrLO1XRvJ7jCRb4WKNCpA+wYldZ5Lmluig7KxMEZM0UP8FJgQ+yGvOGPR/fEjVrp5asorzO2e6XLj9D9ZY+Jjzx23LN4imu13efDI4PvfTybAP7QCtwSySILWulaRpMPaXN9Ay+eHuQU79FsEfhWdhCpu1DP6OCtYfQt2uY/ahP3gPfW8wxc40MRPiOQaWkVzbGmnkryUzzCL7RleNSVWnAxU4sAil/y2RTGfmnusGzweMF6mdeW8ylG7nBF629QgTT5KdkFlW4U013ZVOGSW3kLd+QasaIFE5qUhYLyrDGyRIAzQSg2XZCDKuap+G461mJj2xuNV6kU+W1mHAO0wwRrb73EwjwkNJBkhCGqiOfTcOdlOU7E7Rv8yPhwTYMJtnC1cWGWcUfCRwjk2EF/NKLtXyct6huwa9XOdvm4t2rG7yWgJjptvLc29/ls1CjW9itAXhfx5s0zhBmhkVXPWOGTELgFua1QVQUDzO1xnneAOjABSxiSIwoWZvUJQOZA8Jn1dWd9g3rgpfx7UmmkXVClgWINV776Yz57Rj422CztM6WzwBkO8tUVI624DBQnTDSZkml5ID7ExY9Emy95YI3Dc7oMyou+UZB6GYAF7e7RrdbtT9lr9vomcj4sUlhCsjKQ8UlFNabT6KMJZ6udWJ9hbeY+sJ0JGSS1kKX4bRA2Hgm+dJrSxuaWUaxnSNeMA+3A+HMPFiDBax07R6W4YG+wXHbLMbW05BxmJvQhEyLQ6nKnl5gz5cTX974H2KMCB4xl70cUvVKAi/9MQk+vl4qeKfjcS5bnk7DXX8lN+aDjsd6jRWPva0lQzvZ5HlWpU0QJoYx/WyO/MhJFC24OGuhEZmDjOUi8x6D7lLV3ecLyewqHFz7vVM8d+ZGXJuEf4babthAiEH9hMd829KK+EpED9gi4MHY+kynwheZ6DvNnOfrkc/vFWpvdh3lFN+jmdQktL8gF8w8wc3QBCDAnoLFRwHzkuDxAoh1fEAi9YXL8sM5Jj8ApmIUF9dpk8jt/waJjvCIt5715SOWSM6N+FmvQQXuw9sDeBwJEzHNJtIzJEGsmuyKpQySDC5aNbvMDN+LgStl6Dq0p6n6DJ3pTaLmbiP+hmPnexSI/e8cZ1VtgHuSTGW2NMR5teqnL+aHSOlqW2HSsDb+TnrhbgGPNpopfck7Ci8I5KNocE0JPS1IT/Q/GIlEczRv19k45GPhQnRvF+J9SippLcohlMGn7kl3FEZrpFiIn+OXr2J7s4z0Wp5ErVOp/QSeshbDNhXNh0tKqEmLoXS6EUsLgvYKszhtnZdCm5mA7ubT0N5hoHDP7K1sPCZTZ+wPQO3AO2LrmJxE8qa4mjZIpHVF1ePUDEeiOTMiaf8jQBbuLzd3wtKbTIANbw8PEqrW4gYR1SUmA3QmlLeLSPHp4PZb+atAGfpzeufHDjMAfaw84escbTi6kVPY7idx61NnehCspUmvu1HNBhCL8dfom7UpKVTyL0fguCxgTTc+XKLNLkDRtbTwaKc4m8A==",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT;\n SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n ptfABBt81WeVZBp9/gIgTT4gWcj7lsKdA9pfbGnz5WWAp9DdNKp3q7sba0SvFMPJcuyOf43T0DKX1ooVhexgnL45G3o4rN2fT/eaUJvfQ7cKWHMStpifqim2JLDjGZerTnshbfi5zZ3cmWwk9aTxNoPUR6WkJS0lnzQkU+LVokNFi3d9LwObz7f4rNYl2Mp0M8DIAMpHdno+oVzpA8aK5/qZpdPnrR943CiCP06Faipc39TIyyt8b8vQa8w2GLeA188ugz5teAPv+7+1/FD7KemKsigEXPET9TDhY1lnvHxANwUWYtUs5sV9z5dB0nGmI3O12NLqZ4WYItVO5Ju6z849b+V1Q7SuG1CzzdkNaAoGcvus/6evoiAKbYEqPL/UyLpuYIHsiX1GP9GFDqiYqt0mxQMwQFbZJDYR8d1iDOPdUNwjDUUXD3YPEgPvWaTw",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "15 Feb 2026 13:11:32.9924 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 7401f743-b682-4d1c-c7cf-08de6c93bdaa",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[satlexmb08.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n SJ5PEPF000001C9.namprd05.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "LV8PR12MB9408",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.39",
        "Precedence": "list",
        "List-Id": "U-Boot discussion <u-boot.lists.denx.de>",
        "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>",
        "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>",
        "List-Post": "<mailto:u-boot@lists.denx.de>",
        "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>",
        "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>",
        "Errors-To": "u-boot-bounces@lists.denx.de",
        "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>",
        "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de",
        "X-Virus-Status": "Clean"
    },
    "content": "Add a 'part dupcheck' subcommand (gated by CONFIG_PARTITION_UUIDS)\nthat scans all block devices for duplicate partition UUIDs. This\nhelps detect situations where the same disk image has been flashed\nto multiple boot devices (e.g., USB stick and UFS), which can lead\nto unpredictable boot behavior when using PARTUUID-based root\nfilesystem specifications. It iterates all block devices using\nblk_foreach_probe() and checks partition UUIDs via part_get_info().\n\nWhen duplicates are found, a warning is printed for each occurrence:\n\nWarning: duplicate PARTUUID 20c5fba5-0171-457f-b9cd-f5129cd07228\n  first seen on usb_mass_storage.lun0:3\n  also on ufs_scsi.id0lun0:3\n\nSigned-off-by: John Toomey <john.toomey@amd.com>\nSigned-off-by: Padmarao Begari <padmarao.begari@amd.com>\n---\n cmd/part.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 1 file changed, 103 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/cmd/part.c b/cmd/part.c\nindex 975a0a08a99..31bcdec5e6d 100644\n--- a/cmd/part.c\n+++ b/cmd/part.c\n@@ -15,9 +15,12 @@\n  * Pavel Bartusek <pba@sysgo.com>\n  */\n \n+#include <blk.h>\n #include <config.h>\n #include <command.h>\n+#include <dm.h>\n #include <env.h>\n+#include <malloc.h>\n #include <part.h>\n #include <stdio.h>\n #include <vsprintf.h>\n@@ -246,6 +249,97 @@ static int do_part_type(int argc, char *const argv[])\n }\n #endif\n \n+#if CONFIG_IS_ENABLED(PARTITION_UUIDS)\n+struct part_seen {\n+\tchar uuid[UUID_STR_LEN + 1];\n+\tstruct udevice *dev;\n+\tint part;\n+};\n+\n+static int do_part_dupcheck(int argc, char *const argv[])\n+{\n+\tstruct part_seen *seen;\n+\tint count = 0;\n+\tint duplicates = 0;\n+\tint max_entries;\n+\tint dev_count;\n+\tstruct udevice *dev;\n+\n+\tif (argc)\n+\t\treturn CMD_RET_USAGE;\n+\n+\tdev_count = blk_count_devices(BLKF_BOTH);\n+\tif (!dev_count) {\n+\t\tprintf(\"No block devices found\\n\");\n+\t\treturn CMD_RET_SUCCESS;\n+\t}\n+\n+\tmax_entries = dev_count * MAX_SEARCH_PARTITIONS;\n+\tseen = calloc(max_entries, sizeof(*seen));\n+\tif (!seen) {\n+\t\tprintf(\"Unable to allocate dupcheck table (%d entries)\\n\",\n+\t\t       max_entries);\n+\t\treturn CMD_RET_FAILURE;\n+\t}\n+\n+\tblk_foreach_probe(BLKF_BOTH, dev) {\n+\t\tstruct blk_desc *desc = dev_get_uclass_plat(dev);\n+\n+\t\tfor (int part = 1; part <= MAX_SEARCH_PARTITIONS; part++) {\n+\t\t\tstruct disk_partition info;\n+\t\t\tint first_match = -1;\n+\n+\t\t\tif (part_get_info(desc, part, &info))\n+\t\t\t\tcontinue;\n+\t\t\tif (!info.uuid[0])\n+\t\t\t\tcontinue;\n+\n+\t\t\tfor (int i = 0; i < count; i++) {\n+\t\t\t\tif (strcmp(seen[i].uuid, info.uuid))\n+\t\t\t\t\tcontinue;\n+\t\t\t\tif (first_match == -1) {\n+\t\t\t\t\tprintf(\"Warning: duplicate PARTUUID %s\\n\",\n+\t\t\t\t\t       info.uuid);\n+\t\t\t\t\tprintf(\"  first seen on %s:%d\\n\",\n+\t\t\t\t\t       seen[i].dev->name,\n+\t\t\t\t\t       seen[i].part);\n+\t\t\t\t\tprintf(\"  also on %s:%d\\n\",\n+\t\t\t\t\t       dev->name, part);\n+\t\t\t\t\tduplicates++;\n+\t\t\t\t\tfirst_match = i;\n+\t\t\t\t} else {\n+\t\t\t\t\tprintf(\"  also on %s:%d\\n\",\n+\t\t\t\t\t       seen[i].dev->name,\n+\t\t\t\t\t       seen[i].part);\n+\t\t\t\t}\n+\t\t\t}\n+\n+\t\t\tif (count >= max_entries) {\n+\t\t\t\tprintf(\"Error: dupcheck capacity %d entries\\n\",\n+\t\t\t\t       max_entries);\n+\t\t\t\tprintf(\"       exceeded\\n\");\n+\t\t\t\tfree(seen);\n+\t\t\t\treturn CMD_RET_FAILURE;\n+\t\t\t}\n+\n+\t\t\tstrlcpy(seen[count].uuid, info.uuid,\n+\t\t\t\tsizeof(seen[0].uuid));\n+\t\t\tseen[count].dev = dev;\n+\t\t\tseen[count].part = part;\n+\t\t\tcount++;\n+\t\t}\n+\t}\n+\n+\tif (duplicates)\n+\t\tprintf(\"Found %d duplicate(s) among %d partitions checked\\n\",\n+\t\t       duplicates, count);\n+\n+\tfree(seen);\n+\n+\treturn duplicates ? CMD_RET_FAILURE : CMD_RET_SUCCESS;\n+}\n+#endif\n+\n static int do_part_types(int argc, char * const argv[])\n {\n \tstruct part_driver *drv = ll_entry_start(struct part_driver,\n@@ -291,6 +385,10 @@ static int do_part(struct cmd_tbl *cmdtp, int flag, int argc,\n #ifdef CONFIG_PARTITION_TYPE_GUID\n \telse if (!strcmp(argv[1], \"type\"))\n \t\treturn do_part_type(argc - 2, argv + 2);\n+#endif\n+#if CONFIG_IS_ENABLED(PARTITION_UUIDS)\n+\telse if (!strcmp(argv[1], \"dupcheck\"))\n+\t\treturn do_part_dupcheck(argc - 2, argv + 2);\n #endif\n \treturn CMD_RET_USAGE;\n }\n@@ -328,5 +426,9 @@ U_BOOT_CMD(\n \t\"part set <interface> <dev> type\\n\"\n \t\"    - set partition type for a device\\n\"\n \t\"part types\\n\"\n-\t\"    - list supported partition table types\"\n+\t\"    - list supported partition table types\\n\"\n+#if CONFIG_IS_ENABLED(PARTITION_UUIDS)\n+\t\"part dupcheck\\n\"\n+\t\"    - scan all block devices for duplicate partition UUIDs\"\n+#endif\n );\n",
    "prefixes": [
        "RFC"
    ]
}