get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2197708,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2197708/?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": "<20260218114233.266178-3-anisinha@redhat.com>",
    "date": "2026-02-18T11:41:55",
    "name": "[v5,02/34] accel/kvm: add confidential class member to indicate guest rebuild capability",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "6cc3c73b3383ec37e1462f0c879b086e2734dd43",
    "submitter": {
        "id": 86030,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/86030/?format=api",
        "name": "Ani Sinha",
        "email": "anisinha@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260218114233.266178-3-anisinha@redhat.com/mbox/",
    "series": [
        {
            "id": 492541,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/492541/?format=api",
            "date": "2026-02-18T11:41:56",
            "name": "Introduce support for confidential guest reset (x86)",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/492541/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2197708/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 (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=I8r7EEGh;\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=IteESUMt;\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 4fGF6w1TFsz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 22:44:56 +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 1vsfxp-0003Hb-ID; Wed, 18 Feb 2026 06:43:29 -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 1vsfxa-00038H-3X\n for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:15 -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 1vsfxP-0007nU-1N\n for qemu-devel@nongnu.org; Wed, 18 Feb 2026 06:43:09 -0500",
            "from mail-pl1-f197.google.com (mail-pl1-f197.google.com\n [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-587-yWDi5JaeMdqrNFKMvACZEw-1; Wed, 18 Feb 2026 06:42:55 -0500",
            "by mail-pl1-f197.google.com with SMTP id\n d9443c01a7336-2aae0d40a47so261358055ad.2\n for <qemu-devel@nongnu.org>; Wed, 18 Feb 2026 03:42:55 -0800 (PST)",
            "from rhel9-box.lan ([117.99.83.54])\n by smtp.googlemail.com with ESMTPSA id\n d9443c01a7336-2ad1aaeab38sm127803425ad.82.2026.02.18.03.42.49\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 18 Feb 2026 03:42:52 -0800 (PST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1771414979;\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=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=;\n b=I8r7EEGhWJ6WHL1kiAuj2c1XJO24RQHebfth62t4BFUFGK2RJ6iEVwwWskz9NInWS4eMDT\n pn1NlnLtZ+ZwxLKke1YQ8TOcq0cE+MLJ3X7OAgJIOgsQTrGViKwxLIkFD3sy6DvlE78Hqy\n kfasZJcwsApoKnOizy/vBZ5hj3Oivcs=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1771414973; x=1772019773; 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=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=;\n b=IteESUMtUnMKTpgzkt5H5pq3e9OUm7MMk0uqXKHGIOLCSD6uunE0Pr2hJimhIDBzI8\n iz+iw88GhXGGGZvEHYK7cEjLVWsplmAs+n1DF51yOjgk+cvW3bJ0UtrfqSQVdIYThFQ0\n kmFrLC9ls/ijt6wWB2BVkAWPKYvnYnJbkk2yDVHGVXIycdtUGW5v1FEicX5gIslCzr9C\n QBlwQk8lYYcfmykUsNw2j5qhsu9mi44gtNllRF2hGnJtXiuD0rzpV1puItbaXOomQEJi\n 7UToI02vuE+BZ/GyaKjI61lNYlysfcpNtUuTNvpBMNsX0GhCWMPIel3yDZWEeFtpg6nS\n vhTg=="
        ],
        "X-MC-Unique": "yWDi5JaeMdqrNFKMvACZEw-1",
        "X-Mimecast-MFC-AGG-ID": "yWDi5JaeMdqrNFKMvACZEw_1771414973",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1771414973; x=1772019773;\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=p3brC6j5MVPRsa373EQ1kn7FdyUiGI8z9lGD92Jf5HY=;\n b=pKQoJ+dQSqimJnAnV+UaEE2bgThAHLh4TfQW1nFaaaApjBToGwqi7+7u6HKSRXFkl/\n qZ0n03kix7mE1BP5i5uDyBaSNIy9J/Lw51MgYXlIWXb0qcYpPiy7Zwh0q50n7cEx+aw/\n 1ovwRwTg8c650rm7WMBNWUTIdRfEJJBRoq3ZIHzCTwo3Ty6fj9Esi4VWxVpg++V2P3sf\n ripsep8ZJkJEOONaJCkJd9kNn8zWICiiky6J7ng/UGmzYAk9u+uQutsZQYmZxhYO4YQF\n 1zK/Gshwhtzb2Y96hCMVi9Tm8btcSX0iAs/43m1lnVYkn3oPncFgyBj/G/sLDvT8ZCZK\n 8NIA==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCWAzDHT0VNaT2n+BsMIN9oCtqAxb87D/Wl4Zi+jjRMVY2MWrLhuEQbzL0aJt/xA/AcfnMzp2fEn+HxQ@nongnu.org",
        "X-Gm-Message-State": "AOJu0YwI4x5qRxflYcQ6dzwuDSW1GDtAedc2EymVcmWmIXvb0nA3Lvs/\n wKUbMIYALmjqxJTW7pfBZ55ENuXCGeX6k2pkwJmSYEkHA3HuQYLRiIV5RAfw/z0xRRsojRtb+AO\n 1sOaeiei1rWIW8N5oRF6uh7EWAQ0bvEzTKFdzQ1mxmgsNbwVGr9qqBQ4U",
        "X-Gm-Gg": "AZuq6aJnp2+rJUVsXm7vyZv3GstsE2lIIGRyCplUTTfgwQUoCsUfRLoyFEyX0VAmK0q\n v+6TPd1zvuvhgtilSX91QDnmfv2+dEFVO5drHA1T2vV1T893NBHo/dOl0Nya+LSkm3FhJSORaqW\n JFjaB8cE++RMRIg/r0Qku2h8MIKXp1bB/fbfJSfkYP7zRysx1jFoJHsK5Rw/nf7HrRQlhIOBoXx\n fgDXcBaR2kddlY0b50PDD1OJgym2nsI56eOnCiZaCRA27Mo1vgobUTgkSeZL7AfHWFCp1MoSiyw\n C/awuMZRzOU6iu4g71oaMq4y2NRBGrfYMctRADpOrYZMWW811xiFtrMOA3asi44p0egW7X5zXiq\n QhQ9FA98zyWJhLafSv8MBW+4Hp3LJk8jKEtuR11xnrzMdW11wAy3A",
        "X-Received": [
            "by 2002:a17:903:1b67:b0:2a0:c35c:572e with SMTP id\n d9443c01a7336-2ad17501af0mr153308255ad.30.1771414972857;\n Wed, 18 Feb 2026 03:42:52 -0800 (PST)",
            "by 2002:a17:903:1b67:b0:2a0:c35c:572e with SMTP id\n d9443c01a7336-2ad17501af0mr153308155ad.30.1771414972496;\n Wed, 18 Feb 2026 03:42:52 -0800 (PST)"
        ],
        "From": "Ani Sinha <anisinha@redhat.com>",
        "To": "Paolo Bonzini <pbonzini@redhat.com>,\n Marcelo Tosatti <mtosatti@redhat.com>,\n Zhao Liu <zhao1.liu@intel.com>",
        "Cc": "Ani Sinha <anisinha@redhat.com>, kraxel@redhat.com, qemu-devel@nongnu.org,\n kvm@vger.kernel.org",
        "Subject": "[PATCH v5 02/34] accel/kvm: add confidential class member to indicate\n guest rebuild capability",
        "Date": "Wed, 18 Feb 2026 17:11:55 +0530",
        "Message-ID": "<20260218114233.266178-3-anisinha@redhat.com>",
        "X-Mailer": "git-send-email 2.42.0",
        "In-Reply-To": "<20260218114233.266178-1-anisinha@redhat.com>",
        "References": "<20260218114233.266178-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.043,\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_H4=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": "As a part of the confidential guest reset process, the existing encrypted guest\nstate must be made mutable since it would be discarded after reset. A new\nencrypted and locked guest state must be established after the reset. To this\nend, a new boolean member per confidential guest support class\n(eg, tdx or sev-snp) is added that will indicate whether its possible to\nrebuild guest state:\n\nbool can_rebuild_guest_state;\n\nThis is true if rebuilding guest state is possible, false otherwise.\nA KVM based confidential guest reset is only possible when\nthe existing state is locked but its possible to rebuild guest state.\nOtherwise, the guest is not resettable.\n\nSigned-off-by: Ani Sinha <anisinha@redhat.com>\n---\n include/system/confidential-guest-support.h | 20 ++++++++++++++++++++\n system/runstate.c                           |  6 +++---\n target/i386/kvm/tdx.c                       |  1 +\n target/i386/sev.c                           |  1 +\n 4 files changed, 25 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/include/system/confidential-guest-support.h b/include/system/confidential-guest-support.h\nindex 0cc8b26e64..5dca717308 100644\n--- a/include/system/confidential-guest-support.h\n+++ b/include/system/confidential-guest-support.h\n@@ -152,6 +152,11 @@ typedef struct ConfidentialGuestSupportClass {\n      */\n     int (*get_mem_map_entry)(int index, ConfidentialGuestMemoryMapEntry *entry,\n                              Error **errp);\n+\n+    /*\n+     * is it possible to rebuild the guest state?\n+     */\n+    bool can_rebuild_guest_state;\n } ConfidentialGuestSupportClass;\n \n static inline int confidential_guest_kvm_init(ConfidentialGuestSupport *cgs,\n@@ -167,6 +172,21 @@ static inline int confidential_guest_kvm_init(ConfidentialGuestSupport *cgs,\n     return 0;\n }\n \n+static inline bool\n+confidential_guest_can_rebuild_state(ConfidentialGuestSupport *cgs)\n+{\n+    ConfidentialGuestSupportClass *klass;\n+\n+    if (!cgs) {\n+        /* non-confidential guests */\n+        return true;\n+    }\n+\n+    klass = CONFIDENTIAL_GUEST_SUPPORT_GET_CLASS(cgs);\n+    return klass->can_rebuild_guest_state;\n+\n+}\n+\n static inline int confidential_guest_kvm_reset(ConfidentialGuestSupport *cgs,\n                                                Error **errp)\n {\ndiff --git a/system/runstate.c b/system/runstate.c\nindex d091a2bddd..13f32bed8c 100644\n--- a/system/runstate.c\n+++ b/system/runstate.c\n@@ -57,6 +57,7 @@\n #include \"system/reset.h\"\n #include \"system/runstate.h\"\n #include \"system/runstate-action.h\"\n+#include \"system/confidential-guest-support.h\"\n #include \"system/system.h\"\n #include \"system/tpm.h\"\n #include \"trace.h\"\n@@ -543,8 +544,6 @@ void qemu_system_reset(ShutdownCause reason)\n      */\n     if (cpus_are_resettable()) {\n         cpu_synchronize_all_post_reset();\n-    } else {\n-        assert(runstate_check(RUN_STATE_PRELAUNCH));\n     }\n \n     vm_set_suspended(false);\n@@ -697,7 +696,8 @@ void qemu_system_reset_request(ShutdownCause reason)\n     if (reboot_action == REBOOT_ACTION_SHUTDOWN &&\n         reason != SHUTDOWN_CAUSE_SUBSYSTEM_RESET) {\n         shutdown_requested = reason;\n-    } else if (!cpus_are_resettable()) {\n+    } else if (!cpus_are_resettable() &&\n+               !confidential_guest_can_rebuild_state(current_machine->cgs)) {\n         error_report(\"cpus are not resettable, terminating\");\n         shutdown_requested = reason;\n     } else {\ndiff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c\nindex 0161985768..a3e81e1c0c 100644\n--- a/target/i386/kvm/tdx.c\n+++ b/target/i386/kvm/tdx.c\n@@ -1543,6 +1543,7 @@ static void tdx_guest_class_init(ObjectClass *oc, const void *data)\n     X86ConfidentialGuestClass *x86_klass = X86_CONFIDENTIAL_GUEST_CLASS(oc);\n \n     klass->kvm_init = tdx_kvm_init;\n+    klass->can_rebuild_guest_state = true;\n     x86_klass->kvm_type = tdx_kvm_type;\n     x86_klass->cpu_instance_init = tdx_cpu_instance_init;\n     x86_klass->adjust_cpuid_features = tdx_adjust_cpuid_features;\ndiff --git a/target/i386/sev.c b/target/i386/sev.c\nindex acdcb9c4e6..66e38ca32e 100644\n--- a/target/i386/sev.c\n+++ b/target/i386/sev.c\n@@ -2760,6 +2760,7 @@ sev_common_instance_init(Object *obj)\n     cgs->set_guest_state = cgs_set_guest_state;\n     cgs->get_mem_map_entry = cgs_get_mem_map_entry;\n     cgs->set_guest_policy = cgs_set_guest_policy;\n+    cgs->can_rebuild_guest_state = true;\n \n     QTAILQ_INIT(&sev_common->launch_vmsa);\n }\n",
    "prefixes": [
        "v5",
        "02/34"
    ]
}