get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2195852,
    "url": "http://patchwork.ozlabs.org/api/patches/2195852/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260212062522.99565-28-anisinha@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/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": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260212062522.99565-28-anisinha@redhat.com>",
    "list_archive_url": null,
    "date": "2026-02-12T06:25:11",
    "name": "[v4,27/31] ppc/openpic: create a new openpic device and reattach mem region on coco reset",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "632d32a2b7c281e907c4b41cd28c596ec5190fa4",
    "submitter": {
        "id": 86030,
        "url": "http://patchwork.ozlabs.org/api/people/86030/?format=api",
        "name": "Ani Sinha",
        "email": "anisinha@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260212062522.99565-28-anisinha@redhat.com/mbox/",
    "series": [
        {
            "id": 491935,
            "url": "http://patchwork.ozlabs.org/api/series/491935/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491935",
            "date": "2026-02-12T06:24:45",
            "name": "Introduce support for confidential guest reset (x86)",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/491935/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2195852/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2195852/checks/",
    "tags": {},
    "related": [],
    "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 (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=b/ARzrE7;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=google header.b=LuPjpmT6;\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 4fBQPX5rylz1xwL\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Feb 2026 17:29:20 +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 1vqQAp-0000wo-T0; Thu, 12 Feb 2026 01:27:37 -0500",
            "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 <anisinha@redhat.com>)\n id 1vqQAb-0000Sg-9W\n for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:27 -0500",
            "from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <anisinha@redhat.com>)\n id 1vqQAX-0005MJ-0h\n for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:27:18 -0500",
            "from mail-pl1-f198.google.com (mail-pl1-f198.google.com\n [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-594-bJRNQtlPOy6jLNPszDNqMw-1; Thu, 12 Feb 2026 01:27:14 -0500",
            "by mail-pl1-f198.google.com with SMTP id\n d9443c01a7336-2a863be8508so78266305ad.2\n for <qemu-devel@nongnu.org>; Wed, 11 Feb 2026 22:27:14 -0800 (PST)",
            "from rhel9-box.lan ([122.164.27.113])\n by smtp.googlemail.com with ESMTPSA id\n 98e67ed59e1d1-3567e7d95d8sm4894122a91.2.2026.02.11.22.27.10\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 11 Feb 2026 22:27:12 -0800 (PST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1770877636;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=;\n b=b/ARzrE7l+46ak0fmlFtevNCNnlnXFrUGmL/vJKg3U+i7nqm4EhaSjxvQgD0s2pKkmlpsG\n CNpAyj9uvTMoJRkgcHOhKChzRy6JlFE6hqCT4lG82ubAO3uvsPiQEh45k7LylTYr6wHm1O\n aO6ap2v5GxrpvITK8VteyaDU1RU6L0U=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1770877633; x=1771482433; 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=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=;\n b=LuPjpmT67Hv8r/EBhzfQEa1EVsuIBvXSDSUqU4r6GosgYTVMxiIkhVsx+Z5GMzjD+z\n TUrdytJWiQ5QZCmHZJH34jzXX3wmPJs9We07SZE9F64E35Zc07nkYDBGI5Si0+Amw3j5\n E5pLVYcQ7mRaIy8MwZ3kfx/BvX0iyGRUsUXuLTDfPGACvyaT+d8Mgv41l0K8KsiQcFFG\n q5+K5Mm0aIGN2vFwV3U4BzZRlAq6jCNJvXqyzIQRcMXOHjVoYhbNQaQJ7v6vAeBxeBJW\n 7ALy6aJVpEiYiZyQrpocBcWB1LV4kPkyrd71qwqxE/tuCZJWaymC9Oi2sL7SYjNBX8P7\n yTxA=="
        ],
        "X-MC-Unique": "bJRNQtlPOy6jLNPszDNqMw-1",
        "X-Mimecast-MFC-AGG-ID": "bJRNQtlPOy6jLNPszDNqMw_1770877634",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1770877633; x=1771482433;\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=bSI26ec30q+LRwqH4eGYpPIQO82uWHXpsee53xL/4Nc=;\n b=TmkyOGDIMELGkVaVmrU3JtRtPpqqvWJDY/Y9YzFpWoeSHPMMFsHRgUWQG1Gu582n8B\n O22tuzfysLkqlq95f51tspIw4usgxc31Vp+PF0vsvHlyshzfCgVHP2u0n2qHTOzzP4oz\n Qr/zPsXj4pVIlLaTtiAlj9XPLSqwOdRZ+xdP85dP0MjEn1QZGHv+7TjtahzpHDb2IcIp\n 5zuSffe/wki3qoBT3UK+j+8vifgHXT5qu7fYINoAyN6SPaYMGVtwPbbAZIUk/D1fBmv2\n OJeIhrHfcrZ/eUf5sTW+dxljBQ8PWXod5+FahBfSlR07F38v7vy2/l+Z1QqKiZooaPzv\n MelA==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCVBDn799CCYmzEIJxwQRFiqVtZxARrNodi/M67tUUgubp1+DqijCnAInif9Nh9pF5R2xso9amr7OAo4@nongnu.org",
        "X-Gm-Message-State": "AOJu0YyHROF/uIaAiY7wAsnzKbs+8GRrWc1NOsjigQ6sX/ALr1Q94hZl\n KJ/U8aUIELVOBPmnADy7nDAL8kRJow2ck05wVV6w3AQBDD55bKmyjp10VcMzQsCSJKng+PpAUm8\n n9m+AZORXhx/QokYl4NDyQAIL0mWrOvnXHMypgIfCoqI6WsgyaxAivm5L",
        "X-Gm-Gg": "AZuq6aKl5T+JqnRbIZp2t1kokPoC4V/fh/B42ozcXPAf5jFhNUzZX8UJsByrwN1zwOO\n 5X4pj3bHQFz5+CduJmVXC7hri0ZDRZcMmVKBMBXkr/pqxcgSdnisz5MgJFW0YDf3kod+o7f8Spm\n esexZlAc7K9POQDY1xqzs+CZMqg1+oojCkD6NRjK28N6/xV7/fMOStxJIKPYUyFgflc9DlTB/GJ\n Ob27Yn1zzAIYmKx1LG79RvCINTeaRabg4jpH70t6UIbbGr/fllgXnlNdlJOjyVMVjFJC0Io2PXW\n RkYWaaFswYcD1O/4znRJ9bOzKdmYxiqsp1+qX7tfZPBWzs1MzuWFVXd12r+bWXDXVPAjCCcj0BM\n l0b0UOL5JwpSXNp8M9KY9NPZtMkZ7lMkWhoXIVi5Sf0oh/RvYjMjtSMM=",
        "X-Received": [
            "by 2002:a05:6a20:a103:b0:38f:df47:87b2 with SMTP id\n adf61e73a8af0-3944883cb87mr1895470637.53.1770877633583;\n Wed, 11 Feb 2026 22:27:13 -0800 (PST)",
            "by 2002:a05:6a20:a103:b0:38f:df47:87b2 with SMTP id\n adf61e73a8af0-3944883cb87mr1895445637.53.1770877633122;\n Wed, 11 Feb 2026 22:27:13 -0800 (PST)"
        ],
        "From": "Ani Sinha <anisinha@redhat.com>",
        "To": "Bernhard Beschow <shentey@gmail.com>",
        "Cc": "kraxel@redhat.com, Ani Sinha <anisinha@redhat.com>, qemu-ppc@nongnu.org,\n qemu-devel@nongnu.org",
        "Subject": "[PATCH v4 27/31] ppc/openpic: create a new openpic device and\n reattach mem region on coco reset",
        "Date": "Thu, 12 Feb 2026 11:55:11 +0530",
        "Message-ID": "<20260212062522.99565-28-anisinha@redhat.com>",
        "X-Mailer": "git-send-email 2.42.0",
        "In-Reply-To": "<20260212062522.99565-1-anisinha@redhat.com>",
        "References": "<20260212062522.99565-1-anisinha@redhat.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Received-SPF": "pass client-ip=170.10.133.124;\n envelope-from=anisinha@redhat.com;\n helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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": "For confidential guests during the reset process, the old KVM VM file\ndescriptor is closed and a new one is created. When a new file descriptor is\ncreated, a new openpic device needs to be created against this new KVM VM file\ndescriptor as well. Additionally, existing memory region needs to be reattached\nto this new openpic device and proper CPU attributes set associating new file\ndescriptor. This change makes this happen with the help of a callback handler\nthat gets called when the KVM VM file descriptor changes as a part of the\nconfidential guest reset process.\n\nReviewed-by: Bernhard Beschow <shentey@gmail.com>\nSigned-off-by: Ani Sinha <anisinha@redhat.com>\n---\n hw/intc/openpic_kvm.c | 112 +++++++++++++++++++++++++++++++++---------\n 1 file changed, 88 insertions(+), 24 deletions(-)",
    "diff": "diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c\nindex fbf0bdbe07..b099da20eb 100644\n--- a/hw/intc/openpic_kvm.c\n+++ b/hw/intc/openpic_kvm.c\n@@ -49,6 +49,7 @@ struct KVMOpenPICState {\n     uint32_t fd;\n     uint32_t model;\n     hwaddr mapped;\n+    NotifierWithReturn vmfd_change_notifier;\n };\n \n static void kvm_openpic_set_irq(void *opaque, int n_IRQ, int level)\n@@ -114,6 +115,88 @@ static const MemoryRegionOps kvm_openpic_mem_ops = {\n     },\n };\n \n+static int kvm_openpic_setup(KVMOpenPICState *opp, Error **errp)\n+{\n+    int kvm_openpic_model;\n+    struct kvm_create_device cd = {0};\n+    KVMState *s = kvm_state;\n+    int ret;\n+\n+    switch (opp->model) {\n+    case OPENPIC_MODEL_FSL_MPIC_20:\n+        kvm_openpic_model = KVM_DEV_TYPE_FSL_MPIC_20;\n+        break;\n+\n+    case OPENPIC_MODEL_FSL_MPIC_42:\n+        kvm_openpic_model = KVM_DEV_TYPE_FSL_MPIC_42;\n+        break;\n+\n+    default:\n+        error_setg(errp, \"Unsupported OpenPIC model %\" PRIu32, opp->model);\n+        return -1;\n+    }\n+\n+    cd.type = kvm_openpic_model;\n+    ret = kvm_vm_ioctl(s, KVM_CREATE_DEVICE, &cd);\n+    if (ret < 0) {\n+        error_setg(errp, \"Can't create device %d: %s\",\n+                   cd.type, strerror(errno));\n+        return -1;\n+    }\n+    opp->fd = cd.fd;\n+\n+    return 0;\n+}\n+\n+static int kvm_openpic_handle_vmfd_change(NotifierWithReturn *notifier,\n+                                          void *data, Error **errp)\n+{\n+    KVMOpenPICState *opp = container_of(notifier, KVMOpenPICState,\n+                                        vmfd_change_notifier);\n+    uint64_t reg_base;\n+    struct kvm_device_attr attr;\n+    CPUState *cs;\n+    int ret;\n+\n+    /* we are not interested in pre vmfd change notification */\n+    if (((VmfdChangeNotifier *)data)->pre) {\n+        return 0;\n+    }\n+\n+    /* close the old descriptor */\n+    close(opp->fd);\n+\n+    if (kvm_openpic_setup(opp, errp) < 0) {\n+        return -1;\n+    }\n+\n+    if (!opp->mapped) {\n+        return 0;\n+    }\n+\n+    reg_base = opp->mapped;\n+    attr.group = KVM_DEV_MPIC_GRP_MISC;\n+    attr.attr = KVM_DEV_MPIC_BASE_ADDR;\n+    attr.addr = (uint64_t)(unsigned long)&reg_base;\n+\n+    ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);\n+    if (ret < 0) {\n+        error_setg(errp, \"%s: %s %\" PRIx64, __func__,\n+                   strerror(errno), reg_base);\n+        return -1;\n+    }\n+\n+    CPU_FOREACH(cs) {\n+        ret = kvm_vcpu_enable_cap(cs, KVM_CAP_IRQ_MPIC, 0, opp->fd,\n+                                   kvm_arch_vcpu_id(cs));\n+        if (ret < 0) {\n+            return ret;\n+        }\n+    }\n+\n+    return 0;\n+}\n+\n static void kvm_openpic_region_add(MemoryListener *listener,\n                                    MemoryRegionSection *section)\n {\n@@ -197,36 +280,14 @@ static void kvm_openpic_realize(DeviceState *dev, Error **errp)\n     SysBusDevice *d = SYS_BUS_DEVICE(dev);\n     KVMOpenPICState *opp = KVM_OPENPIC(dev);\n     KVMState *s = kvm_state;\n-    int kvm_openpic_model;\n-    struct kvm_create_device cd = {0};\n-    int ret, i;\n+    int i;\n \n     if (!kvm_check_extension(s, KVM_CAP_DEVICE_CTRL)) {\n         error_setg(errp, \"Kernel is lacking Device Control API\");\n         return;\n     }\n \n-    switch (opp->model) {\n-    case OPENPIC_MODEL_FSL_MPIC_20:\n-        kvm_openpic_model = KVM_DEV_TYPE_FSL_MPIC_20;\n-        break;\n-\n-    case OPENPIC_MODEL_FSL_MPIC_42:\n-        kvm_openpic_model = KVM_DEV_TYPE_FSL_MPIC_42;\n-        break;\n-\n-    default:\n-        error_setg(errp, \"Unsupported OpenPIC model %\" PRIu32, opp->model);\n-        return;\n-    }\n-\n-    cd.type = kvm_openpic_model;\n-    ret = kvm_vm_ioctl(s, KVM_CREATE_DEVICE, &cd);\n-    if (ret < 0) {\n-        error_setg_errno(errp, errno, \"Can't create device %d\", cd.type);\n-        return;\n-    }\n-    opp->fd = cd.fd;\n+    kvm_openpic_setup(opp, errp);\n \n     sysbus_init_mmio(d, &opp->mem);\n     qdev_init_gpio_in(dev, kvm_openpic_set_irq, OPENPIC_MAX_IRQ);\n@@ -235,6 +296,9 @@ static void kvm_openpic_realize(DeviceState *dev, Error **errp)\n     opp->mem_listener.region_del = kvm_openpic_region_del;\n     opp->mem_listener.name = \"openpic-kvm\";\n     memory_listener_register(&opp->mem_listener, &address_space_memory);\n+    opp->vmfd_change_notifier.notify =\n+        kvm_openpic_handle_vmfd_change;\n+    kvm_vmfd_add_change_notifier(&opp->vmfd_change_notifier);\n \n     /* indicate pic capabilities */\n     msi_nonbroken = true;\n",
    "prefixes": [
        "v4",
        "27/31"
    ]
}