get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2195831,
    "url": "http://patchwork.ozlabs.org/api/patches/2195831/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260212062522.99565-7-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-7-anisinha@redhat.com>",
    "list_archive_url": null,
    "date": "2026-02-12T06:24:50",
    "name": "[v4,06/31] accel/kvm: add a notifier to indicate KVM VM file descriptor has changed",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "e8574853c160e981df757da3f7f640eec290f584",
    "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-7-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/2195831/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2195831/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=VRQ2AKBC;\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=Te8ah3Yq;\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 4fBQMZ3wxqz1xvb\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Feb 2026 17:27:38 +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 1vqQ9S-0007c8-LL; Thu, 12 Feb 2026 01:26:10 -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 1vqQ9J-0007aZ-8c\n for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:02 -0500",
            "from us-smtp-delivery-124.mimecast.com ([170.10.129.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 1vqQ9G-0005DL-28\n for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:26:00 -0500",
            "from mail-pj1-f69.google.com (mail-pj1-f69.google.com\n [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-681-MNuYQgs7M1-sLltbBOGLXQ-1; Thu, 12 Feb 2026 01:25:55 -0500",
            "by mail-pj1-f69.google.com with SMTP id\n 98e67ed59e1d1-35301003062so17081218a91.2\n for <qemu-devel@nongnu.org>; Wed, 11 Feb 2026 22:25:55 -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.25.51\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 11 Feb 2026 22:25:53 -0800 (PST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1770877557;\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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=;\n b=VRQ2AKBCBm5nMg8CecryXLoLuzPCwC/KE6i6ny+LWbmJL0snqDxbPTCky+WkKzlJuN/zDq\n QNFET9jOdvWBTP3wP6KZrlxJ38QgJts27RF5+IdGuyJ4lSPq5Kh2+cb7XaEhwdpq7vSZZ3\n 0QH4+mJcXO+T6KroP3I2u/bgs2I07W8=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1770877554; x=1771482354; 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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=;\n b=Te8ah3Yq/z0nYL+kFRuiC6u9Z2erDt9av6Zq0pHDbnKZCFUyUwIub5eCiNuYm8MzFA\n dgiPC2B7LNEYjU/IkZ6Gw5HH54FZ1uijqTS4hb63Py+LlxqdVdTcH6lWOHxt+DObf94g\n yv/cnDCZRHIT54kpH6YUvehgzIdSKYnAEEdNKcG2kl9M3htncKlNtl4+DFrtt0L4stx7\n 2cTCPn/vprblHItSV/lKux1Jzid8O4dw9ezjjBKLDwLiy5dEMe2yjHpegepIqytp/AL9\n D7qckwm6BadZ170r2jZbAbDDjg3Ikzs3d9+Tia4xPjKOWF/SBkHe7YFQ2q6lQg7umCf3\n 1M4Q=="
        ],
        "X-MC-Unique": "MNuYQgs7M1-sLltbBOGLXQ-1",
        "X-Mimecast-MFC-AGG-ID": "MNuYQgs7M1-sLltbBOGLXQ_1770877555",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1770877554; x=1771482354;\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=o5PlrDMoIrug3cAYm+kTR0nrJ7BVWWy0jAqCy4UtGT4=;\n b=bz5j4Fv5Mt0Zs5UlMu69zDPxRxaofT23xyk51vBZRgsuw40as7ouqOBRjTqZNimLC0\n 83PCaoPE17ARkJLqn2z8ZsZVHOfBvvHTnUDJpYaQ1nd7LV49jnqzaqR0rMlET4zFt1nI\n ywDZPICt7gI1hs4mTwE4dhBJccXtVYxvlGRKhW/NfOLaFHgfKbc9Ak6pylIErFX7v1zF\n EgBZ/txyAHRAHQbfUwg+mSV5ldZh0hbCZTDj80duQC3ukgLE6S3YquliaFsA6heGQ2Nk\n 6idheMd6MqT1T6hfVhH7PzkOKvqLignWWS9/wdQwtWc1mv+52Sp3p1QfO9i0BdVszv3U\n 5pdg==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCX0f3vvfgiWBMAiDCgRRO/DojFvX8fVvqWDqKmnY6+/oisdpKz2c+s/OWKtLCnFP2Twpqrbh5Y37cbi@nongnu.org",
        "X-Gm-Message-State": "AOJu0YxXdpxqHTrlU+OiinPzVfU9WN/Ejw539KUcpWGjPeBFY/euUr4Z\n YX5glkL+OmCfAPAcuq1nPUHrjrdomB7hH1BbdixayyHX5WYKmsdXKtlNO0ikiIk0rxcKYTtOYWk\n 9FUgr91AMb25cMKbcZsuwp6I/k3OEPG1WrD9y7FyvRYKUQOsPi6h0FcJT",
        "X-Gm-Gg": "AZuq6aLXrQY5AvZlhUF8El9hUt4EfSsbxQdUz5yF/lPk6LAPke3fUh9rHj7aJvqJd32\n 3TNquOoAyi9FBZ4P2Ngz0C+udGitYtv3grUgruMBqtPexjozD/kx7HTfTVuQ1vQeM7VQtj9/FpK\n aK6NwW+1LN85konCHsAR//zA09XIX95st6i5h370G3DuIgdNZ31Sx2F5BHyH4ao4pFyTa+1h3dg\n IHuTrR9RIOmNPpmdnQvicv9fjGLOCnT4cBbLEHuB9X02HCWVJbZDQPpXXuxR8733c21GXHC6N2v\n pVE5IpRlbNM5ILIuwO9rWN/fAJfqYfVxRb8ByR/I58AhUtAm1kcbJoHQJzxoIV7y2mu8tIy1K2x\n sQM9vQSBfMNSNkkdZLfoSa4vkPZFNCL/5qCA04VlGGBhWGKU7fpiydOQ=",
        "X-Received": [
            "by 2002:a17:90b:2dcb:b0:356:1edc:b6e with SMTP id\n 98e67ed59e1d1-3568f2cc67dmr1813344a91.8.1770877554535;\n Wed, 11 Feb 2026 22:25:54 -0800 (PST)",
            "by 2002:a17:90b:2dcb:b0:356:1edc:b6e with SMTP id\n 98e67ed59e1d1-3568f2cc67dmr1813301a91.8.1770877553693;\n Wed, 11 Feb 2026 22:25:53 -0800 (PST)"
        ],
        "From": "Ani Sinha <anisinha@redhat.com>",
        "To": "Paolo Bonzini <pbonzini@redhat.com>",
        "Cc": "kraxel@redhat.com, Ani Sinha <anisinha@redhat.com>, kvm@vger.kernel.org,\n qemu-devel@nongnu.org",
        "Subject": "[PATCH v4 06/31] accel/kvm: add a notifier to indicate KVM VM file\n descriptor has changed",
        "Date": "Thu, 12 Feb 2026 11:54:50 +0530",
        "Message-ID": "<20260212062522.99565-7-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.129.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_H5=0.001, RCVD_IN_MSPIKE_WL=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": "A notifier callback can be used by various subsystems to perform actions when\nKVM file descriptor for a virtual machine changes as a part of confidential\nguest reset process. This change adds this notifier mechanism. Subsequent\npatches will add specific implementations for various notifier callbacks\ncorresponding to various subsystems that need to take action when KVM VM file\ndescriptor changed.\n\nSigned-off-by: Ani Sinha <anisinha@redhat.com>\n---\n accel/kvm/kvm-all.c    | 30 ++++++++++++++++++++++++++++++\n accel/stubs/kvm-stub.c |  8 ++++++++\n include/system/kvm.h   | 21 +++++++++++++++++++++\n 3 files changed, 59 insertions(+)",
    "diff": "diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c\nindex 46243cfcf2..30d6295f53 100644\n--- a/accel/kvm/kvm-all.c\n+++ b/accel/kvm/kvm-all.c\n@@ -90,6 +90,7 @@ struct KVMParkedVcpu {\n };\n \n KVMState *kvm_state;\n+VmfdChangeNotifier vmfd_notifier;\n bool kvm_kernel_irqchip;\n bool kvm_split_irqchip;\n bool kvm_async_interrupts_allowed;\n@@ -123,6 +124,9 @@ static const KVMCapabilityInfo kvm_required_capabilites[] = {\n static NotifierList kvm_irqchip_change_notifiers =\n     NOTIFIER_LIST_INITIALIZER(kvm_irqchip_change_notifiers);\n \n+static NotifierWithReturnList register_vmfd_changed_notifiers =\n+    NOTIFIER_WITH_RETURN_LIST_INITIALIZER(register_vmfd_changed_notifiers);\n+\n struct KVMResampleFd {\n     int gsi;\n     EventNotifier *resample_event;\n@@ -2173,6 +2177,22 @@ void kvm_irqchip_change_notify(void)\n     notifier_list_notify(&kvm_irqchip_change_notifiers, NULL);\n }\n \n+void kvm_vmfd_add_change_notifier(NotifierWithReturn *n)\n+{\n+    notifier_with_return_list_add(&register_vmfd_changed_notifiers, n);\n+}\n+\n+void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n)\n+{\n+    notifier_with_return_remove(n);\n+}\n+\n+static int kvm_vmfd_change_notify(Error **errp)\n+{\n+    return notifier_with_return_list_notify(&register_vmfd_changed_notifiers,\n+                                            &vmfd_notifier, errp);\n+}\n+\n int kvm_irqchip_get_virq(KVMState *s)\n {\n     int next_virq;\n@@ -2668,6 +2688,16 @@ static int kvm_reset_vmfd(MachineState *ms)\n         do_kvm_irqchip_create(s);\n     }\n \n+    /*\n+     * notify everyone that vmfd has changed.\n+     */\n+    vmfd_notifier.vmfd = s->vmfd;\n+    ret = kvm_vmfd_change_notify(&err);\n+    if (ret < 0) {\n+        return ret;\n+    }\n+    assert(!err);\n+\n     /* these can be only called after ram_block_rebind() */\n     memory_listener_register(&kml->listener, &address_space_memory);\n     memory_listener_register(&kvm_io_listener, &address_space_io);\ndiff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c\nindex 68cd33ba97..a6e8a6e16c 100644\n--- a/accel/stubs/kvm-stub.c\n+++ b/accel/stubs/kvm-stub.c\n@@ -79,6 +79,14 @@ void kvm_irqchip_change_notify(void)\n {\n }\n \n+void kvm_vmfd_add_change_notifier(NotifierWithReturn *n)\n+{\n+}\n+\n+void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n)\n+{\n+}\n+\n int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n,\n                                        EventNotifier *rn, int virq)\n {\ndiff --git a/include/system/kvm.h b/include/system/kvm.h\nindex 5fc7251fd9..f11729f432 100644\n--- a/include/system/kvm.h\n+++ b/include/system/kvm.h\n@@ -181,6 +181,7 @@ DECLARE_INSTANCE_CHECKER(KVMState, KVM_STATE,\n \n extern KVMState *kvm_state;\n typedef struct Notifier Notifier;\n+typedef struct NotifierWithReturn NotifierWithReturn;\n \n typedef struct KVMRouteChange {\n      KVMState *s;\n@@ -567,4 +568,24 @@ int kvm_set_memory_attributes_shared(hwaddr start, uint64_t size);\n \n int kvm_convert_memory(hwaddr start, hwaddr size, bool to_private);\n \n+/* argument to vmfd change notifier */\n+typedef struct VmfdChangeNotifier {\n+    int vmfd;\n+} VmfdChangeNotifier;\n+\n+/**\n+ * kvm_vmfd_add_change_notifier - register a notifier to get notified when\n+ * a KVM vm file descriptor changes as a part of the confidential guest \"reset\"\n+ * process. Various subsystems should use this mechanism to take actions such\n+ * as creating new fds against this new vm file descriptor.\n+ * @n: notifier with return value.\n+ */\n+void kvm_vmfd_add_change_notifier(NotifierWithReturn *n);\n+/**\n+ * kvm_vmfd_remove_change_notifier - de-register a notifer previously\n+ * registered with kvm_vmfd_add_change_notifier call.\n+ * @n: notifier that was previously registered.\n+ */\n+void kvm_vmfd_remove_change_notifier(NotifierWithReturn *n);\n+\n #endif\n",
    "prefixes": [
        "v4",
        "06/31"
    ]
}