Show a cover letter.

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

{
    "id": 2196592,
    "url": "http://patchwork.ozlabs.org/api/covers/2196592/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260215112543.4817-1-mohamed@unpredictable.fr/",
    "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": "<20260215112543.4817-1-mohamed@unpredictable.fr>",
    "list_archive_url": null,
    "date": "2026-02-15T11:25:29",
    "name": "[v10,00/14] HVF: Add support for platform vGIC and nested virtualisation",
    "submitter": {
        "id": 91318,
        "url": "http://patchwork.ozlabs.org/api/people/91318/?format=api",
        "name": "Mohamed Mediouni",
        "email": "mohamed@unpredictable.fr"
    },
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260215112543.4817-1-mohamed@unpredictable.fr/mbox/",
    "series": [
        {
            "id": 492211,
            "url": "http://patchwork.ozlabs.org/api/series/492211/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=492211",
            "date": "2026-02-15T11:25:32",
            "name": "HVF: Add support for platform vGIC and nested virtualisation",
            "version": 10,
            "mbox": "http://patchwork.ozlabs.org/series/492211/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2196592/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 (2048-bit key;\n unprotected) header.d=unpredictable.fr header.i=@unpredictable.fr\n header.a=rsa-sha256 header.s=sig1 header.b=grZFuFHm;\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 4fDNsr4k9xz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 15 Feb 2026 22:27:12 +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 1vraGW-0005Jc-LB; Sun, 15 Feb 2026 06:26:16 -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 <mohamed@unpredictable.fr>)\n id 1vraGJ-0005EZ-Ug\n for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:05 -0500",
            "from p-west2-cluster1-host1-snip4-2.eps.apple.com ([57.103.68.5]\n helo=outbound.mr.icloud.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mohamed@unpredictable.fr>)\n id 1vraGE-0007vo-1O\n for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:02 -0500",
            "from outbound.mr.icloud.com (unknown [127.0.0.2])\n by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id\n C1DE5180018C; Sun, 15 Feb 2026 11:25:48 +0000 (UTC)",
            "from localhost.localdomain (unknown [17.57.152.38])\n by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id\n 05DBF18001B2; Sun, 15 Feb 2026 11:25:45 +0000 (UTC)"
        ],
        "Dkim-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr;\n s=sig1; t=1771154750; x=1773746750;\n bh=lMGtbgGdc7f2D9dja8I8WjH6L0KvmZvLjdtJ68y7sSM=;\n h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme;\n b=grZFuFHm/L6jWzaxiLckhubxFwVyN9Kqv8MZYZhH70heLblfHmftzLV7uW1nOdlBhh1xSMcFrze+HbAe8v1na8vvkD2NSxHIRgkGT9XcPgyiAgX20ulFYwx6vKzMzf66m1huVBHvwxueVB3PshY+6EYhDiKx8iUu5mTFpcAN/I+24TtCCAe8F5qSo0FSvZPvqM0kDkf2fx8QjEIa/PFMvnfJzsrUSdhBybk4nSwPzW6WwNAP0cs/5H6cfLh20kstF8bz+zhX4NFnnUTn7MlKwB7oH1/WU1Avm7TChyJqAENkSFKOmS4N2tPtqIhRJzMS8s09rX/BL2M0kw/vxrn9tA==",
        "mail-alias-created-date": "1752046281608",
        "From": "Mohamed Mediouni <mohamed@unpredictable.fr>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "qemu-arm@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,\n Mads Ynddal <mads@ynddal.dk>, Roman Bolshakov <rbolshakov@ddn.com>,\n Phil Dennis-Jordan <phil@philjordan.eu>, Alexander Graf <agraf@csgraf.de>,\n Paolo Bonzini <pbonzini@redhat.com>, Cameron Esfahani <dirty@apple.com>,\n Mohamed Mediouni <mohamed@unpredictable.fr>",
        "Subject": "[PATCH v10 00/14] HVF: Add support for platform vGIC and nested\n virtualisation",
        "Date": "Sun, 15 Feb 2026 12:25:29 +0100",
        "Message-ID": "<20260215112543.4817-1-mohamed@unpredictable.fr>",
        "X-Mailer": "git-send-email 2.50.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX79WI69dm+TWX\n d4lzYNuR6UXZEnTxa3zBToCA4/uv142BV52MNagI7mYAvhne8g9tQDsFWz3FAbNggDRC5iMtSDZ\n sUmtcFuLWRfURrfwMbag7BjSYwiJMHepkVQM1Pxn3nDASsOYnIdqm3u5XQN0shrrawPxfGlF5L+\n K2S0sqDjpDc65M6wDP4rTjgCRXCvQgMnTyjAxQRaW2yG4hQrtB4vb+qgdHDPwa1zHZs7TASGdjA\n XizzSMcremhfg98gU88rTd29W1J/L3haumBKteFcgMluuQINpGOw5j00OoNMV2f84OiroIq9iWy\n iJzmTf0E3+5lAKaMumQklWPXlKHoBYPsaiq4dRvTig/95v1WtqBdKANOqeMO58=",
        "X-Proofpoint-GUID": "KzXMeYa_qZ6bf7K2EJ70bJhLT23M_qKm",
        "X-Proofpoint-ORIG-GUID": "KzXMeYa_qZ6bf7K2EJ70bJhLT23M_qKm",
        "X-Authority-Info-Out": "v=2.4 cv=EPILElZC c=1 sm=1 tr=0 ts=6991ad3d\n cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117\n a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10\n a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22\n a=NEAV23lmAAAA:8 a=WuN9omT6I3Se9lZnsf4A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=notspam policy=default score=0 mlxlogscore=999\n clxscore=1030 adultscore=0 malwarescore=0\n phishscore=0 spamscore=0\n lowpriorityscore=0 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam\n authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000\n definitions=main-2602150092",
        "X-JNJ": "\n AAAAAAABPBzWhnS8+3bwBcBEpWwS0GWjjPsZwHY+BfUXl80A6gU9rjgSmVunLRPT9s4+JR81TzcuDRGFX4etI70tkpaVjCWDxUQXmmn6UXr68MKgyXUpUC/BOP6QWbvUSgaawbWIH3cEJA6CrNbqS4uQvOMWMQ94RUUIxoP9d7CMsEMqkDBZz+9HJ1AnummG+JshBRf+ZpDjFpmif+p+Yg7Mfky0cANjzSZOTGIl7LA1H4g8kzYzW2qdTuhbxrt0cDJg9b0SqA9QHa0exCRjwF8EyjwhY0vasv3J1Gz8O6Qmhx1Z/9FFvCH5lVVThKlUGHJSB9pDRZpBJkSmzALb3y1ld+ucxx7p6nScxSQ1tpxERx7biYREXtbBmgTq+VHtaFvUpq7uKGxpd8GM5cXRjT8OrPaDTLofaqdEAYSNMFjIM7ruQjrIFVEBT3bUCr9ueJBeI4tjuRrOZ3SW6ENtcwr3brPEOmO9Br9GfCYpstlOO4qV2wasn71CaASYrpjJ06LrcwSNCFgIFX4fIp1Ps7b2/gytN3RHii4KSTsS04zmpH4q4Tkc9zBQDqfA7znJExfY3Sl3Gff/VaIvkjjs0AVu9BwzxjCKAYluT7nf9lUKwT4/r45PEt1H4VBNIxxskFWr3AaUsuJY9T7ysLoX83aY6UZKCEsSygIA7jP8eg1JvDsP6rqgnB9GbxC9eBBJnkWR8J1jGIc0J/mo1ckFKqkkjcvgJfIPw2OaMnucqF59MGKKWvDGvmnshT6GpQch",
        "Received-SPF": "pass client-ip=57.103.68.5;\n envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.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,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-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": "Link to branch: https://github.com/mediouni-m/qemu hvf-irqchip-and-nested\n(tag for this submission: hvf-irqchip-and-nested-v10)\n\nThis series adds supports for nested virtualisation when using HVF on arm64 Macs.\n\nIt has two parts:\n- Apple vGICv3 support and necessary infrastructure changes for it\n- Nested virtualisation support. Note that the nested virtualisation implementation\nshipping as of macOS 26.3 is nVHE only (but it _does_ use VNCR as shipped).\n\nIt's rebased on top of the WHPX arm64 series.\n\nKnown issues:\n- This series doesn't contain EL2 physical timer emulation, which is\nneeded if not leveraging the Apple vGIC.\n\n- when nested virt is enabled, no UI response within EDK2\nand a permanent wait. Workaround: -boot menu=on,splash-time=0.\n\nApple Feedback Assistant item: FB21649319\n\nWhen the VM is running at EL2 at the very moment the virtual timer fires:\nHV_EXIT_REASON_VTIMER_ACTIVATED doesn’t fire (when not using the provided vGIC)\n- using a GICv2 doesn’t require having transition notifiers which Hypervisor.framework doesn’t have…)\n\nand when using the provided vGIC, the interrupt never gets delivered back to the guest\n\nLinux as a guest OS is fine with this… but the reference ArmVirtQemu edk2 build always uses the virtual timer even when running EFI at EL2, so it gets broken unless this patch is applied to edk2:\n\ndiff of ArmVirtPkg/ArmVirt.dsc.inc:\n\n-  ArmGenericTimerCounterLib|ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.inf\n+  ArmGenericTimerCounterLib|ArmPkg/Library/ArmGenericTimerPhyCounterLib/ArmGenericTimerPhyCounterLib.inf^M\n\nChangelog:\n\nv1->v2:\nOops. I did a mistake when preparing my patches.\n\n- Add hvf_arm_el2_enable(_) call to virt_set_virt\n- Fix nested virt support check to add HVF\n\nv2->v3:\n- LORC_EL1 patch was merged separately, remove from this series.\n- fix LPIs when kernel-irqchip disabled and using TCG\n- remove spurious if case in vGIC supported version detection (inapplicable now)\n- Add hvf_enabled() check in combination with hvf kernel-irqchip checks\n- cleanly fail on attempt to use the platform vGIC together with ITS\n\nv3->v4:\n- GIC state save improvements, including saving the opaque Apple-specific state\n- Saving HVF system register state when using the vGIC and/or EL2\n\nv5:\n- oops, fixed up save/restore to be functional\n- misc changes otherwise\n\nv6:\n- Addressing review comments\n\nv7:\n- Address review comments, adapt around Qemu changes and bugfixes.\n\nv8:\n- Rebase, and misc fixes\n\nv9:\n- Misc fixes from WHPX review comments\n- Split enablement commit for EL2 into its own separate commit\n\nv10:\n\n- A bit of changes across the board\n- move HVF irqchip save/restore into irqchip code\n- block nested virt support when kernel-irqchip=off with a GICv2 as\nwe don't implement an emulated physical timer yet.\n\nMohamed Mediouni (14):\n  Revert \"target/arm/hvf: Sync CNTV_CTL_EL0 & CNTV_CVAL_EL0\"\n  hw/intc: Add hvf vGIC interrupt controller support\n  hw/intc: arm_gicv3_hvf: save/restore Apple GIC state\n  accel, hw/arm, include/system/hvf: infrastructure changes for HVF vGIC\n  target/arm: hvf: instantiate GIC early\n  hw/arm, target/arm: nested virtualisation on HVF\n  hvf: only call hvf_sync_vtimer() when running without the platform\n    vGIC\n  hvf: gate ARM_FEATURE_PMU register emulation behind not being at EL2\n  hvf: arm: allow exposing minimal PMU when running with nested virt on\n  target/arm: hvf: add asserts for code paths not leveraged when using\n    the vGIC\n  hvf: sync registers used at EL2\n  target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1\n  hvf: enable nested virtualisation support\n  hvf: arm: warn instead of assert on a write_list_to_cpustate mismatch\n\n accel/hvf/hvf-all.c                |  51 ++\n accel/stubs/hvf-stub.c             |   2 +\n hw/arm/virt.c                      |  37 +-\n hw/intc/arm_gicv3_common.c         |   4 +\n hw/intc/arm_gicv3_hvf.c            | 818 +++++++++++++++++++++++++++++\n hw/intc/arm_gicv3_hvf_stub.c       |  25 +\n hw/intc/meson.build                |   2 +\n include/hw/intc/arm_gicv3_common.h |   4 +\n include/system/hvf.h               |   8 +\n system/vl.c                        |   2 +\n target/arm/hvf/hvf.c               | 154 ++++--\n target/arm/hvf/sysreg.c.inc        |  35 ++\n 12 files changed, 1103 insertions(+), 39 deletions(-)\n create mode 100644 hw/intc/arm_gicv3_hvf.c\n create mode 100644 hw/intc/arm_gicv3_hvf_stub.c"
}