From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154808; cv=none; d=zohomail.com; s=zohoarc; b=jEEuXe7LJuiZ3uPzX/G4i5QwHFKm5Nao756yWgR8CoUBFZXvMXU69BCO5+t/gKzMqNIz+oFxbBTSW7n2xsEbY7eQGcv44l6rZLJ6p/ONTTcMz+x6HXTFyXC4jiSPGDLsomPlaP+6Sk8dtXpllSaMjRSI+6MOiGR8Tl0KhBdfqY8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154808; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LNAPTfF7M/Fywq5jfntu3irQBz3B7IN3ccj1ShQyhHU=; b=e/ObK7y6B98Y1XI/aTpXSn9Nd4i8UF8p67h+MemZn3I/eGA32qYjoeM/33m7K0wFaWnm2u9+lVSMzbbmEexGXTLY1NK24eGK4W/YZYzmYkoVhCfEPzQIxKn8aM1mWtSMXLA+W9AQAjyxD8x0HX7jg9UpufqE6bXoBOyOlEOFIw4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154808462419.6057520789916; Sun, 15 Feb 2026 03:26:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGQ-0005Fr-LY; Sun, 15 Feb 2026 06:26:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGJ-0005EW-SJ for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:03 -0500 Received: from p-west2-cluster1-host2-snip4-10.eps.apple.com ([57.103.68.23] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGG-0007w6-5H for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:03 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id CB77518002AA; Sun, 15 Feb 2026 11:25:50 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 4DDCD1800182; Sun, 15 Feb 2026 11:25:48 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154752; x=1773746752; bh=LNAPTfF7M/Fywq5jfntu3irQBz3B7IN3ccj1ShQyhHU=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=YaVb8fVn01LoZYI+JFLxM4sIbkKydYXzXW+DbZoCvXhHfWH6MlM8sVCXW5wme9IqrTwRtqxivizmxipfR46aCfAKD803i/fbSesFcc6dz/aco3DYOBLl0HZNmUAA/4jxld4cBEqwMWUy2vSk6jTDbfIXgOf/guLT5V2/ebUMTLhYDn/zOgNFLBvd6Enx++PvdyEJNsRH543o3htGM4vAqcL5u977GCpW7w+CbmrD3I7v58YHuZItArXFIt22HHadphbt3gtWop3/+tH6NirSM+c0CVaUtK2jv08pEPzHQz5qKt2joDeGo4LCXL9z6eGhDlDZSTNIQefG9RoGmrLw4w== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 01/14] Revert "target/arm/hvf: Sync CNTV_CTL_EL0 & CNTV_CVAL_EL0" Date: Sun, 15 Feb 2026 12:25:30 +0100 Message-ID: <20260215112543.4817-2-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 8GTDjZoNPHYXUzvNmaSEmQBfNEMPaIks X-Authority-Info-Out: v=2.4 cv=d/H4CBjE c=1 sm=1 tr=0 ts=6991ad3f cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=BQ3R4gsLSxvXhAEoYIEA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX4kv3HkZ8V3Cr raIZ49EVQdIQ8uhFWTOH8PlWg290ubH70/H6326JpEgn2AngxhX8bdtBojAmV05RO/Dql+vUYIy kpaZggBpyQs0Xflibi9r24z2Abtv03+PfaEdIJhwTEkqfWJ/9/gvzQxh06IIuUchCcNritoAgx4 IW/btspuPLUlYrRyA+AViqRFM5mPXjNWi5RhSzc1gFEllQCLsqBCHyFu9TXsnBloOPYFZiWwdm8 6vP90ydhAtOCktgvgjBqzHBlgAv54cIEGS/Ke3HIeB2Ic+pIcrLS4XRCBsmZee4Ity8g/N6DQ+D h5lsKKGIBQVrV2pcxdeH6Q1FYCRyxQsCyysEqTfhhb3YeGVYf63oMzxutdE3nY= X-Proofpoint-ORIG-GUID: 8GTDjZoNPHYXUzvNmaSEmQBfNEMPaIks X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 mlxscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1030 spamscore=0 lowpriorityscore=0 mlxlogscore=416 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABcyDLpFQAyUAAguJ38bveLFASLzHpaN7lKyeFXBkU7EijmxIowVVXxMJXod2kN67pplW7FnL75NAbYE7lGR575h0ayNhC3sTyroZNHWzTuwtveYMkUwHfSr29wR9aUcyfm2hpisBaPTxQ1jlb3y/L44aOAhp2oRn58+/vHlOJeDszD62ebGeumXSCpPfbEPBKFLjyUMQLVA9ywiCAZgY3wccQf6RIDMq4v2IADaGdOl2vRAiNMT9QbfjRLt9VRJQrucrs1it4T1khH7QBzqKimIwv9fmv0e0Zzr2LpUeVS6bW5MGqr5hDbRzSR1YlGNkIprtx/53UJw2QgSAqxYfbdTj0swnVMmwWkKxVq9D6hjwNecOhzBZo6uRBo8i1M5Ofw8AzfZiVzw0TRhsuNiS4yIrE7khYblgni8znS1mFpIBHi97hgwouky8zuRi/zAnnS7i4Yhn2Ymjse8a8W+620nH3Nx+xc6Zf7h38945Lm2q7BFGYuByZH76+vrD6dmNI9OT881KqLnwVp0THnqeQAhm9pjG/fBmsZyX9dShS+652n6soFp7TVaHNgoUtWtJ4enqyZBX/CMDvxBbtAJTXXwsUgZtJd5bUMXtblF41bXGkM2hKZhACHES0FnpLr4uSzHVWXJh3hcK9vNzd58tcwjdA4JiH+87sy97koRXDGKeF4V7/vnSIVxrDILhndYtQkOzlMRLC3dL+evINyYkHsjo1YlU7KNw2 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.23; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154836758158500 Content-Type: text/plain; charset="utf-8" This reverts commit bfbea371ef2cabc47effac5a286e2644d727a8d6. This commit breaks VM save/restore: Assertion failed: (b), function hvf_arch_get_registers, file hvf.c, line 66= 7. zsh: abort ./qemu-system-aarch64 -m 8192 -M virt,accel=3Dhvf -cdrom -= device virtio-gpu Signed-off-by: Mohamed Mediouni Tested-by: Zenghui Yu --- target/arm/hvf/hvf.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 1b19d9713e..d79469ca27 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -200,9 +200,6 @@ void hvf_arm_init_debug(void) #define SYSREG_PMCEID0_EL0 SYSREG(3, 3, 9, 12, 6) #define SYSREG_PMCEID1_EL0 SYSREG(3, 3, 9, 12, 7) #define SYSREG_PMCCNTR_EL0 SYSREG(3, 3, 9, 13, 0) - -#define SYSREG_CNTV_CTL_EL0 SYSREG(3, 3, 14, 3, 1) -#define SYSREG_CNTV_CVAL_EL0 SYSREG(3, 3, 14, 3, 2) #define SYSREG_PMCCFILTR_EL0 SYSREG(3, 3, 14, 15, 7) =20 #define SYSREG_ICC_AP0R0_EL1 SYSREG(3, 0, 12, 8, 4) @@ -505,7 +502,6 @@ int hvf_arch_get_registers(CPUState *cpu) uint64_t val; hv_simd_fp_uchar16_t fpval; int i, n; - bool b; =20 for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { ret =3D hv_vcpu_get_reg(cpu->accel->fd, hvf_reg_match[i].reg, &val= ); @@ -635,16 +631,6 @@ int hvf_arch_get_registers(CPUState *cpu) =20 aarch64_restore_sp(env, arm_current_el(env)); =20 - ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_CNTV_CVAL_EL0, = &val); - assert_hvf_ok(ret); - b =3D hvf_sysreg_write_cp(cpu, "VTimer", SYSREG_CNTV_CVAL_EL0, val); - assert(b); - - ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_CNTV_CTL_EL0, &= val); - assert_hvf_ok(ret); - b =3D hvf_sysreg_write_cp(cpu, "VTimer", SYSREG_CNTV_CTL_EL0, val); - assert(b); - return 0; } =20 @@ -656,7 +642,6 @@ int hvf_arch_put_registers(CPUState *cpu) uint64_t val; hv_simd_fp_uchar16_t fpval; int i, n; - bool b; =20 for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { val =3D *(uint64_t *)((void *)env + hvf_reg_match[i].offset); @@ -771,16 +756,6 @@ int hvf_arch_put_registers(CPUState *cpu) ret =3D hv_vcpu_set_vtimer_offset(cpu->accel->fd, hvf_state->vtimer_of= fset); assert_hvf_ok(ret); =20 - b =3D hvf_sysreg_read_cp(cpu, "VTimer", SYSREG_CNTV_CVAL_EL0, &val); - assert(b); - ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_CNTV_CVAL_EL0, = val); - assert_hvf_ok(ret); - - b =3D hvf_sysreg_read_cp(cpu, "VTimer", SYSREG_CNTV_CTL_EL0, &val); - assert(b); - ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_CNTV_CTL_EL0, v= al); - assert_hvf_ok(ret); - return 0; } =20 --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154857; cv=none; d=zohomail.com; s=zohoarc; b=GOoRmz9a3FXR7/G3j+iPaoRY5MW3cvc7yTP9/4v2IEWlS6ewYScXpzzuFmjI31I06iFb/nCdXInLDPKlyb/A5cnVhBbZ8Rm+EdpwMfZDy0me+qnzfjpKA4pIm64qcxYaX96EouP2yhtfHnSmMiubnZLAim+jPd2RUUaW9vZIJjo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154857; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6AbFosTeO+22W6pzp7NhrRLKcRCIno0EsBShVb2QtOo=; b=gkEetaQZelUUt1QoipwX2vHoGgZPupBwWs4cbJ8/AbgEPKbXNo+dnQj6SjwbuIcgbFJNjSBgpfl7kcP2vAHClqupjbPILB3TiovzveFt2wLqwj5dlpKxihU8iDtmiVVN782kglUV4zxLBxEofvFg+r6f1leRPGO7kLSfqlBqBBA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154857617671.1805013166801; Sun, 15 Feb 2026 03:27:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGa-0005Lx-72; Sun, 15 Feb 2026 06:26:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGP-0005G4-JG for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:10 -0500 Received: from p-west2-cluster1-host8-snip4-10.eps.apple.com ([57.103.68.103] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGG-0007wK-2s for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:05 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 164C01800182; Sun, 15 Feb 2026 11:25:52 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 9352D18001B2; Sun, 15 Feb 2026 11:25:50 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154754; x=1773746754; bh=6AbFosTeO+22W6pzp7NhrRLKcRCIno0EsBShVb2QtOo=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Oiu2XpOk2BYd75Ri2OgBZ2wO9bHjgR46PBHpa6XMRWVFV21WMfo+ythIm8LPOJNHuQFCUeVivfM6KM1rLnAu0xnkfWhuvtY/NcEWKmgm54N7WGqq75D9WbZ0RLkhQzlxv9gqEcFZotfQeJRw07GlpoufUhjWhh3oZoASlRKBEf5sIkEkE4ZD4pNEq+uacMA3WKlhM8XFMBzEGC0Jyxm6WzRGdoGBgcir4obnNCSINMoTXL1VHy1IZETWvBbPFvz6XBs9hT825j87oLf56VkiED9ZIwC5O6/l2yxmJ52eZSo0yhS5bidnTR0qPUbbzGl/DFtD1Cz5pJu4wIOVTcao3Q== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 02/14] hw/intc: Add hvf vGIC interrupt controller support Date: Sun, 15 Feb 2026 12:25:31 +0100 Message-ID: <20260215112543.4817-3-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: FlvkAnNzmpBIHzpfwOTfe7esUKOdlvjE X-Authority-Info-Out: v=2.4 cv=BNm+bVQG c=1 sm=1 tr=0 ts=6991ad41 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=D2JAlcJVxmvnjXxMMLIA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX3pAq3gxHf1ro 4LI84GaKF6VaAn52XDABp3Pz9d+k8SQRVpLlxFrGnxIM3IzHpnJnEfnLW/YzhgdNCX9sWpAFUcP BIKd/y9PeT7MKT6SWmcz8Tx2b8SyR4OrCUYOiZqf81ykEgt42ZUtiAptd4yK1O30KQz3a/K8oo5 gDD4OrclZdjSiAU9zZByEXI1haTKWwPGNxD6rvODkc/qzP3H9ii6Pzmdlv66Y90PUjBsGg1+tbk EK/1Dp2+rjD81fzth6aakTJNmDiHsokx/Qgh5d9UrJK+mVfbvqBZ70O12nzUDOgxC0xqZIZXXbu t84XwsVKueGeXiqTlgUuJ/AaSQ+U6/6qTQuhR0I+DNp3lipJFvHX9sbUJj17/8= X-Proofpoint-ORIG-GUID: FlvkAnNzmpBIHzpfwOTfe7esUKOdlvjE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 phishscore=0 mlxscore=0 bulkscore=0 clxscore=1030 adultscore=0 spamscore=0 mlxlogscore=999 suspectscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABB12dZ7kKuAHFacYPNA1v6dz6ZrchNpK3NdS7bHAdUtfy4ryQUrbkhNImrd8ntlTTo7p4DfCR6A10d86x/QVvs/ZS4k6UEIi7lkgTMIY2thp4vWgt3IWEgaOQOFWKg73UvUMXUw3vdSFKOQwvVLRCUbmup0i9yWka0ldtpvIVzhDjVj73QXxtszl5dzaQ6DuU84GN0HXsHKzu+Dhiw9pL2SAseX0XeuOljSxKnVmPMX+52HcACNPWjPjMAJlJPyHgLl6xoV0oI4RC94nAt0xFtKEmv8ER+nugs8DRrXfM44jeQqX559EGNCG+K9EZN7JSKKZ4ZdqFqD4TNdf1tzQeTsR/ZUCsukicTEQNlRrnedHhohFMqiWJc8MQA0Nw8Is1kz4rmRlC3VoZB9HmX/YZ9QivHoeFw+z+5S9Tgj3IkZxlfcZ1jp2pf3bKq87k8Qf7lhEzQMhWvtp+zsnADxqAvge4SeUbCMH9Tq8LHo+mxQYMMVP2E3SlMe/tvyycR0W4gCrGRju7JZIgGw3EvmOZ9CR7Id8YZCvi17l0ciDLnYgTpE4l4F5o/g9l9XyqplSOOWTKTtdswSlmb6z257pJ4MOkwVnoLHGKh6Wuv61xnY5VjSsg2Acsi9lfvlgGVoimYcoWHhS9MXEiS5bvKiKVYk3URcMfNg0Y/Z5O+hq6gMtGZAyAbBqrScGcP3Bg5N9ps5URA3evQh4RPrU06SVckXow6k8/zqaGug== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.103; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154859738154100 Content-Type: text/plain; charset="utf-8" This opens up the door to nested virtualisation support. Signed-off-by: Mohamed Mediouni --- hw/intc/arm_gicv3_hvf.c | 735 +++++++++++++++++++++++++++++ hw/intc/meson.build | 1 + include/hw/intc/arm_gicv3_common.h | 1 + 3 files changed, 737 insertions(+) create mode 100644 hw/intc/arm_gicv3_hvf.c diff --git a/hw/intc/arm_gicv3_hvf.c b/hw/intc/arm_gicv3_hvf.c new file mode 100644 index 0000000000..d6a46b7d53 --- /dev/null +++ b/hw/intc/arm_gicv3_hvf.c @@ -0,0 +1,735 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM Generic Interrupt Controller using HVF platform support + * + * Copyright (c) 2025 Mohamed Mediouni + * Based on vGICv3 KVM code by Pavel Fedin + * + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "hw/intc/arm_gicv3_common.h" +#include "qemu/error-report.h" +#include "qemu/module.h" +#include "system/runstate.h" +#include "system/hvf.h" +#include "system/hvf_int.h" +#include "hvf_arm.h" +#include "gicv3_internal.h" +#include "vgic_common.h" +#include "qom/object.h" +#include "target/arm/cpregs.h" +#include + +struct HVFARMGICv3Class { + ARMGICv3CommonClass parent_class; + DeviceRealize parent_realize; + ResettablePhases parent_phases; +}; + +typedef struct HVFARMGICv3Class HVFARMGICv3Class; + +/* This is reusing the GICv3State typedef from ARM_GICV3_ITS_COMMON */ +DECLARE_OBJ_CHECKERS(GICv3State, HVFARMGICv3Class, + HVF_GICV3, TYPE_HVF_GICV3); + +/* + * Loop through each distributor IRQ related register; since bits + * corresponding to SPIs and PPIs are RAZ/WI when affinity routing + * is enabled, we skip those. + */ +#define for_each_dist_irq_reg(_irq, _max, _field_width) \ + for (_irq =3D GIC_INTERNAL; _irq < _max; _irq +=3D (32 / _field_width)) + +/* + * Wrap calls to the vGIC APIs to assert_hvf_ok() + * as a macro to keep the code clean. + */ +#define hv_gic_get_distributor_reg(offset, reg) \ + assert_hvf_ok(hv_gic_get_distributor_reg(offset, reg)) + +#define hv_gic_set_distributor_reg(offset, reg) \ + assert_hvf_ok(hv_gic_set_distributor_reg(offset, reg)) + +#define hv_gic_get_redistributor_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_get_redistributor_reg(vcpu, reg, value)) + +#define hv_gic_set_redistributor_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_set_redistributor_reg(vcpu, reg, value)) + +#define hv_gic_get_icc_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_get_icc_reg(vcpu, reg, value)) + +#define hv_gic_set_icc_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_set_icc_reg(vcpu, reg, value)) + +#define hv_gic_get_ich_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_get_ich_reg(vcpu, reg, value)) + +#define hv_gic_set_ich_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_set_ich_reg(vcpu, reg, value)) + +static void hvf_dist_get_priority(GICv3State *s, hv_gic_distributor_reg_t = offset + , uint8_t *bmp) +{ + uint64_t reg; + uint32_t *field; + int irq; + field =3D (uint32_t *)(bmp); + + for_each_dist_irq_reg(irq, s->num_irq, 8) { + hv_gic_get_distributor_reg(offset, ®); + *field =3D reg; + offset +=3D 4; + field++; + } +} + +static void hvf_dist_put_priority(GICv3State *s, hv_gic_distributor_reg_t = offset + , uint8_t *bmp) +{ + uint32_t reg, *field; + int irq; + field =3D (uint32_t *)(bmp); + + for_each_dist_irq_reg(irq, s->num_irq, 8) { + reg =3D *field; + hv_gic_set_distributor_reg(offset, reg); + offset +=3D 4; + field++; + } +} + +static void hvf_dist_get_edge_trigger(GICv3State *s, hv_gic_distributor_re= g_t offset, + uint32_t *bmp) +{ + uint64_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 2) { + hv_gic_get_distributor_reg(offset, ®); + reg =3D half_unshuffle32(reg >> 1); + if (irq % 32 !=3D 0) { + reg =3D (reg << 16); + } + *gic_bmp_ptr32(bmp, irq) |=3D reg; + offset +=3D 4; + } +} + +static void hvf_dist_put_edge_trigger(GICv3State *s, hv_gic_distributor_re= g_t offset, + uint32_t *bmp) +{ + uint32_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 2) { + reg =3D *gic_bmp_ptr32(bmp, irq); + if (irq % 32 !=3D 0) { + reg =3D (reg & 0xffff0000) >> 16; + } else { + reg =3D reg & 0xffff; + } + reg =3D half_shuffle32(reg) << 1; + hv_gic_set_distributor_reg(offset, reg); + offset +=3D 4; + } +} + +/* Read a bitmap register group from the kernel VGIC. */ +static void hvf_dist_getbmp(GICv3State *s, hv_gic_distributor_reg_t offset= , uint32_t *bmp) +{ + uint64_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 1) { + + hv_gic_get_distributor_reg(offset, ®); + *gic_bmp_ptr32(bmp, irq) =3D reg; + offset +=3D 4; + } +} + +static void hvf_dist_putbmp(GICv3State *s, hv_gic_distributor_reg_t offset, + hv_gic_distributor_reg_t clroffset, uint32_t *= bmp) +{ + uint32_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 1) { + /* + * If this bitmap is a set/clear register pair, first write to the + * clear-reg to clear all bits before using the set-reg to write + * the 1 bits. + */ + if (clroffset !=3D 0) { + reg =3D 0; + hv_gic_set_distributor_reg(clroffset, reg); + clroffset +=3D 4; + } + reg =3D *gic_bmp_ptr32(bmp, irq); + hv_gic_set_distributor_reg(offset, reg); + offset +=3D 4; + } +} + +static void hvf_gicv3_check(GICv3State *s) +{ + uint64_t reg; + uint32_t num_irq; + + /* Sanity checking s->num_irq */ + hv_gic_get_distributor_reg(HV_GIC_DISTRIBUTOR_REG_GICD_TYPER, ®); + num_irq =3D ((reg & 0x1f) + 1) * 32; + + if (num_irq < s->num_irq) { + error_report("Model requests %u IRQs, but HVF supports max %u", + s->num_irq, num_irq); + abort(); + } +} + +static void hvf_gicv3_put_cpu_el2(CPUState *cpu_state, run_on_cpu_data arg) +{ + int num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_VMCR_EL2, c->ich_vmcr_el2); + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_HCR_EL2, c->ich_hcr_el2); + + for (int i =3D 0; i < GICV3_LR_MAX; i++) { + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_LR0_EL2, c->ich_lr_el2[i]); + } + + num_pri_bits =3D c->vpribits; + + switch (num_pri_bits) { + case 7: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 3, + c->ich_apr[GICV3_G0][3]); + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 2, + c->ich_apr[GICV3_G0][2]); + /* fall through */ + case 6: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 1, + c->ich_apr[GICV3_G0][1]); + /* fall through */ + default: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2, + c->ich_apr[GICV3_G0][0]); + } + + switch (num_pri_bits) { + case 7: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 3, + c->ich_apr[GICV3_G1NS][3]); + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 2, + c->ich_apr[GICV3_G1NS][2]); + /* fall through */ + case 6: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 1, + c->ich_apr[GICV3_G1NS][1]); + /* fall through */ + default: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2, + c->ich_apr[GICV3_G1NS][0]); + } +} + +static void hvf_gicv3_put_cpu(CPUState *cpu_state, run_on_cpu_data arg) +{ + uint32_t reg; + uint64_t reg64; + int i, num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + reg =3D c->gicr_waker; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IGROU= PR0, reg); + + reg =3D c->gicr_igroupr0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IGROU= PR0, reg); + + reg =3D ~0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICENA= BLER0, reg); + reg =3D c->gicr_ienabler0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISENA= BLER0, reg); + + /* Restore config before pending so we treat level/edge correctly */ + reg =3D half_shuffle32(c->edge_trigger >> 16) << 1; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICFGR= 1, reg); + + reg =3D ~0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICPEN= DR0, reg); + reg =3D c->gicr_ipendr0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISPEN= DR0, reg); + + reg =3D ~0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICACT= IVER0, reg); + reg =3D c->gicr_iactiver0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISACT= IVER0, reg); + + for (i =3D 0; i < GIC_INTERNAL; i +=3D 4) { + reg =3D c->gicr_ipriorityr[i] | + (c->gicr_ipriorityr[i + 1] << 8) | + (c->gicr_ipriorityr[i + 2] << 16) | + (c->gicr_ipriorityr[i + 3] << 24); + hv_gic_set_redistributor_reg(vcpu, + HV_GIC_REDISTRIBUTOR_REG_GICR_IPRIORITYR0 + i, reg); + } + + /* CPU interface state */ + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_SRE_EL1, c->icc_sre_el1); + + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_CTLR_EL1, + c->icc_ctlr_el1[GICV3_NS]); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN0_EL1, + c->icc_igrpen[GICV3_G0]); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN1_EL1, + c->icc_igrpen[GICV3_G1NS]); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_PMR_EL1, c->icc_pmr_el1); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_BPR0_EL1, c->icc_bpr[GICV3_G0]= ); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_BPR1_EL1, c->icc_bpr[GICV3_G1N= S]); + + num_pri_bits =3D ((c->icc_ctlr_el1[GICV3_NS] & + ICC_CTLR_EL1_PRIBITS_MASK) >> + ICC_CTLR_EL1_PRIBITS_SHIFT) + 1; + + switch (num_pri_bits) { + case 7: + reg64 =3D c->icc_apr[GICV3_G0][3]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 3, reg64); + reg64 =3D c->icc_apr[GICV3_G0][2]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 2, reg64); + /* fall through */ + case 6: + reg64 =3D c->icc_apr[GICV3_G0][1]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 1, reg64); + /* fall through */ + default: + reg64 =3D c->icc_apr[GICV3_G0][0]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1, reg64); + } + + switch (num_pri_bits) { + case 7: + reg64 =3D c->icc_apr[GICV3_G1NS][3]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 3, reg64); + reg64 =3D c->icc_apr[GICV3_G1NS][2]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 2, reg64); + /* fall through */ + case 6: + reg64 =3D c->icc_apr[GICV3_G1NS][1]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 1, reg64); + /* fall through */ + default: + reg64 =3D c->icc_apr[GICV3_G1NS][0]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1, reg64); + } + + /* Registers beyond this point are with nested virt only */ + if (c->gic->maint_irq) { + hvf_gicv3_put_cpu_el2(cpu_state, arg); + } +} + +static void hvf_gicv3_put(GICv3State *s) +{ + uint32_t reg; + int ncpu, i; + + hvf_gicv3_check(s); + + reg =3D s->gicd_ctlr; + hv_gic_set_distributor_reg(HV_GIC_DISTRIBUTOR_REG_GICD_CTLR, reg); + + /* per-CPU state */ + + for (ncpu =3D 0; ncpu < s->num_cpu; ncpu++) { + run_on_cpu_data data; + data.host_ptr =3D &s->cpu[ncpu]; + run_on_cpu(s->cpu[ncpu].cpu, hvf_gicv3_put_cpu, data); + } + + /* s->enable bitmap -> GICD_ISENABLERn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISENABLER0 + , HV_GIC_DISTRIBUTOR_REG_GICD_ICENABLER0, s->enabled); + + /* s->group bitmap -> GICD_IGROUPRn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_IGROUPR0 + , 0, s->group); + + /* Restore targets before pending to ensure the pending state is set on + * the appropriate CPU interfaces in the kernel + */ + + /* s->gicd_irouter[irq] -> GICD_IROUTERn */ + for (i =3D GIC_INTERNAL; i < s->num_irq; i++) { + uint32_t offset =3D HV_GIC_DISTRIBUTOR_REG_GICD_IROUTER32 + (8 * i) + - (8 * GIC_INTERNAL); + hv_gic_set_distributor_reg(offset, s->gicd_irouter[i]); + } + + /* + * s->trigger bitmap -> GICD_ICFGRn + * (restore configuration registers before pending IRQs so we treat + * level/edge correctly) + */ + hvf_dist_put_edge_trigger(s, HV_GIC_DISTRIBUTOR_REG_GICD_ICFGR0, s->ed= ge_trigger); + + /* s->pending bitmap -> GICD_ISPENDRn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISPENDR0, + HV_GIC_DISTRIBUTOR_REG_GICD_ICPENDR0, s->pending); + + /* s->active bitmap -> GICD_ISACTIVERn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISACTIVER0, + HV_GIC_DISTRIBUTOR_REG_GICD_ICACTIVER0, s->active); + + /* s->gicd_ipriority[] -> GICD_IPRIORITYRn */ + hvf_dist_put_priority(s, HV_GIC_DISTRIBUTOR_REG_GICD_IPRIORITYR0, s->g= icd_ipriority); +} + +static void hvf_gicv3_get_cpu_el2(CPUState *cpu_state, run_on_cpu_data arg) +{ + int num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_VMCR_EL2, &c->ich_vmcr_el2); + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_HCR_EL2, &c->ich_hcr_el2); + + for (int i =3D 0; i < GICV3_LR_MAX; i++) { + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_LR0_EL2, &c->ich_lr_el2[i]= ); + } + + num_pri_bits =3D c->vpribits; + + switch (num_pri_bits) { + case 7: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 3, + &c->ich_apr[GICV3_G0][3]); + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 2, + &c->ich_apr[GICV3_G0][2]); + /* fall through */ + case 6: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 1, + &c->ich_apr[GICV3_G0][1]); + /* fall through */ + default: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2, + &c->ich_apr[GICV3_G0][0]); + } + + switch (num_pri_bits) { + case 7: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 3, + &c->ich_apr[GICV3_G1NS][3]); + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 2, + &c->ich_apr[GICV3_G1NS][2]); + /* fall through */ + case 6: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 1, + &c->ich_apr[GICV3_G1NS][1]); + /* fall through */ + default: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2, + &c->ich_apr[GICV3_G1NS][0]); + } +} + +static void hvf_gicv3_get_cpu(CPUState *cpu_state, run_on_cpu_data arg) +{ + uint64_t reg; + int i, num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IGROU= PR0, + ®); + c->gicr_igroupr0 =3D reg; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISENA= BLER0, + ®); + c->gicr_ienabler0 =3D reg; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICFGR= 1, + ®); + c->edge_trigger =3D half_unshuffle32(reg >> 1) << 16; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISPEN= DR0, + ®); + c->gicr_ipendr0 =3D reg; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISACT= IVER0, + ®); + c->gicr_iactiver0 =3D reg; + + for (i =3D 0; i < GIC_INTERNAL; i +=3D 4) { + hv_gic_get_redistributor_reg( + vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IPRIORITYR0 + i, ®); + c->gicr_ipriorityr[i] =3D extract32(reg, 0, 8); + c->gicr_ipriorityr[i + 1] =3D extract32(reg, 8, 8); + c->gicr_ipriorityr[i + 2] =3D extract32(reg, 16, 8); + c->gicr_ipriorityr[i + 3] =3D extract32(reg, 24, 8); + } + + /* CPU interface */ + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_SRE_EL1, &c->icc_sre_el1); + + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_CTLR_EL1, + &c->icc_ctlr_el1[GICV3_NS]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN0_EL1, + &c->icc_igrpen[GICV3_G0]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN1_EL1, + &c->icc_igrpen[GICV3_G1NS]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_PMR_EL1, &c->icc_pmr_el1); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_BPR0_EL1, &c->icc_bpr[GICV3_G0= ]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_BPR1_EL1, &c->icc_bpr[GICV3_G1= NS]); + num_pri_bits =3D ((c->icc_ctlr_el1[GICV3_NS] & ICC_CTLR_EL1_PRIBITS_MA= SK) >> + ICC_CTLR_EL1_PRIBITS_SHIFT) + + 1; + + switch (num_pri_bits) { + case 7: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 3, + &c->icc_apr[GICV3_G0][3]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 2, + &c->icc_apr[GICV3_G0][2]); + /* fall through */ + case 6: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 1, + &c->icc_apr[GICV3_G0][1]); + /* fall through */ + default: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1, + &c->icc_apr[GICV3_G0][0]); + } + + switch (num_pri_bits) { + case 7: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 3, + &c->icc_apr[GICV3_G1NS][3]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 2, + &c->icc_apr[GICV3_G1NS][2]); + /* fall through */ + case 6: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 1, + &c->icc_apr[GICV3_G1NS][1]); + /* fall through */ + default: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1, + &c->icc_apr[GICV3_G1NS][0]); + } + + /* Registers beyond this point are with nested virt only */ + if (c->gic->maint_irq) { + hvf_gicv3_get_cpu_el2(cpu_state, arg); + } +} + +static void hvf_gicv3_get(GICv3State *s) +{ + uint64_t reg; + int ncpu, i; + + hvf_gicv3_check(s); + + hv_gic_get_distributor_reg(HV_GIC_DISTRIBUTOR_REG_GICD_CTLR, ®); + s->gicd_ctlr =3D reg; + + /* Redistributor state (one per CPU) */ + + for (ncpu =3D 0; ncpu < s->num_cpu; ncpu++) { + run_on_cpu_data data; + data.host_ptr =3D &s->cpu[ncpu]; + run_on_cpu(s->cpu[ncpu].cpu, hvf_gicv3_get_cpu, data); + } + + /* GICD_IGROUPRn -> s->group bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_IGROUPR0, s->group); + + /* GICD_ISENABLERn -> s->enabled bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISENABLER0, s->enabled); + + /* GICD_ISPENDRn -> s->pending bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISPENDR0, s->pending); + + /* GICD_ISACTIVERn -> s->active bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISACTIVER0, s->active); + + /* GICD_ICFGRn -> s->trigger bitmap */ + hvf_dist_get_edge_trigger(s, HV_GIC_DISTRIBUTOR_REG_GICD_ICFGR0 + , s->edge_trigger); + + /* GICD_IPRIORITYRn -> s->gicd_ipriority[] */ + hvf_dist_get_priority(s, HV_GIC_DISTRIBUTOR_REG_GICD_IPRIORITYR0 + , s->gicd_ipriority); + + /* GICD_IROUTERn -> s->gicd_irouter[irq] */ + for (i =3D GIC_INTERNAL; i < s->num_irq; i++) { + uint32_t offset =3D HV_GIC_DISTRIBUTOR_REG_GICD_IROUTER32 + + (8 * i) - (8 * GIC_INTERNAL); + hv_gic_get_distributor_reg(offset, &s->gicd_irouter[i]); + } +} + +static void hvf_gicv3_set_irq(void *opaque, int irq, int level) +{ + GICv3State *s =3D opaque; + if (irq > s->num_irq) { + return; + } + hv_gic_set_spi(GIC_INTERNAL + irq, !!level); +} + +static void hvf_gicv3_icc_reset(CPUARMState *env, const ARMCPRegInfo *ri) +{ + GICv3CPUState *c; + + c =3D env->gicv3state; + c->icc_pmr_el1 =3D 0; + /* + * Architecturally the reset value of the ICC_BPR registers + * is UNKNOWN. We set them all to 0 here; when the kernel + * uses these values to program the ICH_VMCR_EL2 fields that + * determine the guest-visible ICC_BPR register values, the + * hardware's "writing a value less than the minimum sets + * the field to the minimum value" behaviour will result in + * them effectively resetting to the correct minimum value + * for the host GIC. + */ + c->icc_bpr[GICV3_G0] =3D 0; + c->icc_bpr[GICV3_G1] =3D 0; + c->icc_bpr[GICV3_G1NS] =3D 0; + + c->icc_sre_el1 =3D 0x7; + memset(c->icc_apr, 0, sizeof(c->icc_apr)); + memset(c->icc_igrpen, 0, sizeof(c->icc_igrpen)); +} + +static void hvf_gicv3_reset_hold(Object *obj, ResetType type) +{ + GICv3State *s =3D ARM_GICV3_COMMON(obj); + HVFARMGICv3Class *kgc =3D HVF_GICV3_GET_CLASS(s); + + if (kgc->parent_phases.hold) { + kgc->parent_phases.hold(obj, type); + } + + hvf_gicv3_put(s); +} + + +/* + * CPU interface registers of GIC needs to be reset on CPU reset. + * For the calling arm_gicv3_icc_reset() on CPU reset, we register + * below ARMCPRegInfo. As we reset the whole cpu interface under single + * register reset, we define only one register of CPU interface instead + * of defining all the registers. + */ +static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { + { .name =3D "ICC_CTLR_EL1", .state =3D ARM_CP_STATE_BOTH, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 4, + /* + * If ARM_CP_NOP is used, resetfn is not called, + * So ARM_CP_NO_RAW is appropriate type. + */ + .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, + .readfn =3D arm_cp_read_zero, + .writefn =3D arm_cp_write_ignore, + /* + * We hang the whole cpu interface reset routine off here + * rather than parcelling it out into one little function + * per register + */ + .resetfn =3D hvf_gicv3_icc_reset, + }, +}; + +static void hvf_gicv3_realize(DeviceState *dev, Error **errp) +{ + ERRP_GUARD(); + GICv3State *s =3D HVF_GICV3(dev); + HVFARMGICv3Class *kgc =3D HVF_GICV3_GET_CLASS(s); + int i; + + kgc->parent_realize(dev, errp); + if (*errp) { + return; + } + + if (s->revision !=3D 3) { + error_setg(errp, "unsupported GIC revision %d for platform GIC", + s->revision); + } + + if (s->security_extn) { + error_setg(errp, "the platform vGICv3 does not implement the " + "security extensions"); + return; + } + + if (s->nmi_support) { + error_setg(errp, "NMI is not supported with the platform GIC"); + return; + } + + if (s->nb_redist_regions > 1) { + error_setg(errp, "Multiple VGICv3 redistributor regions are not " + "supported by HVF"); + error_append_hint(errp, "A maximum of %d VCPUs can be used", + s->redist_region_count[0]); + return; + } + + gicv3_init_irqs_and_mmio(s, hvf_gicv3_set_irq, NULL); + + for (i =3D 0; i < s->num_cpu; i++) { + ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(i)); + + define_arm_cp_regs(cpu, gicv3_cpuif_reginfo); + } + + if (s->maint_irq && s->maint_irq !=3D HV_GIC_INT_MAINTENANCE) { + error_setg(errp, "vGIC maintenance IRQ mismatch with the hardcoded= one in HVF."); + return; + } +} + +static void hvf_gicv3_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); + ARMGICv3CommonClass *agcc =3D ARM_GICV3_COMMON_CLASS(klass); + HVFARMGICv3Class *kgc =3D HVF_GICV3_CLASS(klass); + + agcc->pre_save =3D hvf_gicv3_get; + agcc->post_load =3D hvf_gicv3_put; + + device_class_set_parent_realize(dc, hvf_gicv3_realize, + &kgc->parent_realize); + resettable_class_set_parent_phases(rc, NULL, hvf_gicv3_reset_hold, NUL= L, + &kgc->parent_phases); +} + +static const TypeInfo hvf_arm_gicv3_info =3D { + .name =3D TYPE_HVF_GICV3, + .parent =3D TYPE_ARM_GICV3_COMMON, + .instance_size =3D sizeof(GICv3State), + .class_init =3D hvf_gicv3_class_init, + .class_size =3D sizeof(HVFARMGICv3Class), +}; + +static void hvf_gicv3_register_types(void) +{ + type_register_static(&hvf_arm_gicv3_info); +} + +type_init(hvf_gicv3_register_types) diff --git a/hw/intc/meson.build b/hw/intc/meson.build index 96742df090..b7baf8a0f6 100644 --- a/hw/intc/meson.build +++ b/hw/intc/meson.build @@ -42,6 +42,7 @@ arm_common_ss.add(when: 'CONFIG_ARM_GIC', if_true: files(= 'arm_gicv3_cpuif_common arm_common_ss.add(when: 'CONFIG_ARM_GICV3', if_true: files('arm_gicv3_cpui= f.c')) specific_ss.add(when: 'CONFIG_ARM_GIC_KVM', if_true: files('arm_gic_kvm.c'= )) specific_ss.add(when: ['CONFIG_WHPX', 'TARGET_AARCH64'], if_true: files('a= rm_gicv3_whpx.c')) +specific_ss.add(when: ['CONFIG_HVF', 'CONFIG_ARM_GICV3'], if_true: files('= arm_gicv3_hvf.c')) specific_ss.add(when: ['CONFIG_ARM_GIC_KVM', 'TARGET_AARCH64'], if_true: f= iles('arm_gicv3_kvm.c', 'arm_gicv3_its_kvm.c')) arm_common_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('armv7m_nvic.c')) specific_ss.add(when: 'CONFIG_GRLIB', if_true: files('grlib_irqmp.c')) diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index c55cf18120..9adcab0a0c 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -315,6 +315,7 @@ DECLARE_OBJ_CHECKERS(GICv3State, ARMGICv3CommonClass, =20 /* Types for GICv3 kernel-irqchip */ #define TYPE_WHPX_GICV3 "whpx-arm-gicv3" +#define TYPE_HVF_GICV3 "hvf-arm-gicv3" =20 struct ARMGICv3CommonClass { /*< private >*/ --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154807; cv=none; d=zohomail.com; s=zohoarc; b=FNQUHzeMlX1YdrXGUvi0tJvEsFb4i5Q03rMoecyxBJQhlt6T4yG6YjI1p4IJPN7RiOIBXxOGT6lMqxyGlnHwwDupqQJT7VRebB+0aiSYryFFRdXhdixv54OVf5oqVcWYq4jb4zvvcZ5ha6gPrsWtJb7A/kXSbkgLsVme4E/mqeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154807; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a4Lipn9YKiDG3oI91EQCLLzeKcwiCgC5chTtbPEFiwg=; b=covQZYofeR2J2rrv9bH7Y17V1cpzEg2u+2GVSo/QIWxt3rnVzPVj4Uvv7ErpvYKTF2v3/7/EvoWJwFspoNCTKlFmvNYwrzr7eMyNphe3UqYlh4EWmMLfBYyiBwSwxoVxTkJ2ihkJ8w90xbmRKQ8YFiweYeUPdE2+zJEnXzff8B0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154806780296.05362456096486; Sun, 15 Feb 2026 03:26:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGU-0005I8-1m; Sun, 15 Feb 2026 06:26:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGJ-0005Ea-UV for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:05 -0500 Received: from p-west2-cluster1-host2-snip4-10.eps.apple.com ([57.103.68.23] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGG-0007wV-3N for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:02 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 5C041180029F; Sun, 15 Feb 2026 11:25:55 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id D88C518000A9; Sun, 15 Feb 2026 11:25:52 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154756; x=1773746756; bh=a4Lipn9YKiDG3oI91EQCLLzeKcwiCgC5chTtbPEFiwg=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=By/V5sJ8NrzpoBU0um90W1h9eZNYaEjD2g7JBuqcXYZPUeKP2rfZbOg9qXIETxeiFUfz6txBE5gGiaCTRLhN2QSdmKTOYgo0WnN4ICe1MFWKWUMAyGb08p2SlgrcFv6PII3nAanu9KGWNMP+7kjn32MjQbdDJdZFP3szDwjB/1xExZbDH6K6FRoax83mTXTIZQTjoATezHfaYba1WdSqbd+r/pmcItolM1DAktUcNDX1CcPB6tYhkjiG1Alwu5RP4Nd8dzMgSV0Wy7Udv5H/002pWVobRvVkf2T8fMbxR/KnBOxiySrPO1g/Wq3FygReIIpofbXUF6wKxYRgy8TvNg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 03/14] hw/intc: arm_gicv3_hvf: save/restore Apple GIC state Date: Sun, 15 Feb 2026 12:25:32 +0100 Message-ID: <20260215112543.4817-4-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: sVPmFnz0CfZeUQW-ny49LK_T8l93UhEv X-Authority-Info-Out: v=2.4 cv=aKv9aL9m c=1 sm=1 tr=0 ts=6991ad44 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=kNOF8fv34t_zTB2Y_VIA:9 X-Proofpoint-GUID: sVPmFnz0CfZeUQW-ny49LK_T8l93UhEv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX7t+s+qI6noXG 6cpaz1r2oJGW9NznRtLGXODwE2K912uWqKdgteqBeq78eo2w1EcThtSrxh0fik/en3oQYrUJxn/ oSlwAqPUkPnAYOLEMJXXOI1BR7x1X84U9+Uz4s9/pWH6GBl61o3DVcP5JwSLzR4UqgEJdjYYyAq Jf73zrCHcadx6RD4Dmt5awOLe3Sot9e1K6ma5UhiHViP3lVpDVQiYheHd8NWy8MWMdX6c0oUHnT fe02Xddv8ZDaSz9qlweKL1NWI50JsQ0VxTDMqiYih3mcwd+rBtbX5iOrGCPudIUrMqONQPTsoUC pYpuR+b0G/O6+/YAND55lzm26VEc8hG5mXhuRUeqxHI52FcML4DlmojpX5e0pA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 mlxlogscore=975 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABTApmkbUcupuYfOh/eA0Cj93XyABfAdxQpbcfuAGVdgjLFXlxUE+wOdewcMyOvKV/NuPUOMmSBIVjxIQzNAkadCALE5whaX0KDNHKBEXdKFpKz+7XtXktozFDDwcGzBPLZ9eGyDLh2L1bBqyRtarBdeqVaIvO19Bjy3uo760nnYwFzsKLvI+nJmGVU0viJgFuafR3FiuHwW5GEEZ7gEMBY1LLMRSZFWJcpjfgCd9P0qIOeSPjNzArzQx9aFzTueFmv/L+IUvLAOMBUlSu5BjQWx6+p997CFR3uHvxJlE2oepGJ9NQsBYO9kz6PbO6zZCtCyoqDIerC1mhZNK/dGJ/VrUo3LwYP+6tGjIWdS5UImBZbAUOdfOOQr8DTUUP3uWSrfPUIdH+4WDKppnojUBqmYUU9o8OnQtLUkU78V2Fgf9SU9Z1Xpb/6AdFf0B2u4x+7JwKoW/1wzX+Ro8rdMXxIjnRQJTyQn0YkBvdfIRuDFAe0A1Nf3MGprMft4msgUrlOJH6emULQXRPLaU+v2Mukv11VBYOAesA4ordN8ULGNmrtTERp0q0fn+6ukA/YC11WRdlAHMIDzwN8rXrAt4PWnha0lG77mhp5itLyX4bbEJLRhnnIigQBcxxErzmbXJMc2ESNuNGoJxuB/G+S6yCbz+u/muR75/mRjiLnSnel4mFk7DKk2Fin3Ue/RlIr2VvZcqBhEhX79HShAQOUiCLuKbDTPtxX2RWSlKKeTnKPW/NqJaY6rQSAsN9MeLCv0qgDE3W4aPH Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.23; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154813611158501 Content-Type: text/plain; charset="utf-8" On HVF, some of the GIC state is in an opaque Apple-provided structure. Save/restore that state to be able to save/restore VMs that use the hardwar= e GIC. Signed-off-by: Mohamed Mediouni --- hw/intc/arm_gicv3_common.c | 1 + hw/intc/arm_gicv3_hvf.c | 91 ++++++++++++++++++++++++++++-- hw/intc/arm_gicv3_hvf_stub.c | 25 ++++++++ hw/intc/meson.build | 1 + include/hw/intc/arm_gicv3_common.h | 3 + 5 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 hw/intc/arm_gicv3_hvf_stub.c diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index 9200671c7a..9c3fb2f4bf 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -305,6 +305,7 @@ static const VMStateDescription vmstate_gicv3 =3D { .subsections =3D (const VMStateDescription * const []) { &vmstate_gicv3_gicd_no_migration_shift_bug, &vmstate_gicv3_gicd_nmi, + &vmstate_gicv3_hvf, NULL } }; diff --git a/hw/intc/arm_gicv3_hvf.c b/hw/intc/arm_gicv3_hvf.c index d6a46b7d53..9e4d974cd1 100644 --- a/hw/intc/arm_gicv3_hvf.c +++ b/hw/intc/arm_gicv3_hvf.c @@ -13,6 +13,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "system/runstate.h" +#include "migration/vmstate.h" #include "system/hvf.h" #include "system/hvf_int.h" #include "hvf_arm.h" @@ -30,8 +31,13 @@ struct HVFARMGICv3Class { =20 typedef struct HVFARMGICv3Class HVFARMGICv3Class; =20 -/* This is reusing the GICv3State typedef from ARM_GICV3_ITS_COMMON */ -DECLARE_OBJ_CHECKERS(GICv3State, HVFARMGICv3Class, +typedef struct HVFGICv3State { + GICv3State gicv3_state; + uint32_t size; + void *state; +} HVFGICv3State; + +DECLARE_OBJ_CHECKERS(HVFGICv3State, HVFARMGICv3Class, HVF_GICV3, TYPE_HVF_GICV3); =20 /* @@ -656,7 +662,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { static void hvf_gicv3_realize(DeviceState *dev, Error **errp) { ERRP_GUARD(); - GICv3State *s =3D HVF_GICV3(dev); + GICv3State *s =3D (GICv3State *)HVF_GICV3(dev); HVFARMGICv3Class *kgc =3D HVF_GICV3_GET_CLASS(s); int i; =20 @@ -703,6 +709,83 @@ static void hvf_gicv3_realize(DeviceState *dev, Error = **errp) } } =20 +/* + * HVF doesn't have a way to save the RDIST pending tables + * to guest memory, only to an opaque data structure. + */ +static bool gicv3_is_hvf(void *opaque) +{ + return hvf_enabled() && hvf_irqchip_in_kernel(); +} + +static int hvf_gic_opaque_state_save(void* opaque) +{ + HVFGICv3State* gic =3D opaque; + hv_gic_state_t gic_state; + hv_return_t err; + size_t size; + + gic_state =3D hv_gic_state_create(); + if (gic_state =3D=3D NULL) { + error_report("hvf: vgic: failed to create hv_gic_state_create."); + return 1; + } + err =3D hv_gic_state_get_size(gic_state, &size); + gic->size =3D size; + if (err !=3D HV_SUCCESS) { + error_report("hvf: vgic: failed to get GIC state size."); + return 1; + } + gic->state =3D g_malloc(gic->size); + err =3D hv_gic_state_get_data(gic_state, gic->state); + if (err !=3D HV_SUCCESS) { + error_report("hvf: vgic: failed to get GIC state."); + return 1; + } + return 0; +} + +static int hvf_gic_opaque_state_free(void* opaque) +{ + HVFGICv3State* gic =3D opaque; + free(gic->state); + return 0; +} + +static int hvf_gic_opaque_state_restore(void* opaque, int version_id) +{ + HVFGICv3State* gic =3D opaque; + hv_return_t err; + if (!gic->size) { + return 0; + } + err =3D hv_gic_set_state(gic->state, gic->size); + if (err !=3D HV_SUCCESS) { + error_report("hvf: vgic: failed to restore GIC state."); + return 1; + } + return 0; +} + +const VMStateDescription vmstate_gicv3_hvf =3D { + .name =3D "arm_gicv3/hvf_gic_state", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D gicv3_is_hvf, + .pre_save =3D hvf_gic_opaque_state_save, + .post_save =3D hvf_gic_opaque_state_free, + .post_load =3D hvf_gic_opaque_state_restore, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(size, HVFGICv3State), + VMSTATE_VBUFFER_ALLOC_UINT32(state, + HVFGICv3State, 0, 0, + size), + VMSTATE_END_OF_LIST() + }, +}; + static void hvf_gicv3_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -722,7 +805,7 @@ static void hvf_gicv3_class_init(ObjectClass *klass, co= nst void *data) static const TypeInfo hvf_arm_gicv3_info =3D { .name =3D TYPE_HVF_GICV3, .parent =3D TYPE_ARM_GICV3_COMMON, - .instance_size =3D sizeof(GICv3State), + .instance_size =3D sizeof(HVFGICv3State), .class_init =3D hvf_gicv3_class_init, .class_size =3D sizeof(HVFARMGICv3Class), }; diff --git a/hw/intc/arm_gicv3_hvf_stub.c b/hw/intc/arm_gicv3_hvf_stub.c new file mode 100644 index 0000000000..a587332c7c --- /dev/null +++ b/hw/intc/arm_gicv3_hvf_stub.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM Generic Interrupt Controller using HVF platform support stub + * + * Copyright (c) 2026 Mohamed Mediouni + * + */ +#include "qemu/osdep.h" +#include "hw/intc/arm_gicv3_common.h" +#include "migration/vmstate.h" +#include "qemu/typedefs.h" + +static bool needed_never(void *opaque) +{ + return false; +} + +const VMStateDescription vmstate_gicv3_hvf =3D { + .name =3D "arm_gicv3/hvf_gic_state", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D needed_never, + .version_id =3D 1, + .minimum_version_id =3D 1, +}; diff --git a/hw/intc/meson.build b/hw/intc/meson.build index b7baf8a0f6..c6de2d9d00 100644 --- a/hw/intc/meson.build +++ b/hw/intc/meson.build @@ -43,6 +43,7 @@ arm_common_ss.add(when: 'CONFIG_ARM_GICV3', if_true: file= s('arm_gicv3_cpuif.c')) specific_ss.add(when: 'CONFIG_ARM_GIC_KVM', if_true: files('arm_gic_kvm.c'= )) specific_ss.add(when: ['CONFIG_WHPX', 'TARGET_AARCH64'], if_true: files('a= rm_gicv3_whpx.c')) specific_ss.add(when: ['CONFIG_HVF', 'CONFIG_ARM_GICV3'], if_true: files('= arm_gicv3_hvf.c')) +specific_ss.add(when: ['CONFIG_HVF', 'CONFIG_ARM_GICV3'], if_false: files(= 'arm_gicv3_hvf_stub.c')) specific_ss.add(when: ['CONFIG_ARM_GIC_KVM', 'TARGET_AARCH64'], if_true: f= iles('arm_gicv3_kvm.c', 'arm_gicv3_its_kvm.c')) arm_common_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('armv7m_nvic.c')) specific_ss.add(when: 'CONFIG_GRLIB', if_true: files('grlib_irqmp.c')) diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index 9adcab0a0c..dd49fe1b9d 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -339,4 +339,7 @@ void gicv3_init_irqs_and_mmio(GICv3State *s, qemu_irq_h= andler handler, */ const char *gicv3_class_name(void); =20 +/* HVF vGIC-specific state: stubbed out on a build with HVF disabled. s*/ +extern const VMStateDescription vmstate_gicv3_hvf; + #endif --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154835; cv=none; d=zohomail.com; s=zohoarc; b=CNHcM0eFfmOTBLr0xMU0TPsy+w9MbvBrbI3rnRCgg0Gf/cGIeB+rxVkfO55q6UDd/iZxmF8WZi7GKWu4I66abUhyv/tlPfIwXsHO1F0+AyDl/fvaP0gdeLaBpiO0BCiQxO1YPLD7BoeRSl4AT6V4wTlcJkIWeJ4UIVlDoIy2b6o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154835; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=59TJPyifQdYiPo+R2EjYdFKf7iChqKxw+V2UadvNjas=; b=kfODKiWB2GB6O+5CdI0cfTN8KlEZabEULgqwVUxMaQmwCv14kNRj5lCQTQStzDgQ6uBypqeKZxy/ShodzFZbucmmZamo51Cz/WNJlW1a1xXRCMvUS5ty24rXZswPj4rMUA5be17FfTZVnfPETUCHRTfIzq7M9TPgOEUhK+pSpJE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154835459537.4512569747952; Sun, 15 Feb 2026 03:27:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGS-0005Gj-9w; Sun, 15 Feb 2026 06:26:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGL-0005Es-H0 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:07 -0500 Received: from p-west2-cluster1-host6-snip4-10.eps.apple.com ([57.103.68.63] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGG-0007wk-4M for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:04 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id A439218002A9; Sun, 15 Feb 2026 11:25:57 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 2D0741800294; Sun, 15 Feb 2026 11:25:55 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154759; x=1773746759; bh=59TJPyifQdYiPo+R2EjYdFKf7iChqKxw+V2UadvNjas=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=gkm5A0dqkQEXMfBKt9BCbbzN88Wr/e5R0+HnjhpCsHEImxRQn21OvHW0mwTv5QUH7L1VtX6bQKn9Mby+p9uPouqjSmpONXjFsZ1jv43tK5xYenhUd13XJNdx5hQaQK5iUrFeZaSVRm/adkf2xRm8AtDAJxvEtTgl4XNivIQXbR9huocJ6i4PO3vJ8af96yZ2xmzw76IxD4bpZVWfEE4+ODvNuh9ArGmbcw/lDbzeL2VfAijOsuKUG/Oj5NZM4/LvjUrPBXtcY7M22bsXDZqrAlQsp5QK2FOVWP/rDmG2gaZHn0GGvJefXiIc14DAUGxjeS/YQp6j7dZjdoKk+AybiQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 04/14] accel, hw/arm, include/system/hvf: infrastructure changes for HVF vGIC Date: Sun, 15 Feb 2026 12:25:33 +0100 Message-ID: <20260215112543.4817-5-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfXyBEWuiq55QM2 lMcuMFf8eegJPJuM5sVgs6GDG3KTQrZNrBbQdj5wYCKm9Ealtj5LBgoGOIz5MgAL9JTbwo4ESyp OO7L8NljuwAfqh5zDRvLIt8BQO62rgB9IqbLJBavUDfSkT2HKEiXrBEVBKdpD3tSa8G7rdBNJs+ q1gaAQZUQ6S30C7ic/XhLdI2UA/2pulTGWN3wSbmoW40KCX+N5W/qUVe/1JZLmNtkquBZO3pRrv q2hbBlzc+v9JkiFcJf7bD+toHspSwl9WyqNg9WTVTEtsQySAljKmirDaKc/LB+bThCEBwO+N2EM NfzqvJVw0KIikEdjuz0x8xgTFAnLN4PQE3RS8FAf1k+RU2RGWokP9Xe/B1r28Y= X-Authority-Info-Out: v=2.4 cv=FMQWBuos c=1 sm=1 tr=0 ts=6991ad46 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=n4FVybPFTm1vobq06wUA:9 X-Proofpoint-GUID: 0S9OHb8sbkc-nVZUEIxVrkAB8pr3_gxi X-Proofpoint-ORIG-GUID: 0S9OHb8sbkc-nVZUEIxVrkAB8pr3_gxi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 phishscore=0 adultscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABTugRFEp/3LPriL5v3Y7L7EGAf7dLjkmyDXZhubzT7+brPPwqi07aMtlca69lfksQZw5euA0Y5xzEy7KDD7D6tn/+h0s0OyBcNLNau6fG4KD8YHrcMxZik+5ZhY4FSpTKvt1CXWRSuFJPTXgDVK0jMZd6Scqc8bvXSAcTfsp7alhBsUQbKL3Ly8aNgfCeib/VQ4WoKRHlpYNjIJr7nRAkm5T7tf8cADuJLE4I7b6kaCuoBAfadhoC2aHJ0+ZtWrO0M/f+6Mt3yG68O8mfnGMNYx+YW7gSfNyjjNEjhdFbvTMdvyU58atgRavs6kIwczdcf33dhx69N3hvEZpo4ulkXdzkoqeDFmofUSzTOtD2GC465z592CICArH807x/bkojO5YDddYfGQIrVT4VCSfGuedOtrJpS3wWkj/+recnDb81LZMu3ZOl4cNiOq42m+22BKeew6eLbZ/6xRbFIUEdqMJ4SEnkyxxCK/SRUPZlYYwz3Qyj6vFLX4Q8un5HYKMViqKBzfVmzrmeQHq70m5Vh2wA2eHKwFg7H0Kk8AqmpsE2Ji0ify45QUr3meisNW4U978xMxiCMa4l6cj+LFSopld9Pdi9cl8yJBsK7bOUoricaZrcf4Gz830pn7DT5YMHwZOPWQYZ29875czIYceiTdRJ9nk9xByN6Lm/nj8ymxWa0mklc0yNGiSlJOEs9XfzHf+CAlUhRQ9U0hAXpcmzHLz1c0+w8dk+B/yGbPPIjVtHBQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.63; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154838990154100 Content-Type: text/plain; charset="utf-8" Misc changes needed for HVF vGIC enablement. Note: x86_64 macOS exposes interrupt controller virtualisation since macOS = 12. Keeping an #ifdef here in case we end up supporting that... However, given that x86_64 macOS is on its way out, it'll probably (?) not = be supported in Qemu. Signed-off-by: Mohamed Mediouni --- accel/hvf/hvf-all.c | 50 ++++++++++++++++++++++++++++++++++++++ accel/stubs/hvf-stub.c | 1 + hw/arm/virt.c | 23 +++++++++++++++--- hw/intc/arm_gicv3_common.c | 3 +++ include/system/hvf.h | 3 +++ system/vl.c | 2 ++ 6 files changed, 78 insertions(+), 4 deletions(-) diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index 033c677b6f..929f53fd37 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -10,6 +10,8 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" +#include "qapi/error.h" +#include "qapi/qapi-visit-common.h" #include "accel/accel-ops.h" #include "exec/cpu-common.h" #include "system/address-spaces.h" @@ -22,6 +24,7 @@ #include "trace.h" =20 bool hvf_allowed; +bool hvf_kernel_irqchip; =20 const char *hvf_return_string(hv_return_t ret) { @@ -217,6 +220,43 @@ static int hvf_gdbstub_sstep_flags(AccelState *as) return SSTEP_ENABLE | SSTEP_NOIRQ; } =20 +static void hvf_set_kernel_irqchip(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + OnOffSplit mode; + if (!visit_type_OnOffSplit(v, name, &mode, errp)) { + return; + } + + switch (mode) { + case ON_OFF_SPLIT_ON: +#ifdef HOST_X86_64 + /* macOS 12 onwards exposes an HVF virtual APIC. */ + error_setg(errp, "HVF: kernel irqchip is not currently implemented= for x86."); + break; +#else + hvf_kernel_irqchip =3D true; + break; +#endif + + case ON_OFF_SPLIT_OFF: + hvf_kernel_irqchip =3D false; + break; + + case ON_OFF_SPLIT_SPLIT: + error_setg(errp, "HVF: split irqchip is not supported on HVF."); + break; + + default: + /* + * The value was checked in visit_type_OnOffSplit() above. If + * we get here, then something is wrong in QEMU. + */ + abort(); + } +} + static void hvf_accel_class_init(ObjectClass *oc, const void *data) { AccelClass *ac =3D ACCEL_CLASS(oc); @@ -224,6 +264,16 @@ static void hvf_accel_class_init(ObjectClass *oc, cons= t void *data) ac->init_machine =3D hvf_accel_init; ac->allowed =3D &hvf_allowed; ac->gdbstub_supported_sstep_flags =3D hvf_gdbstub_sstep_flags; +#ifdef HOST_X86_64 + hvf_kernel_irqchip =3D false; +#else + hvf_kernel_irqchip =3D true; +#endif + object_class_property_add(oc, "kernel-irqchip", "on|off|split", + NULL, hvf_set_kernel_irqchip, + NULL, NULL); + object_class_property_set_description(oc, "kernel-irqchip", + "Configure HVF irqchip"); } =20 static const TypeInfo hvf_accel_type =3D { diff --git a/accel/stubs/hvf-stub.c b/accel/stubs/hvf-stub.c index 42eadc5ca9..6bd08759ba 100644 --- a/accel/stubs/hvf-stub.c +++ b/accel/stubs/hvf-stub.c @@ -10,3 +10,4 @@ #include "system/hvf.h" =20 bool hvf_allowed; +bool hvf_kernel_irqchip; diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 50865e8115..391d5e6f76 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -838,7 +838,7 @@ static void create_gic(VirtMachineState *vms, MemoryReg= ion *mem) * interrupts; there are always 32 of the former (mandated by GIC spec= ). */ qdev_prop_set_uint32(vms->gic, "num-irq", NUM_IRQS + 32); - if (!kvm_irqchip_in_kernel()) { + if (!kvm_irqchip_in_kernel() && !hvf_irqchip_in_kernel()) { qdev_prop_set_bit(vms->gic, "has-security-extensions", vms->secure= ); } =20 @@ -861,7 +861,8 @@ static void create_gic(VirtMachineState *vms, MemoryReg= ion *mem) qdev_prop_set_array(vms->gic, "redist-region-count", redist_region_count); =20 - if (!kvm_irqchip_in_kernel()) { + if (!kvm_irqchip_in_kernel() && + !(hvf_enabled() && hvf_irqchip_in_kernel())) { if (vms->tcg_its) { object_property_set_link(OBJECT(vms->gic), "sysmem", OBJECT(mem), &error_fatal); @@ -872,7 +873,7 @@ static void create_gic(VirtMachineState *vms, MemoryReg= ion *mem) ARCH_GIC_MAINT_IRQ); } } else { - if (!kvm_irqchip_in_kernel()) { + if (!kvm_irqchip_in_kernel() && !hvf_irqchip_in_kernel()) { qdev_prop_set_bit(vms->gic, "has-virtualization-extensions", vms->virt); } @@ -2119,7 +2120,15 @@ static void finalize_gic_version(VirtMachineState *v= ms) accel_name =3D "KVM with kernel-irqchip=3Doff"; } else if (whpx_enabled()) { gics_supported |=3D VIRT_GIC_VERSION_3_MASK; - } else if (tcg_enabled() || hvf_enabled() || qtest_enabled()) { + } else if (hvf_enabled()) { + if (!hvf_irqchip_in_kernel()) { + gics_supported |=3D VIRT_GIC_VERSION_2_MASK; + } + /* Hypervisor.framework doesn't expose EL2<->1 transition notifier= s */ + if (!(!hvf_irqchip_in_kernel() && vms->virt)) { + gics_supported |=3D VIRT_GIC_VERSION_3_MASK; + } + } else if (tcg_enabled() || qtest_enabled()) { gics_supported |=3D VIRT_GIC_VERSION_2_MASK; if (module_object_class_by_name("arm-gicv3")) { gics_supported |=3D VIRT_GIC_VERSION_3_MASK; @@ -2161,6 +2170,8 @@ static void finalize_msi_controller(VirtMachineState = *vms) vms->msi_controller =3D VIRT_MSI_CTRL_GICV2M; } else if (whpx_enabled()) { vms->msi_controller =3D VIRT_MSI_CTRL_GICV2M; + } else if (hvf_enabled() && hvf_irqchip_in_kernel()) { + vms->msi_controller =3D VIRT_MSI_CTRL_GICV2M; } else { vms->msi_controller =3D VIRT_MSI_CTRL_ITS; } @@ -2180,6 +2191,10 @@ static void finalize_msi_controller(VirtMachineState= *vms) error_report("ITS not supported on WHPX."); exit(1); } + if (hvf_enabled() && hvf_irqchip_in_kernel()) { + error_report("ITS not supported on HVF when using the hardware= vGIC."); + exit(1); + } } =20 assert(vms->msi_controller !=3D VIRT_MSI_CTRL_AUTO); diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index 9c3fb2f4bf..f7ba74e6d5 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -33,6 +33,7 @@ #include "hw/arm/linux-boot-if.h" #include "system/kvm.h" #include "system/whpx.h" +#include "system/hvf.h" =20 =20 static void gicv3_gicd_no_migration_shift_bug_post_load(GICv3State *cs) @@ -659,6 +660,8 @@ const char *gicv3_class_name(void) return "kvm-arm-gicv3"; } else if (whpx_enabled()) { return TYPE_WHPX_GICV3; + } else if (hvf_enabled() && hvf_irqchip_in_kernel()) { + return TYPE_HVF_GICV3; } else { if (kvm_enabled()) { error_report("Userspace GICv3 is not supported with KVM"); diff --git a/include/system/hvf.h b/include/system/hvf.h index d3dcf088b3..dc8da85979 100644 --- a/include/system/hvf.h +++ b/include/system/hvf.h @@ -26,8 +26,11 @@ #ifdef CONFIG_HVF_IS_POSSIBLE extern bool hvf_allowed; #define hvf_enabled() (hvf_allowed) +extern bool hvf_kernel_irqchip; +#define hvf_irqchip_in_kernel() (hvf_kernel_irqchip) #else /* !CONFIG_HVF_IS_POSSIBLE */ #define hvf_enabled() 0 +#define hvf_irqchip_in_kernel() 0 #endif /* !CONFIG_HVF_IS_POSSIBLE */ =20 #define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf") diff --git a/system/vl.c b/system/vl.c index aa9a155041..d3f311eff8 100644 --- a/system/vl.c +++ b/system/vl.c @@ -1778,6 +1778,8 @@ static void qemu_apply_legacy_machine_options(QDict *= qdict) false); object_register_sugar_prop(ACCEL_CLASS_NAME("whpx"), "kernel-irqch= ip", value, false); + object_register_sugar_prop(ACCEL_CLASS_NAME("hvf"), "kernel-irqchi= p", value, + false); qdict_del(qdict, "kernel-irqchip"); } =20 --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154868; cv=none; d=zohomail.com; s=zohoarc; b=mhlR+O4MCXSXny+MLpZNmImewR+cFDi870gBpOsaQHionLD3xZPPsL/aXCACyudS4g1iP9Xv2wp5A2fygAGoeVNj9qo19BdlnRKnGdUlDm2SSLfcRyKsHzA1fnb/3FetNjNcIF2iFc8ftm1jIEtFUZy8iJm3w0I8SO6o9LdfnsE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154868; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jEliWNbG5rK2neC0IONI5zdAOP0QxrLReQSeKNzFrQA=; b=jAjbIzfUlLe8Y2qhkatznakpGBoJDgOUkgse61GQKGCge2iZuyCTO93fWsxadgBPXwnlunpKOnSAVpTYsO87Ju7BuZ8Fm5tRE+VG72BRRQW/3ByYp7Tg+mcNa15h+q8JJJM+WhhCle99JXDhEQzwai3IY9HsRW4WrDC+oNOIz6g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154867968551.1089173248869; Sun, 15 Feb 2026 03:27:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGW-0005JB-Ht; Sun, 15 Feb 2026 06:26:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGP-0005G0-I5 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:09 -0500 Received: from p-west2-cluster1-host3-snip4-10.eps.apple.com ([57.103.68.73] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGL-0007y0-5x for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:06 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id EF574180009F; Sun, 15 Feb 2026 11:25:59 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 7603218004D7; Sun, 15 Feb 2026 11:25:57 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154761; x=1773746761; bh=jEliWNbG5rK2neC0IONI5zdAOP0QxrLReQSeKNzFrQA=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Bx2Wbb2JX3q+ZdezV60MCoaikB/2WnEfmbrqWcnRrbjpAZtvtMEWczFt/VKGvsPKfNIE64s4mnGHRm6Qq2HhOZeY4dO/l4dZMIeCr9F/ykszmdGOpLFg/VUboxw/3NFg4WaXrirM8BNhJ+sivCFJRLWjHPXLrjf2C7EnZxuRjhUG8Jeqd1473PvzaI2hMqC2htZ0Csq23aZlyCEgkVnhEOofJ0tgaXm4GpK8l2SouEkRsRvI1QjAbW3ajYSlhquo+cA0Yu8ESbop7UmGhKcyIo4Km5jK5yD7riVMTcas6V8TYJajo/VHYrpRE0ML8v3Y1EhsYjTXman5/j2m25ZJjQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 05/14] target/arm: hvf: instantiate GIC early Date: Sun, 15 Feb 2026 12:25:34 +0100 Message-ID: <20260215112543.4817-6-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: eKOHIjoIrMMu7HcQefLCBoasEr-p0jKC X-Authority-Info-Out: v=2.4 cv=BNm+bVQG c=1 sm=1 tr=0 ts=6991ad48 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=iW0rYzIOeSeTUJq9hTUA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX5IyViUQpgoi3 B8wYbLt46YM5tSVc+wBvGVRSNssodWAFVl+d7OfH0dSHzpakuIKdIGxDLbL739ScpDdfYnrl6TI d9kpEg13WFN00eISeTK1v7Q1Q/vRIfg0NzZyMV6YeMR16p8qYvhwJQskI/yNbURidkxKntZxI5o m6r85PrgV0Zo/a15TDmxMEVOwn8evQfJ4RpQjha/4DrDuYy2ipzyBo3bdeb7SjoRbgI1GzZuk+Q 51R70U1YskpngWTCAcDZOYWya4e/9OpQ2Y7HKX7oIytUnmRmnWWgooG/arKypz0fofYxb8nB90K YOjiTX8Rdjfgt1bsWWIwpF4ja8/6qBAfkegR5sQL7f0Tdw40pA0MlXOUZBMwXc= X-Proofpoint-ORIG-GUID: eKOHIjoIrMMu7HcQefLCBoasEr-p0jKC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 phishscore=0 mlxscore=0 bulkscore=0 clxscore=1030 adultscore=0 spamscore=0 mlxlogscore=665 suspectscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABxpXSOlNVX7Jos6m6gFn/f3xWCuzqeEOdvwXcq16zFVQh67hBxUrtuSS7ZuCEsmMviHKdSQOsrkdyuE/y7tX6gU5FJD1rXi7OB+9bratcEteA+C/i9pTpze0dEWZM6yUlkO1B+kDK4B2+AoQl2XbkleEIYeQm5R1HSb3m2LkUuv6GpJgae1U/ftQQY1XiMbhh0Hh9OVQWdGClhRY7+jffoJmQxCcteNeO9DJSFh9tkm7Dx1hZbkaovge+TvlxKZwX2dptx28QbXrTbqKFtSj0p82gH9kQqgmsiMJa2RdlipipSIbfE9T44xf+lF3w7wUFgIpk2CJMxQoY/2gE28EhM71WQxkW//IIyx8wtbiHJpYjJpGkejEvWX9BZ1J+6lyBZ5aE70LnMOHZc47zhkvNvbcPWaugLF0SqAdAqLUzSwUq4sXSohQIUaBtNXiu0njIt0DFPwsL4PDgIWCgnAHYkuHtwSGdc3hI8FWYbXgsmvOn4tu0v1dx2/LMXOargqLgYGi4TpFVXsB8w3GhlLZ3uEoSkteGA7RuN0tA0DWWBCdGNIHhnbaeoS2wQbFPJpKFk5cKPLJRILUxbSEKWCa9T5um7lpvMCZ8JhCECHgoHwNkGGguQEwZRbJygdcYNtScp10ZKpkY7QCzNmiZhQzjdML0vvOTCi9wXSpw1pYsrixaII4wXQzNWD6Nb1nBJuR+Xnc= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.73; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154872583158500 Content-Type: text/plain; charset="utf-8" While figuring out a better spot for it, put it in hv_arch_vm_create(). After hv_vcpu_create is documented as too late, and deferring vCPU initialization isn't enough either. Signed-off-by: Mohamed Mediouni --- target/arm/hvf/hvf.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index d79469ca27..a22b544afe 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -961,6 +961,22 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uint3= 2_t pa_range) chosen_ipa_bit_size =3D pa_range; =20 ret =3D hv_vm_create(config); + if (hvf_irqchip_in_kernel()) { + /* + * Instantiate GIC. + * This must be done prior to the creation of any vCPU + * but past hv_vm_create() + */ + hv_gic_config_t cfg =3D hv_gic_config_create(); + hv_gic_config_set_distributor_base(cfg, 0x08000000); + hv_gic_config_set_redistributor_base(cfg, 0x080A0000); + hv_return_t err =3D hv_gic_create(cfg); + if (err !=3D HV_SUCCESS) { + error_report("error creating platform VGIC"); + goto cleanup; + } + os_release(cfg); + } =20 cleanup: os_release(config); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154831; cv=none; d=zohomail.com; s=zohoarc; b=fVBgPGcOjkhWU5Hxzqb4h7Pk5FkfHJrGxT883j+w29Mvb3JYMI5lvCbIb+J/br4ErU6rik7mrtzZjw5Argy6AggTZtUWF5AenJTLoXhNQ/TshNqO9jx80Iju5YMVdyvXL3sHyO+j33k73WU7ytBg1i/uXhRrtUlNX4/jD9+WybA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154831; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3nUlevAU9aZys/Rjn70E+I9X5fkWyVyDKfSHQSfGsNI=; b=Mx0vCfyFwfa8UVgWM9CwYBdhtEiebkyuK+2vW8TNDAWgXExP13E1/pLUx99dDzKEdeC93tfDD1VZtH/0ihDNiCzLq5V0fHk7fqo46WwkwZPTdPJaKlcRNcM+olNvaE8FMZ2/Ie1Pe4W6EcGuECWmKC9K3PLNCb04R95meNFyH7w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154830907517.1168671452386; Sun, 15 Feb 2026 03:27:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGZ-0005Kv-Fc; Sun, 15 Feb 2026 06:26:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGP-0005G3-J1 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:09 -0500 Received: from p-west2-cluster1-host1-snip4-7.eps.apple.com ([57.103.68.10] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGL-0007y8-AH for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:07 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 473BE180015F; Sun, 15 Feb 2026 11:26:02 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id C677018001B2; Sun, 15 Feb 2026 11:25:59 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154763; x=1773746763; bh=3nUlevAU9aZys/Rjn70E+I9X5fkWyVyDKfSHQSfGsNI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=ONCs/0gZjQLltz8mFVZWRga9o+ari5WS6oPDBbjIFtvVFBtKjyqMjqNPZCy5+aHjY6IGQevA+r/zlu0LzVs1IJRYEGPZZ6Ooi7ioDXVsLqYQTpTEezEp5Ok88fAhLFTSouMOiW61YnIZYQyrdDGqEJvKMJX642YhDRvODz+FGD01jjQ2XNgz/NWQtK09/ekClNyB6dWF+8Tyf4ICvbyB0Tu4fqjnbsXAfqSajZkqaTcDy3X7Vj32vYcetIjNgWDgxlmLsFmZIYeK9a1BJFqcHfJhPB6fMDVDlc4/Y1fFl6iMtgAEFYe0yYnhphf8Ci8WtjVJuO9hfzuXbXrTNXinmA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 06/14] hw/arm, target/arm: nested virtualisation on HVF Date: Sun, 15 Feb 2026 12:25:35 +0100 Message-ID: <20260215112543.4817-7-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=aJn9aL9m c=1 sm=1 tr=0 ts=6991ad4b cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=YLAFOksV-_wk3IE7wuMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX3EltvrqgJIFH 1EYvQxI+kNA5FObBgs4mdh1rJRYFMdIBjf9TmyluYVyjHXyttyZ4FiZuuBzPq+6cGb9Cher4BOx hKGgohrDjDI/Kj0fH9b0oB0ASDOdZDULvcfUDkuSwW/E3bgBseJwAFvuvTrbnn2ucSKBtQr67Fh JhVTtQRgjo9lAzVS/sCqCsPJW/8YitRACRlnwdx+AbBiokpc5jzov5VWL6vrbOqy1H5a8Tcz0LW CFyBDuimz5lou1zyOvQf2diYv4ADu1xp3Hpv+sZ34Q7o7WhJZh1nUrtJDJ9wxoKPehaYMZl/A79 ExORExENmjcaxu0SmVnaloJ59rVttVo4J9hKp7sX7wC7k70Gh6sjWgLGpMDiJs= X-Proofpoint-ORIG-GUID: 7LFd_F6Xj-Jxc_CK5SA1KwYP8CTXUv8a X-Proofpoint-GUID: 7LFd_F6Xj-Jxc_CK5SA1KwYP8CTXUv8a X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 mlxlogscore=807 bulkscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 clxscore=1030 malwarescore=0 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABmSRyAYUMXlvjeppp2ENdGariwReMXE/2I4BuxRKjFklPDS9EyaIrJ7dEwGmuKGVJLxLESwh0C6IPbuc4Ar5rhYKFG56Abr5sO36mJelFY0kDL39NqUG6Y901fQhqRDEdwBBC86kO/VgJHticjt6SA+V1FkNQXli8t1s22f9r9ajjBFx4KQOJlnyykRI/OChNXdUx3HgwKiDPbogqCprlxEVxUp+zMSQXvmCycw5GXABBhHu+s8KPCjyl83OCQMQU80tsdyfECHW/uhuXqi5A2yD6XGgEXZRustq/WGNLR3ACVM6FM5U5wiwpTTdf4ExuvWSfVB20wDHnVLO6wCdZYaTVbaa43cfPuIQ3AFbCBC6hRQDPms9ovVF0ZrErLoX1tvPDd/E2xBXgmMvT2gbpaW6M07UpLArS/RPr3Vl5rIb0pYry2btpVMmGmOrlTgU4YmKCXAiXCa/yyuGocL8BCxSLGM2vrmkVoNEEaljHFJjp5C0m9eOnzTmYBtiMV3PXr/ywIMOUSfxZJTtEZwM9LrAkZJTvT823Q559Bw/sKEEI2kChmvAT8DCNqZJDlVtPPSdzXZJYJWwT1qxftDoE56L9Sry+/mzdyn/NOlkOWJdAbpWm54U+rs0lYrJvBY09oEQQ+PGvDPRJMF2q4hwZv1JohglfgtSY2sRffB6WVnFFevrYHuY6lFxAUW/ICZLIlg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.10; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154835810154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- accel/hvf/hvf-all.c | 1 + accel/stubs/hvf-stub.c | 1 + hw/arm/virt.c | 5 +++++ include/system/hvf.h | 5 +++++ target/arm/hvf/hvf.c | 36 ++++++++++++++++++++++++++++++++++-- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index 929f53fd37..88f6d5accb 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -25,6 +25,7 @@ =20 bool hvf_allowed; bool hvf_kernel_irqchip; +bool hvf_nested_virt; =20 const char *hvf_return_string(hv_return_t ret) { diff --git a/accel/stubs/hvf-stub.c b/accel/stubs/hvf-stub.c index 6bd08759ba..cec1cbb056 100644 --- a/accel/stubs/hvf-stub.c +++ b/accel/stubs/hvf-stub.c @@ -11,3 +11,4 @@ =20 bool hvf_allowed; bool hvf_kernel_irqchip; +bool hvf_nested_virt; diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 391d5e6f76..071b082786 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2662,6 +2662,11 @@ static void virt_set_virt(Object *obj, bool value, E= rror **errp) VirtMachineState *vms =3D VIRT_MACHINE(obj); =20 vms->virt =3D value; + /* + * At this point, HVF is not initialised yet. + * However, it needs to know if nested virt is enabled at init time. + */ + hvf_nested_virt_enable(value); } =20 static bool virt_get_highmem(Object *obj, Error **errp) diff --git a/include/system/hvf.h b/include/system/hvf.h index dc8da85979..0f0632f7ae 100644 --- a/include/system/hvf.h +++ b/include/system/hvf.h @@ -28,9 +28,14 @@ extern bool hvf_allowed; #define hvf_enabled() (hvf_allowed) extern bool hvf_kernel_irqchip; #define hvf_irqchip_in_kernel() (hvf_kernel_irqchip) +extern bool hvf_nested_virt; +#define hvf_nested_virt_enabled() (hvf_nested_virt) +#define hvf_nested_virt_enable(enable) hvf_nested_virt =3D enable #else /* !CONFIG_HVF_IS_POSSIBLE */ #define hvf_enabled() 0 #define hvf_irqchip_in_kernel() 0 +#define hvf_nested_virt_enabled() 0 +#define hvf_nested_virt_enable(enable) 0 #endif /* !CONFIG_HVF_IS_POSSIBLE */ =20 #define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf") diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index a22b544afe..a80c5f8384 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -27,6 +27,7 @@ #include "system/memory.h" #include "hw/core/boards.h" #include "hw/core/irq.h" +#include "hw/arm/virt.h" #include "qemu/main-loop.h" #include "system/cpus.h" #include "arm-powerctl.h" @@ -842,6 +843,10 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPUFe= atures *ahcf) (1ULL << ARM_FEATURE_PMU) | (1ULL << ARM_FEATURE_GENERIC_TIMER); =20 + if (hvf_nested_virt_enabled()) { + ahcf->features |=3D 1ULL << ARM_FEATURE_EL2; + } + for (i =3D 0; i < ARRAY_SIZE(regs); i++) { r |=3D hv_vcpu_config_get_feature_reg(config, regs[i].reg, &host_isar.idregs[regs[i].inde= x]); @@ -949,6 +954,15 @@ void hvf_arch_vcpu_destroy(CPUState *cpu) assert_hvf_ok(ret); } =20 +static bool hvf_arm_el2_supported(void) +{ + bool is_nested_virt_supported; + hv_return_t ret =3D hv_vm_config_get_el2_supported(&is_nested_virt_sup= ported); + assert_hvf_ok(ret); + return is_nested_virt_supported; +} + + hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range) { hv_return_t ret; @@ -960,6 +974,18 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uint3= 2_t pa_range) } chosen_ipa_bit_size =3D pa_range; =20 + if (hvf_nested_virt_enabled()) { + if (!hvf_arm_el2_supported()) { + error_report("Nested virtualization not supported on this syst= em."); + goto cleanup; + } + ret =3D hv_vm_config_set_el2_enabled(config, true); + if (ret !=3D HV_SUCCESS) { + error_report("Failed to enable nested virtualization."); + goto cleanup; + } + } + ret =3D hv_vm_create(config); if (hvf_irqchip_in_kernel()) { /* @@ -1110,6 +1136,13 @@ static void hvf_psci_cpu_off(ARMCPU *arm_cpu) assert(ret =3D=3D QEMU_ARM_POWERCTL_RET_SUCCESS); } =20 +static int hvf_psci_get_target_el(void) +{ + if (hvf_nested_virt_enabled()) { + return 2; + } + return 1; +} /* * Handle a PSCI call. * @@ -1131,7 +1164,6 @@ static bool hvf_handle_psci_call(CPUState *cpu, int *= excp_ret) CPUState *target_cpu_state; ARMCPU *target_cpu; target_ulong entry; - int target_el =3D 1; int32_t ret =3D 0; =20 trace_arm_psci_call(param[0], param[1], param[2], param[3], @@ -1185,7 +1217,7 @@ static bool hvf_handle_psci_call(CPUState *cpu, int *= excp_ret) entry =3D param[2]; context_id =3D param[3]; ret =3D arm_set_cpu_on(mpidr, entry, context_id, - target_el, target_aarch64); + hvf_psci_get_target_el(), target_aarch64); break; case QEMU_PSCI_0_1_FN_CPU_OFF: case QEMU_PSCI_0_2_FN_CPU_OFF: --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154900; cv=none; d=zohomail.com; s=zohoarc; b=J5G7ek4KGU58JlNQO4vLEq19cZk/1pc0U1UUf7fApznCSgEPZZWZO4PxcysT/o18HE1iZoMl2uxgaV8VeA+8oRQOPUHUMN9ONJZWWtbea9d5gcOyqp9wxVotAHVukbihPcC5SmgqUnw8j0nS4jIu64ktWUxkHVL1LuGKH9uSQFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154900; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ey38obQgB/4OZtOjl/rhIH61RioqpiOULYFmJqpqNgs=; b=CqzJfaDUiFr6MLsWNRNiIYGTtjnww0MkhiIOXnGIeT9zlfkDyLKk9w3rNE+nhb0HXk8TDjEbdEfcp0m394TYg+MphgUPej/UXgIq18MrFCO6HoTZAe97n90xYbIzfJ9H/JgI3130rIrjPS9hSfSGD4r4bZyCMraKIvXNPhZKOwA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154900474310.77983774137886; Sun, 15 Feb 2026 03:28:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGd-0005No-Ap; Sun, 15 Feb 2026 06:26:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGU-0005Ih-JV for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:14 -0500 Received: from p-west2-cluster1-host6-snip4-6.eps.apple.com ([57.103.68.59] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGP-0007yq-AY for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:12 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 718281800294; Sun, 15 Feb 2026 11:26:04 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 188D718004D5; Sun, 15 Feb 2026 11:26:01 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154765; x=1773746765; bh=Ey38obQgB/4OZtOjl/rhIH61RioqpiOULYFmJqpqNgs=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=f4puh9C93iTrgtNLgojiz1MVpGMqaRnguyfLYtTNldAHfVT8VQXVX7ARXyP8D/hBGwEq9/WhszIkgqIy/3vB0SJK3KghFh/qlwP685P7+lUPjCIKf5/ULlDwbsrustn+TlEIe8hs73+LIQW/9PSJqST8omofbF51hlh96KNQed+C0wqAfI/OaIf7urYG3HTtx/vqwpyWwEDpjWZH8T9IjffRpwvhb82GHjrdSX34zIWLVz/ZYw/lYsV4dUrQAmlAV+kAm22itER/sgshuTANR58dBECBCHIDpR67BDq+kIghvCoE2jxiuTHvtKYTe2wbFvV6ZQfW7DYNGSpkddy7YA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 07/14] hvf: only call hvf_sync_vtimer() when running without the platform vGIC Date: Sun, 15 Feb 2026 12:25:36 +0100 Message-ID: <20260215112543.4817-8-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfXzNpb/sJYKMLM nJwCyxQpkbF7yKYRAj0hkAVuG6zN401DUeFkK8swoeRDRHwGFI4tTCLsoL6PNUk7MiKrvAuUnHC /ZU52xSE2+FBpTQasDcRJfURo6HFdtVdJY7nE4oguyT/IqVYiwYjviAIQSB1Nauf2y4XqLSzLqR EBJ/rDcGAa69xa4BVERynKUm5bSke9eF9kmpZA3/+pXtEu3Qz+hJmmywebOdVJahQ0i7Ny+1xmM oREbesXUQH+p9lMgkNobGzwt1NMRtn6vF8TFOYBLwmG5wW5q8V98Q83Mk2g1M8XxHgsHXxBkFzz 8TiTRo87Pxi9lKDNciaaFo+I8keL6RXOvrXEylyfU2rxUH06T5jtdaGiPrPoMw= X-Authority-Info-Out: v=2.4 cv=F7Rat6hN c=1 sm=1 tr=0 ts=6991ad4d cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=PzQS8Z__MZ2uSZov3vkA:9 X-Proofpoint-GUID: UGxaIlpyHMu97dDHpC5RvXhMCZU-N88I X-Proofpoint-ORIG-GUID: UGxaIlpyHMu97dDHpC5RvXhMCZU-N88I X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=853 mlxscore=0 clxscore=1030 malwarescore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABKMl2Sl0+FLoVTdk/j5N14fgyNJsCPv5fak36Tsf88cIpzXok+PDUWOWSeD9BIrbc6EvNTIz/WTGUj1cTvCPdBaH8ec1IN5O7404//J4cX72lDgDt0UHX+ktQt8aHXHWIXY4yaGQjt0F4Ck3Qt/75femD5fL4vEshaecI/e5j3BvGLvdP0KOTieOzpfRGK9mbDFC0xpdwXmi3jLOwPvWNIFWjX31MxmO/zaDkTTOY58a+hZX2UtDTQszPkbfn4Wl5Xk5hblEg8zZwsLhM+kVOLAdGwYZ5UgE1vPnPTUiTczJxzXd4XyD2ShMqAQPKGmd1CkHW3C95K2NmCwtUg+7vOyA5T+VXf6NtZ5b9KzzT8D8Od7dQ7plbCPVie5Tn+fT7e8izkjCVayZUgU8WmC/3U6q1xvuI8lI2s02WTzuoDMHbCFIEDQaxI05sFcYIL7fwxiIb29o3feo3QWqWnls5rT98DIWaaoXfyCxqnFlJfHOBy6i3UCvdDAKOMbpq11dSk2rVganPc20DsLODK+OE4SnTmAp/vzRLB9IWBVFpmdqCaSZy+2QQzGshNCu/ZbM4G0U5c9uuXPQ8T81kGP71Uq+JeSWx9r/sNGUyW0uNj827ZxId6MWdTqtDpkKTWXm+/rGw40xU6U9Tspfj+thYdhcpnwzQRfsgRl69Z2fykdelBhdBPPtTGprvIvtRvjVw8XWOQBzbmtDF8BUYysS2L2M= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.59; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154902197154100 Content-Type: text/plain; charset="utf-8" When running with the Apple vGIC, the EL1 vtimer is handled by the platform. Signed-off-by: Mohamed Mediouni Reviewed-by: Mads Ynddal --- target/arm/hvf/hvf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index a80c5f8384..e0a51faf28 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -2052,7 +2052,9 @@ static int hvf_handle_vmexit(CPUState *cpu, hv_vcpu_e= xit_t *exit) =20 switch (exit->reason) { case HV_EXIT_REASON_EXCEPTION: - hvf_sync_vtimer(cpu); + if (!hvf_irqchip_in_kernel()) { + hvf_sync_vtimer(cpu); + } ret =3D hvf_handle_exception(cpu, &exit->exception); break; case HV_EXIT_REASON_VTIMER_ACTIVATED: --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154933; cv=none; d=zohomail.com; s=zohoarc; b=mc5GYB1ByuSNk2esLB4O0zxAZFiK/wupm/iLvT31qe2TZ+PVs7FUv9ywiNDnb6mfsZFBtVMtSi8XhYXIoUzlAo9TyvCdDZ2jXtFLTKkxyfWgymI+XSltGQcAGZbfdr4w7jv5lk1MfU4Rc/sb95N4T2ZSv8FAQQA9lGCmDYLnCiI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154933; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZobmyIudfu7P7uUuPB0BU6gBIwq7faUFJCiyh8v9O8Q=; b=GpQPS5MjGP4Afdk15wBgTBj/QkdjQKpGIGQcIonXsxeCRpd0JQJp9J+JSj5vGY168hv4d84G5n2OxLa0nhKjNEbEv4iLo6PRtw/9uwGExQetQ2fHCkTCtMDTKna9EJ3Oq6zUdn2q6AJ40/MeGNLAmlNdbh78u7rDhsLt19ZhuZU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154933060868.895567259575; Sun, 15 Feb 2026 03:28:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGa-0005M7-QC; Sun, 15 Feb 2026 06:26:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGR-0005G8-0G for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:11 -0500 Received: from p-west2-cluster1-host1-snip4-5.eps.apple.com ([57.103.68.8] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGP-0007zC-Ao for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:10 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id C9CED18004D5; Sun, 15 Feb 2026 11:26:06 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 3B9A118000A9; Sun, 15 Feb 2026 11:26:04 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154768; x=1773746768; bh=ZobmyIudfu7P7uUuPB0BU6gBIwq7faUFJCiyh8v9O8Q=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=In95AzLZfkxpy8Q7GY0YsPaRIqYiXs56WuPtg2BYsOX0cOXGuhGecpiLvPUFFxmuByKa1KP3HOz4HWNocwSEXqI3xaDnVcabQPNs1AIuKszTDPULfT6yyMKiymZbJT/ueLz6JGfgn5ixjFg6Gx+e32Y3vuOsGKfOe7M+002wgpMrt9vxkUk9kfb07MwxJlzEI/UZjgiQCfaBTusy9PafW2kmj/YJKQ55gmpGOJ/P5S9GSZWHkoGgNnBQYZdpH8utYsSDEbF8peP3J/QYw/CKAPw9FU0IvSp5sOpFc7UwMXTdneZLLgC0PVE8MUAfODAim14EtaFG8VKuxhTm8znLjg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v10 08/14] hvf: gate ARM_FEATURE_PMU register emulation behind not being at EL2 Date: Sun, 15 Feb 2026 12:25:37 +0100 Message-ID: <20260215112543.4817-9-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: tklFVbP83DU9ESml1z92Sc3Pjat3wCvM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX3XsvPkcjA4Cv JUlxI31OketMIuwbrSKYnH7SKwznZpgRUBtsyx29lNdsFH/sn9ItTW2j2vu8qra0SvBWlrZNrcK jKw2Zs937/AXMRZ15NmV7BUGHcm9SesbHMqQyuggLq/oi71GdH+2UiSnEggzlIzS/+RSLVD54rj fdiazZNAFrgq8v49LSnz5xtibEziSOgTnaSoeM9h+66LPIV7Xho5gbl6coIjL+ZMuSnSOPxIPZf ifKdGXHRmMRNaytw7HRqOr/jU3oAW+gcS5DY0JVr+jBXbTWEvNga5Ig6GyHxcTnd9I9xmSLZdIG uwkQooSshEy3baL1rkFEg1QXuZVepHMWNrZbpjqouCGI/h/IvaRwYTDw162NPk= X-Authority-Info-Out: v=2.4 cv=S5jUAYsP c=1 sm=1 tr=0 ts=6991ad4f cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=lOv7bB1OiAV5i3s2B4UA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: tklFVbP83DU9ESml1z92Sc3Pjat3wCvM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 mlxlogscore=767 adultscore=0 bulkscore=0 suspectscore=0 mlxscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABBV4kei/EHOY4u2HTaJHSYw5i1G3kt3ADo/YWt+YVLQ/4fCxrwrHZ3Vz9FqHuA7+qHgtjztW5CsxQ9rV0rE8FDRXY2miRv1FU/51+BQMlf+SuJ9cYlnApcSvY91DnOTRkn4Us5TyTBKShL/1e0r00EV17evGt/KglPzlWgGWvzLVjXT6gGcBxD4Lx6TzGv/1w+Xe9guM8myNPt/wRCAjSEg7z+30yH+zET+TemY2juOHheq/VJzRXpf+r8QLQKfb+P4kzAO7/BCNd2+jyjha7jDVL3o4qav3cNGE4WCNlbwtCqv5xN6CbIqlB0ajGA4GB3KdJt5K/bEyHKAEyaNReqnjEvQ2c+FTOdXz6JDcKP1sCu2b+1g5BbebU7sEAC/VIY74SMIQQnvUbitpY8bD7VKT1xQvdAaDU2ikUXplBq1GOFKmfdA0TU3OYqlWgcj2XqVxzkICoEdMaIkLdSiu/WLMUjgM0uIkbJjDz09IHXnjcaYxNPD+/7AJqj8HWFhJqWEhQZOu2P+lMpzvUt8yGJk7LaM/VazFgSEnsP8BLRi2SL/WORK85VS+W4A1tbA/giIJ0At8e2Xvfq4sP5+Ckge3Bocprle0wcKsgiAYO5wzVeB+CWQSdkxrnxzuQOgV9axkq3YwekONh/WEomAGTjfioNjOGpwPi+L/UcoyqZNIsfy5J8mm40gBdZ7arHoXN4LZqT6e065YRAlwZ29t/tFEu6mA= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.8; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154934544154100 From Apple documentation: > When EL2 is disabled, PMU register accesses trigger "Trapped MSR, MRS, or > System Instruction" exceptions. When this happens, hv_vcpu_run()=E2=80=AF= returns, and the > =E2=80=AFhv_vcpu_exit_t=E2=80=AFobject contains the information about thi= s exception. > When EL2 is enabled, the handling of PMU register accesses is determined = by the PMUVer > field of ID_AA64DFR0_EL1=E2=80=AFregister. > If the PMUVer=E2=80=AFfield value is zero or is invalid, PMU register acc= esses generate "Undefined" > exceptions, which are sent to the guest. > If the PMUVer=E2=80=AFfield value is non-zero and valid, PMU register acc= esses are emulated by the framework. > The ID_AA64DFR0_EL1=E2=80=AFregister can be modified via hv_vcpu_set_sys_= reg=E2=80=AFAPI. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/hvf/hvf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index e0a51faf28..be1ff93e0e 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1285,7 +1285,7 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t re= g, uint64_t *val) ARMCPU *arm_cpu =3D ARM_CPU(cpu); CPUARMState *env =3D &arm_cpu->env; =20 - if (arm_feature(env, ARM_FEATURE_PMU)) { + if (!hvf_nested_virt_enabled() && arm_feature(env, ARM_FEATURE_PMU)) { switch (reg) { case SYSREG_PMCR_EL0: *val =3D env->cp15.c9_pmcr; @@ -1546,7 +1546,7 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t r= eg, uint64_t val) SYSREG_OP2(reg), val); =20 - if (arm_feature(env, ARM_FEATURE_PMU)) { + if (!hvf_nested_virt_enabled() && arm_feature(env, ARM_FEATURE_PMU)) { switch (reg) { case SYSREG_PMCCNTR_EL0: pmu_op_start(env); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154925; cv=none; d=zohomail.com; s=zohoarc; b=FduHOSs2cuWiBDXFqhIVT74ezVnSOy7wr7zG1NC2pgfQzA3WbkL6DYSpYrARax7Dl8aT/F6HG9+3ugCB3sMWwXZv6llUp1y8VP45P4TnQeYmLsJViIDeQICbX/DXPRtoZbVWZBHiLc/pbreB7uUD1gpWQYXaaTez5PHp0Om77Rw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154925; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fXwYscBvvtHt1b3c45aaMrtykZ4/ZWPzlwZ5Y4HBqO4=; b=Se3DWeM6GyEnUWxTpXU17eKW+jkI98Eb7HJEg+zBXcspGeJzth2VvYHbuZ/RML6yeFqluRnETbkWfUITK5XeThrk6zQvo6DN0looVpdK8IF708MmRCK9LyUiiuiHaMwONI2BlOTw/zQhuuFHo6AEkqmDUMrt7btMUJQpTnH9Qdw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154925452162.40353415048776; Sun, 15 Feb 2026 03:28:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGa-0005M4-Hl; Sun, 15 Feb 2026 06:26:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGV-0005J6-Qn for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:15 -0500 Received: from p-west2-cluster1-host7-snip4-7.eps.apple.com ([57.103.68.90] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGU-0007zy-2o for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:15 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 31920180018C; Sun, 15 Feb 2026 11:26:09 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id A99951800145; Sun, 15 Feb 2026 11:26:06 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154770; x=1773746770; bh=fXwYscBvvtHt1b3c45aaMrtykZ4/ZWPzlwZ5Y4HBqO4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=PUhI02Xu2UnuMth3Pl1r0LhrD6zXnWNWsGz5RxZ4m9HXA/2FINZFOc0tqK8QOLFU4C/PtQsLMX4U0lTllyvEcOWKIF0ULal9HfJ0khRUjxe78+gVB0GCM4IBbhw0h+vicKhERGzqjJpd3SxbgG5TUHaz6b3YkbszeQM3R5OqQD9MeOO5B5fwJrT/ZThtEs8gETwuOU20ortdKQb+Bi2oTKRIh3TrhYLnhmieSaFPn2K4K1YN1cNZmnPbUIv9OHjMSwUIap1IW3IUl80tdjXnMY9ysUZNJ94xhmrxlxKXTa6Q6t/zHzpEWDQGbcNGYaeG3wvVlgRa7qzX5kl4Q2Np5g== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 09/14] hvf: arm: allow exposing minimal PMU when running with nested virt on Date: Sun, 15 Feb 2026 12:25:38 +0100 Message-ID: <20260215112543.4817-10-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: HRsGl5R5cTCJ2cFH03flXbArNxYXOSme X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfXzvvrL8/0/AX4 mh/knK7g1CEEMH6DGIW6Q5G4NapcEaHfJySJRt+Sb7VIwrejhyTpkJieZbTrNwEmUDFlJ4upPru qFWZTGCr4Zfm5I372VWA7hx3KQZzMB+oo9aESA1PeVMSmq4D18HuTsvvhChmp8rgiKJvDBCDdk3 mEYo92J54d4phnBAeZfY2v5CToQBARgQI3s4yshc0OAWBXbwSp/3k46vFWE35h6a9eNydv5y1LY GkkIQmLdIp4k/LrjhkgrdDg4noX2dnAZi4mve4e7kDnDiJ9GriWWBYtrTYXE2cg3QmVxBtLIRSr 3AR+u9GZ/x4+6iHWeU6wTJIvzKfBDd9Z4AwCwo1tcT8Nh0jBS+KE5RVkH0iYbo= X-Proofpoint-ORIG-GUID: HRsGl5R5cTCJ2cFH03flXbArNxYXOSme X-Authority-Info-Out: v=2.4 cv=SPxPlevH c=1 sm=1 tr=0 ts=6991ad52 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=z0ix_qRbhGH81XwssrYA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 mlxlogscore=638 spamscore=0 lowpriorityscore=0 adultscore=0 mlxscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABd81Xva63T/UaMXidulM1fAIhy/7xbspg1v5xStqTld5CKkZYWrmBglY1YF4w9+YsxMvLTtQ10A0aXluu4N7QyH4enA6/0V0RhrJKkNg8revw6meYscKr5AlR0EM8k9239LZTXZ8HSAfAVWHNBMAjTs7JWXkQEQk69tYtPIdT2E5bmYP5gOM1Zl19GMPsk6jECXrITbWrQbWwjnNAcV7cu4RwxMBTvyPGqE7QvA1M8peb3hrJiTT6Ve28+39HnUn0gwWdGKJIkGOMiiZslRR5xgB4+/WfEMaxD1r+KLc8+Cx/O4eIKkVl/CbKFOdTyKTs2iy7G2aEqumEbWSaiFJV5TQKCEgj5OGDjfGUN9N8AjxPHS2yNyHKy4+50eU5aKm3UmjjP7rmDUuPPSWydo0FQRvjCcZ/4W7EIIHiE5Q0FZAzPJ4iqtLBL4+dv0M3PMAg5sqrfFZFCGjR3peYddzqDkHpqUb+dLIidkdjGDNnkGhYNxcc4HphxSsONKzhMMVDhB2dpHKkcDdSg/58rR0o7mY231CP7FoX3G3bEZNUCdNi+ovPCodgpz/vVo55UGRFkZObG5Jq6smw3YElDBX2JGrnfG4QyvL/fSpfMlAQE47lG2zC+QuxFBzlvt9/DRg2qieAlJuXZoDMZASRQo9ISOKOa6p73phzAh+rgjLRDllEDQ54IjXnUDXQ/i0jgb58XQiUnvs/J9F9DW2A7nEQ Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.90; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154928008158500 Content-Type: text/plain; charset="utf-8" When running with nested virt on, a minimum PMU is exposed by Hypervisor.fr= amework if a valid PMUVer register value is set. That PMU isn't exposed otherwise. Signed-off-by: Mohamed Mediouni --- target/arm/hvf/hvf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index be1ff93e0e..0f45e22221 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -879,6 +879,10 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPUFe= atures *ahcf) SET_IDREG(&host_isar, ID_AA64PFR1, GET_IDREG(&host_isar, ID_AA64PFR1) & ~R_ID_AA64PFR1_SME_MASK= ); =20 + if (hvf_nested_virt_enabled()) { + FIELD_DP64_IDREG(&host_isar, ID_AA64DFR0, PMUVER, 0x1); + } + ahcf->isar =3D host_isar; =20 /* --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154869; cv=none; d=zohomail.com; s=zohoarc; b=H1lwMp5YpIQZwOiMXA7o6rYSems2UPtsefSf2soXgzZm7yMqgxwP6asPoxZCsxHVWSWLMdIa78n4KOnzQpMOjZQrxztBjpwIl6ToOIXJ5OKg08vsXgBzCqwCB2hVqvRdU9oGHndeOn7ngWiQsAefT17LkvioiHC/6AzcIY3g5Ic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154869; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1uKhzDlSbas1IjPvaDDAfrSs4GAL5M/GoOUNIoCOEjg=; b=d/HyZKu+3LMp8mlZ+fAjofvUvdqLgubOKolAtnwmcbuGnb2VJ95HByenQTskOAHBoqaUTrA27qHfM5U/1oWB4rOtxY68zgkIt6RLN/bc7Y11R5wt2uH/ngrRpLF3aHvJYSytuLPEcswDR4IVYlLHhB7tCP9/x5PHPM/v31MaiQU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154869209568.5876469016316; Sun, 15 Feb 2026 03:27:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGc-0005NQ-T3; Sun, 15 Feb 2026 06:26:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGW-0005JU-7j for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:16 -0500 Received: from p-west2-cluster1-host7-snip4-8.eps.apple.com ([57.103.68.91] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGU-000806-9C for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:15 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 252551800145; Sun, 15 Feb 2026 11:26:11 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 033111800164; Sun, 15 Feb 2026 11:26:08 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154771; x=1773746771; bh=1uKhzDlSbas1IjPvaDDAfrSs4GAL5M/GoOUNIoCOEjg=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=GBm1w5atMxZSz54kaRyrF8OfE7yQCR2w1qiYQWXzudw7xd9NvPq5ogJmwxJlZ4GLJhEfJQKhgmSTT8YD6SQ1khqGDzJgmv3arbt6UU66rZTzPTC0bs3tOonmxtxFyISmWITrve0xP5TiOhD7hD18XGMlVm3elUefSNeHAnozXPLlBtxK5TtDF0deBFmTCl8RxSbaqDsUVhXW45tleF43nQApUl2QT5hbDl0+BIh1Z2yDjoRCVaI3viUH9kFWRDb9zgE0RbbGlwmVs9A4BRivkrBj2ud1yPN5/roZVrAGqwLqeAjIGa9RPjo+A+VzuhC8BVbMACNs1PBW3wFIKBE4cg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 10/14] target/arm: hvf: add asserts for code paths not leveraged when using the vGIC Date: Sun, 15 Feb 2026 12:25:39 +0100 Message-ID: <20260215112543.4817-11-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: EyQ0CsnqrdKamFTy-rX-3KwUl1AEXbls X-Proofpoint-ORIG-GUID: EyQ0CsnqrdKamFTy-rX-3KwUl1AEXbls X-Authority-Info-Out: v=2.4 cv=WIByn3sR c=1 sm=1 tr=0 ts=6991ad53 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=vbFX7M0ab_H1AmF9bzsA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfXw8bNI+lQCZN3 bexfUNVqASB9Eq1g0QPwWvmUyxBWXUwiY6ue5IAzJP6+D3TldqoXHNYulYO5bICAzlEsDVe3499 gykcF3RAJ3rOnDPsQgbsawPHXJy+lQBG9BITpMEWCpxNqyYVDkYA/b4V7vu30+5sMijihKHnrcM w75dBqvzAn09Idy6mt5bud2U5eExAHVMoKhgZY0lkD7fmQd/1RhbLlQjDlpPhpMj4VYIANXe0XR z0Gea2Pl61n7UeGf+/PNoLAH/ucsIwlY5SBjq8p95IqxMa1F8oeNEkZ/OIgY78uOOnW0qrwhN4y +fqgdBv8IB1kVnpDgu795GiS2IxbOOjwA59LodJGKJjO5nlP0+cBOcRDZ3ppHo= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 lowpriorityscore=0 mlxscore=0 suspectscore=0 malwarescore=0 clxscore=1030 adultscore=0 spamscore=0 bulkscore=0 mlxlogscore=480 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAAB6EzD68mzq3Iaatxaf+gZD2DaerlhCbewA9frVPCvfCfbQa2fVG+03UP4QHTy15Rd4OYnIDD/Wh/rSzFU6eP5dXi/s86QFE8KY09bMz3M1aPnhp9gUk1QOudaOvrA2FLNcSOggr1gapGeEEtiU65Do2NOOWudqKPwoIbGnghnnKMzvmOW0Q7UUk4k/rWUsk75BcGOh6qhgTzZVlAjT4A3bRhvgn8en5frhad4r6PmrdgIBPKGh9D0pcco4UqzwMzVCZbLjngm61uRQGmlMBkq53alGqPh/7/IIv5zh32tDKwm9DHfqAQy7XiafycguaQBKWW5IRdcg7BGIQBfIRKuIbUWZF+j7YBu6mdBx7YvH1CLOM0QDUbQVKVAkTZCPU9J38qsvT4f5Cnyyvm+F7TaZuJFg0kVd3+KNZAHQO0XpjwgGx/sRz3vLv34AyXV5qOVWA560rVkCamGkU3qTKeZ5Ik4c31f1QApXegQFmgm5NePcO8uxEJ7zMRJJJeWNtpAN0EKejuO8YZfGMEFhsOnjlTakFywIe+/xGLL3tw3EN/11PPFDJf8xtdWKp75T/udas9/jv0rDxMW+CqdaUoAz55AycYCxNN+DodWQSSTqIFZ0pANNnNJrBtuWWaQ5EbIJNbelXAU95QSBGZZx/pASntq5DSvLIQYNL2SUDlFEJvxMrBHWH95G/lRSxRNNfR7WiWRuW8yPB0= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.91; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154871606154100 Content-Type: text/plain; charset="utf-8" When using the vGIC, timers are directly handled by the platform. No vmexits ought to happen in that case. Abort if reaching those code paths. Signed-off-by: Mohamed Mediouni Reviewed-by: Mads Ynddal --- target/arm/hvf/hvf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 0f45e22221..0aae421ba6 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1365,6 +1365,7 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t re= g, uint64_t *val) case SYSREG_ICC_SGI1R_EL1: case SYSREG_ICC_SRE_EL1: case SYSREG_ICC_CTLR_EL1: + assert(!hvf_irqchip_in_kernel()); /* Call the TCG sysreg handler. This is only safe for GICv3 regs. = */ if (hvf_sysreg_read_cp(cpu, "GICv3", reg, val)) { return 0; @@ -1655,6 +1656,7 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t r= eg, uint64_t val) case SYSREG_ICC_SGI0R_EL1: case SYSREG_ICC_SGI1R_EL1: case SYSREG_ICC_SRE_EL1: + assert(!hvf_irqchip_in_kernel()); /* Call the TCG sysreg handler. This is only safe for GICv3 regs. = */ if (hvf_sysreg_write_cp(cpu, "GICv3", reg, val)) { return 0; @@ -2062,6 +2064,7 @@ static int hvf_handle_vmexit(CPUState *cpu, hv_vcpu_e= xit_t *exit) ret =3D hvf_handle_exception(cpu, &exit->exception); break; case HV_EXIT_REASON_VTIMER_ACTIVATED: + assert(!hvf_irqchip_in_kernel()); qemu_set_irq(arm_cpu->gt_timer_outputs[GTIMER_VIRT], 1); cpu->accel->vtimer_masked =3D true; break; --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154866; cv=none; d=zohomail.com; s=zohoarc; b=hYM1WZh0WR3hsIXtns8+yD2bjF9j7pw8Z4qQKJwgvUUDaOg6zyzmc3nSw5DDjD58EN0O0bhN7Z2OaaTARNzlcsu41wfQO5yYy9faetQIJECPg63y5GAIBjMIt/fh3z1LVoRJagkGlcbACXzXA6oMFQr5Dfg3tDbJGdMJr+AinGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154866; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FVokaBFGw8s/kbfJt1bNlUw/IqCgXWLByKpYAjS307s=; b=e6n8rTTtNYkJSrAwBS4aSXnTYyOkHVwMF/yXWvuwb0ikfgtItY0crFTTfN+h1tV/n0/k4Hst56slza8M3TyGgh/0VPbK1j6RcFk6v9b2g0ytR6sKnmcyQin9MxNcVUO+y2P5OADkCKRST4o8H0NRcQzHO1RY7AxSg2oLNTNIDiA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154866854806.7542748402662; Sun, 15 Feb 2026 03:27:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGf-0005QA-Sk; Sun, 15 Feb 2026 06:26:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGZ-0005LE-Du for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:19 -0500 Received: from p-west2-cluster1-host5-snip4-5.eps.apple.com ([57.103.68.48] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGV-00080W-0M for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:17 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 6623E18002AD; Sun, 15 Feb 2026 11:26:13 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 4807D18004DC; Sun, 15 Feb 2026 11:26:11 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154774; x=1773746774; bh=FVokaBFGw8s/kbfJt1bNlUw/IqCgXWLByKpYAjS307s=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=XRB1YaQb5GTC3NKz8mN4emqY05UcA2tL1yG7WKg/pbAedyvhOy6SiVxrPn/hF8gXK7wYtduV4t+NbsTAG6LFw7ly5LQ7nNw/gi5D8UvCyC9iZ6HuTDcr0yGJrpY/ocHNUrplfdXauS37C1RzXuwvcouC1NxZP8uBVdAJZtfKzpit+3loRBOPLgYZqhIan/gyDTWasFkSJT2NCq2U+4YExP4r2otzPFHqtVVZN/caq0+FKQLCiaIM+ZDHCrrPlbRstFc8cyt9hpy5pSHbZwAKPs5Y7hbpJQDfapSQ54oW+Bml9efh7khPYU8DwZYxr7rlVTjdlFinyc3r4fJhEv92aw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 11/14] hvf: sync registers used at EL2 Date: Sun, 15 Feb 2026 12:25:40 +0100 Message-ID: <20260215112543.4817-12-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: qvIa5CV_HgLdo8lsWgOuZ6YqSDdLwoTZ X-Proofpoint-GUID: qvIa5CV_HgLdo8lsWgOuZ6YqSDdLwoTZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX3xOnesgMLujd QBHCGaxGdwuyz9NNARvyUJS9bsf3IEZWmAYja1fz2JaW3OMzX0zl8aBQeEL1MLg6cJZ5/+JMaqH osF4z+FH/VnjvopP9ptIZTCuyvAJmBfbeRx7bM7tUaMNk7VUZqYzH43IqKCCV+bgvFCwiALps8A FUSbqtUNzNIHxqp+eefrtkj/BB1M2x/3CQWF5ZIvVnMIVm7f2It3ld9EdKVe0Gii5cMHIdQMeqG ZMqVYM54YZVBOjy6z6iGvC3tjLcd6anpIRQ4uh3TIz4iJz3eJBRcKNsqpii24ty9CAUNrzdWXcP jaI8N/mJlHw8rZzM5sVMcp7dKgiiIUgG8EOV28lA8xS70oghjmjwluGeQ9ziJE= X-Authority-Info-Out: v=2.4 cv=Vcf6/Vp9 c=1 sm=1 tr=0 ts=6991ad55 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=7gx8ALrZTGDtSAp3wEYA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=848 bulkscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 clxscore=1030 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABDHov+zv7mqR4JMY3pc/W5wrEH1Y1l9ErIi1/WakYCkO8tvz7btCqL7K/TaOppj263npxRL/KM3zVo+d0BNb4qD5R4GSdsi+wLHCb9LstxEj9G+GSylx2ByZB7xAKztXSLnyeXDY39IUgV9/LKZvv7WB3YzkfMZR/RwwMRlTpGqkbSDriU3HMv8LAcaDitX8NgvEHRSOKIWq46NroUZpd9F2WjBIW5Srwt7TZCWZ/SgVZJ3WGQLEnOkdzO1xQy46v6u+Tvo5CZgI2XbDrcwMuRsTHH61RPJNScNSABvaCW+xDFyrjv+7dnL3kaa9VmeA5HmQO4/fW0DvnPV+X4UgnGfJnyfq5HbWNE/8i+9EbtGfwGM/T8PHPmQy96n17toCHLgeXeOXSWV/pBsC5cS8d88Xu80A4ueYIWMS2fv3Ho7MiMsBrHc5FWqLVXDu7CQWwa0f52dA7HQcaYLj5pIy/fNhzRziZOVxqQCe7fZ/uDNPc/JokISPxmPePx8yTT3KbvDRVRG8TuT9gFw0WvFfA4BLP7xPTuRLdj7Pae0VvcceAMg/UATQvJ+24nmHQdkenTf08tzzQBHk1zqdCmOeybBL4TI+bo7IRWjjPHHjoJU/DTl6sfLr4zXk5QKtA6YljVJ+lmFQttlShf0Erx/4BTi5sdgEjgGFu0RChJ8iz3hmSGzq2Vi+Eeek= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.48; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154870358154100 Content-Type: text/plain; charset="utf-8" When starting up the VM at EL2, more sysregs are available. Sync the state = of those. In addition, sync the state of the EL1 physical timer when the vGIC is used= , even if running at EL1. However, no OS running at EL1 is expected to use those r= egisters. Signed-off-by: Mohamed Mediouni --- target/arm/hvf/hvf.c | 37 +++++++++++++++++++++++++++++++++---- target/arm/hvf/sysreg.c.inc | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 0aae421ba6..f286e6a014 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -412,13 +412,34 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { #define DEF_SYSREG(HVF_ID, ...) \ QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); =20 +#define DEF_SYSREG_EL2(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + +#define DEF_SYSREG_VGIC(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + +#define DEF_SYSREG_VGIC_EL2(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + #include "sysreg.c.inc" =20 #undef DEF_SYSREG +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 + +#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID}, +#define DEF_SYSREG_EL2(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID, .el2 =3D= true}, +#define DEF_SYSREG_VGIC(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID, .vgic = =3D true}, +#define DEF_SYSREG_VGIC_EL2(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID, tru= e, true}, + +struct hvf_sreg { + hv_sys_reg_t sreg; + bool vgic; + bool el2; +}; =20 -#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, - -static const hv_sys_reg_t hvf_sreg_list[] =3D { +static struct hvf_sreg hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 @@ -1052,11 +1073,19 @@ int hvf_arch_init_vcpu(CPUState *cpu) =20 /* Populate cp list for all known sysregs */ for (i =3D 0; i < sregs_match_len; i++) { - hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; + hv_sys_reg_t hvf_id =3D hvf_sreg_list[i].sreg; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, ke= y); =20 + if (hvf_sreg_list[i].vgic && !hvf_irqchip_in_kernel()) { + continue; + } + + if (hvf_sreg_list[i].el2 && !hvf_nested_virt_enabled()) { + continue; + } + if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index 067a8603fa..ce4a4fdc68 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -145,3 +145,38 @@ DEF_SYSREG(HV_SYS_REG_TPIDRRO_EL0, 3, 3, 13, 0, 3) DEF_SYSREG(HV_SYS_REG_CNTV_CTL_EL0, 3, 3, 14, 3, 1) DEF_SYSREG(HV_SYS_REG_CNTV_CVAL_EL0, 3, 3, 14, 3, 2) DEF_SYSREG(HV_SYS_REG_SP_EL1, 3, 4, 4, 1, 0) + +DEF_SYSREG_VGIC(HV_SYS_REG_CNTP_CTL_EL0, 3, 3, 14, 2, 1) +DEF_SYSREG_VGIC(HV_SYS_REG_CNTP_CVAL_EL0, 3, 3, 14, 2, 2) +#ifdef SYNC_NO_RAW_REGS +DEF_SYSREG_VGIC(HV_SYS_REG_CNTP_TVAL_EL0, 3, 3, 14, 2, 0) +#endif + +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHCTL_EL2, 3, 4, 14, 1, 0) +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHP_CVAL_EL2, 3, 4, 14, 2, 2) +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHP_CTL_EL2, 3, 4, 14, 2, 1) +#ifdef SYNC_NO_RAW_REGS +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHP_TVAL_EL2, 3, 4, 14, 2, 0) +#endif +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTVOFF_EL2, 3, 4, 14, 0, 3) + +DEF_SYSREG_EL2(HV_SYS_REG_CPTR_EL2, 3, 4, 1, 1, 2) +DEF_SYSREG_EL2(HV_SYS_REG_ELR_EL2, 3, 4, 4, 0, 1) +DEF_SYSREG_EL2(HV_SYS_REG_ESR_EL2, 3, 4, 5, 2, 0) +DEF_SYSREG_EL2(HV_SYS_REG_FAR_EL2, 3, 4, 6, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_HCR_EL2, 3, 4, 1, 1, 0) +DEF_SYSREG_EL2(HV_SYS_REG_HPFAR_EL2, 3, 4, 6, 0, 4) +DEF_SYSREG_EL2(HV_SYS_REG_MAIR_EL2, 3, 4, 10, 2, 0) +DEF_SYSREG_EL2(HV_SYS_REG_MDCR_EL2, 3, 4, 1, 1, 1) +DEF_SYSREG_EL2(HV_SYS_REG_SCTLR_EL2, 3, 4, 1, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_SPSR_EL2, 3, 4, 4, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_SP_EL2, 3, 6, 4, 1, 0) +DEF_SYSREG_EL2(HV_SYS_REG_TCR_EL2, 3, 4, 2, 0, 2) +DEF_SYSREG_EL2(HV_SYS_REG_TPIDR_EL2, 3, 4, 13, 0, 2) +DEF_SYSREG_EL2(HV_SYS_REG_TTBR0_EL2, 3, 4, 2, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_TTBR1_EL2, 3, 4, 2, 0, 1) +DEF_SYSREG_EL2(HV_SYS_REG_VBAR_EL2, 3, 4, 12, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_VMPIDR_EL2, 3, 4, 0, 0, 5) +DEF_SYSREG_EL2(HV_SYS_REG_VPIDR_EL2, 3, 4, 0, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_VTCR_EL2, 3, 4, 2, 1, 2) +DEF_SYSREG_EL2(HV_SYS_REG_VTTBR_EL2, 3, 4, 2, 1, 0) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154925; cv=none; d=zohomail.com; s=zohoarc; b=apial1xkNfm46HKk2Z+A37/X9hyzIB/qy1bI/z2R403wSl+fwgaNOttQGoptHFko9sSIpvBP2RFGku7n5Yd9A/L1Q3u3SKF+bnorSf51a1bQyRX+ZGft+BOudyVjeoesNctQD/sXzlrCnX8swBS49nwADONGWjSMkdkT/zoUDXo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154925; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Y6XyA1f2arTOnceFjb8L6hyLWH6tKlG/yXeOWw4vtXA=; b=J93u4b1O0/kmp47Ks0sFyfy894VSaNC4pe9uQFc+Qaerw20gAg2DGEZNMcHdkzqh2VSkScic3ZgRxLzapvgM5LedEl5iR3oZScIjToZQ9TtFXc6aEbGAXwVgYVYdtpW6Uqrj8X5Mc6qS8dRk0npoPwyHl5oUMgGmIzpIirBmwWk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154925703303.8282598483272; Sun, 15 Feb 2026 03:28:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGg-0005QR-EO; Sun, 15 Feb 2026 06:26:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGa-0005M9-PE for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:20 -0500 Received: from p-west2-cluster1-host9-snip4-3.eps.apple.com ([57.103.68.106] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGZ-00081L-50 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:20 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id D465A1800164; Sun, 15 Feb 2026 11:26:15 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 8DF1B18004DB; Sun, 15 Feb 2026 11:26:13 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154776; x=1773746776; bh=Y6XyA1f2arTOnceFjb8L6hyLWH6tKlG/yXeOWw4vtXA=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=S11rd9+BF5m0GHb+Ac/SsgZ/X5HpRoV+swSBmhYV7UooWSQUlrvjn3TN5elrBLZQinbpOPM64N2Td/QSAgG2W1Voye/APpD8NXu9VdbpJoENDg2fi/pAnzX7QzzyIzI1o6R+XIinkRPGDZL+05IgLMIgky+K1A/Ozu4IlX7HePS/zQDJ3Q7dsT8TJuGeb61bMfI55c3il3hMFrnAXf5dfJYJvoEWE2eq3V9OG/duusP+e0To5M+I2Ngw2Yu5kFEU493NJYyiLvXoQhzI4z8A9uGso/tnFK1v8TssfQkpkRqfTEkpB/4XzMTTNgIXEyqYySYiTnGb9N9gRRXyh8hQbg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v10 12/14] target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1 Date: Sun, 15 Feb 2026 12:25:41 +0100 Message-ID: <20260215112543.4817-13-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX3Vd1vtFsVgSk WLmnOTHw5taHIewhcUbWni+zxlKEBJY2DXd8NXP9eyOmNeFZHL7biIcdLByPg5TkFWKd1pF+gsl LQd92R0dUyj8XWcAOnTu+uzg9s4BjK8p6l8Ygs8TMz0qRkvROFgLgOYK9xSX9HXcTZsr9H7SnF5 mLayWoQ8WfqSQF6jhHUsc/I/iBURQd4Dn7zfI63U+68OnmiwtHRgD1A25Ku5yfzqNkTAdYZbOvQ vSfnNgoD1opQO+Ht0xs00tfYXnHBAtvVB1QCilmWLVa+9hIFdPOzh98NpKLyf1+6+OvDV8rATJv 1e2xHSf9vl0HqWla9zwh/wiyFdUAmtE92xZaTztwsSwVFfTIAh6rSNSPaNUxVU= X-Proofpoint-ORIG-GUID: YlgQNDROTELYr3aPwz8uovpIf0WrIhJE X-Authority-Info-Out: v=2.4 cv=Z73h3XRA c=1 sm=1 tr=0 ts=6991ad58 cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=L1bH-B2CdzmaWMF7168A:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: YlgQNDROTELYr3aPwz8uovpIf0WrIhJE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 clxscore=1030 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 mlxlogscore=696 bulkscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABpZafzsTL747uXfRUHVrZ+XNMAN2Ywcng4q2UkMDDmX+oJGJtCkAuV2TnfimKraI7GDbmgZyriBUj7x0rC2YGXQNDaWQS2LVOW8VaYW8lys0ug5yZwr9p53PHtW7V2iYEfhKw+KNRaeYIyLv0Bm82Pgp5soYS36wnrwrXMRITOweClNkpbg66/1mp7R4in1mAUap/xBVqsZMVCJeq1DeIX0ZUIXGJLwA5bwzHb4MUWivEGAUjTRWHyVIAfaHpfcXebnAqmmAKK5kwYprM6mMFx7ZN8+eVz6u1Fy2yjJ4EZMAVrejNuHMuo6gJyGeL8gmIAzq8+bBenuS+5CP0IiXwa7gBggjhn62822dG+5Kr0zUAtiRfTrs/chDLSbzYsoIznqE+VpDNa/hUxJHxzTBL6qqVbonlmBk2/SuTnExLu5WOcn8BLuyR48i2P2KdoFRXSiw/9uc3XIzMnQUakyP2QR8VkHwEa3gxKUWSXewFfrJGQNcdAj/CYoTw/veOBQZGZ5zPYTaNiBp0KoUOw3mlHRYZuIxjiUNjUqkRrhIklyNzn701BPZog8v0G6WxStBs+1Sk6Dr99wdRFtxqdRzh67gdK65AcZZoP4cgYnQ1EXaDdFr/PrdaRRl1uvWqW6qXw3KB+HJPCmxVbGrQR/6hQwwwHWKXZmCUo2prs2/y6LrSLTziyuWwbnQIFzb9ujyE6HZOVl8to8jZX+cTgMifR2kTpCaGyA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.106; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154926217154100 HVF traps accesses to CNTHCTL_EL2. For nested guests, HVF traps accesses to= MDCCINT_EL1. Pass through those accesses to the Hypervisor.framework library. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/hvf/hvf.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index f286e6a014..8d537b6201 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -296,6 +296,10 @@ void hvf_arm_init_debug(void) #define SYSREG_DBGWVR15_EL1 SYSREG(2, 0, 0, 15, 6) #define SYSREG_DBGWCR15_EL1 SYSREG(2, 0, 0, 15, 7) =20 +/* EL2 registers */ +#define SYSREG_CNTHCTL_EL2 SYSREG(3, 4, 14, 1, 0) +#define SYSREG_MDCCINT_EL1 SYSREG(2, 0, 0, 2, 0) + #define WFX_IS_WFE (1 << 0) =20 #define TMR_CTL_ENABLE (1 << 0) @@ -1368,6 +1372,14 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t r= eg, uint64_t *val) case SYSREG_OSDLR_EL1: /* Dummy register */ return 0; + case SYSREG_CNTHCTL_EL2: + if (__builtin_available(macOS 15.0, *)) { + assert_hvf_ok(hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_C= NTHCTL_EL2, val)); + } + return 0; + case SYSREG_MDCCINT_EL1: + assert_hvf_ok(hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_MDCCI= NT_EL1, val)); + return 0; case SYSREG_ICC_AP0R0_EL1: case SYSREG_ICC_AP0R1_EL1: case SYSREG_ICC_AP0R2_EL1: @@ -1656,6 +1668,14 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t = reg, uint64_t val) case SYSREG_OSDLR_EL1: /* Dummy register */ return 0; + case SYSREG_CNTHCTL_EL2: + if (__builtin_available(macOS 15.0, *)) { + assert_hvf_ok(hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_C= NTHCTL_EL2, val)); + } + return 0; + case SYSREG_MDCCINT_EL1: + assert_hvf_ok(hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_MDCCI= NT_EL1, val)); + return 0; case SYSREG_LORC_EL1: /* Dummy register */ return 0; --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154831; cv=none; d=zohomail.com; s=zohoarc; b=epcU+o6cFm9DX/+JgOuDr8af21YDmrLHrvZY28F98tbSQChYp7tYlsNbLZ/tkvp/prYlr39QMXCdZbFeJMi4LqKfekwwKm7gglJAKsY3gkwnDJo2U6iFgOs4ja15y4YUGPWVEw7Ks5hXZY+pzPiu6UMaO0dCEQKbV5FFuBy3RzE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154831; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/azSuFgxZtyPhovo63n8+YZWHs84+y+5HTGGEjQkROk=; b=j8DwO9rC4YpTXuoHv3Z9KbXddjo+F5Wo1enwPyrgk+kWY/EG5R/nSTX+WfL5X8mzlfrloknWs1JgLD85ldWXzJCP33lKI0DyK81pjHxlHosbajO6Fx9L9vrr58r9yG2K3VwYLhu0oID05VGAMG16nFvJldYqllricMaKokojIsA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17711548313231005.124652570768; Sun, 15 Feb 2026 03:27:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGf-0005QB-T7; Sun, 15 Feb 2026 06:26:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGb-0005Mz-W7 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:22 -0500 Received: from p-west2-cluster1-host4-snip4-10.eps.apple.com ([57.103.68.83] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGZ-00081a-H9 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:21 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 24B0018002A9; Sun, 15 Feb 2026 11:26:18 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 0802718002AA; Sun, 15 Feb 2026 11:26:15 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154778; x=1773746778; bh=/azSuFgxZtyPhovo63n8+YZWHs84+y+5HTGGEjQkROk=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=JIOZI0snpfzqoelgwqFp6+901ZBgpfuzFd5jKi1VLdr6fDmH11p/mUbHCNG9NL15G6KGIky5wKjssI+8t3Xk/DptiYsSwyH9sz37t44l/CZrhXf7Ra8atAfIAbjFudBu0s97/+NRQ92Ou+qfznKCtvHeGNH8LtUaCCtlelOFDGoJ8jfPc39xJjTqX1p5vLOg77jLAmMOQzwlCw6hHahITko0cIN9YCNs5SPRA8SiPgWxfBVkZwY+6QWH9KLSyxTuWlDvR5GOpo8YAaUofxQiO9FeCuy9UDRCCyt4w7c+HkUFZ7e0OPPTJDWA/+80BkE3JCUrR7fqRACAB//xADKWpw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 13/14] hvf: enable nested virtualisation support Date: Sun, 15 Feb 2026 12:25:42 +0100 Message-ID: <20260215112543.4817-14-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: dQbyVxVvr3imzNBlgDXVRIw2qrGEBeMX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX6Z5LB+R3M97F 5OY2X2joIN4FL8XhZ3NSxmpnBdqiPk77A1RizbnicyfBpjE5ScEDEOz4A1Lw8bsBm/AeD0xL6XA NE9OkOeST3zi9208wFUbolG8WRPjLy7+TJ+6korB05SVuNZ6M2V/IqWwEH+QEhfP1Qe9DmQtfVd Y6LfHZW/cagOJDukpmfBZEPw25qRgBXjsYqA6rRP+U46oSq9D8nfl5Jpfnad5w/FVkcCEeeqbpg 8oYyrgEVxgYUs35pFARvYC3H4onuDLcrTdXoIWp6SbS15kTvUxHcQHcEh2SorrsHtTObfpTigZ8 rTF/z4QB1pd36M9A57gprMnWl0RrKZpEtvAjeH1AsMUlJm0BiBf6sWJoiuW28g= X-Proofpoint-ORIG-GUID: dQbyVxVvr3imzNBlgDXVRIw2qrGEBeMX X-Authority-Info-Out: v=2.4 cv=JLY2csKb c=1 sm=1 tr=0 ts=6991ad5a cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=cdDYXil7g4BivNFjHqQA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 malwarescore=0 mlxlogscore=934 mlxscore=0 phishscore=0 clxscore=1030 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABLlWq4IZ1m3J+MEv7Dcj8c9b99UmeguNnttm68WFAqjXUu3fBewXewKFXGreXI2lMs5BY5LIw4D+W1eBiWboKgwZP2uJ+yENB2257pGYIn7JrczPMwnl+GLohAUaodeaXw4f++Ljc5shH0Tr6pKEsJgj49GDrR/Z10BEmyUynYb+g7/9j9IqSOwhtc8Ha/LUhocSVOeAOR3D1JibLwHQgDvlasMNm16giZzvWC3v7YjvIad3zxCclHPBWnQlzhEF/poQCg5A32pM+3b/BqYeoPY2SxifF9xW3eN2jBt7/QavzZT7Gs+AHsKoBW8wQWn7X6o7/iyEllGPVSyq0QVzuTMILNU2bFZ49m9gwU7oUpmnxP/zs3O5LRSa78bh3IMrW7mM04rHH9Dj+/P7p2u9y+Z68UJP38SYqehhtIBE30hCRucnipWOhiCotQpU2FKV3KQ07irDgfipObC1/I/AuFikLUyP4MDQYhvLWi7iYEhYjPiw2TVuwIiTr22tKdmwrFA4lLZbqVotD3WyP3Weewnh4p2mDysThsWEmkMa5QmfhgiAmaaJG29gb/l3F8uNrGNI8v8QY5dSS27QezYrCt9dLjAok2XjtXcyDVdFK+1YPyrROVSH/aYrRJ2Uu3ICZx89rQVAq6peP12PPzIUEfjqnxhWu6YGwOqm20YT7QNMwkObHWlxaQzLUo8VZwSBW30sJ6RFUEg0R Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.68.83; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154834573158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- hw/arm/virt.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 071b082786..a7cb6237f7 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2394,13 +2394,20 @@ static void machvirt_init(MachineState *machine) exit(1); } =20 - if (vms->virt && !kvm_enabled() && !tcg_enabled() && !qtest_enabled())= { + if (vms->virt && !kvm_enabled() && !tcg_enabled() + && !hvf_enabled() && !qtest_enabled()) { error_report("mach-virt: %s does not support providing " "Virtualization extensions to the guest CPU", current_accel_name()); exit(1); } =20 + if (vms->virt && hvf_enabled() && !hvf_irqchip_in_kernel()) { + error_report("mach-virt: For HVF and Virtualization extensions " + "only kernel-irqchip=3Don is currently supported"); + exit(1); + } + if (vms->mte && hvf_enabled()) { error_report("mach-virt: %s does not support providing " "MTE to the guest CPU", --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 04:21:45 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771154896; cv=none; d=zohomail.com; s=zohoarc; b=grLV6kqKRftgk0JlJHIBZHrSjlftwzmM4bHSDMDDPjmUhue6vy7CxinALLKnfIK7qrWxz4F33rtuV7TcPIGqXmEIbYOKdmLdTpaSzhakHtA4JDjaSjlEydk7YCf9LfOcHEAbnNAOH6gxhpmCL5ol7CcOQi/HD1UxjvrLt8v0GCY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771154896; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PaO3gLaERUfhv9HHc/GfHuuWbKk4K4/t5EAf8ycHg6c=; b=HllFrjTrwVLbATYaogwWRTxcMfRNo4m3u3qVqoi9hCqvtR4LxCZrLhJ4NP7SQ3G8pfaI5OwgMUUNcyCIfGMD/rdy32d9Bax5zSyNuRF7/V9JoSkQFEh5xAPVra6SmlXN4n/ZvU9HH2spwBh15QGm/biM5ZRWkADA0YcUu5/t6E0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771154896106645.3622214097755; Sun, 15 Feb 2026 03:28:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vraGh-0005QW-50; Sun, 15 Feb 2026 06:26:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGd-0005Nt-AZ for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:23 -0500 Received: from p-west2-cluster3-host6-snip4-5.eps.apple.com ([57.103.69.98] helo=outbound.mr.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vraGb-00082D-O5 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 06:26:23 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPS id 4131118004D8; Sun, 15 Feb 2026 11:26:20 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-100-percent-0 (Postfix) with ESMTPSA id 4DAD718004DA; Sun, 15 Feb 2026 11:26:18 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771154780; x=1773746780; bh=PaO3gLaERUfhv9HHc/GfHuuWbKk4K4/t5EAf8ycHg6c=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=NxzdrM18srkpyHZ8ec65XwhEN8EMG3iRARi/Rb7rnMm2+pEcp2L1dqicfv1XPb3pv0libnyF0xKtF+w37a21yu9Lj6ac4jk51aLOzrJJSSa9GrsNYeqHiRe1YxMv/HTkK729SaGlrjW32BnLY1GShz1RGE7MnQ1wRMT9J9mWdRet1OBuslCX+FHCW6T1+xw2UhFphLXXKMH9LkiSFDoXIEn9Y7+fKWVeGeTP6a3y24R2mA9xlVIPAgyOmeW81fXQZqToYTPIPDv3RsFFaREvQScJsOlSIbC4D5libGfGEO0BQT4xvsf3W5mg8SvUWZi3B/pmxhPk7XoSqqlMjMUUAg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Mads Ynddal , Roman Bolshakov , Phil Dennis-Jordan , Alexander Graf , Paolo Bonzini , Cameron Esfahani , Mohamed Mediouni Subject: [PATCH v10 14/14] hvf: arm: warn instead of assert on a write_list_to_cpustate mismatch Date: Sun, 15 Feb 2026 12:25:43 +0100 Message-ID: <20260215112543.4817-15-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260215112543.4817-1-mohamed@unpredictable.fr> References: <20260215112543.4817-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: oRGP5NC6UGTaOo_6c7iILmHZfWAs_ycC X-Proofpoint-GUID: oRGP5NC6UGTaOo_6c7iILmHZfWAs_ycC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE1MDA5MiBTYWx0ZWRfX9MYqtbChQZ9Y Xbx911Zjq/Cb8gUDtwJ1wmt3EJJGOHH1WB/YM9oTqvIlfpx5ecWqKZOCGU4mZAwS1Hz85NsNO3+ uLXA2HoVJFoFybL5uAVp73w8f88cINkWyH9PIzfG8UhOjrzoo6oC/osIpaZ/gAudSCcIM92Inj/ OlJ0pHxecRuGDZPftAGEjDJP/HeCaqjYDFvJn45msG+7lX7m8UK7ZFZ5FXXMGNZliMZ7DWR2N38 zl9OIah0RndhjrrwsUTk/pYXWT6ZTpmzMq8dRUyXKvwpuikMUcLMuYA3gyxZiJyp911mu+C8H29 sJV0Iok5wy7DMZ+y3M8FucS/n+Fg8ijGcvEwNfUthsx1ODSGmeRYQ09Y0QVyq8= X-Authority-Info-Out: v=2.4 cv=Vcf6/Vp9 c=1 sm=1 tr=0 ts=6991ad5c cx=c_apl:c_apl_out:c_pps a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=U3Ud8cxJ3jSva-eiQ1oA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-15_04,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=475 bulkscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 clxscore=1030 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602150092 X-JNJ: AAAAAAABNyMGlWQW0ZLsRJYKbH19kQ8TP8VYzj6CJZG2S+xFY3r7QZBqxkLVAhm52c7KKbVHONCwYks0VJBOFS7VY5bBuZUoVFNAk+GPeXY44CYMdE+oJLhgPRkO5KwL5Ww9RW4YRf5P+KA1BkSpJA6FBTH2T+H+uKZXtBxuRv7StdC9ads9pokU0gbf3cN8RmzYcZ7ArwHeW9qZAvI0XWsw17vz3P9wFwu1R/eHDtawX8Q4HrGH3Res7HmAKFjra5P9nZ8xKcb2ScxFj25FchGOL26Mgakeoqx5aQnxW/eFIqfyfb+qdCqjHZj3ylp7QrIVgpCCz7h5BqGYduib1xH6nn8PYB1bZuXbo4SNn/ijrcgvbh1blSYLVglugZ4KPfxtQVjxfv5btHFqdav06Z+AROo5TQJcLf+6Zh5nbyYqeMLaDDyDhKe0S8N9+kMdDgM0cAYfN/+mhEGzhh/zQBS9zsRJ5FJM5FGnhc432k2IdtEdVBNHDCeJxGYRwE/fe6d3i4HygCRb00eP0+idd+ohOMcIL6WjNpL++dFi1IGKG9ojBMbi2F7m2EkfDW6+v/L4f+8HNLsXUKIMw+mlqOQ7ECWR3cpkJXk8tnrPHWK/ocIIFHMai8aqqkGND5Mvo1cz7MjLve6ortxywq5xctF0zKoEU71wv3XW167c0MON5B8D/GWveQGvpiQ+PiS7StWk3NdqGJjlwGM+nhQv991Iot3TnENq Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.69.98; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771154898012158500 Content-Type: text/plain; charset="utf-8" For VM save/restore in nested virt scenarios, to be triaged later. Signed-off-by: Mohamed Mediouni --- target/arm/hvf/hvf.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 8d537b6201..4f3c322776 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -653,7 +653,12 @@ int hvf_arch_get_registers(CPUState *cpu) =20 arm_cpu->cpreg_values[i] =3D val; } - assert(write_list_to_cpustate(arm_cpu)); + + /* Don't make this fatal for now. */ + if (write_list_to_cpustate(arm_cpu)) { + warn_report("hvf_arch_get_registers: not all registers are matchin= g"); + } + =20 aarch64_restore_sp(env, arm_current_el(env)); =20 --=20 2.50.1 (Apple Git-155)