Show a cover letter.

GET /api/covers/2195834/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2195834,
    "url": "http://patchwork.ozlabs.org/api/covers/2195834/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260212062522.99565-1-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-1-anisinha@redhat.com>",
    "list_archive_url": null,
    "date": "2026-02-12T06:24:44",
    "name": "[v4,00/31] Introduce support for confidential guest reset (x86)",
    "submitter": {
        "id": 86030,
        "url": "http://patchwork.ozlabs.org/api/people/86030/?format=api",
        "name": "Ani Sinha",
        "email": "anisinha@redhat.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260212062522.99565-1-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/covers/2195834/comments/",
    "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=dUlBt4XB;\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=WLgTgC39;\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 4fBQMh4gTKz1xwL\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Feb 2026 17:27:44 +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 1vqQ95-0007Yq-HN; Thu, 12 Feb 2026 01:25:47 -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 1vqQ92-0007YF-SR\n for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:45 -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 1vqQ8z-0005BT-5l\n for qemu-devel@nongnu.org; Thu, 12 Feb 2026 01:25:44 -0500",
            "from mail-pl1-f200.google.com (mail-pl1-f200.google.com\n [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-533-6DSHxJMGNbmJOUNSo8Jhyg-1; Thu, 12 Feb 2026 01:25:37 -0500",
            "by mail-pl1-f200.google.com with SMTP id\n d9443c01a7336-2aaeafeadbcso45912885ad.1\n for <qemu-devel@nongnu.org>; Wed, 11 Feb 2026 22:25:36 -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.32\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 11 Feb 2026 22:25:35 -0800 (PST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1770877538;\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 bh=M/zIKHy/JLp58WzuFBf64VPZGmrfg1O41eyasP7iQqY=;\n b=dUlBt4XBhmWkvhJbn2X3NpOXP3IYJRbtVFuFMv/kyIAR9O2RRTFqKB6uzGZubfyHGZcbQS\n M4dL72zsY8oiIurPqBmB/FrgePBB2B6qYlMjfT6l9py2odAdGnZCWU9GzZuoXVVQyrxCYd\n 26XMNrrCgwCcTFDHjKdggdzYHPFnz/0=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1770877536; x=1771482336; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=M/zIKHy/JLp58WzuFBf64VPZGmrfg1O41eyasP7iQqY=;\n b=WLgTgC39HbIjy01zvdXs12q8Kuy1xWkNXwgRHicnZWPH5O5wFPOb5SJDizwn8rL4cG\n kSiB9hgDvehyg9pMv294o1ViOVWuYQKBaC9S4FpP/1URFOo3wXgtLRvR0/AandoRd1Av\n 9leijtlxZgDz9WbaUya/XephUwoUIXa1oVU58JTzzAZoIMLQLNvwjBU6ylPgbDaramA4\n JGPoLBYw+j6u15UuXPyxMwYsigg8d+hDr6LQBNLjMTqter05WS+7ZWXz0DrmT51QSv86\n Ywv4V+rQx66NSEPmbw2BuLLrUaKMX3f2G7yq+cDEKwnBaLfN7LDFMvCMaWT3aS9fc/jA\n 8OOw=="
        ],
        "X-MC-Unique": "6DSHxJMGNbmJOUNSo8Jhyg-1",
        "X-Mimecast-MFC-AGG-ID": "6DSHxJMGNbmJOUNSo8Jhyg_1770877536",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1770877536; x=1771482336;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=M/zIKHy/JLp58WzuFBf64VPZGmrfg1O41eyasP7iQqY=;\n b=wMbUqmGVLBK1HL8033gT7x+qJPDhikUfxn2ySd+bVnGicrw94wilE8ad26IUGKOwOQ\n Ahr7jygRlcPvPaa45113ybftCee5i8N/HpvLIK5VQiQZjXzkbz+fGy3U6iBH2iVQbBB0\n 88WDqt+Qi+YYrybPuFucbA1kVDLMul/IuF6UoSCwlOfEkmfqTOzViLidQm2/0fBA9OZn\n KgATZE50BFfFJvOVU+axwjFxnwgFIt4UuK7Yg2d+ODjTQ0Dx9ytUnYZ23niCuPKgioxw\n MrKiwNJLf7V1/NEySxg2DLV1cckAGkKaxN5NNd/88H8yL/qwALMxquoU/UgzhGAlhPTq\n qqqg==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCWLC8Q6uo3LkkUBcB9iqBKoaD+mTKWOUAEBtuevCA6moE+QAywOwWDtbkhkcMW4Fnk3iLgecxxd9jm3@nongnu.org",
        "X-Gm-Message-State": "AOJu0YwFZ2aKww8GRdxlX/L/PemBvZj/vqrnTSAIZginmgx5zm2IQ+D/\n e5rV27bQkfJDzL1XWy5O3c7CvM53TQOYyCgRZtEpfCHOW2pi3GKGejqMndkdUrnLsLmkQ2wB9Vn\n sXuiAxjK+H4dYy+L/sIyPbaxTPHPU3S2ecPN0GFHxn+Gs9TAqX7wlV6lo",
        "X-Gm-Gg": "AZuq6aJwumegWm7rLXIBeGhRI9oKOyUYdv/XZgDclylJ/2xAoFV0PEutsBFL7guv1If\n STn7EX06VSGTx/CWihEkzDb9WWvhSCdwF8Z7TFCtWuEGns8aVDf+TxjOndMjS5OMgMXwxlYMGjg\n sOXDKqXFpVtncTyFNz85+M0OoW7glMfkE4UGE47BHEfYCedJEQRmlLXgg5k/VSjB13Vox4bhlSK\n KKxxXsTbiknjeA6L19mi2pDuxeD8OE1NCjbQ5/pQ4avWSadmt4KO/VgXM5pOkuYxL9viGIOkcKM\n xrYoKsDIVUJjT8/Hk83wUffsT17klYPXQGD2lUoXMukrDvRl0n9akUtcoPFLTFMdLqJu703lWC4\n 6FajAkycXHc5vnqpEg2PJRIxVfxbZlu0vbix+k0MkGsI0ufavlpkBqAQ=",
        "X-Received": [
            "by 2002:a05:6a20:cf8a:b0:394:2fbb:bc6b with SMTP id\n adf61e73a8af0-39448803ac0mr1506227637.46.1770877535933;\n Wed, 11 Feb 2026 22:25:35 -0800 (PST)",
            "by 2002:a05:6a20:cf8a:b0:394:2fbb:bc6b with SMTP id\n adf61e73a8af0-39448803ac0mr1506203637.46.1770877535496;\n Wed, 11 Feb 2026 22:25:35 -0800 (PST)"
        ],
        "From": "Ani Sinha <anisinha@redhat.com>",
        "To": "",
        "Cc": "kraxel@redhat.com, Ani Sinha <anisinha@redhat.com>, qemu-devel@nongnu.org,\n pbonzini@redhat.com, vkuznets@redhat.com, graf@amazon.com",
        "Subject": "[PATCH v4 00/31] Introduce support for confidential guest reset (x86)",
        "Date": "Thu, 12 Feb 2026 11:54:44 +0530",
        "Message-ID": "<20260212062522.99565-1-anisinha@redhat.com>",
        "X-Mailer": "git-send-email 2.42.0",
        "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": "This change introduces support for confidential guests\n(SEV-ES, SEV-SNP and TDX) to reset/reboot just like other non-confidential\nguests. Currently, a reboot intiated from the confidential guest results\nin termination of the QEMU hypervisor as the CPUs are not resettable. As the\ninitial state of the guest including private memory is locked and encrypted,\nthe contents of that memory will not be accessible post reset. Hence a new\nKVM file descriptor must be opened to create a new confidential VM context\nclosing the old one. All KVM VM specific ioctls must be called again. New\nVCPU file descriptors must be created against the new KVM fd and most VCPU\nioctls must be called again as well.\n\nThis change perfoms closing of the old KVM fd and creating a new one. After\nthe new KVM fd is opened, all generic and architecture specific ioctl calls\nare issued again. Notifiers are added to notify subsystems that:\n- The KVM file fd is about to be changed to state sync-ing from KVM to QEMU\n  should be done if required.\n- The KVM file fd has changed, so ioctl calls to the new KVM fd has to be\n  performed again.\n- That new VCPU fds are created so that VCPU ioctl calls must be called again\n  where required.\n\nSpecific subsystems use these notifiers to re-issue ioctl calls where required.\n\nChanges are made to SEV and TDX modules to reinitialize the confidential guest\nstate and seal it again. Along the way, some bug fixes are made so that some\ninitialization functions can be called again. Some refactoring of existing\ncode is done so that both init and reset paths can use them.\n\nTested on TDX, SEV-ES and SEV-SNP. Tested on non-coco hardware. Tested with Xen\nemulation enabled.\n\nCI pipeline passes (one failure is unrelated):\nhttps://gitlab.com/anisinha/qemu/-/pipelines/2320974514\n\nAdded functional test passed:\n\n$ ./build/run tests/functional/x86_64/test_vmfd_change_reboot.py \nTAP version 13\nok 1 test_vmfd_change_reboot.KVMGuest.test_reset_console\nok 2 test_vmfd_change_reboot.KVMGuest.test_reset_hyperv_vmbus\nok 3 test_vmfd_change_reboot.KVMGuest.test_reset_kvmpit\nok 4 test_vmfd_change_reboot.KVMGuest.test_reset_qmp\nok 5 test_vmfd_change_reboot.KVMGuest.test_reset_xen_emulation\n1..5\n\nPlease review and test.\n\nCC: qemu-devel@nongnu.org\nCC: pbonzini@redhat.com\nCC: kraxel@redhat.com\nCC: vkuznets@redhat.com\nCC: graf@amazon.com\n\nChangelog:\n\nv4:\n - Fixed reset on non-coco with qmp \"system_reset\" command.\n - Numerious misc fixes.\n - addressed review comments from v3.\n - dropped three patches that are not required.\n - Added more functional tests including one vmbus test.\n - added noop callbacks to stubs/kvm removing them from arch specific headers.\n - Tags added.\n - Rebased.\n\nv3:\n - Combined pre and post vmfd change notifier into one.\n - rename kvm_arch_vmfd_change_ops() -> kvm_arch_on_vmfd_change()\n - reuse kvm_arch_init() code in kvm_arch_on_vmfd_change()\n - moved around migration blockers and notifers to more appropriate place.\n - fixed Xen emulation.\n - fixed SEV-ES reset.\n - fixed/reorganized reset code in system/runstate.c\n - can_rebuild_guest_state is now a boolean not a callback.\n - misc fixes.\n - added a functional test for Xen emulation with vmfd change.\n - rebased.\n\nv2:\n - Bugfixes.\n - Added a new machine option so that we can exercize most of the non-coco changes\n   related to reboot on non-coco platforms.\n - added a new functional test. Currently its skipped on CI pipeline as KVM is not\n   enabled (no /dev/kvm on the container)for QEMU CI tests. It can be run manually and it\n   passes on those systems where KVM is enabled.\n - Addressed comments from v1 with regards to refactoring of code, code simplication by\n   removal of redundant stuff, moved around code\n   so that notifiers, migration blockers are added only on one place.\n - Added some tracepoints for future debugging on newly added functions.\n - Rebased.\n\n\nAni Sinha (31):\n  i386/kvm: avoid installing duplicate msr entries in msr_handlers\n  accel/kvm: add confidential class member to indicate guest rebuild\n    capability\n  hw/accel: add a per-accelerator callback to change VM accelerator\n    handle\n  system/physmem: add helper to reattach existing memory after KVM VM fd\n    change\n  accel/kvm: add changes required to support KVM VM file descriptor\n    change\n  accel/kvm: add a notifier to indicate KVM VM file descriptor has\n    changed\n  accel/kvm: notify when KVM VM file fd is about to be changed\n  i386/kvm: unregister smram listeners prior to vm file descriptor\n    change\n  kvm/i386: implement architecture support for kvm file descriptor\n    change\n  hw/i386: refactor x86_bios_rom_init for reuse in confidential guest\n    reset\n  hw/i386: export a new function x86_bios_rom_reload\n  kvm/i386: reload firmware for confidential guest reset\n  accel/kvm: rebind current VCPUs to the new KVM VM file descriptor upon\n    reset\n  i386/tdx: refactor TDX firmware memory initialization code into a new\n    function\n  i386/tdx: finalize TDX guest state upon reset\n  i386/tdx: add a pre-vmfd change notifier to reset tdx state\n  i386/sev: add migration blockers only once\n  i386/sev: add notifiers only once\n  i386/sev: free existing launch update data and kernel hashes data on\n    init\n  i386/sev: add support for confidential guest reset\n  hw/vfio: generate new file fd for pseudo device and rebind existing\n    descriptors\n  kvm/i8254: refactor pit initialization into a helper\n  kvm/i8254: add support for confidential guest reset\n  kvm/hyperv: add synic feature to CPU only if its not enabled\n  hw/hyperv/vmbus: add support for confidential guest reset\n  kvm/xen-emu: re-initialize capabilities during confidential guest\n    reset\n  ppc/openpic: create a new openpic device and reattach mem region on\n    coco reset\n  kvm/vcpu: add notifiers to inform vcpu file descriptor change\n  kvm/clock: add support for confidential guest reset\n  hw/machine: introduce machine specific option 'x-change-vmfd-on-reset'\n  tests/functional/x86_64: add functional test to exercise vm fd change\n    on reset\n\n MAINTAINERS                                   |   7 +\n accel/kvm/kvm-all.c                           | 360 +++++++++++++++---\n accel/kvm/trace-events                        |   2 +\n accel/stubs/kvm-stub.c                        |  18 +\n hw/core/machine.c                             |  22 ++\n hw/hyperv/trace-events                        |   1 +\n hw/hyperv/vmbus.c                             |  37 ++\n hw/i386/kvm/clock.c                           |  59 +++\n hw/i386/kvm/i8254.c                           |  91 +++--\n hw/i386/kvm/trace-events                      |   1 +\n hw/i386/x86-common.c                          |  71 +++-\n hw/intc/openpic_kvm.c                         | 112 ++++--\n hw/vfio/helpers.c                             |  94 +++++\n include/accel/accel-ops.h                     |   1 +\n include/hw/core/boards.h                      |   6 +\n include/hw/i386/x86.h                         |   1 +\n include/system/confidential-guest-support.h   |  20 +\n include/system/kvm.h                          |  43 +++\n include/system/physmem.h                      |   1 +\n stubs/kvm.c                                   |  22 ++\n stubs/meson.build                             |   1 +\n system/physmem.c                              |  28 ++\n system/runstate.c                             |  43 ++-\n target/i386/kvm/kvm.c                         | 139 +++++--\n target/i386/kvm/tdx.c                         | 141 +++++--\n target/i386/kvm/tdx.h                         |   1 +\n target/i386/kvm/trace-events                  |   4 +\n target/i386/kvm/xen-emu.c                     |  50 ++-\n target/i386/sev.c                             | 127 ++++--\n target/i386/trace-events                      |   1 +\n tests/functional/x86_64/meson.build           |   1 +\n .../x86_64/test_vmfd_change_reboot.py         | 135 +++++++\n 32 files changed, 1422 insertions(+), 218 deletions(-)\n create mode 100644 stubs/kvm.c\n create mode 100755 tests/functional/x86_64/test_vmfd_change_reboot.py"
}