From nobody Mon Apr 13 13:55:22 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=1772785921; cv=none; d=zohomail.com; s=zohoarc; b=JoIiwVXtDnZ6s9B9yO4so9JN867ImNWyIJufY5YQTJs1yhV7CGCGOXeDnQyXJcBDd1r4K5BX2y1CCNlpK4e7rG7TFSwY2fcwd06z9b9eeImxpRqbtd/U+tNQx3A5Wk+4mT8HF6dk1QaxAm8vR9bduNYoBD1Ilk5P7upfwKnMy9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785921; 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=9oCqgkLy0DFJ4Z9S9ppARUIR4xtUYlH2rZkEz4wFBJQ=; b=T78hPvJKISIhkdw0dX+lWRP7Pv1BOEK4hrfWNcTCAPG77jfXr64IGpl5X4kg+zjJl/Z6WM4Qv9X1c37Ioma0dIzhR+KpofPA1UfrryVtDL5SzJ1KughRdvKN+gyz5jVpg3etCe/RZ/HmFSHRYMSH+pv5f84oCdOYN0O81nJNw0o= 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 1772785921973958.0838840868695; Fri, 6 Mar 2026 00:32:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQal-00075X-RI; Fri, 06 Mar 2026 03:31:28 -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 1vyQak-00074w-E2 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:26 -0500 Received: from p-west2-cluster6-host2-snip4-10.eps.apple.com ([57.103.70.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 1vyQai-0002RE-UQ for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:26 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 0F94218003E2; Fri, 6 Mar 2026 08:31:21 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 215FD18001A6; Fri, 6 Mar 2026 08:31:18 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785883; x=1775377883; bh=9oCqgkLy0DFJ4Z9S9ppARUIR4xtUYlH2rZkEz4wFBJQ=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=JXdd+73xgx4DKlj8kHLiG7NB1LbaJ+vvs13Qu+Mh/wb9WA1lhQ+iKDSxfP5+pznaHQxszyDVSH8DG0MoDVE7DFPwhOCxSuh+EdDonZLM4yvrcTofLSaVOuEr4eaTpb+pWjeqvLVPmOi8yXkeB87lKWzoK2cHLmK7xQQ7hEFK8RcM1RZksrgtLAB0UYWu7GJaQKFJXhP1KMZPfyXlbIzTKgWq15FRISqHvnCdxnqUa/N5uG7JH2A62AY8/pJeeSmjwdSJBireEp763+vMPcuSHy2B09cDTgG+e9SJ0a62l0bB+EnYrXN7kHedP2onCfgxJq1iX9GCmIER69ZLwh0QpA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 01/19] hw/arm: virt: remove hvf_arm.h include Date: Fri, 6 Mar 2026 09:30:55 +0100 Message-ID: <20260306083113.74177-2-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=EPwLElZC c=1 sm=1 tr=0 ts=69aa90db cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=lDyTXvYnw_i6wWSIVMAA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 X-Proofpoint-GUID: KIj1ml9nkwWl7DUwkWUpqT1IWQxg9zOV X-Proofpoint-ORIG-GUID: KIj1ml9nkwWl7DUwkWUpqT1IWQxg9zOV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfXyXSedWLWL2JP bOJUNLDkeETRSIYwm2JnXqpClzSQAN28DcOB44A1KRo+plw2IYL8aJcEqOwU54MIh58qW4JyFUg EwJ/L8TLPwu4Amz8umMENbIV6YT+3ypmC04Qhn/3WGcCnH+aN0JlhPgBSuSk2RYKc4gNTVvRgr9 siJ0C4LPHWDMmIJPGtOiOuaMbE8xhn6V3GHT0tkmHubwoFIkr+SsEi6PSJ+CwE+40T6s+W/YzFi b/RwfZcz+tSMJP5PET1rJ0Q9ptidA3aUxO7uBdX442zHBbaU8vWDTQsZ/h6uVgbx1VhhSiO2kSg hsrIs1yFU2l97TUHt+xYA72Xedwi2faRnzvKcYinRxKhqlZK53pUNJKOqQYcZI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 spamscore=0 bulkscore=0 phishscore=0 mlxlogscore=666 suspectscore=0 lowpriorityscore=0 clxscore=1030 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABR1EWtAI+moYx6ZKIWzRERu+Cvlc+4et2mrpZtvF/BHBOCJhSqRmu/DoK+4rIo+X8udIY6DWqy7xdNkImsayICqHAj4kaR2jJU+EJrQJgoR+Xr4xYKAUVJbgQa0yT0oWiSWDTM1isjfMgm0aKdSzNAeJgzgFImQGkTqS3ymqJlPSGJZvxISOIm6/ZLBqaJIYnKZLVScAwfRsdopKT3e6PfnOGTTZUPvb+bL1rUaFXWvch4AiJk2q8Jdc+cD0AXHBW0z0z52UNjcWlHFpTHqmCT/VO2X9HXPvE0MqUwUjodFpANtmpO4nNfJlbKPqgHj1FJllimx4YRyluWZHFat702eWkznYLRpA6QFcCJGIf5Oj2N4fdAIGCcHpR2akxPjSHeY3H29PddEJ6R8YojXpviLNRVaS62yXZJqJc8rmkomEXm9smGI9qX2CUkYF9w0pY4+yyRo6uPT8J3jdNFu42iWowiov5pFN4cx72fIyyn0jNrFipooC4f5B1j7uud+oPU/CFVuYkUME8tJ7Lc0Y8fXb69c9pEuE4OIj8bfPHSKiVdW7MYv1m8tLGrOSO3oFuqqMGF3qA4vUsbSe1AzI0lHTbzRpgQeqUMtor8+hZNPG1Y8iBeHa3svYgUD2v63+G9gakSrG1k1K17sdRhZzef2EawCC++OgWPcmUgoAoluaa2Lg12cfwJsa1x1WCcQqI8hNohI/obarXVo809N5ChNfR01cikrDZkMWePozm+EcMKfdLuy8neqx6j7jdAo53jl5Frm+K 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.70.83; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785924976154100 Content-Type: text/plain; charset="utf-8" Having that include breaks the build for Linux after inclusion of SME suppo= rt. Signed-off-by: Mohamed Mediouni Reviewed-by: Peter Maydell --- hw/arm/virt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index cab2e21e8a..7456614d05 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -71,7 +71,6 @@ #include "hw/intc/arm_gicv3_its_common.h" #include "hw/core/irq.h" #include "kvm_arm.h" -#include "hvf_arm.h" #include "whpx_arm.h" #include "hw/firmware/smbios.h" #include "qapi/visitor.h" --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772785936; cv=none; d=zohomail.com; s=zohoarc; b=WKwvnloYedN/88HZuB2SQR6JAAJ7PrQlVK3vihlsWdX2ymp9lhQZjUKKz3GO0o0eHP0njDMP4RgwnPCK4eD7SjOv1PKOcuKNdr67iOoUpZVRAb/eZBEqDy/S4oOt8wo6WZNffBcyvh67ECKqLmvy9Nwbqbx7yRVTGp2SPTiDUWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785936; 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=tFjBgogMlPKjObzgC9NyXUV+/x9p26nb2g8GiPpnHM0=; b=I97EG19MbGgUnZaJHyhfFOtr90K3V7JBadQX4jX1Geb+Cc0KSCXgQba2qEza6hPVULjX6/CRvIHE+WCdBUMRThDyrgpDlBwaQOFoVQ+wvSSGcK16N/Tyd041ep1zFjK9wglYjNXMbb2YC6pZKnHIOWZqehB5JptB5YGUP4hqzDI= 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 177278593645079.62686875706083; Fri, 6 Mar 2026 00:32:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQbM-0007L0-8X; Fri, 06 Mar 2026 03:32:06 -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 1vyQam-00076O-L7 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:30 -0500 Received: from p-west2-cluster6-host9-snip4-3.eps.apple.com ([57.103.70.86] 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 1vyQal-0002RT-8f for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:28 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 8A72618003C2; Fri, 6 Mar 2026 08:31:24 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id BB61418000A9; Fri, 6 Mar 2026 08:31:21 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785885; x=1775377885; bh=tFjBgogMlPKjObzgC9NyXUV+/x9p26nb2g8GiPpnHM0=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=UZMrU9cQ5JREbcdBu0lMKpWzRDnpUby9lg19aPWJUD/GBP161nM8s3QrNh9AqCXMcydbDqA5Ar8/WDh36p8NjFdhSw0ZoDXg68fsPo6vklfdOOUvbUP4CB8HCGFwiAVpATxl4NQBNicznGsEtxHuxu+G3w0WI0dGPu7SRHubhr1PbVhPaqWkpbZ+pUgtjck2d9YvLBRzrTJ40HdZsDYZOx2SUG5qsyLYo7+4kqS7hx9F8mzq7xKu4X23qM7KgTRxt7Z21I39/JB5E8fRBPpMjVre8l/NCBGZNQjzwp6V+PoHhj/Dg14zKezYgAhHVGS0h2JuOwg09562H0k8aY4FyA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 02/19] target/arm: cpu64: only include hvf_arm.h when HVF is enabled Date: Fri, 6 Mar 2026 09:30:56 +0100 Message-ID: <20260306083113.74177-3-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: W_lQLqtJGBQknSi9mQCudQRbY92W0s9z X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX3zxi+7kjKk7P pHDVATbtsYhEzRjHP+THGyIhL+IXw1W25w5eJn8o8FwzbRi1y+vxw5cUPMB13izZ9ZXusfIdY/W uR6MXaSGKhJ1Jckl6HT607nuaT6DmGOEbIj7puW1pNjPwfUTpF37Uo8mdDTdXkQhCUoEI9Qa0o2 +egsHkhd0UYx9gipVaWHx45ythKr9UJgMYxuPj/opHN9sAUEVSJC5LIwzSXC+OADJxxj7DtnE0B 6tkkYqq4gNCeudXZMEE/nuWd89cPl4cy6RFW6UK/rnFZ65MNMleW891yQVu313j0Qz5P+HolO/K GicHtZwyEVdW6vJfltZjzLEvqMEocvxRCykpT5DUVVG2K2HkejKpuWCMe42DDE= X-Authority-Info-Out: v=2.4 cv=KNtXzVFo c=1 sm=1 tr=0 ts=69aa90dd cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Rf21QUdm1zEAKzvazGEA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 X-Proofpoint-GUID: W_lQLqtJGBQknSi9mQCudQRbY92W0s9z X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 bulkscore=0 mlxlogscore=847 suspectscore=0 clxscore=1030 phishscore=0 mlxscore=0 lowpriorityscore=0 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAAB+hZ+YRyZ0lg7rU+LsBrIYe9vumD8Q1pXvyLagdA6o9Oy8SF+1itOrs69KdbSB+1Pu8kOwluUc1wTb8DaqCpVMpJ+UGe0ba558t7hKWqcJIwE8uGJiHo/806mq4JWsTJe4bOGuDCaPNJdg9oHIpWIis7VK7lryO47IEfMjqht0OnRDKu/ru2qykopxedGNkAnr6KkEyn/MBflPr2yFKxZqfwKxlV8ENqqWUYpT+eFuoBS1qTjWssKXeGh5oQQvhV9WbWqw3xm6dXVbcQ+VAOH+FLUzOFT+lxch+dSgYUGuSxAqNDv9LzP+yWo529hYzRcXP9XiSYxTUXHnsODkSYeWe91guJVvsN4OUF5A405Dpv7kK/Tr381IyZ8R/oFYGmGHVIZLZ7O8NjGuNFPq1ik/sV/QTdXFaYlXk05QS7v02dl/WCqQrKnH9Tv8kxga4tXEoKfsw4kcMyaY2JRjsNVJeyMhhVn11GNzwgix1BYl4+R5uOrJFVpdmrtfpgD9xt2MsyRhIOqAAZKQTW0lYT+kf+0hY9c+/z272wg2T+ksB2oQiw1+fa0ioW3fZX4w/vaBMcC6iJlPQxHT/t+kCE9DIOu/gMDRzgnRrMBBU+1UaYm8GtMDcuaa7Kn36+9Wfq72gPHyq7tlqCGM5QWbSfq7vDLzgjC2Etzy3kptX2qMCinI0eExq2ah0iyVFg8j8N+1H5ejOhtCcc3tmen9ZRyVDFbjflkzggOWjCLPpc5PjgH3SwSLFo+85aTBet1jRBXPcv0TgVhmuS7NbhW6J4xyfRo10v8NYU= 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.70.86; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785938660158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/arm/cpu64.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index d6feba220e..b4f3ed2abd 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -31,7 +31,9 @@ #include "system/qtest.h" #include "system/tcg.h" #include "kvm_arm.h" +#if defined(CONFIG_HVF) #include "hvf_arm.h" +#endif #include "whpx_arm.h" #include "qapi/visitor.h" #include "hw/core/qdev-properties.h" --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772785990; cv=none; d=zohomail.com; s=zohoarc; b=DbjeFJYcW4f/oXnVZxmVXir6VRw7bDVh2cFxAWBpPFFf2eygENG3ttN7wEouWsD5h8mQbGL8oooZn6LwM2fQ82lzqs6zP3A02XVKS5RipKKguxz2DNbpwEOHPcGv0EW3ZjKvN2P3I3MX6909VjthyW7fkyazhOw6SmbZ5kqL40c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785990; 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=/3uaaIje7wDLee3+Ab/ByFI0sYY5GPDIjmvN/qqkcrc=; b=SbC4RhkiRbvlPwFfCnd9kgOkQQbHhIW5+TI1Z+uFaqISWN1AcfC7QyBPkU+rukLyuNG3UITB+Gt3+H8q9rs5yzBZsgLsILZwPhSyUVNE77PB4ucbxqvxs5ct/BTSP9uOuUfV35lgJPWvBMauw5yFgjFVH8z/iVNfiu1HANFO+Dg= 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 1772785990711622.8915962292775; Fri, 6 Mar 2026 00:33:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQbQ-0007M2-3M; Fri, 06 Mar 2026 03:32:08 -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 1vyQap-00077W-Jk for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:32 -0500 Received: from p-west2-cluster6-host5-snip4-10.eps.apple.com ([57.103.70.33] 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 1vyQao-0002SE-8s for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:31 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 4834418000BC; Fri, 6 Mar 2026 08:31:27 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 5AA0018001A6; Fri, 6 Mar 2026 08:31:24 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785889; x=1775377889; bh=/3uaaIje7wDLee3+Ab/ByFI0sYY5GPDIjmvN/qqkcrc=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=WcxzUMgzclmMdsz+sofilrsGCQRlJVyC1kU3462o2/1dAz2F7vFbxasUo6Df/Ofac/E8VKNeh5D8Pz1HsyLPDhnptgytSSTdijdyXPlHlOuA7gW/2l1olhAmpb9yqrQFGf1skTIid+FhwNSP/GDnMtH0NNCOjizFmcSLTSnJZ++q9R2NnFXbRSBtkOp0ATwqm3uraaWUjSN/u2U6PUlxVZ3bL1BYFw5RumG8yZVWLAr4z99SrUpuuqLHRQBJqyckU5cdYWw3S6XdrJn+bv6KN+gqZK/KRsGo/8TlelYBx1NihkkejmX4sv1FRl4mQ4qBeg9etKUqDXHnInhhoxtAuA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 03/19] hvf: hvf-all: stop including hvf_arm.h Date: Fri, 6 Mar 2026 09:30:57 +0100 Message-ID: <20260306083113.74177-4-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: Tf5hdhM3zkwK-j4Gdu6hrYWZDxPWmDO9 X-Proofpoint-GUID: Tf5hdhM3zkwK-j4Gdu6hrYWZDxPWmDO9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX7BRDy95/39gG NUjfI5vVYdpnkyEa4ooUSnfgdtwXsccgF3Pmi3i0+fIMS8hgATyHjCeKJ7wV2LGHrEVwVZEKCdC Ps/67Xo+5i9cmjpRRELVJ3iD+SJl8tmnzZOoJr/mQHSiUOwauYOE6WvZLruhhd1lJzngiejKx0v cUNwgjDF+vgj6TV1EGqLqsdtkBwmL7iDEqQVgxfOovyt6JNXars9CqndiMaTCUcsUWEafqidG4q Vp/IUy/CQevrfV5SczlCR3uestvFWZ0Tjo/xe9Dnu0h2JmxfQHml9IMLiJ8xdneoj9Y5m+Aw4qs tvNjmsOO6GtvfglT7vBx6ODXSU7rfbwOunFnGc2IsigEj6HEaDT4oU7oCzmwlU= X-Authority-Info-Out: v=2.4 cv=DMeCIiNb c=1 sm=1 tr=0 ts=69aa90e0 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=uNs1HyugXjh6PdyaFdwA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 malwarescore=0 adultscore=0 spamscore=0 mlxlogscore=611 phishscore=0 bulkscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABgmC7yarFK4RT4zSF2zhRfxh+Vn4+w4QoSRPRQfdST4naec373Hb0TO5j+XD1ysAOHw7gvIIxRpJ/GhcBxEqdKC7wY8efJr4yOu//eOLkRLlStFkaUWORD/xvSQ/pDXhx4SpIJHNqBTk3pbN46UMOzSAYK84X2+avuhZlN/ejhNmPgxq/o0B0zjLaEMrkN7D11SjskGm2s6BOGqeOU0DpzRo2MMjSG83rC7NeCDB2pOPi+if7kPvdzAfT3en9LRZnz8ykWNTejNJ5pwGcvaoT306ISTk3e8Zz0nCzarXM+pC6o/J8i7FmrUlDQDhwmOSp+o9UgNfFEPPt7aLaOdzFUQeJQb58WlEmyL/HTn6XJIuQYWTLFBq37NtpW0dI1xtnoFzwL3SBTj5K9pXdos0Of2TMw1peuWdlu1+fVDey/ycAIm0mGmU5E0UJwlegqascXSsJayEV2GbgW6msDzs5411HPd7VO3IH9R8+Zttuq6mwenKQtmgYk9DgwNt9ZqhW4Kf+PJLoCLMvNVvC0R4vcU+y2dFui5uWjASdzQUU8flzP593ASeqpGzhsNJflScsNkdP6IjKhHCQ5zQ76BwveDeOXnF3R4TzWkVkdThTxqIAddgV/fnw9vFt1Fe96MyknGtSBSQgbxGQI+6HrKm1p9bqsumnSO+CzVaymuJxDSv0uUD/r/T6Za9XPACP08trGO5m23mn+KvwDgY4KuGo7ZAOQkvbQWSn6sUVmhekP+nZpxFsn1DpQhAV1GQL6D3oaXNiqbA= 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.70.33; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785993353154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni Reviewed-by: Peter Maydell --- accel/hvf/hvf-all.c | 1 - 1 file changed, 1 deletion(-) diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index 033c677b6f..5f357c6d19 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -18,7 +18,6 @@ #include "system/hvf_int.h" #include "hw/core/cpu.h" #include "hw/core/boards.h" -#include "target/arm/hvf_arm.h" #include "trace.h" =20 bool hvf_allowed; --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772785966; cv=none; d=zohomail.com; s=zohoarc; b=GgkSIHv9L+cIgUitkg/lIgTbbzIemxKBa2VCrMAS6AHZpIHPgAdC8PZsmTLAkhRpoj1Ao5Yj7IIltsJMFrZpM5k+73HK9Lv6khqBopYu3oyIQiFVNIzMtXyxnz+OozYOF27wHaptFkHLlal33FyBybwaxaA9DiX+vJmTK65bYDc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785966; 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=oermosgqoh8JEhoMeWDgwAHnYHuofVFkfxeTkLOlkJ8=; b=WsHm8rFegk8+pVqmkGyRaEgYrM1TDyHBC784wWSHAY/xLA7bX//KP8GcPx9cTOrPgMAck5MOIr6rEtlo0y0Qbmx5v0wvdNDm+Na7jEQ+VfTP2NMp+YN7KwVstvApH/iMSuFrGSppUO5PrQhNarTKD54zG1H0SwoSKFIZ9ep9yZg= 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 1772785966670346.8639077895199; Fri, 6 Mar 2026 00:32:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQbo-0007fs-AI; Fri, 06 Mar 2026 03:32:34 -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 1vyQaw-00078A-OP for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:45 -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 1vyQaq-0002Sg-PM for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:35 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id C75B018003F0; Fri, 6 Mar 2026 08:31:29 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id EE61618003D5; Fri, 6 Mar 2026 08:31:26 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785891; x=1775377891; bh=oermosgqoh8JEhoMeWDgwAHnYHuofVFkfxeTkLOlkJ8=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=E+hC5aw/XZ5hRKeOhM6gQxn5J50oLgH2DPvKRM2JCFLbm2OuKLa33GLBGmizSbG8US1W9lOfBbv8K5ukLYjJBGaHwkptNxiHY4PFNSP5Hvaa3+K/KKrFPBswnBpa2wjCut8yD0DwAvsgrn7L8MIqJ7vkCUszf/wLAkY4gidpiVUdjYNwTBcB0BZa7Gh2pOIC3tQ7n6voDvzy1Qa13I7uNy8Uw5IWJ6vzMHKdNky9E67h1E3cqpG/DrfG9YnCklteZnxm3qjgxXl/b6VNX9ppO/RffIqFqcgLQWrXK8cladBWKTS2oYFqgi7m63PruJpet44j6npKM7XZL3DKclUpIQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Richard Henderson Subject: [PATCH v14 04/19] hvf/arm: handle FEAT_SME2 migration Date: Fri, 6 Mar 2026 09:30:58 +0100 Message-ID: <20260306083113.74177-5-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: i-LSdy7mxgwW7LtsXuFcavcifVoSQID9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX3zm1uC7UcoXF SkgGmCzSZNydaZ7d5fO9La/1SYw3r6ZYx7iVHyMCeTQslSnWqaX0KOyUdDH6+16ypGx7kgxy2JP Sj/23/MFup9qeP4J1jjK4lfjUNrqZFyStEabz3QRbCYY/S++aHSWGJSvDYfmQ0Uqt7BQT+iGpp9 dZvfNb84YGWgoA29ggrPvZN83IVTyvJePDcs/AZTYQ44t/bD4lY9KT79V8m04uQ4jg27rx24WzT KSPURfrVKGBImAtLep3pyRthH2q/cs8+gHebMD8//O/uGAmKvv9kDG3VX0T1bAh/4A+X+DdNHIG vyc2+1lWMIyR9GxcxPH806FA3Gs5NSIx219Kn+Z0rHUoOO2PmMRwoA+7K97JZs= X-Authority-Info-Out: v=2.4 cv=DrpbOW/+ c=1 sm=1 tr=0 ts=69aa90e3 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=FLErkvThLWmWEKq3f44A:9 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: i-LSdy7mxgwW7LtsXuFcavcifVoSQID9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 adultscore=0 mlxscore=0 bulkscore=0 clxscore=1030 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABcrUYQcaSMzEXv2LBxbR7Y8/cnY3DUgX0pdKNOEMqIAc3q3miJco/tHF5RKwzO9xyOX/mgza1vjtzEwfWHfWTG/yb61hnl+oJmnY3AGLZzk0g3mo7jVvVu7ipPeoQSIUmIbYFEmRDMJuVm5jdENyE24Gn8+zpYPJDQ+hI/xV7ip3IW3MHwhQLzfDx6sfaysBkgzDyzUo5SpJnW19WpCvak/hgvsddEOSm0ampX6ixojF9jFMBEq1Y+cjE8uNq9kOzpwyjxiiiICnyNrLTJ9j+lGj/m3HnshaUWxuE5/Rk2yQUTrUrRsPry0ReAK1JFX+o1BXXPThjK0qzyN1a3Z9Vaz52J0toHmIFsGTQJf5WNEVwz6TMWJ4Cd4JuDlaE0NU2pNtCC/OIqcAX3s2FEYGJD8RxQmIj9gNahckak30CZev+62vNaaodymAdyl3AF1iITTbb54txSd32Me5ycsL8fYRKl+Rh/Grs8Tu/c8c47liGw+iodWKDzY63iDnZZbuxaNIYY/TROKpRWDenVVl0GOs5DvnwY9t+fSkdML0asHhFU6CSbfYcFgKNhW1kZ6wdX0PdXJXhIHcRAGiiAVOrmG3nAfVSQoNxQejywdo/JQMjoFIrSX8e3whSxnmwybkxNn5QrcypWTb3NCAJ0c9XJDTQZvIlUSMALSdDtevL9YTn8FlcfVco/Vijcs1tMtB3adWtfwk0gsJ2RVaoK8ZFPfBrjjB6ggLsRRqqoeca1at3X0fl2ynEMIbJWOnjql9V4O0hVqA= 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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785969259154100 Content-Type: text/plain; charset="utf-8" From: Manos Pitsidianakis SME2 support adds the following state for HVF guests: - Vector registers Z0, ... , Z31 (introduced by FEAT_SVE but HVF does not support it) - Predicate registers P0, .., P15 (also FEAT_SVE) - ZA register - ZT0 register - PSTATE.{SM,ZA} bits (SVCR pseudo-register) - SMPRI_EL1 which handles the PE's priority in the SMCU - TPIDR2_EL0 the thread local ID register for SME Signed-off-by: Manos Pitsidianakis Reviewed-by: Richard Henderson Message-Id: <20260303-sme2-hvf-v6-1-b473702d8287@linaro.org> --- target/arm/hvf/hvf.c | 294 ++++++++++++++++++++++++++++++++- target/arm/hvf/hvf_sme_stubs.h | 158 ++++++++++++++++++ target/arm/hvf/sysreg.c.inc | 8 + target/arm/hvf_arm.h | 41 +++++ target/arm/machine.c | 2 +- 5 files changed, 500 insertions(+), 3 deletions(-) create mode 100644 target/arm/hvf/hvf_sme_stubs.h diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index d79469ca27..3d194680cc 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -395,6 +395,60 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { { HV_SIMD_FP_REG_Q31, offsetof(CPUARMState, vfp.zregs[31]) }, }; =20 +static const struct hvf_reg_match hvf_sme2_zreg_match[] =3D { + { HV_SME_Z_REG_0, offsetof(CPUARMState, vfp.zregs[0]) }, + { HV_SME_Z_REG_1, offsetof(CPUARMState, vfp.zregs[1]) }, + { HV_SME_Z_REG_2, offsetof(CPUARMState, vfp.zregs[2]) }, + { HV_SME_Z_REG_3, offsetof(CPUARMState, vfp.zregs[3]) }, + { HV_SME_Z_REG_4, offsetof(CPUARMState, vfp.zregs[4]) }, + { HV_SME_Z_REG_5, offsetof(CPUARMState, vfp.zregs[5]) }, + { HV_SME_Z_REG_6, offsetof(CPUARMState, vfp.zregs[6]) }, + { HV_SME_Z_REG_7, offsetof(CPUARMState, vfp.zregs[7]) }, + { HV_SME_Z_REG_8, offsetof(CPUARMState, vfp.zregs[8]) }, + { HV_SME_Z_REG_9, offsetof(CPUARMState, vfp.zregs[9]) }, + { HV_SME_Z_REG_10, offsetof(CPUARMState, vfp.zregs[10]) }, + { HV_SME_Z_REG_11, offsetof(CPUARMState, vfp.zregs[11]) }, + { HV_SME_Z_REG_12, offsetof(CPUARMState, vfp.zregs[12]) }, + { HV_SME_Z_REG_13, offsetof(CPUARMState, vfp.zregs[13]) }, + { HV_SME_Z_REG_14, offsetof(CPUARMState, vfp.zregs[14]) }, + { HV_SME_Z_REG_15, offsetof(CPUARMState, vfp.zregs[15]) }, + { HV_SME_Z_REG_16, offsetof(CPUARMState, vfp.zregs[16]) }, + { HV_SME_Z_REG_17, offsetof(CPUARMState, vfp.zregs[17]) }, + { HV_SME_Z_REG_18, offsetof(CPUARMState, vfp.zregs[18]) }, + { HV_SME_Z_REG_19, offsetof(CPUARMState, vfp.zregs[19]) }, + { HV_SME_Z_REG_20, offsetof(CPUARMState, vfp.zregs[20]) }, + { HV_SME_Z_REG_21, offsetof(CPUARMState, vfp.zregs[21]) }, + { HV_SME_Z_REG_22, offsetof(CPUARMState, vfp.zregs[22]) }, + { HV_SME_Z_REG_23, offsetof(CPUARMState, vfp.zregs[23]) }, + { HV_SME_Z_REG_24, offsetof(CPUARMState, vfp.zregs[24]) }, + { HV_SME_Z_REG_25, offsetof(CPUARMState, vfp.zregs[25]) }, + { HV_SME_Z_REG_26, offsetof(CPUARMState, vfp.zregs[26]) }, + { HV_SME_Z_REG_27, offsetof(CPUARMState, vfp.zregs[27]) }, + { HV_SME_Z_REG_28, offsetof(CPUARMState, vfp.zregs[28]) }, + { HV_SME_Z_REG_29, offsetof(CPUARMState, vfp.zregs[29]) }, + { HV_SME_Z_REG_30, offsetof(CPUARMState, vfp.zregs[30]) }, + { HV_SME_Z_REG_31, offsetof(CPUARMState, vfp.zregs[31]) }, +}; + +static const struct hvf_reg_match hvf_sme2_preg_match[] =3D { + { HV_SME_P_REG_0, offsetof(CPUARMState, vfp.pregs[0]) }, + { HV_SME_P_REG_1, offsetof(CPUARMState, vfp.pregs[1]) }, + { HV_SME_P_REG_2, offsetof(CPUARMState, vfp.pregs[2]) }, + { HV_SME_P_REG_3, offsetof(CPUARMState, vfp.pregs[3]) }, + { HV_SME_P_REG_4, offsetof(CPUARMState, vfp.pregs[4]) }, + { HV_SME_P_REG_5, offsetof(CPUARMState, vfp.pregs[5]) }, + { HV_SME_P_REG_6, offsetof(CPUARMState, vfp.pregs[6]) }, + { HV_SME_P_REG_7, offsetof(CPUARMState, vfp.pregs[7]) }, + { HV_SME_P_REG_8, offsetof(CPUARMState, vfp.pregs[8]) }, + { HV_SME_P_REG_9, offsetof(CPUARMState, vfp.pregs[9]) }, + { HV_SME_P_REG_10, offsetof(CPUARMState, vfp.pregs[10]) }, + { HV_SME_P_REG_11, offsetof(CPUARMState, vfp.pregs[11]) }, + { HV_SME_P_REG_12, offsetof(CPUARMState, vfp.pregs[12]) }, + { HV_SME_P_REG_13, offsetof(CPUARMState, vfp.pregs[13]) }, + { HV_SME_P_REG_14, offsetof(CPUARMState, vfp.pregs[14]) }, + { HV_SME_P_REG_15, offsetof(CPUARMState, vfp.pregs[15]) }, +}; + /* * QEMU uses KVM system register ids in the migration format. * Conveniently, HVF uses the same encoding of the op* and cr* parameters @@ -406,22 +460,201 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { #define HVF_TO_KVMID(HVF) \ (CP_REG_ARM64 | CP_REG_SIZE_U64 | CP_REG_ARM64_SYSREG | (HVF)) =20 -/* Verify this at compile-time. */ +/* + * Verify this at compile-time. + * + * SME2 registers are guarded by a runtime availability attribute instead = of a + * compile-time def, so verify those at runtime in hvf_arch_init_vcpu() be= low. + */ =20 #define DEF_SYSREG(HVF_ID, ...) \ QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); +#define DEF_SYSREG_15_02(...) =20 #include "sysreg.c.inc" =20 #undef DEF_SYSREG +#undef DEF_SYSREG_15_02 =20 #define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, +#define DEF_SYSREG_15_02(...) =20 static const hv_sys_reg_t hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 #undef DEF_SYSREG +#undef DEF_SYSREG_15_02 + +#define DEF_SYSREG(...) +#define DEF_SYSREG_15_02(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, + +API_AVAILABLE(macos(15.2)) +static const hv_sys_reg_t hvf_sreg_list_sme2[] =3D { +#include "sysreg.c.inc" +}; + +#undef DEF_SYSREG +#undef DEF_SYSREG_15_02 + +/* + * For FEAT_SME2 migration, we need to store PSTATE.{SM,ZA} bits which are + * accessible with the SVCR pseudo-register. However, in the HVF API this = is + * not exposed as a system-register (i.e. HVF_SYS_REG_SVCR) but a custom + * struct, hv_vcpu_sme_state_t. So we need to define our own KVMID in orde= r to + * store it in cpreg_values and make it migrateable. + */ +#define SVCR KVMID_AA64_SYS_REG64(3, 3, 4, 2, 2) + +API_AVAILABLE(macos(15.2)) +static void hvf_arch_put_sme(CPUState *cpu) +{ + ARMCPU *arm_cpu =3D ARM_CPU(cpu); + CPUARMState *env =3D &arm_cpu->env; + const size_t svl_bytes =3D hvf_arm_sme2_get_svl(); + const size_t z_size =3D svl_bytes; + const size_t preg_size =3D DIV_ROUND_UP(z_size, 8); + const size_t za_size =3D svl_bytes * svl_bytes; + hv_vcpu_sme_state_t sme_state =3D { 0 }; + hv_return_t ret; + uint64_t svcr; + int n; + + /* + * Set PSTATE.{SM,ZA} bits + */ + svcr =3D arm_cpu->cpreg_values[arm_cpu->cpreg_array_len - 1]; + env->svcr =3D svcr; + + /* + * Construct SVCR (PSTATE.{SM,ZA}) state to pass to HVF: + */ + sme_state.streaming_sve_mode_enabled =3D FIELD_EX64(env->svcr, SVCR, S= M) > 0; + sme_state.za_storage_enabled =3D FIELD_EX64(env->svcr, SVCR, ZA) > 0; + ret =3D hv_vcpu_set_sme_state(cpu->accel->fd, &sme_state); + assert_hvf_ok(ret); + + /* + * We only care about Z/P registers if we're in streaming SVE mode, i.= e. + * PSTATE.SM is set, because only then can instructions that access th= em be + * used. We don't care about the register values otherwise. This is be= cause + * when the processing unit exits/enters this mode, it zeroes out those + * registers. + */ + if (sme_state.streaming_sve_mode_enabled) { + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_zreg_match); ++n) { + ret =3D hv_vcpu_set_sme_z_reg(cpu->accel->fd, + hvf_sme2_zreg_match[n].reg, + (uint8_t *)&env->vfp.zregs[n].d[0], + z_size); + assert_hvf_ok(ret); + } + + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_preg_match); ++n) { + ret =3D hv_vcpu_set_sme_p_reg(cpu->accel->fd, + hvf_sme2_preg_match[n].reg, + (uint8_t *)&env->vfp.pregs[n].p[0], + preg_size); + assert_hvf_ok(ret); + } + } + + /* + * If PSTATE.ZA bit is set then ZA and ZT0 are valid, otherwise they a= re + * zeroed out. + */ + if (sme_state.za_storage_enabled) { + hv_sme_zt0_uchar64_t tmp =3D { 0 }; + + memcpy(&tmp, &env->za_state.zt0, 64); + ret =3D hv_vcpu_set_sme_zt0_reg(cpu->accel->fd, &tmp); + assert_hvf_ok(ret); + + ret =3D hv_vcpu_set_sme_za_reg(cpu->accel->fd, + (uint8_t *)&env->za_state.za, + za_size); + assert_hvf_ok(ret); + } + + return; +} + +API_AVAILABLE(macos(15.2)) +static void hvf_arch_get_sme(CPUState *cpu) +{ + ARMCPU *arm_cpu =3D ARM_CPU(cpu); + CPUARMState *env =3D &arm_cpu->env; + const size_t svl_bytes =3D hvf_arm_sme2_get_svl(); + const size_t z_size =3D svl_bytes; + const size_t preg_size =3D DIV_ROUND_UP(z_size, 8); + const size_t za_size =3D svl_bytes * svl_bytes; + hv_vcpu_sme_state_t sme_state =3D { 0 }; + hv_return_t ret; + uint64_t svcr; + int n; + + /* + * Get SVCR (PSTATE.{SM,ZA}) state from HVF: + */ + ret =3D hv_vcpu_get_sme_state(cpu->accel->fd, &sme_state); + assert_hvf_ok(ret); + + /* + * Set SVCR first because changing it will zero out Z/P regs + */ + svcr =3D + (sme_state.za_storage_enabled ? R_SVCR_ZA_MASK : 0) + | (sme_state.streaming_sve_mode_enabled ? R_SVCR_SM_MASK : 0); + + aarch64_set_svcr(env, svcr, R_SVCR_ZA_MASK | R_SVCR_SM_MASK); + arm_cpu->cpreg_values[arm_cpu->cpreg_array_len - 1] =3D svcr; + + /* + * We only care about Z/P registers if we're in streaming SVE mode, i.= e. + * PSTATE.SM is set, because only then can instructions that access th= em be + * used. We don't care about the register values otherwise. This is be= cause + * when the processing unit exits/enters this mode, it zeroes out those + * registers. + */ + if (sme_state.streaming_sve_mode_enabled) { + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_zreg_match); ++n) { + ret =3D hv_vcpu_get_sme_z_reg(cpu->accel->fd, + hvf_sme2_zreg_match[n].reg, + (uint8_t *)&env->vfp.zregs[n].d[0], + z_size); + assert_hvf_ok(ret); + } + + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_preg_match); ++n) { + ret =3D hv_vcpu_get_sme_p_reg(cpu->accel->fd, + hvf_sme2_preg_match[n].reg, + (uint8_t *)&env->vfp.pregs[n].p[0], + preg_size); + assert_hvf_ok(ret); + } + } + + /* + * If PSTATE.ZA bit is set then ZA and ZT0 are valid, otherwise they a= re + * zeroed out. + */ + if (sme_state.za_storage_enabled) { + hv_sme_zt0_uchar64_t tmp =3D { 0 }; + + /* Get ZT0 in a tmp vector, and then copy it to env.za_state.zt0 */ + ret =3D hv_vcpu_get_sme_zt0_reg(cpu->accel->fd, &tmp); + assert_hvf_ok(ret); + + memcpy(&env->za_state.zt0, &tmp, 64); + ret =3D hv_vcpu_get_sme_za_reg(cpu->accel->fd, + (uint8_t *)&env->za_state.za, + za_size); + assert_hvf_ok(ret); + + } + + return; +} =20 static uint32_t hvf_reg2cp_reg(uint32_t reg) { @@ -534,6 +767,10 @@ int hvf_arch_get_registers(CPUState *cpu) uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 + if (kvm_id =3D=3D HVF_TO_KVMID(SVCR)) { + continue; + } + if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ switch (hvf_id) { @@ -627,6 +864,13 @@ int hvf_arch_get_registers(CPUState *cpu) =20 arm_cpu->cpreg_values[i] =3D val; } + if (cpu_isar_feature(aa64_sme, arm_cpu)) { + if (__builtin_available(macOS 15.2, *)) { + hvf_arch_get_sme(cpu); + } else { + g_assert_not_reached(); + } + } assert(write_list_to_cpustate(arm_cpu)); =20 aarch64_restore_sp(env, arm_current_el(env)); @@ -643,6 +887,18 @@ int hvf_arch_put_registers(CPUState *cpu) hv_simd_fp_uchar16_t fpval; int i, n; =20 + /* + * Set SVCR first because changing it will zero out Z/P (including NEO= N) + * regs + */ + if (cpu_isar_feature(aa64_sme, arm_cpu)) { + if (__builtin_available(macOS 15.2, *)) { + hvf_arch_put_sme(cpu); + } else { + g_assert_not_reached(); + } + } + for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { val =3D *(uint64_t *)((void *)env + hvf_reg_match[i].offset); ret =3D hv_vcpu_set_reg(cpu->accel->fd, hvf_reg_match[i].reg, val); @@ -672,6 +928,10 @@ int hvf_arch_put_registers(CPUState *cpu) uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 + if (kvm_id =3D=3D HVF_TO_KVMID(SVCR)) { + continue; + } + if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ switch (hvf_id) { @@ -985,6 +1245,18 @@ int hvf_arch_init_vcpu(CPUState *cpu) hv_return_t ret; int i; =20 + if (__builtin_available(macOS 15.2, *)) { + sregs_match_len +=3D ARRAY_SIZE(hvf_sreg_list_sme2) + 1; + +#define DEF_SYSREG_15_02(HVF_ID, ...) \ + g_assert(HVF_ID =3D=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARGS= __))); +#define DEF_SYSREG(...) + +#include "sysreg.c.inc" + +#undef DEF_SYSREG +#undef DEF_SYSREG_15_02 + } env->aarch64 =3D true; =20 /* system count frequency sanity check */ @@ -1005,7 +1277,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) memset(arm_cpu->cpreg_values, 0, sregs_match_len * sizeof(uint64_t)); =20 /* Populate cp list for all known sysregs */ - for (i =3D 0; i < sregs_match_len; i++) { + for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list); i++) { hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); @@ -1016,6 +1288,24 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; } } + if (__builtin_available(macOS 15.2, *)) { + for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list_sme2); i++) { + hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[i]; + 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= , key); + + if (ri) { + assert(!(ri->type & ARM_CP_NO_RAW)); + arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; + } + } + /* + * Add SVCR last. It is elsewhere assumed its index is after + * hvf_sreg_list and hvf_sreg_list_sme2. + */ + arm_cpu->cpreg_indexes[sregs_cnt++] =3D HVF_TO_KVMID(SVCR); + } arm_cpu->cpreg_array_len =3D sregs_cnt; arm_cpu->cpreg_vmstate_array_len =3D sregs_cnt; =20 diff --git a/target/arm/hvf/hvf_sme_stubs.h b/target/arm/hvf/hvf_sme_stubs.h new file mode 100644 index 0000000000..9c679b7110 --- /dev/null +++ b/target/arm/hvf/hvf_sme_stubs.h @@ -0,0 +1,158 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +typedef int32_t hv_return_t; +typedef uint64_t hv_vcpu_t; + +static inline bool hvf_arm_sme2_supported(void) +{ + return false; +} + +static inline uint32_t hvf_arm_sme2_get_svl(void) +{ + g_assert_not_reached(); +} + +typedef enum hv_sme_p_reg_t { + HV_SME_P_REG_0, + HV_SME_P_REG_1, + HV_SME_P_REG_2, + HV_SME_P_REG_3, + HV_SME_P_REG_4, + HV_SME_P_REG_5, + HV_SME_P_REG_6, + HV_SME_P_REG_7, + HV_SME_P_REG_8, + HV_SME_P_REG_9, + HV_SME_P_REG_10, + HV_SME_P_REG_11, + HV_SME_P_REG_12, + HV_SME_P_REG_13, + HV_SME_P_REG_14, + HV_SME_P_REG_15, +} hv_sme_p_reg_t; + +typedef __attribute__((ext_vector_type(64))) uint8_t hv_sme_zt0_uchar64_t; + +typedef enum hv_sme_z_reg_t { + HV_SME_Z_REG_0, + HV_SME_Z_REG_1, + HV_SME_Z_REG_2, + HV_SME_Z_REG_3, + HV_SME_Z_REG_4, + HV_SME_Z_REG_5, + HV_SME_Z_REG_6, + HV_SME_Z_REG_7, + HV_SME_Z_REG_8, + HV_SME_Z_REG_9, + HV_SME_Z_REG_10, + HV_SME_Z_REG_11, + HV_SME_Z_REG_12, + HV_SME_Z_REG_13, + HV_SME_Z_REG_14, + HV_SME_Z_REG_15, + HV_SME_Z_REG_16, + HV_SME_Z_REG_17, + HV_SME_Z_REG_18, + HV_SME_Z_REG_19, + HV_SME_Z_REG_20, + HV_SME_Z_REG_21, + HV_SME_Z_REG_22, + HV_SME_Z_REG_23, + HV_SME_Z_REG_24, + HV_SME_Z_REG_25, + HV_SME_Z_REG_26, + HV_SME_Z_REG_27, + HV_SME_Z_REG_28, + HV_SME_Z_REG_29, + HV_SME_Z_REG_30, + HV_SME_Z_REG_31, +} hv_sme_z_reg_t; + +enum { + HV_SYS_REG_SMCR_EL1, + HV_SYS_REG_SMPRI_EL1, + HV_SYS_REG_TPIDR2_EL0, + HV_SYS_REG_ID_AA64ZFR0_EL1, + HV_SYS_REG_ID_AA64SMFR0_EL1, +}; + +typedef struct { + bool streaming_sve_mode_enabled; + bool za_storage_enabled; +} hv_vcpu_sme_state_t; + +static inline hv_return_t hv_sme_config_get_max_svl_bytes(size_t *value) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_state(hv_vcpu_t vcpu, + hv_vcpu_sme_state_t *sme_s= tate) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_state(hv_vcpu_t vcpu, + const hv_vcpu_sme_state_t = *sme_state) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_z_reg(hv_vcpu_t vcpu, + hv_sme_z_reg_t reg, + uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_z_reg(hv_vcpu_t vcpu, + hv_sme_z_reg_t reg, + const uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_p_reg(hv_vcpu_t vcpu, + hv_sme_p_reg_t reg, + uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_p_reg(hv_vcpu_t vcpu, + hv_sme_p_reg_t reg, + const uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_za_reg(hv_vcpu_t vcpu, + uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_za_reg(hv_vcpu_t vcpu, + const uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_zt0_reg(hv_vcpu_t vcpu, + hv_sme_zt0_uchar64_t *va= lue) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_zt0_reg(hv_vcpu_t vcpu, + const hv_sme_zt0_uchar64= _t *value) +{ + g_assert_not_reached(); +} diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index 067a8603fa..7a2f880f78 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -145,3 +145,11 @@ 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_15_02(HV_SYS_REG_SMCR_EL1, 3, 0, 1, 2, 6) +DEF_SYSREG_15_02(HV_SYS_REG_SMPRI_EL1, 3, 0, 1, 2, 4) +DEF_SYSREG_15_02(HV_SYS_REG_TPIDR2_EL0, 3, 3, 13, 0, 5) +DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64ZFR0_EL1, 3, 0, 0, 4, 4) +DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) +DEF_SYSREG_15_02(HV_SYS_REG_SMPRI_EL1, 3, 0, 1, 2, 4) +DEF_SYSREG_15_02(HV_SYS_REG_SMCR_EL1, 3, 0, 1, 2, 6) diff --git a/target/arm/hvf_arm.h b/target/arm/hvf_arm.h index 5d19d82e5d..6b1c3b9792 100644 --- a/target/arm/hvf_arm.h +++ b/target/arm/hvf_arm.h @@ -22,4 +22,45 @@ void hvf_arm_init_debug(void); =20 void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu); =20 +/* + * We need access to types from macOS SDK >=3D15.2, so expose stubs if the + * headers are not available until we raise our minimum macOS version. + */ +#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED + #if (__MAC_OS_X_VERSION_MAX_ALLOWED >=3D 150200) + #include "system/hvf_int.h" + + static inline bool hvf_arm_sme2_supported(void) + { + if (__builtin_available(macOS 15.2, *)) { + size_t svl_bytes; + hv_return_t result =3D hv_sme_config_get_max_svl_bytes(&svl_by= tes); + if (result =3D=3D HV_UNSUPPORTED) { + return false; + } + assert_hvf_ok(result); + return svl_bytes > 0; + } else { + return false; + } + } + + static inline uint32_t hvf_arm_sme2_get_svl(void) + { + if (__builtin_available(macOS 15.2, *)) { + size_t svl_bytes; + hv_return_t result =3D hv_sme_config_get_max_svl_bytes(&svl_by= tes); + assert_hvf_ok(result); + return svl_bytes; + } else { + abort(); + } + } + #else /* (__MAC_OS_X_VERSION_MAX_ALLOWED >=3D 150200) */ + #include "hvf/hvf_sme_stubs.h" + #endif /* (__MAC_OS_X_VERSION_MAX_ALLOWED >=3D 150200) */ +#else /* ifdef __MAC_OS_X_VERSION_MAX_ALLOWED */ + #include "hvf/hvf_sme_stubs.h" +#endif /* ifdef __MAC_OS_X_VERSION_MAX_ALLOWED */ + #endif diff --git a/target/arm/machine.c b/target/arm/machine.c index bbaae34449..81a506ce4c 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -231,7 +231,7 @@ static bool sve_needed(void *opaque) { ARMCPU *cpu =3D opaque; =20 - return cpu_isar_feature(aa64_sve, cpu); + return cpu_isar_feature(aa64_sve, cpu) || cpu_isar_feature(aa64_sme, c= pu); } =20 /* The first two words of each Zreg is stored in VFP state. */ --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772785976; cv=none; d=zohomail.com; s=zohoarc; b=VxFymeHaLOVZ9YT7HcMItMvH3Xw6YZIpUUUQYzfj8KLvVjVMkQ8r/yn/ZclxH6VloXU0aLJ7OnbjerAmd4YOWk9BBkOREnp32BHhkNYuqJhtPwfLVXJm9CVqrW5ilTfZAsGd1TKzGqYNAdz4q/qzmXiTBHf4Xd6E5PFmCfOMeXQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785976; 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=uXYQoqD+b6enx0yN1GfreUu+eHC54GkioqxlyRGkbEw=; b=B6UeHFcdsxMr/9SGnDJdz/HUUnvRLB10plvdYqsK0zG/buMlwPvtRguw6FZwB8GoEw7BlJDTB+6oO+t5x2aR3IddTcUJGH1Tg7EypuJ2xQq0Bfl+cXVYeJxiyr1+dtzikSdOITJoCqpJNXYcQDavPjd8UVnZQgFBoT7gCxf9Yi4= 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 177278597643661.1198808125971; Fri, 6 Mar 2026 00:32:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc4-00086Z-Mw; Fri, 06 Mar 2026 03:32:48 -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 1vyQb0-00078I-Cg for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:47 -0500 Received: from p-west2-cluster1-host4-snip4-1.eps.apple.com ([57.103.68.74] 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 1vyQaw-0002Sr-HK for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:42 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 65EB918003F6; Fri, 6 Mar 2026 08:31:32 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 8313618003E1; Fri, 6 Mar 2026 08:31:29 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785894; x=1775377894; bh=uXYQoqD+b6enx0yN1GfreUu+eHC54GkioqxlyRGkbEw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=IPPEL6PhszxUJbajfFsxtvbNz6iKrnhDEsDNQJ8pSrdJATQN6/MSWx0ZbeUDrHuDHgEOoASZ9Ldd1a8PAMaXH/90VkAvZrm0ml1tcPxFN2cuNoPQsWTzq+PSe8qdlc98EPT8G9nLRr8EN6Ux5+3Xcmkzg935f6dcHeIDFPG31VxRW6+vaxg8bwYcSw8U7xMF15D1Z/DaQjwzhMNH/MD0LoDWLFlkEo35lIY2Y83u0iIHuE16T5K/veglvb7TPmqXNpwEc0sYTsiEIS/sZXQ3/UKVpkMHOd/ztOl582VkrR3SvJW1nHwMB6UoJCVEVX8wakSG+b7UrrQ/3XE71aED7A== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Richard Henderson Subject: [PATCH v14 05/19] hvf/arm: expose FEAT_SME2 to guest if available Date: Fri, 6 Mar 2026 09:30:59 +0100 Message-ID: <20260306083113.74177-6-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: pdJXMTVLp08-Zi9dUIOTYrlZ3AoZMjvj X-Authority-Info-Out: v=2.4 cv=PZzyRyhd c=1 sm=1 tr=0 ts=69aa90e5 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=oZ2wCSY6f7DP8ugrgSYA:9 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: pdJXMTVLp08-Zi9dUIOTYrlZ3AoZMjvj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX1RD9+0nN8iAb VfB7TOOccRA20LI2zLZBN4C4Ibvq6ePIjCAh5CzBj+jOXntgCHC9IaO5wH3KdkwdpVqMbtpriCm P/pbHsW5MSFdUOzBLuc9uxnZZ3yHbjjwPHl2J7ddOZ7Kkmb4eTnBRNGM2pkaaRq+pAW0pq05bLu ZF9LJANOJZ1gByI7eD/5j6keviLOFFp5DmrBVu5P3tX9WpOL6ibC3mnP/wtRonMwAYPcG2Jz0mN 2HOMz3Ll6pvLYI3MwrvvuWdRtuAwhxK+uNsYg2aog0Nx22CuOMAhrBjZi8aKw5pP/gfpaX9e6tk 5n6aW6wkW9/tRXJKm8/O7oNsZPL5f4pMyuJ/77PcStqzx6OHjLu9kf3yoiVS+A= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 lowpriorityscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 spamscore=0 clxscore=1030 malwarescore=0 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAAB6qCScBLrvCih4BYYZs2NnEEdlIAwUYbJ2sceFZgr4StX7995RBLwywE83IKFHMsLdKWabdtAX/zEbFjYJJ6ggjNAb1CYGVr9Ky7pl0Ua1m90xf/Xd1UTgPwU96IxTbN4YaLMcmW23Od+hWq4ONb/EQLYcEkxk0ywHdBDx/8FkLmleEEGUgGV4xCphHkg7HTQMlJ8uf7uJdssw26TmqT+qhODfKGZKg8pYJmr/BEQkR+Vifbnp2ccPAZ7hVUckEA3TluYeE/TQhu2HRd9wRMdfMGxJ4fEKI6sge0Oc9vsDj9enY6Muwebw49Wcn18odrUJyii9FlT68efb7HyuCDEUpoCQ3KViPUZhIInHBIw0Jf5D2YK/7JKNUyUlEEFn0LeZ1Kh/KlfVceC/H4O3BOIo7pdvDD1cx78ydjd/43y1MhZNAX16M1UyL0vppNVAJLQKNdkGNFC/poeqEPAHTstdJU0XnkbmFnruMgChUuH3YW77LbE/xH3XPZaNoPGzxA/KicCR4TCsIgZFm7q1mRAPNy4QLpCskYxEk8OSoQ0XfDZQ7Qho/uXW3nXSb1ZtZHxxJRvn/rW2g17/aW7ojWCYQ9llP9fIrTj7Qok2ujUCkxuO7AeGquAkt6Cs4TUKlG2zD4SMXUn2Wzv+1GrRyh0pprlNVBqa8nMq2j2HXpAK/tLKjf9fU5ooE/ZIdpaxUm/XcKJgpmR7oWbcS6yo0XIULV54Q5IfHzQ/ErtwePLTanX/kJE/sWb/pcglQPVVTySPBZrqGk4vFwOy6o6tTGH9P8= 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.74; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785979166154100 Content-Type: text/plain; charset="utf-8" From: Manos Pitsidianakis Starting from M4 cores and MacOS 15.2 SDK, HVF can virtualise FEAT_SME2. Signed-off-by: Manos Pitsidianakis Reviewed-by: Richard Henderson Message-Id: <20260303-sme2-hvf-v6-2-b473702d8287@linaro.org> --- target/arm/hvf/hvf.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 3d194680cc..c9787b3ea1 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -315,6 +315,7 @@ typedef struct ARMHostCPUFeatures { uint64_t features; uint64_t midr; uint32_t reset_sctlr; + uint32_t sme_vq_supported; const char *dtb_compatible; } ARMHostCPUFeatures; =20 @@ -1121,19 +1122,6 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) =20 clamp_id_aa64mmfr0_parange_to_ipa_size(&host_isar); =20 - /* - * Disable SME, which is not properly handled by QEMU hvf yet. - * To allow this through we would need to: - * - make sure that the SME state is correctly handled in the - * get_registers/put_registers functions - * - get the SME-specific CPU properties to work with accelerators - * other than TCG - * - fix any assumptions we made that SME implies SVE (since - * on the M4 there is SME but not SVE) - */ - SET_IDREG(&host_isar, ID_AA64PFR1, - GET_IDREG(&host_isar, ID_AA64PFR1) & ~R_ID_AA64PFR1_SME_MASK= ); - ahcf->isar =3D host_isar; =20 /* @@ -1148,6 +1136,8 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPUF= eatures *ahcf) */ ahcf->reset_sctlr |=3D 0x00800000; =20 + ahcf->sme_vq_supported =3D hvf_arm_sme2_supported() ? hvf_arm_sme2_get= _svl() : 0; + /* Make sure we don't advertise AArch32 support for EL0/EL1 */ if ((GET_IDREG(&host_isar, ID_AA64PFR0) & 0xff) !=3D 0x11) { return false; @@ -1199,6 +1189,7 @@ void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu) cpu->env.features =3D arm_host_cpu_features.features; cpu->midr =3D arm_host_cpu_features.midr; cpu->reset_sctlr =3D arm_host_cpu_features.reset_sctlr; + cpu->sme_vq.supported =3D arm_host_cpu_features.sme_vq_supported; } =20 void hvf_arch_vcpu_destroy(CPUState *cpu) @@ -1339,6 +1330,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->isar.idregs[ID_AA64MMFR0_EL1_IDX]); assert_hvf_ok(ret); =20 + aarch64_add_sme_properties(OBJECT(cpu)); return 0; } =20 --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772786072; cv=none; d=zohomail.com; s=zohoarc; b=hrxaYBZXQKYrRiI7VkItBWHIpRAApWiiINTUjppDrjNc4nXqUkXq3HcKz0FVxNkdtRSbLb/EIbcK3Ocub41bIa4ZP2IqG98QSfPUNxcKCljFY+kcHSRrzGKdzc1BZkMCeZsWuUTKp589muwuK5HnwPCAoAJW83VPWs8ClLlh8WU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786072; 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=Zp00OUDs5i7KBbqMJ9QqV+rI4APAR+Ak88cZ5RV37w4=; b=O0bNUr6uEK7x8Dr4Q/cQutLa1nYVWVv2n+ai29YaXY5SWiT8RpT/L9P/THXl16V5WbBOPIiJt9fij0IExXogl4Ylm7q9RFAqC/PJ61nALZywjqIyHDSLarGW1HxyFv7XGDL5yxMTEXrDoidUUSF4J5cVBaWhm+fgavkbnKm5Pqg= 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 1772786072836301.98667206456923; Fri, 6 Mar 2026 00:34:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc7-0008Tf-H7; Fri, 06 Mar 2026 03:32:51 -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 1vyQb9-00079d-Pp for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:52 -0500 Received: from p-west2-cluster1-host9-snip4-4.eps.apple.com ([57.103.68.107] 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 1vyQay-0002T6-Uo for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:46 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id F0BB61800157; Fri, 6 Mar 2026 08:31:34 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 1ABC818003F4; Fri, 6 Mar 2026 08:31:31 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785897; x=1775377897; bh=Zp00OUDs5i7KBbqMJ9QqV+rI4APAR+Ak88cZ5RV37w4=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=Ykeka3FNWUDrLDTIGDxqWGlQrwkH4pjzShDF4PQ6ViZ38iefWqZ2LEQI1kRnCO82B/kGPDzlow2EMhx9S3IBxYgYeK0zK3+eGfEh/acZRkIejnlLZziLzBaYkZ+C+TGrJDphOIom48LjSNNZzFn6v7bi1bjsYDlahOjYoFNbDx3BgcZsXGTM+tqqtOiy1pVJxfEk+jroOy16a9ctkZW3bdalZLD6QS3uFk5LD8SVkowxSB+IzPcgVznhNaEfLiF+xgz1CCRcNAvZZf3h3htXK1qWvZY+7o3qkj/zEDF2xw/TN0zT2OCHG0qvxFXwXpwjdrPdAPJ/ewMftRNxZmIsXA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 06/19] hw/intc: Add hvf vGIC interrupt controller support Date: Fri, 6 Mar 2026 09:31:00 +0100 Message-ID: <20260306083113.74177-7-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: Eea9oAsElznRogOO-azA-RZ2ADoPU0y5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX1iuM6tCW7VMP patcy4WbBEE98QgRNe6spjRlsWE9jc44XDuMR/VgcNJecsvnOaDRcKMwdwxO8RTShB7ZPLGKnal i950lZbZrNVw/y1LPoHfO/1qzzSCnkymg/d0Z4JR1lowbQ59h+6UCYBChFTQXYVqZFBry6J0L1R PqXbV4xtIX9oenc8Tuuz5kXl5j9iyzC/vSA9+gV6/KY+a6xtrd2++LxJwJPo5RS+o2zMKOgHhj4 +J+dk5k1WInl3LvANtNukQGVw5VbuGUPbpvF6KQMJKogFPYyrCP+GWqw6WzCL2td9CgKr+KF0Bi assDnIILwmltMbotSBvC+g5E+wuJicTtwnHOemVCb9hMK+NNQ7JkA47Jllqt7s= X-Proofpoint-ORIG-GUID: Eea9oAsElznRogOO-azA-RZ2ADoPU0y5 X-Authority-Info-Out: v=2.4 cv=ArvjHe9P c=1 sm=1 tr=0 ts=69aa90e8 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=D2JAlcJVxmvnjXxMMLIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 adultscore=0 suspectscore=0 phishscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABUwzTdB1IU5Y8aPkED0LYaV3EL9USSuJVbimqsZw8Or6uce+Xj6uiHGAa22icWIw0d8e7XS/AAjevf7OO7MBlsjxDUC9dfh+IprgoybxF8+tWNUg8cX7MqkEG7954Zd6cmjNMKB95eQm55aVnjfJuzsAPmTwihT5jSz50WSFNbx67+SwbCdi97UDyuGtC6vhqGbwBJw1BCdCOJmAm61LPJD+ZK8UJ7xitj6ZllAYmZ0K/yfFVgygCk9HpDU8e1mWvNc5uEbqMX8590sHrM9hllTRs4bd0TJEJ19MqPe0sMLxaavYOt/tUyDYqhKzJDkW1GEQI3W2LiTJgVPCaS0X/0VnMxmnGSGA/mIrLjRCtqbFgdANogU3MMUaVYWOLbAuKccT8S36nNhefW+VFsszumCtCNdfWrNMcaD2bDpRRlB2PdaVzwsEnG8vVi5MUMx3x0v5pXMhvxGmgZCs4nMW+WVcrBCM6DZ3DUGoHP71aYGvbls1ernUrLa2+3vkDbI28VmMA8j/r4OCKDCurPKanWRu3XdcnHjXUlbbhXMLpOspshcheF6Nd/d4Br2JvB2EKI4buPW+h0lubRAULCitEXM8Tk7N/Qf/0FcGi9YyQYBI1nD78mpLr+UbvwLdVACpUM4QUkJVQz/HIvVi+GGLNVGyOnfmqVhES7sGF+im5STitYCuFyGie9JWHQ5VPSH85k1BRoH3Gp/S5njSaCuAg69O5kvcTadaSW+4ztSHmLOuOV3wp/mZLbugIsdUTgKpOOYadm+u7WLa6ivVsDYi3sfkz0b5WBIM= 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.107; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786075044158500 This opens up the door to nested virtualisation support. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 Mon Apr 13 13:55:22 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=1772786010; cv=none; d=zohomail.com; s=zohoarc; b=Wwkz8ydABaG3HIpm/xZHynLeGn6kjT6zZbcUkBUnJJTTV/Us/jGR/WA8bLDr+79Fq2ZiBq5In0SDuJAlfp5zBuRri61h0t28w9iJusGJQkkKVVtbB3UFARmegNJJsIeliN/Xz96FWvy7qAiAEGmh44sA+gcF2UsF/kejyhKDGL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786010; 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=myDQ2TyGIyaAwzdSH8DzkuvcOURd1Vry0SelrIXbnOc=; b=Zq0JkvIvdcG6sWh801qm0jimh0XiSWDDcCB3Q+2hss48dvWT0WJNcKcz7Jqrc7koQIe0vPZHlW0CZ6rJbniFOE9BumIqvTOg1VVz9mJtC9KuXNanTHPiFfjk870OsbW1hN57LJ9XOg+wC4CEFSabsrwllefy/Y0Q1UOGx8UoxAU= 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 1772786010972206.05111698049302; Fri, 6 Mar 2026 00:33:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc8-00005T-BB; Fri, 06 Mar 2026 03:32:52 -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 1vyQb3-00078u-Bp for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:51 -0500 Received: from p-west2-cluster1-host4-snip4-2.eps.apple.com ([57.103.68.75] 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 1vyQay-0002TJ-Vf for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:44 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 8547918000A9; Fri, 6 Mar 2026 08:31:37 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id A97E218003DA; Fri, 6 Mar 2026 08:31:34 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785899; x=1775377899; bh=myDQ2TyGIyaAwzdSH8DzkuvcOURd1Vry0SelrIXbnOc=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=LfTj9FstIHjlTzAyXi06WHnB3/E2VE15s0JbJSY4oA2ANgemQDKHcAZ6FmA+dj7RtuNWP7sqgW3J9IKE5a4pmOaOCNBvBYOtfflxyRpVe68yzvXhvcZoEOH+ZjcFFdBqAiZaFPJG4L0W2XB6mHx8TwVlSIiCEh9pGbzUJRqhQBTl2MjO291MskzborSjKsVBPlLVzYtaAnSoDbZzS08vW8RdnlO1rOxeVT1CvH638GbtJExz95aWpzx/gr61KUH6rNgPfWwTx2DD+QvY2iqrwbGlbcSxofvwtOnDaA6y6jXcwtk4JcEDshhkBcVoVxxJ6+UzCsiyJ2SR+byVTe9uZA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 07/19] hw/intc: arm_gicv3_hvf: save/restore Apple GIC state Date: Fri, 6 Mar 2026 09:31:01 +0100 Message-ID: <20260306083113.74177-8-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=WesBqkhX c=1 sm=1 tr=0 ts=69aa90ea cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=kNOF8fv34t_zTB2Y_VIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: vi2C0Lh6LTZgK_waXzwrRJ0rrEBoJ4TG X-Proofpoint-GUID: vi2C0Lh6LTZgK_waXzwrRJ0rrEBoJ4TG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfXyBNhXU8h4z3U UO6+uTzuoOz6bHNJ2KVK5AYyqIy5U8kYgFzxP8pQB9dMurNb6vV/opMJzo/y51KhPKjVOKR1hRn 2ZTgpvyuVuDJNjAwarRZeGQnqTBsfih02riuTkCqA6QrHGRXnmzWPXiF9Pu1QAUSgknZa1N7Eh6 D+8/mRs58aZyixXQtQ5z7+1wVAqpQyKzOo1VCftuZsmWQhrfDUInWFGTngcnVO1Rn3QDizDGHp3 hcth6owm5O7OaRYj+7tDzCGbv7IViDXBlL5j8zOjj9U1UIEl8oDLv76VOQiFFQg9x6YylbfRWau KAtnkRj0zNZ3G0zZ4/EmbFLHD1bwkShH8QA6oKSZMjC1fI5HnyWeqsPYiuk2ps= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 clxscore=1030 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAAB28RO5GTVtBL3sqe/P5jUeLjvvZctcUc+94+PuGnHurucj6KQa/BxQCEg/kWHwtjpvFjUjb7wOyY/09q/vFmtaGd0Lz78F7zQCZ47h++FFPNMrTSiyJb1nm8RkKvbWOtxWZIqGxY1eGFPHF8fRaqXB6O7UzgYdvotBUoC2em0n+ErNDmloowSHUIEXnh7Yf9+EMcV8ujv9oA5e4LkOu53boUl3E6EpXYYm6nkfHoC8XyCNRWhMMUzJeySQ5YmIfAXfVWKXHCPDE+mxUJ3+KuBGlruRSEdKFTrqaOI6/dw2pyS4BvrIMkAdb6OL35lI2owa0uE+PrGx2f96bTDHndSf5WjJxMWyyXsgcFqwtyrP62Z2EvFdG8dLha66avXLSzPplRR3r7H+LdR2kMKMx8qfnC7IgKZQTOdimsrkuDxQZH7fabXqa+Q8X0/3x9jdZ02lXmyNlVha9Ej8kZCY0tVVmTKNqsM6ZfxumCZLYlqRRR6KDtJCdEuJmh1vUa/9HJJOSzRBkAaB2wAApFNdpAAF+bg/iMMRXLD14EMDcgkYaEloMjAsWq0zZRl9D026rzjgivJtBadB2EnKaHHtGd4b3uVL/tgpQzH/ImM2sEYD1HlzKv5mTHWGbRXtAFKRod4UkeGASpm7Ml0YX1dZR4lnWjg5YeiASSBOWUufRZcZhTEVEJ5mq8Z8JcPtnRiYMZl5ZcHcxj/w9vFWE66957EMr91NrC6mCkztEFJ359KMQJkmmqqx+3BKLT1lUR/mT7KKXJMyVgAmUXWIEgmwvBnVivYgrnQZO/vW5VHJeZB8AiID1L1ka56Fg0lLlk= 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.75; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786012964158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/intc/arm_gicv3_common.c | 1 + hw/intc/arm_gicv3_hvf.c | 95 ++++++++++++++++++++++++++++-- hw/intc/arm_gicv3_hvf_stub.c | 25 ++++++++ hw/intc/meson.build | 1 + include/hw/intc/arm_gicv3_common.h | 3 + 5 files changed, 121 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..e299084d7c 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,87 @@ 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."); + os_release(gic_state); + 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."); + os_release(gic_state); + return 1; + } + + os_release(gic_state); + 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 +809,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..03ab3e8f2f 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 */ +extern const VMStateDescription vmstate_gicv3_hvf; + #endif --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772786083; cv=none; d=zohomail.com; s=zohoarc; b=fxP9ys1zGpDR7vOYHc37hKNjPlPNEKIAeJ+dj0eqXX/UfMyc49XOMVpb4pGHxNCVuus+9jz2ijH4gM1GBh60Tb7Cj14Wb45adHpooZLm/uNJm+GHp7up7s/cR2We8RYh+/jeDUzSG7+A8yPZPpTcjnTy6jVgHsxu2X1yuh6unbQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786083; 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=WMu9ZUKRv2uBa5TRx8/7qzE106fv3LSJOQVn2oeM3i8=; b=adAliqmStSPM6x6b7xH75wtGBqF8MjOY75FpiimaEpCb36eCeg0AAVBno7T4bkp7fOzvAPNeaaDScbrYhXTssxZT4rgQNgUcEf833AsDQiK826OnfzPc8xCZibTxkQp/xlQuf+o5l4V8tV1Mb/hWeRuX3GpR/5tX4buERc9V9ho= 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 1772786083009991.5080061685981; Fri, 6 Mar 2026 00:34:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc6-0008OW-PW; Fri, 06 Mar 2026 03:32:50 -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 1vyQb3-00078y-PI for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:51 -0500 Received: from p-west2-cluster1-host9-snip4-1.eps.apple.com ([57.103.68.104] 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 1vyQb0-0002Tb-Py for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:45 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 1B3421800192; Fri, 6 Mar 2026 08:31:39 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 406D118001B8; Fri, 6 Mar 2026 08:31:37 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785901; x=1775377901; bh=WMu9ZUKRv2uBa5TRx8/7qzE106fv3LSJOQVn2oeM3i8=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=BBznh+myaYuwBgi4BgN5J0PfeZJRIeuAS3CqWa4jGnZ7eU3XeZm+3tQKd4zBRXMpMWV1l9JtLs9iAMEqFAE98gsDWFbq72TllgmEPmGZDmwY3hpL5sJDfx/2dZCY+Kk6MeZX7/XYrJIclFN4HR7F7oq1zIqBIJd8x4oMKx+b8Bs+0KTULE2j6p8AnivCGXQ7a8bc5zcNsKvAnaSLMgNGPaSYQvUM8Rw81TGhdMy/TfuRg9ULkkie/IU4Vhqj62CVtqfTbjKzXUy/Ehh+tl1J2MZtf0UQZUb3tcreAxIyanodJLEw3EcPF54w/IsZecPzcstjKtULsOz96Qsy5FlPlw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 08/19] accel, hw/arm, include/system/hvf: infrastructure changes for HVF vGIC Date: Fri, 6 Mar 2026 09:31:02 +0100 Message-ID: <20260306083113.74177-9-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: jruP6euIlroTM0ZmizaVW0G1aMt_lqTW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfXzq9Yn2t1vHj1 bRn9C/ofqN1vRylkpCJs5SOkl+tWe5IN/xIlAsvBS99K+9rfXDq34UsANxpvy4dkmKFl3/dcyjx LARIdUI7lYk6zIo0gbCk3yyQ/XpfcWB3E1gpJmr8kpSbEpSMxiK7t9kiqE7yP98ACuTbQXzDaIF fEYxGMYxMQ7LeGSGmAtM8ub/IFI1z5LQueDVeB8YLhBmd84KH4vvpCubdvwGQtgwU3m8gPrjHI1 yi8NtqWh+4e8Tqbx9aXLrGu+qUyXPMCq9TXBiFXRGYAWwsbf8xkT2XAZAxeFXFPYEis8jtksItS 5YnGA9lOBlWZE6y1Cz2Gur8yAYZ0nZmGeY2NFMa3bO9W0HrElslYuZgFRNgQ3o= X-Authority-Info-Out: v=2.4 cv=RKC+3oi+ c=1 sm=1 tr=0 ts=69aa90ed cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=n4FVybPFTm1vobq06wUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: jruP6euIlroTM0ZmizaVW0G1aMt_lqTW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 adultscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABFYorH8uktBslB6C4zN4ghylF3uMMB4qSG9h5+iWpQI7lhr8Dl488FIqwqzzLxYD49cmgiFuz65q+nMT81EhxSyv6UYTWKyr70ZqeRfZ36ROQ/IxrnKcITM8Q5JB22Nt2f+2oYExRY762hI/VGMwHVrmURJA2HA4s1U5KSdKH7C8Kkwjnu/mWHG42SP6/MrneEmRObjVwe9GFsXwz/ZC8IOfI99BvYvNgoEb9pCPyXHtZInuUIhwhxlf4ujHVu6Wl17tchdy/fCfOQRleSfjMZ6DKcCB9yEl/hCs14LyNTR5enFzgcTqSeq3xnDPT8lUvh4c72uwb8VG78IagvUEopnu0PhZ1i4jSEoznWhIGhCz9ywyRCTmja1LlhdyvtQxs0yNnhMXKhLv2nYCjT9KIwov25VPDGHfufDdOKtBwNxepFXUfkPUI3RlNbiuZi1EhhdBebIVcjfzDUGFMaoAub1Qnhve6hx5sHU7sw0EEM4Sq2ebStc3Ud0fMGLGDTyZSEpyJ363UA9QBpZ/1SmPH8MnldgdqM15zlE9q8rfo/bFiB/CdbsRVMXK3py/f+L/MdcFOo3vX9Qbu5md4Lzm/Kf60z3azab6Hs0P12mD0S8gYa2URWRFMB82+OyoAY3G6aC7j257E3qdCuO9+M/Fl6BzFm8MO6vqkx9+j2VvFYvaVJo+nnCTmfBJs1zYpDlaAvR4r9IF5t0MUyoNwzK3uwDh4FkjiXScwuYBOs3qksE9sc78f/WK0/U63zmaCAAtk/VL+E/387LJUNln0BVkPwsR/K0IwGio= 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.104; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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_VALIDITY_RPBL_BLOCKED=0.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786085060158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 5f357c6d19..a296b108bc 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" @@ -21,6 +23,7 @@ #include "trace.h" =20 bool hvf_allowed; +bool hvf_kernel_irqchip; =20 const char *hvf_return_string(hv_return_t ret) { @@ -216,6 +219,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); @@ -223,6 +263,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 7456614d05..7a6fad1094 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -837,7 +837,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 @@ -860,7 +860,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); @@ -871,7 +872,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); } @@ -2118,7 +2119,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; @@ -2160,6 +2169,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; } @@ -2179,6 +2190,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 3e341142a0..7a3db97ee6 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 Mon Apr 13 13:55:22 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=1772785972; cv=none; d=zohomail.com; s=zohoarc; b=SjGYvtBCpgL2anndzGGO2FOLtJPWPp5tlay76gghYXCLMC55BTiG72L4luBXarTn3pHOROZwjDrym28OiZW47bT3URtgjTrM829F3gFjmPMSBvjXg828POCPNcxPXb9pP+41fN5Qe+s2W4c0TldWljMs30EORs20lGb77u9dDrE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785972; 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=o4Lxm1TA6Kcx7liGCFRS9hTpKNWDkwXTIIQbMAQVIyk=; b=YS8kDlWmSDoBOvYaAhPoFMY0DatvEIT1UrS7eJZwX+AMxyEbYmUtYmNp4SBKiw8e01VlIJleXluE0HcJlGI+YoigN7Xqnq0eRi1NkZX3TjclBm0CSBmqtsTo2HUgeUqnyLkw6RbnR2SOiJdKZc+mIRM7V/OH5XovGj9T/bicYZ0= 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 1772785972436467.69248282365663; Fri, 6 Mar 2026 00:32:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQbx-0007kp-Vn; Fri, 06 Mar 2026 03:32:42 -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 1vyQb9-00079b-Pp for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:52 -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 1vyQb2-0002Ts-8E for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:46 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 444D318001A6; Fri, 6 Mar 2026 08:31:42 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id CB072180017F; Fri, 6 Mar 2026 08:31:39 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785902; x=1775377902; bh=o4Lxm1TA6Kcx7liGCFRS9hTpKNWDkwXTIIQbMAQVIyk=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=Ya/JilGS5ZCqg0dh5UWOCABYtpD3EwzdRNPOuMJ5puwcPQuaSDgm1duFVgNFfelaQZg2W2RdTESL2Kcaw4vsSjhRi3yaUq47QlRV0LJmwSqAcz9CqQHtR7xYcNypqF5Z7AghOvB6jaEYpcQd9DHEhuGyHfTDmVm4jCCo6RIVdnkEPSrcsBshkLFPNeGmDrpcZPkYilHhr8X2WDCib9CQe/b7nun176SYTcMhTM361qpE1Nv2TtyqnoliwJSeHgdyUVasCf/oXGZJmmu8A0MnY8ai5J1JBiEJe1VdhPz6TX2nuMWytvX0jvoZ04zeUANSgn6grzHcdOtOALUXZGQPAA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 09/19] target/arm: hvf: instantiate GIC early Date: Fri, 6 Mar 2026 09:31:03 +0100 Message-ID: <20260306083113.74177-10-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: AGcwy0zRpDYKWevTAyob63daUaMU4i4e X-Proofpoint-ORIG-GUID: AGcwy0zRpDYKWevTAyob63daUaMU4i4e X-Authority-Info-Out: v=2.4 cv=K/gv3iWI c=1 sm=1 tr=0 ts=69aa90ee cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=iW0rYzIOeSeTUJq9hTUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX74DU1w68hA6n kbBSSzqitv/cPc1sQaCXFo6DBN30MKWTRUumfduF3bK+zj5/ao1FS9kkL9eQK7gPZaBTMHipkvR pMd/v+SLc31BjKi5KWYpx7UD9dhVcO2oFmjjrFpL5OZKTzi3d8aVmbyvZvwEVe6wiZ4xBUG5S1F viL/reaBcJwY+vKUkXdcxAnb6UdcTbWwGI4JwG+rmBtLP0eFGbKnZJbv9IOT55Jl6SGHMXv+plF CzOckyeu9iwhPaEvcie1Xg+4b4HhawZ9zEvE7LJgEOPSKuRq/yI/4QVmt5d2kj+VUZYGAKXQJAP vnnKSbeVN/96xcpcqEVwKlLnlfJqnoVmG0+4NL0qPR2IdvyquIGiILkFxu6qSI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 suspectscore=0 mlxlogscore=721 bulkscore=0 lowpriorityscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABalGNOqX1lr5qSOM3TnefHRs1krT7WKViChVtiInlE0uFN5mv95i/1SAm2JORpTCG5e81V/Oc5mKrAqhh7IU2t86GNyMojWUwySNABtmjXnCzIr8xUjXYMS2nfgjIHCgU83qsu+qft8Iq8FP1gTHr7nchBeSBTzCoG8JOQJ6VE+z73EPebhp0yklVCeAtmDQvqqzxoK33wZ8B9XQg8n+y7ZLnlhqyYMLPTj1sG34ZZZSGndBwbRzGmRBjVICT0pP6HLk6BbfADvcw5jyWey+tWJ1+McGpxOPFP6HIaBVvdGpwN7/GdE2PWuQznaTpwExydlwZrpDzVOGit4D8TKo9sjMK2bXNJeubdOQ3pBm7c/YrQSf7rmxK6Dr38dZZX5Tcvb7LSJoF9oOOJEZcG3OGXuKKQ75Y1KVXSO4Kz9lQbdNzjHWXFBrkZesCuqU0wnPQJt6Gt/NWOEJAqdXmTshEg0y7N0FATFmJtyN1YHervN9S1b/C9E5/IIqFyBCbDlTVoyLW9ssK3j+eaAuLLSvNqWazbw0WKrK7+iY2zgJbtC0SSXAnphESbEBE1W1WuVWtRxWP+8P3/qMNT8qN7fIeqQtTgxZ33+PBttdtj2U+zg0LzBybPkymPFFmdTvm4YesSOPktInQ7G9x1elT2Jzv4Czn0jfLpi1WM+hj8fIxH8eUJjIug0CbVJTBTVlj1AV41dsPybQyEdwaQg39dSRybf59ba/bnkXIRJsfZ6DLO2dM5aijJnkQUYMcXctFvlXM 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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785975186154100 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 c9787b3ea1..c37493b92a 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1212,6 +1212,22 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uin= t32_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 Mon Apr 13 13:55:22 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=1772786077; cv=none; d=zohomail.com; s=zohoarc; b=kvl7gZp9QaiNi7c2i4Vc1/h/vtNTDT72MbOpFF7m3thApTMiHwZiBxte39GINp1s8dw7ktvY7qHZ6kHzza37I9c7cejiQuANT2rsPMA6hsA80ax/X9xMWweLsCPxIqN7CV8Ad+8azp140d8XHxrH7jbD8FqGw4Sfe4Fv6HxlF7A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786077; 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=y+yE9Mxv+j3AxlnQVfT8up/hLQSVuBLP9oFMs4YPNg4=; b=QxPV2ofZtSa/HKxoWpfKPoKlXu0AX6C9v66gzZllIDX8SasX0/uLKb59loTyKc93DuPlMwlggO7MLEKSBfgsnrK/1e0CwkzhD588liZupuIp8v45IgULadRb3bFgoDw4xyQLDQOt1fnNXcb+Pk5f1uomdgMBdTmSD2YWGiTLaMs= 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 177278607742355.85978500994429; Fri, 6 Mar 2026 00:34:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc5-0008Ha-Sh; Fri, 06 Mar 2026 03:32:49 -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 1vyQbF-0007Ie-IM for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:02 -0500 Received: from p-west2-cluster1-host1-snip4-1.eps.apple.com ([57.103.68.4] 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 1vyQb9-0002Ue-In for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:55 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 32A2218003D6; Fri, 6 Mar 2026 08:31:45 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 607EC18003DF; Fri, 6 Mar 2026 08:31:42 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785906; x=1775377906; bh=y+yE9Mxv+j3AxlnQVfT8up/hLQSVuBLP9oFMs4YPNg4=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=C9z5XSqZhjPfRtzxCu7NtAwpzOfYwl5Uh+jZpSBKQ6pARKogL7v5nXuMR485rutNnZw8VeYrYTDJIhHVd7h5Xswz2+RAeS8gvPDuVQY351/Uksp4oyvSk7BnTeCs11xtHyyutKKLPNZeuvjY4VuIvchcNl+Fd38hKiwJMW3nbO3gogrvisGD5/qZmL7Fm1VO8vCSLraiQI/invC4RgwJpTTVZgtsikQtA+PZ+HqPOielwHJQot/QL4txlNJW+tKMhGveaDA9V914VxCVU8nmjGJTUwuJ38hA42ZNOu1tog7V4BB8ZmWgR+uP7wa1Y6fG8OWWtuiXtyXgRuPr/+c8Hw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 10/19] hw/arm, target/arm: nested virtualisation on HVF Date: Fri, 6 Mar 2026 09:31:04 +0100 Message-ID: <20260306083113.74177-11-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: AHLVYrXbRuyqA8Zy9vLovTJSPW7etn_p X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX0FU7fZ4dTa3j 6LzlCQKKpuXmTXPDQgsBsfG2Yjl6oQeEchp4cOuao39eiyHe4HtsjPRIcPVJzF03Q89fa13NqZr 0IlN6zugf1u3gtwQ9ylaRoZuX0vOgbhaSR3uV8XC/xyBobk2VdUWVs4KL4xHvvRPBPwK6q2gSHG eSlit7iHtOw2UPVVo+aap66xP7+51wV7XUyKBI4t4KzTZbjLaY0RQ05PD88yUWRO/1NSWxZfLS6 doCUPduDq9ah7Aln0rV51TTMIhizz6o1jVkMB0yH1eS58LzXmOpPbzGkdEU/vdJU/cHK32PUYNs WtwEO6WZldf/0Zg0WBZ77jEK8tnt/rrEeVBGCyXEtsUwQl6S9SaCjlWcq8IvhY= X-Authority-Info-Out: v=2.4 cv=DrpbOW/+ c=1 sm=1 tr=0 ts=69aa90f2 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=0QeE6rx795gg9bSW8oEA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: AHLVYrXbRuyqA8Zy9vLovTJSPW7etn_p X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=860 adultscore=0 mlxscore=0 bulkscore=0 clxscore=1030 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABXCDpJ56t3yq4qpLu8cei0euQoK0PV2eYuxLHQZXlprIWG893S6UsMo50jOglIQoCZU9lI0dIdWI+7KblcMdqxeQJE+WFV5oFE9C8NE6AtuK9zYKWJUgIeuAfp2Z3Wy1QvuYQwYSUBv05hFAbA2onsVIF8Jbf5f/CgpJFmDz/UidvjhL9Z16JM7KR5kPORrXd4JF4NIBwSdXeXSrzsaMFwg5gYhUf4QfweZdGlziVFFWmwb9bx9yq86Pwl7wZ6Z5IhCku6gI7MiRnrtVZPf+jELThxxEueMt7egGc6HpzAO15s/2ET1J/E9uxtNghUtmSmEVpkSmfOobD1/MdirnN9I5nOlEwrXRYSHAvdDmQYO+jSBgJ1hhLgkyyp1caKRSzFeeLLM7HbZ41r0ZpT10ERCV0IbEaQrPElM3PW+1KyCcfRLGmLSS371fPfaAzJihuD5f5o0Z7vClEeO84+VhUXYbaAe8FAMIA20Jfst+wgtA3XO94SAOy+48FwxKyqDB+dT4hJRXqDEK6IFeXG/pzzQUH16D9EReCtRtwIGST4b/4qUT/xUAknAy8p3CRxlsq5CvVjQRBeO47unZ8DhMk1e1bu2KUVBejo03YM/i4Q6M7CRnC11VuPJmfyymj/iRZSWzd/LMfpGBx4qTrtDtwcHKdYvXA4usZ1O9/J3IUVB3kN4gv8eOE6EFdhL5NsC7ZbmpGaKEKOMYT0+7Wcc+6z7IX8ZEOWm7z0BjoAgLzzq297W4i0jRR9pFigh2En935xZh+ 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.4; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786078995158500 Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 a296b108bc..1c1437b467 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -24,6 +24,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 7a6fad1094..90769936d0 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2661,6 +2661,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 c37493b92a..c90124338f 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" @@ -1103,6 +1104,10 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *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]); @@ -1200,6 +1205,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; @@ -1211,6 +1225,18 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uin= t32_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()) { /* @@ -1392,6 +1418,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. * @@ -1413,7 +1446,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], @@ -1467,7 +1499,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 Mon Apr 13 13:55:22 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=1772786001; cv=none; d=zohomail.com; s=zohoarc; b=TdmREv+gS6IYiozZAnH3NcvmBU+uIh8CHJfTviDXIrBhPP9PByXwNtDgd86Dblx9SIWPjcVtjwfuxMlypP7qngxvDFLaEWINP58BfHX/dIAqt6ibpFN7JdG5GLpr0BkhtO1uHexRH/Jz8dR2d4MbmuJRunnq3mEwYX08LXPJYAM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786001; 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=piYFY6zwrd04Sa9xxLjLf/dk2zFIxF6bTXzzDY0hs/Q=; b=S26oldPam+daGc6qf+IuiqAa352yFyOIx3P4ZTTov1ii+DYmoll8ieEl/J8E5ifMvMyaGuZuzKUelqmvYKh2VNFwNg8++YcmMRX/Ec6kfY0WDrgJ2ieHT0f3bXzDzBzuQoaAODOKBF8qKXF61a9Xie+giZhCNZy7QscAD68vQbM= 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 1772786001180919.2571467214096; Fri, 6 Mar 2026 00:33:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQcS-0000z8-GD; Fri, 06 Mar 2026 03:33:13 -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 1vyQbF-0007Id-IT for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:02 -0500 Received: from p-west2-cluster1-host4-snip4-2.eps.apple.com ([57.103.68.75] 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 1vyQb9-0002Uq-IZ for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:54 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 698EE18003F9; Fri, 6 Mar 2026 08:31:47 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id EDDE918001B2; Fri, 6 Mar 2026 08:31:44 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785908; x=1775377908; bh=piYFY6zwrd04Sa9xxLjLf/dk2zFIxF6bTXzzDY0hs/Q=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=SnLuLmJjdk8Hec2yCLCf6aY2OBzmu9KJDWWFu71UxLfmT7BQp1jsoml7EYDpHZScSobQe1AQzy3lqRO+Dnks3S2jRjXTPqpdeRwx3FF1NqAXcofu4YgI94cBroBdKkj/TpDZEkTlNEqxzsldu19BUljXlmNyd/4TaUlrsnQKIy7cJQVBlhgSdjRJ5NCJ7HEYQ5LlEf07q8bocuQstw6cCRYn1VhiJQOQL5ZkpeIxzhbMfyu+Ub3AViq6L7qZ8HvbQ2HEgdu2gSh46FypnLU6NOqpChIHZKizJ8iD1vlOIvl0Bps2SHZ0+pg1fYQzzi2qctuFCwCCEebJhhoIDpoaEQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 11/19] hvf: only call hvf_sync_vtimer() when running without the platform vGIC Date: Fri, 6 Mar 2026 09:31:05 +0100 Message-ID: <20260306083113.74177-12-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=T7iBjvKQ c=1 sm=1 tr=0 ts=69aa90f3 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=PzQS8Z__MZ2uSZov3vkA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: _nvqsJzaQ0smbBP5-os_ORlCfmwoJiUR X-Proofpoint-ORIG-GUID: _nvqsJzaQ0smbBP5-os_ORlCfmwoJiUR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX5l7Qsor25inf a2i2SOH4ZlCB4RK81py6G2ZMDlGPMMJLJ63xkbiMEr76uBJeM+g/JpLv796fdcjcJK1suqNqW2g 5XV6cgqaNIZCcK7ANFJs9RNO3w9oCGgAX/MoTR6hE/4XHwWc4DPWE+e03jqIjvZ2F6IgCsy0f4f p5f0U1S3DLXgSxTick9nzcFTjAekwsnf672jYTsxnpflYtyjRvvBYQqDWYcHDyvDveB6CdiEqGK 9bS/wCn7srLPNoZaA0VOB7UBAB2+3iaOSDuKtS1sl90NcU3NrUskbgJ7PNi3svpZWfKkWRqNawe 1AQ283a7Okl//a7DNal0zHIkUKw522Y/Ns7RurwCQWmrw1+s4JvJ0X5WQJu99w= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 adultscore=0 spamscore=0 bulkscore=0 mlxlogscore=905 suspectscore=0 lowpriorityscore=0 mlxscore=0 phishscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABr494RXl3VxSkM5o3bKsvs7pYCNXGBl8pyxQTcP4d2N1sAR7P6AEm4i46ZzwQad0IuHgZRvBXYldrAY3wSunmTFlyLP75XOchrs0YI9S0Q1a9wZkv1ONgbIHMeJYbRJPbOWLn5nuAgvzA1Yhv8pq95GnERJDDYK1ipELxVfPvxjySSebeDYwjyc5QxXV9fbOmwnlff8rtbmyVcDClx+m7obowKLon8C8MQUAoB2wA/0SoeYwLnyoNdnjskS0HRBIgrSSSQe8w1rqGXvEG+LeSGfx+ZSh7tY6TqyYh+SoNHREOcbFlQYGvukt5qrlzakhLD4I+xusts2d63jvaRlJnKzYlT3BLKJ73+EyNz4w3Dqwr+juPOdaIPL93J0FVOt2mVJQhV6qDXxG/mi5KucoSDVvrGOPbxPTqiJ4WlemO8OyFTr+g/y5/kc4LFSP4XM5rSfQt9HZkZE5cf9Y8Z5oyne6trIZ/Fyx43+pcbUX2yxE92A/S02jsfiRm1vazm4v5jD2E9O5zMRO8/uYfcCV2ewMdMA5xXpsbc9BQ/hTKg5TxtK7WXdimz/VF4wykINJmZj621JZvrOKdD2+9CKfA1k+rcaLNJZsQfSpMK0ekqz1VTqosDEczgsylflXa/NN8S2eTioIvdnx5c4D6aHUq1QE27SrmCmIOkm+u9Bvm6yoB4ZvwhcbV9W6vSrmEQ0VAJpWyAG9Ey2TJ1DBc0QJQAeOO4kZhW7ks/SyIMvKXhbdN+fh4fCPnD5N9dnW3RVxC6XaY2W4eS96T4A== 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.75; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786003538154100 When running with the Apple vGIC, the EL1 vtimer is handled by the platform. Signed-off-by: Mohamed Mediouni Reviewed-by: Mads Ynddal Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 c90124338f..047b3601c9 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -2334,7 +2334,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 Mon Apr 13 13:55:22 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=1772785972; cv=none; d=zohomail.com; s=zohoarc; b=bu7l+8gUKXhs6PXOluYIdZslhtl4zIZ/XDJGObsKeelCUxZx8e8k28dGCzFYfxcsyNz3pNvvuRBeuey8THEz+Fv3wJvrMNqltqxnYO34xnS42RV46njGMdfMHGkogGdpU9mGCQ6Q+zCzKenmkO6SHnKVrh0zrc9ygxu7fg8bdcQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785972; 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=qAVaZtJuZJH9uX/VVXHmkmsjUQo1XpfNBC4AOqSB4uA=; b=aU23eHZebCaBoPOFGh3ZXyYz8Y1MMT0VPC3WeFOxZhAYGxecWEC4DadA/OrIzJWG26kfeY626eaz9QVmJT+IKHitlKxezgltI7RzTEPdcg8Z42kk9Gg3Re38yErXhR9g4lYREH7yrkpfMOcZl8w32MLSc9Cd0g5TAmg+J6pvONo= 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 1772785972259978.4736811051149; Fri, 6 Mar 2026 00:32:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc4-00088F-UA; Fri, 06 Mar 2026 03:32:49 -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 1vyQbF-0007Ia-He for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:02 -0500 Received: from p-west2-cluster1-host6-snip4-8.eps.apple.com ([57.103.68.61] 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 1vyQbA-0002V1-H1 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:55 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 099E318003D5; Fri, 6 Mar 2026 08:31:49 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 85EF4180017F; Fri, 6 Mar 2026 08:31:47 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785910; x=1775377910; bh=qAVaZtJuZJH9uX/VVXHmkmsjUQo1XpfNBC4AOqSB4uA=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=djNWRKHxGpAxxOiagKi2Ki/+7HRCv2XmwoZGTolm8d3qO9smSjESO/WM76s1GieJTi7+pTsiO7MyelK+r2loqqb8jauhhQlegkXTUY4ulpncaIX5tkDzsvFI9RUr0hHPdwWH/A0kzc6AVa+n7ZaGqUl+zHLbY29xF17UYOeUIE7k360Z/I58NwwjaqYFq2DCJcHYIENpOv3fHrgkTjeIYm+K5WlOm3pQQtv9ct+ECom0jYiWpVkBXR8bgTrOzE8zhgyBjhNHj1KuQLXFS6C9abdO//o6EQZLVBChNZZZU6v29XguWjFn4QNq2mUberbHZ2/x8y7aQELd889FAF2WLA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 12/19] hvf: gate ARM_FEATURE_PMU register emulation behind not being at EL2 Date: Fri, 6 Mar 2026 09:31:06 +0100 Message-ID: <20260306083113.74177-13-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: icv7C07zI6mxDn2gckBzczZB2Rb02MVF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfXyHQlkDndSvFP B5Nz7S3prwhhktc+iyuZGVO4pmyv+gryBf4lqx/mhrXmZyR02ePQdXUov2AZPMve+acOAr2L62V Utn/OPXRxSrFW6nB2ZeqyL+hlxNFtB1Mm88DWtCGYpxzPr0nxmcmciPbizX2DLSdpTiwd5zdX43 S8rlB0hl480WQLaKiKkkdVPAOrQLlh8vi2fyhJH4gyTLU0ARJSc6BehWsnYw+WkxcO8UWn+eSTk pGVHQC4u5c8VstZMJ4ssF1kHNwNzpPyT5qnBM78HF6OJfSq+TE7jSXlamkXacVDU74vXutvX863 p1Rh6znOCaewCKFCtD9x5byWoNCqC1rOpMBW1JOwh34AXTuYtC3MEGlTyda+xA= X-Authority-Info-Out: v=2.4 cv=KqNAGGWN c=1 sm=1 tr=0 ts=69aa90f6 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=lOv7bB1OiAV5i3s2B4UA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: icv7C07zI6mxDn2gckBzczZB2Rb02MVF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=774 clxscore=1030 mlxscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABOc6v6Oh04apLmn6SV7nGmXpJz3IdrysvjjHQrwftAZsNvMMYfzF/tqwPcNaklUfpw8Iuh/9YohanVjt9IslT0jL5yCADqo2ceWIaw5qToLcs2VFqpTdSmYscoZ3Vj4qmKvJp/kzc8nZy+zR5ps7e/l/JcMHjR1quA0g5GoQFfKpKFdb8Vbode4qKlOD67ZRs0gwX/lAtAdJ/Jv+2fqMR6ykd7Lm/BdhgQeMcMDpml37uaDsOSgEiYdLcviq68IZE+Kn0lz0t01GiX7ug53uPXUcfwH+6e2rqYkJNHFehqDo9CM1lVHF6fh7zITK30sXpQZrRlIijEVBq9/zdiOYuhcu9xv9VvOTNIoYNdhI89eIu5CIcZSNv9LQOyjgh4kOa9HjSieEGc5tGV2bNfDuV4jGjnXJtVwcKIjuDERpvB9Gj/jDlfe/i30zBqbmuRHm1tGwsrolgVsCCtc+dHpCdKM3Zwi5x4Qd+6/JUZWdwNt3rTe02Izit423oF5X1T08YwJsw6vsi7A5tm3hdnsCuUe+La5ahHNNxDaxU0/CII4DC+gZk6aYFUAnT7OXmX+vDZEwsKurksyqj3yA2SnIIQ4kTe2OO2t28Z27Ynx/pXl5oryNuTt+OqCIqrTPLEcExVULaZOMcGNWGekFE9vj3zds4mc1L+YWSWJe+JbjDLcv+Fwp7OOI5/k2KZjvb/GRGFdaTnme9G4s4yWgrEZ1pUjtA926UXFvSgNvkRYDPgxlcMwo7Ddo8Vg2rqdqKE8JDlXiv7sHEvpTaBGY= 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.61; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785972757158500 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 047b3601c9..da6b548880 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1567,7 +1567,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; @@ -1828,7 +1828,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 Mon Apr 13 13:55:22 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=1772785971; cv=none; d=zohomail.com; s=zohoarc; b=gkGL5ePSdbsjzK3/ovb5gIeR1vgDPYFyhZNNbIxCd0coKLgY/e+GGnIod3LmJdCsPicBp2e7ez65FeBHOnyvw+XYNp+iCJRyDO9xBxyccyVOALws/4Jq8WukrCT8rQRf1ip6Egk9dj+CjTzxH440JBzH1BW1ByTAdxIAXaTHijQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785971; 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=OUuDxgqNdZmzpnnMy18wEMM/IqxNg59OjqOVW0/0Og0=; b=jFRMBqVDeHBXMHW7yYr6nv0mMvrybESCoy1x5AxO5ZrNCQDxbPr8X11etT/pKIgJFqLj90vp7wZWYvwkN+MzIEELPFXyLC/1jcfdgsc7I1Fx8LdgsBo03B7E5Z3A7/04/nFXFfjZ49Bd05MYEIY+eo7ECo+I19mXP2CPIbBTkCQ= 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 1772785971692997.8450136119649; Fri, 6 Mar 2026 00:32:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQbi-0007YG-H8; Fri, 06 Mar 2026 03:32: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 1vyQbH-0007Iw-Gi for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:03 -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 1vyQbE-0002W9-Kn for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:31:58 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 73BAE18001A7; Fri, 6 Mar 2026 08:31:52 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 21D5618003FC; Fri, 6 Mar 2026 08:31:49 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785913; x=1775377913; bh=OUuDxgqNdZmzpnnMy18wEMM/IqxNg59OjqOVW0/0Og0=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=JtyF4GLmpWF/4mKlFJzw3zIyiNmKAlP0Vqy7IIhPgfQ7gMQdk+6K/glU7vLZUchoiPBYFhtLHTAyjAjWWKzZyAqim8TlHw69Q2Rrc7MuitS5nUy+8G0s3KIcQsrTIVOjY+heyqZjxO+lhmSxY0SR7sTGD+4T1vrQPNdAfTuG3bsEXBLoOXIFTuDrBuIaLkU768aBuhtWNDiyUtHDrqPwdmYbijE60ecDkfOcjzWPIITdLXnD5t4AgqelLgseNVD0X7c5dD/Jb0GexdnEmybJ10235IH6WXRzW6ltxpH9jJ4jWwrDdTDwQu1jz5ViuOTar2nSLCfvA3chjwN+4v0Vgg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 13/19] hvf: arm: allow exposing minimal PMU when running with nested virt on Date: Fri, 6 Mar 2026 09:31:07 +0100 Message-ID: <20260306083113.74177-14-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: 0M89AbIRmRwsL-DEmagYZNfzH9m4jV2x X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX1W9oU8jHN13f Ym1iKVUBTkfRX4csYH/4G+a3YagZZK54l6hcQPhFyaEiS8Sj1LWxDUYBTAWrxgbMaLXbcc/yEKO cRRr8YR6CDi2lR6aKE2ykNp/lQlHb9X/bYX4Vvq2u+UkcjvTFzVI0U+syr6j3NHd+2ATojgsvMq zGFQdyRzLiemsLILqZIwVUmur+gNfN6oqxJ4VjTFMFcbpoGa6TzgIQ6822jrdDccLcGmTtrabJe 8Dsr11SB1xyWZtmb8+PMcZC/D0ewcCLnElEfeRJUAEh0Ek/lqtaqz5kX+gUTKtP37PZp3F/7YXl VCVNkriEFMMF7PxE4vdPQDzSB5lG0YUGL8YyI15+fcGG/JzZWnbp9JFJMLjA4I= X-Authority-Info-Out: v=2.4 cv=KqNAGGWN c=1 sm=1 tr=0 ts=69aa90f8 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=DEZpVyLLCdwXg5o-P5sA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: 0M89AbIRmRwsL-DEmagYZNfzH9m4jV2x X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=651 clxscore=1030 mlxscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAAB7GyCJiQEqIuB6dZKGHEShm4SovYCRTDnrJ52Qpq7Rq7xZJa7QuH8UKeT9B8vHBq3+SxNzIX5fpWU0nmZ9FHnFYcVrqQzaOwX6mSTMFW53DOoCLtGO44qnWCV9Le226Y4znnwsnXCJ4aiJhR4M8Gm4NhSP6P38FTq3jarBv4nsXK/+10SJVgdANJz54aylI28NTuH2wEPoZQfos7XQr/ywt0OlKJLIBxYE4RxWEFxihh88LET3yYfjv6Pi1DiIb2su66hfU9PfWPSqH+zZ64Y/2XoJm/L5GIoNUhs3aOv8kDmD1yiA4Y7iXP1VT/WXcVEMXSDhYu998Bc+KcSUYB2ZFPnEOz6vrFMrASeAmBdsKM6/eNPx3Kw5KR59JB6euPf9lr/W2Wvww00UYcKedFzGb1NSU88NPI6d6c14oZ6d1yDggYsSnaoX9UGDSj0I1HVog3dbX5+XOaUW3jd9uEisyBNkP8BINa8n9UWN7TWXw/FbB+/VldduDY1Du1WNBFnAVIQG0cyA1gNC38J08W9U4BVkxmp3l+5ggTye+LRRMbeV0Ixob8+xSEMStmsSngdy4rfDantjx/qgDfthVSa9BKDiBJh0m7q4xfvz9pi/SS8EQOXAh3RKW0Z3YMHX6oWm99+gv82tY9Hlj3piGNpuUpwazcTKuKOC1xHQ9W5ieFvlIKAOMGoLRTpKM+2lA7ZjIzGjC0+G+ESi62Wv6aP5/Jie1I9BfbdXYTQRg86k8tb7dK3UNTKmka0H6FHBJpIiMI3H9bphuOWcOxInxhelw== 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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785972742158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 da6b548880..212efab731 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1127,6 +1127,10 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) =20 clamp_id_aa64mmfr0_parange_to_ipa_size(&host_isar); =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 Mon Apr 13 13:55:22 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=1772786102; cv=none; d=zohomail.com; s=zohoarc; b=Q9/fL3uG3WeZAS8H/ee1Xaw/P4i4IYG9LTy2Io+IfqmU2Putj1mv+9FblCZjCX/dlNu3b/MXXK71dwYa4e/zoOfavu42KGlybaEsvmNhsNde/KEZt1qqNV6+cGWP0RXnz7dXceqqumWwgdEH6aSK9660oXq+DwzqNKGRNtxzjhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786102; 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=T09YaB2jPYeKCsoJalctReTDeuCKV9icg1YoMmiUMB4=; b=Yl999HtoWncQUNWIjmaSuUvqr1ZpgxcRHyVnEaRn+7yZ/5oI4EAXbNRhAP8rwsaao/uEiNxIPSkA7/Z29fYji84prNFBzOhcldtRdAu7nqUMqFP/MfYvTrbCa225lu8w+S3VrH3QeHtprjZmjB6J8XPvdcbe4DDxoBYRUavTQWI= 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 1772786102855401.33549880751923; Fri, 6 Mar 2026 00:35:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQcA-0000J5-1D; Fri, 06 Mar 2026 03:32:54 -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 1vyQbM-0007NS-OQ for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:06 -0500 Received: from p-west2-cluster4-host10-snip4-8.eps.apple.com ([57.103.69.189] 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 1vyQbJ-0002Xh-4H for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:04 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 6AB3118003EB; Fri, 6 Mar 2026 08:31:55 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 8329718001B2; Fri, 6 Mar 2026 08:31:52 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785918; x=1775377918; bh=T09YaB2jPYeKCsoJalctReTDeuCKV9icg1YoMmiUMB4=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=Cjy1L4G4qevXyDBJfihBnPEXxy6AvUxYISTr/dr+qVMGi2xuAabKk+W+aNroYRoVFdHcJivSRIOXDNcJnEMvIZsg674rSGL+yDZ90tJhwRgAICBqhG1lkDcTdTxUDqX82kZsE4a15yxjVkQoq50IOFkicU+6PnRryIZ6sCCOjbl2KXc6Cz7lcIrN7zBla1O0cDKamYE30fFH6QTSNWbxVEPPxlTiqW6b8zQzOS1cAJ+Vb2LZNZZTzT6p+9TPekzShoNmEDzjdUxP54hxk/Le59OXN8IoZaJOT26UhM8OKU6hIZqpGrn9M3wOrdjlvTDnHWrSxkBLMCgqv6Xdbh/JQw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 14/19] target/arm: hvf: add asserts for code paths not leveraged when using the vGIC Date: Fri, 6 Mar 2026 09:31:08 +0100 Message-ID: <20260306083113.74177-15-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: wToGWqueeIAMdIF4Cz9tAVqIDtpy4Ycb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX6WM3dCx7OeA7 5oNDIaPhKXF0cEpMa7GzKmhDDmbAJxkdSaH0jYYCXvjikKW++5sNBgDktEi0VJiOCXbB+fR7QqS t087MNX8KeAe3HM4RbEz/bpgzh6+t3x0mVWcPYmENjJ/+RHZxV7o4V6hFWBwIw+vRwgr1yv1YX5 tzkaB4+f82OOj1QrOHRWoUFH34VYovS9mo1mEEwYm2wbzctZnYTzP5RbC5MXGvjGBGww4UVx626 +k0oIsLt52Qpa9JY4XRLFsd+DvwE5fCk5C1cvlPpZITSWaD4Qj4J4jC7GJ2A7ghQJ/wHIG127Xw 9+8wr+Kvf0yykcgssXvkF7HGH5sOK4xnFdrBsDJvhIKQJxEcB8PgCVkGch1d0c= X-Authority-Info-Out: v=2.4 cv=KqNAGGWN c=1 sm=1 tr=0 ts=69aa90fc cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=vbFX7M0ab_H1AmF9bzsA:9 a=0bXxn9q0MV6snEgNplNhOjQmxlI=:19 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: wToGWqueeIAMdIF4Cz9tAVqIDtpy4Ycb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=531 clxscore=1030 mlxscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABYXCE1Mhj+jEgoR+9NYMNuRjPHaNHCrxfKEB5lfRPwgi+YHAK1L2WqnqDSP2tNK36RmwLvD08CoA0/49q4aQ10q05vcpFouUtscNEij9xMqU3ouZZwHJCGJdbke9jgts1dRFsPyXm+2TeAwH3KpRGW8aCZlH71rTuBUlWIDJKI27BUqAfvB9g8YiRldpue2CXSimmsXG2aHMxYCffiHKFvu6YOHXtafA2i09y+6EC3QRcyb0kT6klIuaf7oskXPbBfIg0D0VbOBO0QnRXkZryPNLKBKIwj7im/aivHUIcE8RY05h4f3GdFvpsMmsk3daiz8W/ZejJCprhuG3ixbkQeKtizV1kARZ3b4nf6V8Mu9+httXbzlXa39Tp7x8N8pQjuma5AqFQIbLTeV5SjMsACJp6MlPEzjHvNe75/RNgQgusBiJ4SmY6lJiek9ERiqJRvax0ZsMGloiE4RN2b65hDDdUixSp0L4enj7Arux3cOpmaChm5HfNRsGzFJ/aYJDKNC+SXabBsdQ0BWsvHt8+i6zsOH4uZ/YbjohM3rqnrsRj4CWswvPVaQGfa6qoLloEAlL7X4gbFKWi73+ewyXbMS4l3rGYg5xf+ogsG/z789fBI+j9XMPXVcd4196TC8ZU/PRo4RJOtb7Pb/TS4IH2hNoDurtCH1EvNCtlrCRdtkI5IOsTmxkonwS1QZM8NHXnowqTpZf3Dvq+0fVTstEiz/ZvEm/lPY8kBxMzVqTXW9NAf9xTCd/jVqmNi6NT7MwGH9+h+3WI35I= 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.189; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786105041154100 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 212efab731..0c96119ab9 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1647,6 +1647,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; @@ -1937,6 +1938,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; @@ -2344,6 +2346,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 Mon Apr 13 13:55:22 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=1772785986; cv=none; d=zohomail.com; s=zohoarc; b=SU7P4ept4IKhdbuz+rLJc/RIPkiy1RMzLO0VsVjbJvzdCiipniLj9SsoDy47zU/+ium2lDiiJdpCDZ8xJP9WCbI+bqOMy6fjQRp5qf4J9fKCNXJzeFrwSRAUb9vOJbtODCsAyc+nCuRSQCV/17iFu/OivIEJiDYOBO5T2ARJ9Ug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772785986; 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=ItmA7iXTDqqGZHO0naG8y+91jnHyKvFRYWfwX5RGdgY=; b=IPWwUCSxE+2vsCtEvcwjJO1wurIafFxmSQFGyqMleMkicZ0wlP9Mc1vbfK5ZCFeBtqfBMS7niwQ8INOexPlf/81BQ6SipP1W9b2tWtVLwjwtE66rl7GFNcvukUR/rimcfFHSOZrmn25vgcptsFQq7O6bsIiHPVDaBqJvYJ2fJ1s= 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 17727859860892.697231928144447; Fri, 6 Mar 2026 00:33:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQcG-0000bo-DT; Fri, 06 Mar 2026 03:33:00 -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 1vyQbJ-0007Kw-Hq for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:03 -0500 Received: from p-west2-cluster4-host6-snip4-2.eps.apple.com ([57.103.69.163] 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 1vyQbH-0002Xb-8Q for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:00 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 82A9618001B8; Fri, 6 Mar 2026 08:31:57 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 1AAC518003F0; Fri, 6 Mar 2026 08:31:54 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785918; x=1775377918; bh=ItmA7iXTDqqGZHO0naG8y+91jnHyKvFRYWfwX5RGdgY=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=eLAWawoWGIWPMQP8MgOoh3i5o6LUv6JgHgpv8sb6Ny+C/HRkg/jMTKsiTDObMARzdzW7EBg2Z2nEmxvi53ApTdLeB5u0kPpXsvXJ4tNPdvFHJLB236Fi4Isngfb3lNhds3mA3EKsw8qNsEwtU8X3ANtfRsbue5N+jOeObRtcRuEwePAkdx7bmpACpkHE5qKcy6K5jCWNDNN0Z2xUWtbzG7ynrxENJWJJPzvArzyotWfD2puQhdu5IBw2CzGDFbuqdgqN4cpbYZhHuFYTxuSxau8kkhwoCnETsGd5jmm3mrZ53DFgLn8W42QXApQwPCuu2D851OOJLqBMxE1q5izgRA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 15/19] hvf: sync registers used at EL2 Date: Fri, 6 Mar 2026 09:31:09 +0100 Message-ID: <20260306083113.74177-16-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: JzJ6Hk_3deP5jTb2nKRy6GKlyPwRQUOk X-Authority-Info-Out: v=2.4 cv=D+lK6/Rj c=1 sm=1 tr=0 ts=69aa90fd cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iuyuHyZKG8LmWTHPEAYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX0yhS9TtSDipj Jd2vamu2AjTtFxJN5cALmN9ihs7kVaf72Q9RdGOgmNAjyg26pp+CMQhrHOQWpk/sNY+hyqVGrqn 0EhpEAvySHkiG/fU5K4wwZSfWS4FBJ6CT21rlbYP2LzaynYinKEqu6FeHfpQ2ZMziKhmJI60SsU ctM+wMnNH9JQZAc1GmktjnUYiqWwr60x7vbpFgObPkzpayMjXkouGb1Fwy4Q/rHJYtT/qJROMrO zZNZ8uK3m44p2i1AnWG8dQqB/COfPE16lPaDglxku6/JcKoXTYtbHiTYl1fYwLiMhPREJaFRHUP TguCeX9lyBhRinD3waxAtO37ssXYF3sDagw2pGGIsA2y6F/FUn9mHb6l+chyN4= X-Proofpoint-ORIG-GUID: JzJ6Hk_3deP5jTb2nKRy6GKlyPwRQUOk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 mlxlogscore=999 adultscore=0 clxscore=1030 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABfqv/3VS5mvoG/2VatAxTQcWgTd++U4uUDpO58CHf8/4nXh5zrlXjIQoGg0zCRbSD3NTCPgLxbv2drPoRC5bSwXBh1H2+MQCQGrsbJDP9EKTESTTE1p7UJyUN77dYgxpmiccNJypLpQ27K7vTv5oxlWxqwTMFHzHsva+k9eKDCvz1Ybnk/zhb1J7xnSHMbEcXguCx3bTbbAEo4J4d0Lsw/wciztGzmEIkhp8WL58o9ZdfLuFJOjG3nvPJV6a8BQjYTJBjX759lsslj9jCZcuDDr+GGdOfwrEbWIbVpnIOhY8GL7Xvdd6T3fRfDYiK9a9P8gEWnP7hPATCJ9cc/mKJ+bojbvBoLgGPpikkql7kMyTQTqG0cSNW6iO9ODLKFe7WUpm7VUB69mVQbkRb4hKF2I96J8UvJCD0aFr6OVrBuZi2XpLuosI/qYJEiAzdBmYVvvIch6JSrbRge+T7tqXkOzhaBViyWIiJ9TYM1SflJG4XJF4IkCvw2Aer/glcWMGBSGX9HcOxadsNXIDV6Wh68uRxeHTH9qfDPQ/YsOf7j/e1hE62mLdZFMbt8RaW5n1DtjN9w3IYCGD+F8Q7/ziLDceTrCY/BxRxJ1S89vvFwcqKtLioZs3owxQkSRhpDPdCpRi89MZ/XhHVaUvdxURVp4ovImBGpw14diYObdZegMY2sf1iLEdCVNJaSYBvi6CSs0LFbBpbTqpp2NojR0ptDleWC39WyVNyGn8f+c9mtz2JQBlFxSxU 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.163; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772785987544154100 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 | 55 ++++++++++++++++++++++++++++++++----- target/arm/hvf/sysreg.c.inc | 44 +++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 7 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 0c96119ab9..a07702047e 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -473,31 +473,61 @@ static const struct hvf_reg_match hvf_sme2_preg_match= [] =3D { QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); #define DEF_SYSREG_15_02(...) =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_15_02 +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 =20 -#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, +#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID}, #define DEF_SYSREG_15_02(...) +#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 -static const hv_sys_reg_t hvf_sreg_list[] =3D { +static struct hvf_sreg hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 #undef DEF_SYSREG #undef DEF_SYSREG_15_02 +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 =20 #define DEF_SYSREG(...) -#define DEF_SYSREG_15_02(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, +#define DEF_SYSREG_15_02(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID}, +#define DEF_SYSREG_EL2(...) +#define DEF_SYSREG_VGIC(...) +#define DEF_SYSREG_VGIC_EL2(...) =20 API_AVAILABLE(macos(15.2)) -static const hv_sys_reg_t hvf_sreg_list_sme2[] =3D { +static struct hvf_sreg hvf_sreg_list_sme2[] =3D { #include "sysreg.c.inc" }; =20 #undef DEF_SYSREG #undef DEF_SYSREG_15_02 +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 =20 /* * For FEAT_SME2 migration, we need to store PSTATE.{SM,ZA} bits which are @@ -1288,6 +1318,9 @@ int hvf_arch_init_vcpu(CPUState *cpu) #define DEF_SYSREG_15_02(HVF_ID, ...) \ g_assert(HVF_ID =3D=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARGS= __))); #define DEF_SYSREG(...) +#define DEF_SYSREG_EL2(...) +#define DEF_SYSREG_VGIC(...) +#define DEF_SYSREG_VGIC_EL2(...) =20 #include "sysreg.c.inc" =20 @@ -1314,12 +1347,20 @@ int hvf_arch_init_vcpu(CPUState *cpu) memset(arm_cpu->cpreg_values, 0, sregs_match_len * sizeof(uint64_t)); =20 /* Populate cp list for all known sysregs */ - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list); i++) { - hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; + for (i =3D 0; i < sregs_match_len; 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; @@ -1327,7 +1368,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) } if (__builtin_available(macOS 15.2, *)) { for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list_sme2); i++) { - hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[i]; + hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[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= , key); diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index 7a2f880f78..c11dbf274e 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -153,3 +153,47 @@ DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64ZFR0_EL1, 3, 0, 0, = 4, 4) DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) DEF_SYSREG_15_02(HV_SYS_REG_SMPRI_EL1, 3, 0, 1, 2, 4) DEF_SYSREG_15_02(HV_SYS_REG_SMCR_EL1, 3, 0, 1, 2, 6) +/* + * Block these because of the same issue as virtual counters in + * that caused the revert in 28b0ed32b32c7e5094cf2f1ec9c0645c65fad2aa + * + * 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 + +/* + * Also block these because of the same issue as virtual counters in + * that caused the revert in 28b0ed32b32c7e5094cf2f1ec9c0645c65fad2aa + * + * 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) + */ +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHCTL_EL2, 3, 4, 14, 1, 0) +#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 Mon Apr 13 13:55:22 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=1772786052; cv=none; d=zohomail.com; s=zohoarc; b=aW5bxCVXm11bNBMTM37qpH2g0OTizAoXVAANeezYIEbEIrI+dDpmnmScSjRz4wMwgaiwcVvI4Gva/g3cQn7olldVgjpxtyTB3htL3h4wpSQBU6k9IOY7+UTM8i3BnK4bdr97i8/AYLyF0UAZjKIgd9FF2eQRBPmtkXSn+w0YTCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786052; 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=t4q77Dqvvy3Y0q2FeiECDJSHa9xcTExBPNU7QAvHHos=; b=kitM034j5CzW+ZOUZd32mOIp16G7e3UKuiecX0GxBJq/Jd0G6p01SzB8/4kECTFG03BHhHsgoXmUO7YJFkPHpGOBvf9U6yZuuE/0+eNGH6RvQNYgY0J+HGT62jmGwEGaqELZNgdetZ44Oj4zMVNZDF89xZDUTikHo6SXbCOb4T4= 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 1772786052194241.0513050129847; Fri, 6 Mar 2026 00:34:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQcc-0001Ec-I2; Fri, 06 Mar 2026 03:33:24 -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 1vyQbN-0007Nc-T9 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:08 -0500 Received: from p-west2-cluster4-host3-snip4-10.eps.apple.com ([57.103.69.241] 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 1vyQbL-0002YY-7w for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:05 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 5A29718003CE; Fri, 6 Mar 2026 08:32:00 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id A2BBB18003F5; Fri, 6 Mar 2026 08:31:57 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785921; x=1775377921; bh=t4q77Dqvvy3Y0q2FeiECDJSHa9xcTExBPNU7QAvHHos=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=PJyPmKGmCpn3hohjO6J0ZmQgQQvu4X+kpxobTTRcTjW3sf2YbHGLBE5GqZ5f8ddaY1AGJXjkAz7TmW7skrJpftKrqOFt+I6/QgI+AwxmoTQmc+lLhjjSAegpAgGr9kuwvRLCOIRdQ7cLJtuc5suaE7nTE4REfU7KA+5zcX328JohqaRljqpFnW/ygIzjA8aP+2fJs4xbk/Caf+Goco2p+QwM5dNXiPteUWdy2YuJortS/FClcuBG9wFYUnM5lXN2qL2zhz4d8MfoBdcUdmSnTwUYb8/8hPmtPW0i7hK8MI5IRL0TAB30XEY/H2Mu1C2zW4HMn4krHTQehpLeAlp1cQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 16/19] target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1 Date: Fri, 6 Mar 2026 09:31:10 +0100 Message-ID: <20260306083113.74177-17-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=Yb+wJgRf c=1 sm=1 tr=0 ts=69aa9101 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=L1bH-B2CdzmaWMF7168A:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: nEevsHPi3Rz0V0tkg53yL7rU5c2BLov3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX6bPpmbt1N3gK MjmmvGlyQAcja5pjgB/emCWHnfHHfkxNm0jM5IgGiZq/KI14KxZAzs1onVrgFMEa2yvyn14shQK fi8xYGkg6z8tjg55iWhRAU7HlkRVLDW4Cpi4q1KrUpXbeTy9ecw4g4wdkQ7CFp+rejidkQhRZaN x8hQa4vCi5BFkHqtmAs3vRPsRZLc1CQegURxguOdynsKPTOrzigU6V/K4u8DLeyiigS1dhc7W04 ogxCQsrxo2KK7r1HqZs2POQjIIIB0ymR06NxDdBjEg1/uHCPNArCP71m25PGxl/TkPRmqmNktI/ mOVUAOIyPnMzdHUyY2m3aAVHhX4I807NbR4MsTpf2kz+vU97X0mm+LPQ9Txwv8= X-Proofpoint-ORIG-GUID: nEevsHPi3Rz0V0tkg53yL7rU5c2BLov3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 phishscore=0 mlxscore=0 lowpriorityscore=0 mlxlogscore=648 bulkscore=0 clxscore=1030 suspectscore=0 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABamlE6HEqmMjz0+HIc6pNVjxaRjDwS/HV+TPwk1NXhX7dqf7TRMAMtlFrEsoGTyh4RtlI06NzbmPQ8wtv8q19hCkc66AbMyydqNZaBJWSwG4YWT22MzeZ/HreeojXhRlGO9/A5xO5AhM58zQAyWNq4fvNUfneCHKD8AIDsfD6XQoKqMZPv8H7gNGJGmblNFuirESD2CRoOANX3gHRBGMarKqF5xGC/C/Bj5xL4zeOOoJ3m5JxuBCc5P+cWQ13IHVVaRnQrjjTwt712KyXEpCBAi0BxhMDYtHkEVzr0fdoeTCWUQG6FPAVNUm8nIv2n88AbzaKyaVEeh4lzmX59Na+pHQQv/ZcF6IRpzcKP8qHWFxoP0+gKY+vl9VN4uHkkUqNVeM6QXxyrlIc6JfkgSHmfsKGbcVBMaO1ts3qoFIkLq1L/TrPKrgNdCNPyS16qrMeTvlum+J7fee9/NZ7YdNcFildo5byigjszjuMob2DD3pmjVx6i4lKKvnIK9zL9gRaRcVqFGn7EU/bMZRgQ3ejug/nacBjL2qMKqqHi7rdRRuBDJ1zCayVAdsNhf6rxP4z5jtqAOyWmJxVeVJASgRkB4UVNlKaloKT9eleUZvm4H4c+NSUIfrKfOrvAKzwWSSggdYviU1bHxcsyxhwe7oA4skm4ptSOS0TQz/i26HBSjnCRCqX2sWHyhnUHlg4yD+ISgoa778AgwG8MyG0vjHdBtgQsscbkuSL3g+23fA5YyLVmbT/3RkePi0F8BWRKyVKRxA4WHScoD6z5m2/tnbO 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.241; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786054275154100 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 a07702047e..8d1333cbb4 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) @@ -1662,6 +1666,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: @@ -1950,6 +1962,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 Mon Apr 13 13:55:22 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=1772786077; cv=none; d=zohomail.com; s=zohoarc; b=ftpb5uN7sHAjIpW9WdoZS9proMcmeia1Kh939tU6dgda5Tli6kyfxALQLLyKcB8U44TXjYmyUuIJy7GbsHO6XXqq3aBBm6jFKsnM2MIblZqbcRWi443B1e+mZKgL1c85IKX1/GCGvyLCSlqAxwCUcaiHIWzYqzE+mc8HB6Vsypg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786077; 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=vM1Wlorf+XqQlJ5f9IMCqYNj/5ImA32mrulRYej01YM=; b=PFY1BqS7IR9x3INfdfqQckQHglCJDbBakA6z2y9RUjnjvbvuDA1mtGiVC+nRx17pv7xXocT/U49QmcK2VnRCPE8GJpBUywZ5rxe13l76YkjX7Frt5X3g21BNNLi0JDh8maeCs2/NzdXS5xP/RyQgbR+A6yZYVI4V7dXBf3fKb2Q= 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 1772786077175338.7678677529665; Fri, 6 Mar 2026 00:34:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc7-0008VE-M6; Fri, 06 Mar 2026 03:32:51 -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 1vyQbQ-0007OC-0r for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:08 -0500 Received: from p-west2-cluster4-host11-snip4-2.eps.apple.com ([57.103.69.133] 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 1vyQbN-0002Ys-HR for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:07 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id A403C18003F2; Fri, 6 Mar 2026 08:32:02 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 371F618000B2; Fri, 6 Mar 2026 08:32:00 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785923; x=1775377923; bh=vM1Wlorf+XqQlJ5f9IMCqYNj/5ImA32mrulRYej01YM=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=ZVzU+68lGPgZeBPbDKgYkdkSkBPiZbSExf/cf99MWQ+4xHYP+AItQlePZS9JwPoFm7CRRMQHnJcGcrQprJFB3+shZ4/ftqkWBBTpvlWmYAxl1glKJIVy/xwRFvavJLwKEGMBkk+2wgc50d/JbhOXwlYBumfv5dWT7vGutRPZ9FkJeRMSyBx+f8wm6JbIk+du7zmMhbWRRm+SMnEeRk3B6yvT4cuxjhtMty3VzDSLfATyqw5TOujLShcbWL+8z9y1jux4oIcLGkwnE481q6pJRmIjy0wh4HAN6LUnOixal5QI7z0JW9BSp1Fkcc75DMRAZHCxq3fNGy0GYFr68Ip16Q== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 17/19] hvf: arm: SME2 availability fixes Date: Fri, 6 Mar 2026 09:31:11 +0100 Message-ID: <20260306083113.74177-18-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: doH_i0faB3QtCxgUxB8e5HMKi0iOX9Lv X-Authority-Info-Out: v=2.4 cv=RKu+3oi+ c=1 sm=1 tr=0 ts=69aa9103 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Iy1shTv_HyS0e-kpLPMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX0n9kjujcJPFb c+uM8Zi9zlrvEZXhNIivKKCe6gTxTmcVWm2iKpAiC0ndGEfT946E9/ucgDff85vPfiKQ24BS3IW mI0lhVom5vi8u3yBulDN3JlcDFQLIeNqVXz3TC+9vUDea1uVvZtngGxqUVkapFLwlrp4ZtXU0rA CSBt8pK7GPH9gfn6JTRCEn7LLM4penpmScJGP0eW+aR46qLJsDrXxLokixS7uTnwhB8uW5yKYit yaBhQF2xPCC+VMKQ5GhWkqKM57j6bZ5KHHw2+YQOUWs0U2wmAnw10mke34/36fRdGX9H2XN3urZ uu7Qyfu9BoPalOH9o6QJm2RlGn0TENsvsOh099S8JG2FoLexjyEzIE8AXGhHac= X-Proofpoint-GUID: doH_i0faB3QtCxgUxB8e5HMKi0iOX9Lv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 mlxlogscore=825 clxscore=1030 phishscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAAB4mU0zgdvCl1scc7B7/CY7oOZ/FgiSzT1fIObG9i8J83RjEH+G3dlKdOIzubAt/OBOhdHOzETs6CnPEw+kccUf+ZKF/QrMsv2RLc6mhbSrjbvsb4ti7D4ZLtQvXXM3vvCapTeO9lAJ7W2is3pCREOZHJo47ZC6GcsZYlfNS8U4GD3HMoMjGwtK75TVZOZlw952c6ZNvnnZbR8IuobszC4ARQRhptbNNOc9IJNX50lNIgeRdZNYVdHq520qF/7Fw0g1iCVQFc3BL2SnFLr2VnIMB5kWy5PKhKJZCwANGg4hggL5QbBJLQ6nUn3FeIzJqnZgC2vgz71OdtvonuhZ7UdGQOE8R77NEv4CURYKjKp2uO9+Wv2y6L0LV8kOYMhPxCa2xgvc3bV9gENz/ySRF7GtOGdkLEGe/jLe+xuuE7imbyzb304AhJ+uR69gTqZfPTUC92IYXufoFs4RbDHkiW3HGmb6yTkr2VZOKEO+NpMqhojXvqM8Fit2/93a8ptjBvbyhdBDFYO0TJa9uqhksAxpjeCQHly8ist4JJmgWM/rzar8HEtJOqsuw2ZI5Q5Y9SEG78fVQUWMJG7xYB6BBM6/C/CX9l/Gy+LiWE17wM4R4G7NfWY93lJe/3yE0pbDpWqbK8YpsoWdrFx5xsptMdB4K84XRmBxTx/o5rZEkkGZxO9K8o25wiIQvpsa6zeOSoi8UgARt/vegwQ5sNp+GwweCyaXD6kvsWprvCtR8KUQ2RRVOMuSrgcRkFjlg0N 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.133; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786078909158500 Content-Type: text/plain; charset="utf-8" Not sync the SME sysregs if SME2 is not available. Disable SME when nested virt is on. Signed-off-by: Mohamed Mediouni --- target/arm/hvf/hvf.c | 29 +++++++++++++++++++---------- target/arm/hvf_arm.h | 5 +++++ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 8d1333cbb4..cb05db2358 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1163,6 +1163,9 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPUF= eatures *ahcf) =20 if (hvf_nested_virt_enabled()) { FIELD_DP64_IDREG(&host_isar, ID_AA64DFR0, PMUVER, 0x1); + /* SME is not implemented with nested virt on the Apple side */ + SET_IDREG(&host_isar, ID_AA64PFR1, + GET_IDREG(&host_isar, ID_AA64PFR1) & ~R_ID_AA64PFR1_SME_MASK= ); } =20 ahcf->isar =3D host_isar; @@ -1370,16 +1373,22 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; } } - if (__builtin_available(macOS 15.2, *)) { - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list_sme2); i++) { - hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[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= , key); - - if (ri) { - assert(!(ri->type & ARM_CP_NO_RAW)); - arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; + if (hvf_arm_sme2_supported()) { + /* + * Clang doesn't allow us to combine the two checks together. + * -Wunsupported-availability-guard + */ + if (__builtin_available(macOS 15.2, *)) { + for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list_sme2); i++) { + hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[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, key); + + if (ri) { + assert(!(ri->type & ARM_CP_NO_RAW)); + arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; + } } } /* diff --git a/target/arm/hvf_arm.h b/target/arm/hvf_arm.h index 6b1c3b9792..9cb58ad9ab 100644 --- a/target/arm/hvf_arm.h +++ b/target/arm/hvf_arm.h @@ -11,6 +11,7 @@ #ifndef QEMU_HVF_ARM_H #define QEMU_HVF_ARM_H =20 +#include "system/hvf.h" #include "target/arm/cpu-qom.h" =20 /** @@ -35,6 +36,10 @@ void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu); if (__builtin_available(macOS 15.2, *)) { size_t svl_bytes; hv_return_t result =3D hv_sme_config_get_max_svl_bytes(&svl_by= tes); + /* Nested virt not supported together with SME right now. */ + if (hvf_nested_virt_enabled()) { + return false; + } if (result =3D=3D HV_UNSUPPORTED) { return false; } --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772786037; cv=none; d=zohomail.com; s=zohoarc; b=fgyiQpQLB0viLK2LGYeI1bDGrz5oIsoJZiEfewhKMU+ZP4GZDU/M8liI2QrB5/ZJ2O8RN1nBfHaFY9dlznTehjQESvnp99A+eroZRxxutG8DvstwaSBbkebgt4Ww8iZX4nAsI4rTLNcjyZOwP1zC/tc21wWF0M2zrcdOQ6wHc+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786037; 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=LEFgZ1OOYuBdw8dPiYVuEpb1uHIu9H7rtzkrkhw9XrA=; b=Tp03CPCIqTh472u69QaUQq9PLAkOy/j3FeQO8WKITS2mlT2O1eUn9idD2yYx+m/P8ZZkbvgFndG5XYyXZGk6+Q+5qGutQ1Y5CR7DF0h4q/VwbFLnNsRx4G0uRwaaNahpYJvtB6ThQie/TZ7usWl43xtlWM6vHlagxutqNy3eFmQ= 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 1772786037073565.9678662215482; Fri, 6 Mar 2026 00:33:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQc9-0000F0-Da; Fri, 06 Mar 2026 03:32:53 -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 1vyQbR-0007Qh-C1 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:12 -0500 Received: from p-west2-cluster4-host10-snip4-6.eps.apple.com ([57.103.69.187] 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 1vyQbP-0002a0-Sn for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:09 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 835EF18000B2; Fri, 6 Mar 2026 08:32:05 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id C230A18003F5; Fri, 6 Mar 2026 08:32:02 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785926; x=1775377926; bh=LEFgZ1OOYuBdw8dPiYVuEpb1uHIu9H7rtzkrkhw9XrA=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=cR0kz12XsJ/PH1XzwdqPEy7L/rfxtWf3wkil0x7RK2b/DvQGE/VQjFiXsZlu62glW3+CaZV1T65jCFjEMnZ0axyHy7td2/vLojup47/yRdybHLdNTAh3AUCGPOkNTkeqeDWoOtl6DTMvZ35AyBP7AKJ8xmkm0dAcOaOwYEUO72y/1SMUpIVVgZhH9hizOBFcs5WLd/Oj73nrNRm0OKQau3OiNWzujwHioahnuXVFVngV2I2rgBBeV/NtLlLFlDRXWhJ+WfDKceSFGtjxGLPxdoWbCAiWaz3Kzeyyqm9o4NSUKqU9ExAU/ghHJ0IEO1Fq5BqSQ8zmAAgj9Sd425TYJA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 18/19] hvf: arm: fix SME capabilities reporting Date: Fri, 6 Mar 2026 09:31:12 +0100 Message-ID: <20260306083113.74177-19-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: br2ztJOVL-PkhtyGlsjcuep1jjAXeSvl X-Authority-Info-Out: v=2.4 cv=canfb3DM c=1 sm=1 tr=0 ts=69aa9106 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=-YisE-5-8EYoV4yVs6QA:9 a=NqO74GWdXPXpGKcKHaDJD/ajO6k=:19 X-Proofpoint-ORIG-GUID: br2ztJOVL-PkhtyGlsjcuep1jjAXeSvl X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX+qAkaZ1lZ6ss SrFzDVeQUe4ToLXB9tiXGyHyf/eWIHCR5WrqLu+b5r5k4f8weq1r/jcvP++CeaF7vOSkwBc7nVd uwto5OohnreuNTg+yTCW3XIMRBZGdBuficUu/iQ7C6at9xv92DBDwj43AxjGbiJ2ik+1LmYPmVt +bQkb83pEmpgv/kLZmPkNyt27nOucMFIvDRbF36WxqMEfDRZXykDoP53B90/QfYNhqGN1BKFvkK 79eHYDLIEo6QDGzbGwAh/H5PThFCgbWr+1JxngTyX2LZDm3shsBmiQW8U6yqDXY/yFM3leOElAw BkATxOGWx1o5CEeFw+WiLV9Y+txFbNdxApjMQpgiBdyzy28waLxzXEHciEYPz4= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 mlxlogscore=850 clxscore=1030 mlxscore=0 adultscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAAB3ALKvnxOGLH/+Xob+RiZ/gVhvfnaAvScu792CuT8+e/dSPuYQVNyTgdCXfCkPJZvGs3BUA68WYYHFkkY01aQamtG82W9Of6kRe7QGFBqD3Em8eoBQZKBqQSZpoD1Wq/u597lD3UfX9BMhodUfCnqkSuXPP/kGrbRt0OkACurjURj0cum/zZDQDj4khJTLRmMFFnbVDwBwu1wuKMYqqY9Ji49p1Y62OLDWhW5iJozI5oxNnlih3ZHKCPp4vgySX7E/y3os0nYggOFWsU1isEJsssbfKzdQ5KJbSBfWXD6fecyXqfIv15O4oeZ0rS/sEzMvK1DcQdRXGzIAt6mk6ezNQ/gsjFt+jVwxEMGudzgnrnvTGxyyWvBlllCL8jal8dPI6oYIBvq9TDaRYsMQ/AKwBiql0V4jlAr5uzOP49a11REBZAGONBVnEhpjrRHCL2Ria8r7dHSMMFmMW7bemboDdVDbd03/nz04D7bUMq+UvlRRF9pwRyD9Vcp8QLIQa+EFae+NM7b0SimYbSoFfSvCVuRqE/Hd21N9VDESfny0g9hgpi2xA95/QakyiUsBl2JjSw3deycaqPh8/YTN3zCjmoiZFczf79OH7R6pTkeVp3Md2C3x2HWFGLkNOIc61MyD89t73s1qnRsOtKHxdzgqi5rngtZpcJfhCdwQ38JPfUjDzEvJEqR3qeOZR+6NMbBfwvShHZXPse6PxRBon5CCq6moKlu8p/aiITlbiqnL9kXk+Y0urlIuAc= 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.187; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786038763158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/arm/hvf/hvf.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index cb05db2358..b7c5aea505 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1126,6 +1126,15 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) { HV_FEATURE_REG_ID_AA64MMFR2_EL1, ID_AA64MMFR2_EL1_IDX }, /* Add ID_AA64MMFR3_EL1 here when HVF supports it */ }; + + API_AVAILABLE(macos(15.2)) static const struct sme_isar_regs { + hv_feature_reg_t reg; + ARMIDRegisterIdx index; + } sme_regs[] =3D { + { HV_FEATURE_REG_ID_AA64SMFR0_EL1, ID_AA64SMFR0_EL1_IDX }, + { HV_FEATURE_REG_ID_AA64ZFR0_EL1, ID_AA64ZFR0_EL1_IDX }, + }; + hv_return_t r =3D HV_SUCCESS; hv_vcpu_config_t config =3D hv_vcpu_config_create(); uint64_t t; @@ -1146,6 +1155,16 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) r |=3D hv_vcpu_config_get_feature_reg(config, regs[i].reg, &host_isar.idregs[regs[i].inde= x]); } + + if (__builtin_available(macOS 15.2, *)) { + if (hvf_arm_sme2_supported()) { + for (i =3D 0; i < ARRAY_SIZE(sme_regs); i++) { + r |=3D hv_vcpu_config_get_feature_reg(config, sme_regs[i].= reg, + &host_isar.idregs[sme_regs[i].= index]); + } + } + } + os_release(config); =20 /* --=20 2.50.1 (Apple Git-155) From nobody Mon Apr 13 13:55:22 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=1772786069; cv=none; d=zohomail.com; s=zohoarc; b=Ppsfecipak35efNIyejUB0Flft7op12ThruS6Li/jiqMqKq6VNEbjsd7mKjBhT/xsqP6gUbU4FBV2qST4trWfU3WyGJWTY7inUKO/I765GE1jFw2Gs/RO+lc7zlhLtyj2LnROxHMLjODrIr4QtBMaAY/xL5WE0rB7CmR9KbpbuY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772786069; 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=ijV/TFHDkMx/sDtjnbI4Tcf5/3qsWHHZ7tvtB+wJk+k=; b=Pu09N79c8PG6lmPcn9EKmmNZ6/mFxo0VjHugR4i3esitAvRehdnopRs+pS7jfqSjC3BkTON+9qkbX5EOCr65TLvcXTgRdtpf4csjtnyXZYVzSaqdz2VHbvcXhGLZzP9pcDRKsYRuO0SF01GJrBeQOK7p6LP2nKxQi0lGusJvkuY= 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 1772786069362111.76586177259708; Fri, 6 Mar 2026 00:34:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyQdJ-00021M-Ul; Fri, 06 Mar 2026 03:34:05 -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 1vyQbW-0007VK-A9 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:22 -0500 Received: from p-west2-cluster4-host9-snip4-10.eps.apple.com ([57.103.69.181] 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 1vyQbU-0002ad-KH for qemu-devel@nongnu.org; Fri, 06 Mar 2026 03:32:14 -0500 Received: from outbound.mr.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPS id 4412718003E1; Fri, 6 Mar 2026 08:32:08 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.152.38]) by p00-icloudmta-asmtp-us-west-2a-10-percent-1 (Postfix) with ESMTPSA id 5627218003DF; Fri, 6 Mar 2026 08:32:05 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772785931; x=1775377931; bh=ijV/TFHDkMx/sDtjnbI4Tcf5/3qsWHHZ7tvtB+wJk+k=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=DRy+u4MkfoHvcsgevxW4O+Qb0TV1yrUObVkIcwuxneDLl4StcRK1ti63ij7PGD0qhtp7/7BLx8HaVSp8Qdv967o3ITWXZ6ifc/xbD0+BrhHmb1MLsY01b3k9ABA0hRxz9yL0Zny3gKMt/rOeIReAMLfu9vxulB2vJxi0QbpTpcLpPyTIDw4fEE9s+GsF5v5L4rbDiC6FEWSLfGxMvKnA1nkWYkQg4l98mN8rNtbtlmv9fW7Jx9lU4Fi3d0cIvGY2EMMUQU+yZuVnNRWx20rLOLkzPqqRVHa+6RoK5URGsnSrRGTiMrEiP/DJEEbHQF1t+g9a9WX49c8g44LrgxuTvA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Roman Bolshakov , Mads Ynddal , qemu-arm@nongnu.org, Peter Maydell , Cameron Esfahani , Manos Pitsidianakis , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alexander Graf , Mohamed Mediouni Subject: [PATCH v14 19/19] hvf: enable nested virtualisation support Date: Fri, 6 Mar 2026 09:31:13 +0100 Message-ID: <20260306083113.74177-20-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260306083113.74177-1-mohamed@unpredictable.fr> References: <20260306083113.74177-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: ZJ3WfdBU1EmsH_YpNnCyJqO4CQETGPP1 X-Authority-Info-Out: v=2.4 cv=D+lK6/Rj c=1 sm=1 tr=0 ts=69aa9109 cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117 a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=5Chse3eIq3h0lgOaJ4gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA4MCBTYWx0ZWRfX+AfqhkMgcyf5 v7ud5nxvKvoNdE/tlLnUsJmfQZDIvzEyWsGcbvcWjMHhCOE5Nf9Fn+jYZ2XZwBLxSIce3MA7Hv9 wtfjpU/YaW7SBzw5Co/3i0Z96pHFOQXPAbWO4/37O47CYqI/Bq8N9mfxgK3qMSDt6swhjag9OJN R092MzZXpb70VKv2aLbHbc2RbKTUZVVh0E9723mGij9mte1rDwk6RJ2u5i7DyjkMmOHKeXPxDn5 BuBanYNG+HITkpmgK6Q+nj8tBvR9jznDmNWBCV8wlN3u0BH0R/owHwu78bnDH5HJtmN1jp0gLbw 9dJmBXGjQXFs9YTSLXAFBSor6hLnF7JVbP/JE2VP35GYearRUhc0wkrHhvfu+c= X-Proofpoint-ORIG-GUID: ZJ3WfdBU1EmsH_YpNnCyJqO4CQETGPP1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_02,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 mlxlogscore=985 adultscore=0 clxscore=1030 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603060080 X-JNJ: AAAAAAABlqHWyI3VKc61yGz+ws5L7PUv/XniffHGc4eFhG2r9cIxZw4UV1CItRIYfiyytMjnuaEW3nEc+OSfkHs7/gbQeGg3zeh4H4KP4wZDT83l98dFVE8jFjKtpaEOMgc8SRHLsSEbW9uc8SRb4qk9/YRDJ/lz3KuFImV3O4lW7/UdCP29TlTLTeecwvm2az67WV2T5cWFdFFnY2QbFC6x7leG6hCgR6zw15BbmLnQGTdYl7FJZ2edegtpkQRHBqBwviRARdjkzrBvwx1Tks73Qlb5bmDYhmGK6fqEqbBkr/w9tidAv57M1KfR1KFIOffQ6UOjWWkmnGgdkNehiEwrNt683sIH+7EsePTswZ0ilulfp344AtFr9KITDJ5/xldK25dveLn6Rc5AZn77dz5JDFMer2tzsHFirzvDGJW+46BLMd2DYJr9jRYIGBo7XvPiTt85+mZUDRV6jXhbh0z1GWakIWPcanlnWcdmLZj52IR+Mer5O8bVrgglUXFONFI4KwIgF6Z5kDygh+9HSBzV0Lh0HVLKCUB2LTZLNtI5eeCZAGs2b5B1fb2vGL6dy3t4+ZNuDlQil3XZP14d8d1xmA3rZajnARgjO/BEUnP4R1rcf9Ij+V7Nl3odolz7M7Wn5LjsMIcwPinxtvuNtdzND7QWGp/jnEX7rwQ7gY52/1kmNow2B3PGSrrhnG2OzUHl/ra+koXh8dbNMQ0cwSeyUoKtcNkTzcMw5hraoY2zU7atf7tfc5cj4x0tpi6j9oTmGmuwCL+JRNqF 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.181; envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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.892, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.622, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1772786070522154100 Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 90769936d0..bced9f67f4 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2393,13 +2393,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)