get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2219357,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2219357/?format=api",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260402215629.745866-23-ruslichenko.r@gmail.com>",
    "date": "2026-04-02T21:56:07",
    "name": "[v3,22/33] hw/core/sysbus: implement FDT_GENERIC_MMAP_CLASS interface",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "aebb689868f78bded35952815045cb9daca75b3e",
    "submitter": {
        "id": 92275,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/92275/?format=api",
        "name": "Ruslan Ruslichenko",
        "email": "ruslichenko.r@gmail.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260402215629.745866-23-ruslichenko.r@gmail.com/mbox/",
    "series": [
        {
            "id": 498555,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/498555/?format=api",
            "date": "2026-04-02T21:55:47",
            "name": "hw/arm: Introduce generic FDT-driven machine",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/498555/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2219357/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=ZtoJCD94;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmwmC3kYnz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 03 Apr 2026 09:01:15 +1100 (AEDT)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w8Q2u-0000Ns-3B; Thu, 02 Apr 2026 17:57:48 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <ruslichenko.r@gmail.com>)\n id 1w8Q2Y-00006K-Be\n for qemu-devel@nongnu.org; Thu, 02 Apr 2026 17:57:27 -0400",
            "from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <ruslichenko.r@gmail.com>)\n id 1w8Q2V-0007Cs-LT\n for qemu-devel@nongnu.org; Thu, 02 Apr 2026 17:57:25 -0400",
            "by mail-ej1-x62e.google.com with SMTP id\n a640c23a62f3a-b9c280322e0so162834766b.0\n for <qemu-devel@nongnu.org>; Thu, 02 Apr 2026 14:57:23 -0700 (PDT)",
            "from thinkpad-t470s.. (93-143-182-244.adsl.net.t-com.hr.\n [93.143.182.244]) by smtp.googlemail.com with ESMTPSA id\n a640c23a62f3a-b9c3cac0e1asm134009166b.27.2026.04.02.14.57.20\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 02 Apr 2026 14:57:21 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775167042; x=1775771842; darn=nongnu.org;\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=7XwGSsZ5E+pHUCrk55JcghHWJX/O0i4AExLwj5l49n4=;\n b=ZtoJCD94wsJ26HGPVVGsEid/nGX+btDysjk2W83FLG5DhYOeejn3sIO1frJWgoHvS7\n MFJ5I1k+vdYDYZGXBT3RxLwIg1RUROgYe8WYUaxl3oV7rc5vT0ydYzSpR9C1KOF//z7K\n mjix6TcqMTpdeRFeZbnkYOoCCpxvOhoOfDAW4+dbLgWrKWfV1q0rcTMccSqUm825Ii2H\n aGt/wDEPw0zlxB6EjXdGrvOWdUU2rx4WoNaktqY6S8TdpKtjapNm7yH+vf6U1UY68tPT\n MfnGJAmq84s+/BqXMmb8H4JKvxwvNoxXEeqNjQ8SEFFanS9rhOVKZ7TBUOG5mt4VLUfN\n Ghsg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775167042; x=1775771842;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=7XwGSsZ5E+pHUCrk55JcghHWJX/O0i4AExLwj5l49n4=;\n b=Z5wSbYj2j5U8BBw1JVMsIk46Jm55j2DXJ6Jmr3qL/rrAg4bViJzCHvK3icqEhqQIN2\n V7rKfIkyx+/ArD5VUAJ5q57dzVFaHdDoHD3lBzu9Nt3IzJof7UThLkt0MZ6tulo87ELg\n T0QKB1flkDaog11X4jlTbSInTaviszPaZQYXiX+bU6r1qkrLD0XCV6XqS9HlEtdhOltO\n pue5YrvssxNCasYBfkVcY5z4pKP6GhLY/89f3rDnOKBv+hycIbXK3VFKALXqfXtOcbO6\n Z0ymf5PF0bin88DtzlBbvA0XeH0hWKG19OvbiERAFQ+8a/6Cve98u1M85mIEVOuJodUu\n Od3g==",
        "X-Gm-Message-State": "AOJu0Yzk5mqGor6x4GGZ0CkI95ML1lykBjYZnabw3Dc+G7TjSz1/gRN2\n iluxlE1R0YtoUlDD2rto75umGLbcuKauJoxTdqTzdB3Bxq6ipisuuMSq+ObilsFq",
        "X-Gm-Gg": "ATEYQzzgbeyWDUsf6zWNJSxkg7ZAIHqasid0BLt3aYrXcu1bFfAyAwx/eSTVjYrlhmk\n QUKi/oRAy7NSl71x9vvxQ9H0hiP1cu1ZLu4jbsD/xJP+t2TXkO426w3K5g4lBu+LYCdXLI0Pp0u\n wodsbU//TgayQSj6gzq6KZIHY42zQsCKl89NSWz7k3hv2Ev7DRL85SPfUGLR6IuxEgYA0yVX0hj\n JxNE7Siy2NCsTtjEETY1UgQ/PLdBRtNdnn5I5epsReq7F4L1hcDkjzCKgZtgkRwPT/6eTrAuOnn\n jfDdNJu/N3u+sqa/jcaUnKGao8aGckWW3dZMGq8VCtJLfi+w473AwKK5KrKsAdmJyHlaoxUzm+h\n +mAXEwo3xxVUrLuwZJRl8nQjR5koO7w9HZZcPDXk2xdB5dl06DXJTOFY2LhWaNqf9gnpbAVDCA3\n dTaS6KvVJnGNtnpUgb938JJQef+scYuS3Mb8qnUcmX/7bjjDVNo6TUJ4jrqErGm1og2jg3lvL9f\n LQbuamP",
        "X-Received": "by 2002:a17:906:fe0d:b0:b98:8e19:7d64 with SMTP id\n a640c23a62f3a-b9c677fbe10mr28976766b.26.1775167041480;\n Thu, 02 Apr 2026 14:57:21 -0700 (PDT)",
        "From": "Ruslan Ruslichenko <ruslichenko.r@gmail.com>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "qemu-arm@nongnu.org, alex.bennee@linaro.org, peter.maydell@linaro.org,\n artem_mygaiev@epam.com, volodymyr_babchuk@epam.com,\n takahiro.nakata.wr@renesas.com,\n \"Edgar E . Iglesias\" <edgar.iglesias@gmail.com>, Ruslan_Ruslichenko@epam.com,\n balaton@eik.bme.hu, Paolo Bonzini <pbonzini@redhat.com>, =?utf-8?q?Daniel_P?=\n\t=?utf-8?q?=2E_Berrang=C3=A9?= <berrange@redhat.com>",
        "Subject": "[PATCH v3 22/33] hw/core/sysbus: implement FDT_GENERIC_MMAP_CLASS\n interface",
        "Date": "Thu,  2 Apr 2026 23:56:07 +0200",
        "Message-ID": "<20260402215629.745866-23-ruslichenko.r@gmail.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260402215629.745866-1-ruslichenko.r@gmail.com>",
        "References": "<20260402215629.745866-1-ruslichenko.r@gmail.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Received-SPF": "pass client-ip=2a00:1450:4864:20::62e;\n envelope-from=ruslichenko.r@gmail.com; helo=mail-ej1-x62e.google.com",
        "X-Spam_score_int": "-20",
        "X-Spam_score": "-2.1",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "qemu development <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>\n\nThe patch implements FDTGenericMMap interface for sysbus\ndevice class. The implementation maps device's MMIO regions\nbased on 'reg' property in the Device tree.\n\nThis enables automatic memory mapping for the most QEMU\nperipherals without the need of device-specific FDT\nhandling code.\n\nSigned-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>\n---\n hw/core/sysbus.c | 28 ++++++++++++++++++++++++++++\n 1 file changed, 28 insertions(+)",
    "diff": "diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c\nindex 3adf2f2faf..78b7827708 100644\n--- a/hw/core/sysbus.c\n+++ b/hw/core/sysbus.c\n@@ -23,6 +23,8 @@\n #include \"monitor/monitor.h\"\n #include \"system/address-spaces.h\"\n \n+#include \"hw/core/fdt_generic_util.h\"\n+\n static void sysbus_dev_print(Monitor *mon, DeviceState *dev, int indent);\n static char *sysbus_get_fw_dev_path(DeviceState *dev);\n \n@@ -291,11 +293,32 @@ static char *sysbus_get_fw_dev_path(DeviceState *dev)\n     return g_strdup(qdev_fw_name(dev));\n }\n \n+static bool sysbus_parse_reg(FDTGenericMMap *obj, FDTGenericRegPropInfo reg,\n+                             Error **errp)\n+{\n+    int i;\n+\n+    for (i = 0; i < reg.n; ++i) {\n+        MemoryRegion *mr_parent = (MemoryRegion *)\n+            object_dynamic_cast(reg.parents[i], TYPE_MEMORY_REGION);\n+        if (!mr_parent) {\n+            /* evil */\n+            mr_parent = get_system_memory();\n+        }\n+        memory_region_add_subregion_overlap(mr_parent, reg.a[i],\n+                                 sysbus_mmio_get_region(SYS_BUS_DEVICE(obj), i),\n+                                 reg.p[i]);\n+    }\n+    return false;\n+}\n+\n static void sysbus_device_class_init(ObjectClass *klass, const void *data)\n {\n     DeviceClass *k = DEVICE_CLASS(klass);\n+    FDTGenericMMapClass *fmc = FDT_GENERIC_MMAP_CLASS(klass);\n     k->realize = sysbus_device_realize;\n     k->bus_type = TYPE_SYSTEM_BUS;\n+    fmc->parse_reg = sysbus_parse_reg;\n     /*\n      * device_add plugs devices into a suitable bus.  For \"real\" buses,\n      * that actually connects the device.  For sysbus, the connections\n@@ -354,6 +377,11 @@ static const TypeInfo sysbus_types[] = {\n         .abstract       = true,\n         .class_size     = sizeof(SysBusDeviceClass),\n         .class_init     = sysbus_device_class_init,\n+        .interfaces = (InterfaceInfo[]) {\n+        { TYPE_FDT_GENERIC_MMAP },\n+        { },\n+    },\n+\n     },\n     {\n         .name           = TYPE_DYNAMIC_SYS_BUS_DEVICE,\n",
    "prefixes": [
        "v3",
        "22/33"
    ]
}