From nobody Sat Sep 26 20:51:36 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1789140585; cv=pass; d=zohomail.com; s=zohoarc; b=jPV6brMxanHNw8kZ8OiLKil2c/oP11GY6rmhpCUt/uCmX2K2rdCJf8F8mtkO6CUHtsahNMNqWxHgk5APNxJ4HaGe2HxWXB11LMxlf6OXD6Pi56HOh/NmjP0CMbLTLtUU/fOkWh/2J8QJISiKMcIGZadq2Ax8ibctqDhFjI5Qd1c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789140585; 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=X0VPTy4UiVkwvjNpZj8eYKkSBbjb008hi+rPXEOBVYE=; b=GvIPktAVeo6/wSKuvfFBQQUp5W/7EYxfOJA6XPPgD2wYa2XcM80XuJwgVY8eO/kdupS0cx3jVEDvfH7zEJqMPyGJPVWReFTMQ5P8j+QgseIMjJ6E/cEJHIrrKdGOagTqxMGUje7oufigmSBJoc9LPcdMn9mAtgRUz28ap8md9Is= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789140585050403.3563989563353; Fri, 11 Sep 2026 08:29:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x53Bo-00088z-5v; Fri, 11 Sep 2026 11:29:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53Bl-00087y-Kg; Fri, 11 Sep 2026 11:29:17 -0400 Received: from mail-eastus2azlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c110::1] helo=BN1PR04CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53Bj-0007DB-T8; Fri, 11 Sep 2026 11:29:17 -0400 Received: from PH7P222CA0014.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:33a::16) by BL3PR12MB6475.namprd12.prod.outlook.com (2603:10b6:208:3bb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.10; Fri, 11 Sep 2026 15:29:10 +0000 Received: from SA2PEPF00003F66.namprd04.prod.outlook.com (2603:10b6:510:33a:cafe::1d) by PH7P222CA0014.outlook.office365.com (2603:10b6:510:33a::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Fri, 11 Sep 2026 15:29:08 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F66.mail.protection.outlook.com (10.167.248.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Fri, 11 Sep 2026 15:29:08 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:41 -0700 Received: from NV-2Y5XW94.nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jd6Sw7PFIqpR8DI8jvBTHVXPiD+LwYBa7WYxpGGVQHXQBmQIBWltoSyysJC/1p8x1ThfyPpXHHviOt/9GgXA7SF++PzvK9642Q5akB6bA+7Ki9J8S98u7YHR9N3Z+IMDmmKnh7as2yXU8UggLtS07e9+f5X6ETDMbjiJGZD/1dKPtYDYiHZvE7n4TSplQhOJNdzpPGYVjQ3NlUpPBN0FUE/JEghwrTbNTg9xUKoCb9t+Tot7ccy8lyxq7dr3oKfR++9AbuF49vwicGnFkm5iYl0d4WaBspwi/FeUb4hFuuak2DuSRgBGSQ0Skxt6RdMVeXYdt0qScLn9dVW3mW6WBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X0VPTy4UiVkwvjNpZj8eYKkSBbjb008hi+rPXEOBVYE=; b=ZlH6VqNaOFi7Txgm2vWR3Qq+5PRinNhGoN2gHhZf63CJnRUyIuOfg1hyyM4YOk0gnBWEtBeQrsqBYwGrvvU43ks45aRQQ330twt8XDwovJeagmAV8XJtOfrpkjsO6yw9MBn8pMYioy6XekWWijP07pP+l7MIXrMRP1KqjKKCQMrbFghgHXw1QnkjcYSa8Lui6KGCpP0ZvHCTnQ81Y4foeA20am1u8d1BSrwYuFyPctPUNf78d+Dztt5Qu2rbGsoIsvhDHVjv+Bf523bU1UA2kk8A4r8NlCvr3SNnlon1X5sNf3SNtpkGGhmLaa1iHnxVo5WVloWSGCiFMC2G7rXIbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X0VPTy4UiVkwvjNpZj8eYKkSBbjb008hi+rPXEOBVYE=; b=A0T0HnDfBI6YJpDc2yAzI9AhPE5KqCP/DXE2aG6Rv6sr/KRmDo7RKyGQ7OiMCiqcNJeG6063K3cICdWyglkSFn2ACpr6J0HZdb4TA8DPiaGyErcu1/KWuOb6W2B3GkaYFJ3KOaUaL05WmltrOFgbU1zFD+gcJWKePb3dA2p2PuCGJnKvax7riacSJX/EQzAKJaIksdzVNSD0jA4nerxgstY4d/NeixfeOijHCfTS1bzZYsU42ibPe9bX9fz4i0ewNzSMbwiY1zPJvqZ9IKT49WySGzvRg7x4LM8yRpCJxpEbGuZWQ/FYdDhrrxSrw4GDNOgryS/+QDPbXM5TeXXH3Q== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , , Subject: [RFC PATCH v2 1/5] target/arm/kvm-consts.h: Add SMCCC vendor hypercall definitions Date: Fri, 11 Sep 2026 16:27:50 +0100 Message-ID: <20260911152754.706518-2-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260911152754.706518-1-skolothumtho@nvidia.com> References: <20260911152754.706518-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.37] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F66:EE_|BL3PR12MB6475:EE_ X-MS-Office365-Filtering-Correlation-Id: c9f67182-7cb3-4878-fa69-08df10196c22 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|23010399003|376014|7416014|82310400026|36860700016|56012099006|11063799006|10067099003|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: h6+xeuuQyvNSxtY2uNAfgUB+RW6tUvC57VvIU2t5iQEv6mK2mDhh3a7XlrMBTCaLrtNYLDuE6i0hNxt0v1FLPr8wk7zNHUJALneMIHM6gwzVPFNEl7smhkaHBGySbZshpPNMGwTYeeSLawzpI+8nMlQw9sm/MDfnLIT0hVsUsog5MZynXpmLQ44K+rUokmoaCV9I43WF+aKyeZMqBkr5YmytmqgFLiL1Y3otYt0H/uAff5KZPAsEf0wFZypSZkJgtTc9WdXl2gkDK+16WSMBdH742HfULYxGz6n20/CA8lDd4neKpwjU9OkE8eGS4vK+D80PqOeG7ZvogA6S7Sk/ilGZhkc/lPxTlFDFduQQ3FhjU01cLqwD8eWjpyo+9zE/z8Kh5U06XsQLyIiDukvA+lNg7SV93vRUD53oJYHH6pdq7uWogQw3vOQh5fPc0trM0hm5UDSImlfwzXfKV2ttkwVhWIIOqJN6nhecGZkmbj7vw6R/mmT63Wgc55n9AxwTTzNP35TrAnGrJF3P5Sv+CgbJl3zb4Ponp2eWZ0dkilxnoD99TqpSknuQKYn8tOF6KzTukoNsyQHkH1O9lCeFjdpjEoPtsQY3KFob2M8p1DwQ5khJqLlKd8/J3n8shqJGjjaeQsHcdmxsGAjXi7rKsmEqaTptgzqGSqa45Oj3vP2XYzkY1ZrvVUXhpo+DtKHW8GHYfmoox+yxChdJ3QZfiQ== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(1800799024)(23010399003)(376014)(7416014)(82310400026)(36860700016)(56012099006)(11063799006)(10067099003)(6133799003)(22082099003)(18002099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: djRrOR/8tFRjNHhew587fORK+e7z/gbUzVfGrs6iDl44y5cGJO/j7rJzn8FdYnTiPegerqsuKRgzMLyP72r7tjExHNWFuI2G8Ee8E0+oaUskYmuFmSWcjnPLeuxkxdt7IzH3gdjr0G6dBIGdUdPNA7dvCMA+cbdrHoQhWM0Aivda1qxinadxaOcRCqheXdfq+Va3rETOAD1Wo+NNXRGl0nLM5qo/2aXHKuY65pneuqmuX5fn13efwlA+16d/pxVG+nN1jtDxrbbP1V2SfgbFHYlB2ZA9CQWgjHeyJ/V5yp7sP6uLVkLMBkBCGZGxLL502SudN5kMUhEA5bpiCDqekSl84IX44WwviBnU/KkkByOYANOYA1MuYx0/nurWQcmkOiBw7o6bIsZu3iHgbAvwIgvfcDLwQNsfuno68qa8uos8sXTXi2DsSizsNKNVZE4S X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 15:29:08.3247 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c9f67182-7cb3-4878-fa69-08df10196c22 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F66.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6475 Received-SPF: permerror client-ip=2a01:111:f403:c110::1; envelope-from=skolothumtho@nvidia.com; helo=BN1PR04CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=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 @Nvidia.com) X-ZM-MESSAGEID: 1789140586297158500 Content-Type: text/plain; charset="utf-8" The KVM target implementation CPU support relies on two KVM vendor hypercalls, DISCOVER_IMPL_VER and DISCOVER_IMPL_CPUS, together with the SMCCC return codes. In the kernel these live in include/linux/arm-smccc.h, which is not a uapi header, so they cannot be imported through linux-headers/. Mirror the few definitions we need in kvm-consts.h Signed-off-by: Shameer Kolothum --- target/arm/kvm-consts.h | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h index 9fba3e886d..741309c300 100644 --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -190,4 +190,52 @@ MISMATCH_CHECK(CP_REG_ARM64_SYSREG_OP2_SHIFT, KVM_REG_= ARM64_SYSREG_OP2_SHIFT); #define KVMID_AA64_SYS_REG64(op0, op1, crn, crm, op2) \ (KVMID_AA64_SYS_REG_(op0, op1, crn, crm, op2) | CP_REG_SIZE_U64) =20 +/* + * SMC Calling Convention function identifiers. + * These mirror the kernel's include/linux/arm-smccc.h + */ +#define ARM_SMCCC_FAST_CALL 1U +#define ARM_SMCCC_TYPE_SHIFT 31 + +#define ARM_SMCCC_SMC_32 0 +#define ARM_SMCCC_SMC_64 1 +#define ARM_SMCCC_CALL_CONV_SHIFT 30 + +#define ARM_SMCCC_OWNER_MASK 0x3F +#define ARM_SMCCC_OWNER_SHIFT 24 + +#define ARM_SMCCC_FUNC_MASK 0xFFFF + +#define ARM_SMCCC_OWNER_VENDOR_HYP 6 + +#define ARM_SMCCC_CALL_VAL(type, calling_convention, owner, func_num) \ + (((type) << ARM_SMCCC_TYPE_SHIFT) | \ + ((calling_convention) << ARM_SMCCC_CALL_CONV_SHIFT) | \ + (((owner) & ARM_SMCCC_OWNER_MASK) << ARM_SMCCC_OWNER_SHIFT) | \ + ((func_num) & ARM_SMCCC_FUNC_MASK)) + +/* + * KVM/arm64-specific vendor hypercalls which may be exposed by KVM/arm64 + * to guest operating systems and managed by the VMM. + */ +#define ARM_SMCCC_KVM_FUNC_DISCOVER_IMPL_VER 64 +#define ARM_SMCCC_KVM_FUNC_DISCOVER_IMPL_CPUS 65 + +#define ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_VER_FUNC_ID \ + ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \ + ARM_SMCCC_SMC_64, \ + ARM_SMCCC_OWNER_VENDOR_HYP, \ + ARM_SMCCC_KVM_FUNC_DISCOVER_IMPL_VER) + +#define ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_CPUS_FUNC_ID \ + ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \ + ARM_SMCCC_SMC_64, \ + ARM_SMCCC_OWNER_VENDOR_HYP, \ + ARM_SMCCC_KVM_FUNC_DISCOVER_IMPL_CPUS) + +#define SMCCC_RET_SUCCESS 0 +#define SMCCC_RET_NOT_SUPPORTED -1 +#define SMCCC_RET_NOT_REQUIRED -2 +#define SMCCC_RET_INVALID_PARAMETER -3 + #endif --=20 2.43.0 From nobody Sat Sep 26 20:51:36 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1789140628; cv=pass; d=zohomail.com; s=zohoarc; b=iry4gpZiJnG3ruXhpxYVFwWah0vVGK1+5XcU7NOgbXIuDwnXG6PA/UthbU9YDVj5LppQCJ0BTGUsFeOColFo0AX55+UYKIzuYvudJshLNa0sEyWYHSTXRJSQldpKFGV9s4c0JPfiYP5NYz+3CZKUOSlhjTY2Z9pI2+LlTdaW87U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789140628; 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=QvZxcy+P3zf8eA8CsA362mwDWTLtY9pDNm6r6agnuOE=; b=gYedlLEgJyuc1E8aiOCk1kynRLMT8iDVjLeUz91Fzgw2Q1781zHIF8WBOeaCbjbcfsIh2S/80o8x/LIAUEJfli+LaBx3s5PFSQFPLKKGzl/NA2VCSzuTfzGXvPJo12G4ZH8GDZVLYUxuDoisUyI0ZQbAsZyD6P1bEwrZlUbsQjY= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789140628222850.282486978478; Fri, 11 Sep 2026 08:30:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x53Br-0008At-58; Fri, 11 Sep 2026 11:29:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53Bn-00088v-RJ; Fri, 11 Sep 2026 11:29:20 -0400 Received: from mail-eastus2azlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c110::1] helo=BN1PR04CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53Bm-0007Dp-8t; Fri, 11 Sep 2026 11:29:19 -0400 Received: from SN7PR04CA0187.namprd04.prod.outlook.com (2603:10b6:806:126::12) by MN0PR12MB6198.namprd12.prod.outlook.com (2603:10b6:208:3c5::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Fri, 11 Sep 2026 15:29:13 +0000 Received: from SA2PEPF00003F67.namprd04.prod.outlook.com (2603:10b6:806:126:cafe::54) by SN7PR04CA0187.outlook.office365.com (2603:10b6:806:126::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.10 via Frontend Transport; Fri, 11 Sep 2026 15:29:13 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F67.mail.protection.outlook.com (10.167.248.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Fri, 11 Sep 2026 15:29:12 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:45 -0700 Received: from NV-2Y5XW94.nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nMP2DF0NH6ztr6hr50fMg4uVRLNIZtIraonMoIenqAqV0Mchh6JrPBfn7Ggdre7qyj8Yu5xdo+NHAi4PQO3GvhgJNuazfCExiVNJsgjgUrdSNX3kSGkhpbFTYDIMN6rli6fzd/KJX3E/CFDaDewxo65FyZvxMg+mIL68GDnmp82LJKqM9PbDSr/j9sZT+KdckV3v64WylG8ul/LfHN3lz/YrqNjM/vQ9sNq6B2icxD718Cc4YUgZ0ktAASITxu62P2akWF8OrMnB6pmULUMH4Vu4MFL0g8M0j2sorivEGYKrMNF0XOfNXOXWRym4udfmvLSxLx6XFUKP8Qw884UClA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QvZxcy+P3zf8eA8CsA362mwDWTLtY9pDNm6r6agnuOE=; b=B/NhG+I8gW/9t61bisYDlEAdZfl2chwRTc44CPaVmzGk8az5D/3ZxYjrO711APSswoNCKz0PGVIklGswZd9BRa4/muTqsVP492uat1z+0MEmIp7DBL5YKZ2mu+jSO7m04qyMDOqXBIpOKMRgPVC5pL2V1tmWfJcmdLPOMUC9Zgk/gdfGMc4cfQZmEgeY7CVbt/OUWqOJCs3yYsT9XbnNrwqpj1HFIc1BHgiYECWH49QujirQxTL91jaBIjoHH1slj0S3TLIJqbKGEfKivAQYv/moTQhTXWTWE0ByIGQYYm37Kky1Sx31iAbHsiC/6ZRqq4VG9jQDKCSeRoSQ9AN0XA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QvZxcy+P3zf8eA8CsA362mwDWTLtY9pDNm6r6agnuOE=; b=eupR3+tHemL7VlV4n3LOHJ9YJfKvXnBIBJsM00ca/YiLUqLIsKjJIgK50FMIhz5HeE384UXFcVFaNUcX8zjbwi8izv8wWYRpd50is0sFF3rUCVBmqbIA5Ad1zzg+4FMxcJJ+s4eA88PosLZyP/mVv6l2OwfjhGQRZS8LxOg9p9xLhSR/GWjEhmiKpG4JWL+5BTBgbNjfhbWS7/qw5hcx2y6hU6vOxEOQBnmqq1JWWTIJdAv1pZ/Jzi958MyPQz/PglQUO9T4oQ9nyYSnDmqZ0QKp+gCeErE/Ry5Tg1LwOAU0/2okauyV6J4NaymkpwFwSSSQfEKwV2yZBKxUsD5rKw== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , , Subject: [RFC PATCH v2 2/5] target/arm/kvm: Introduce helper to check target impl CPU support Date: Fri, 11 Sep 2026 16:27:51 +0100 Message-ID: <20260911152754.706518-3-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260911152754.706518-1-skolothumtho@nvidia.com> References: <20260911152754.706518-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.37] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F67:EE_|MN0PR12MB6198:EE_ X-MS-Office365-Filtering-Correlation-Id: 311f9cf1-8456-4833-7b0a-08df10196ea4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700016|376014|7416014|1800799024|23010399003|6133799003|22082099003|18002099003|11063799006|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: 1U4OxuqXM70BngHnvyVwcQhIkPfrkvKxCNFcagk8ConbqwYt0gVS71EN8uYVNcYv2GEta3JGc89wtFxbJJDWkZQWMhzZCKcCwQHK6blQfXjKiHATJtyP8tZnERVe4n2iFJex+43BwZ4gupd0Mc78lP8hf/ksakEq85ZGmNaPyX+/aN/morc8/UgFNnfbLVTwpuyKP5A7JphQpPBQOi92D9yf3YxtSDcafzh9fUnu/mN96FYaBRKSq4PWl9p0fWbP6AgHYZAo4vsMul8rPq6zOh+OhVijeLYNnNFPAln7scwCXlUb6Q2uZZV2L4LPgdoDbyFyH7l3RbroyQpnya9Kut+O49CCATk45q1h6nN84G47BvQKs/ZS+pUmMOxwYLdCfGkd6CClJV13WoweYUpMXfLnxH9wo97x7Lwu90NaEtUu3u7Ij5cpvMR9cH3ExQb/aUEySjaKmCvCG+/0hVLvyhLqYEzqVZbbCKAJ/wuQD8ZU43qEn3KjCS4PpvSRapWkWXb60z2F3CL0h9tZ9KrwXvDO7R2DSit0hbyoRIKw8eWwCnSURXwo5wbNveaXJ9zsmCjsze5qXhq119mfDO9HWmLbzfyImPEzdgs4l3Lwj9OB7d6RJzb0INvcwjhj/+8q5Lq9fvHq4OyYcjDk/Kk/KbMxlyh1w7c8wKr/5pMbJMonXMGsO07qDdtqTRrQyB0NoWsgqYt7T/A7BLa0+lBEuA== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700016)(376014)(7416014)(1800799024)(23010399003)(6133799003)(22082099003)(18002099003)(11063799006)(56012099006)(10067099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vNXUwQdKO9pFOV6rgoFgu0iStVlJa5QQOUXsJknOjTzUiUZYdBF4frFNGe2ZUgVm9QXtdFWe8XSC4is6miG0Yq9RbT9GCuy5K89k8XRjMRNA4Yj4383tgKN6b7QJ+EhxrPHpBHYaz5s6ZHYsVbcgjbmxupPCLdwZeRCNb1k4Iz85UbhIBYCanZKUIgmpaAZshCAm13ILDggQKhh1Lpqd/X3JbHLjsod3dwOMa6bsU/AgImWjV8EMlc7JKcYxdrRaiORf1UB4VD0QUeFVa7z+IkdGK/3K+ebJeOycicAvECHPcgFyNTHQB7YG+F7gV3i0CnnTYPdHU2fQKOAFXz6gU1Mv7/LrtxIjJIFQijEAxSdaJFezh1/Gwed4clP5lkQJulA52U86XsjK+7zswuYzrPl8jGNPmcg1y4UFekl9rlNrk6jgnlrmSGj9PjrWbplp X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 15:29:12.4982 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 311f9cf1-8456-4833-7b0a-08df10196ea4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F67.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6198 Received-SPF: permerror client-ip=2a01:111:f403:c110::1; envelope-from=skolothumtho@nvidia.com; helo=BN1PR04CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=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 @Nvidia.com) X-ZM-MESSAGEID: 1789140630428158500 Content-Type: text/plain; charset="utf-8" The helper function will try to set the SMCCC filters for KVM vendor hypercalls related to target implementation CPU support. It also checks the kernel support for writable implementation ID registers (MIDR/REVIDR/AIDR) and enables it. Subsequent patches for Target Impl CPU support will make use of this helper. Signed-off-by: Shameer Kolothum --- target/arm/kvm_arm.h | 7 +++++ target/arm/kvm-stub.c | 5 ++++ target/arm/kvm.c | 69 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index aafb3cd232..8cd770c7c3 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -212,6 +212,13 @@ bool kvm_arm_mte_supported(void); * Returns true if KVM can enable EL2 and false otherwise. */ bool kvm_arm_el2_supported(void); + +/** + * kvm_arm_target_impl_cpus_supported: + * + * Returns: true if KVM can enable target impl CPUs, and false otherwise. + */ +bool kvm_arm_target_impl_cpus_supported(void); #else =20 static inline bool kvm_arm_aarch32_supported(void) diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index eae2e1ec2c..a0aed2fd84 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -42,6 +42,11 @@ bool kvm_arm_el2_supported(void) return false; } =20 +bool kvm_arm_target_impl_cpus_supported(void) +{ + return false; +} + /* * These functions should never actually be called without KVM support. */ diff --git a/target/arm/kvm.c b/target/arm/kvm.c index e3a0dc07de..ee4b2e72e8 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -2296,6 +2296,75 @@ bool kvm_arm_mte_supported(void) return kvm_check_extension(kvm_state, KVM_CAP_ARM_MTE); } =20 +static bool kvm_arm_set_vm_attr(struct kvm_device_attr *attr, const char *= name) +{ + int err; + + err =3D kvm_vm_ioctl(kvm_state, KVM_HAS_DEVICE_ATTR, attr); + if (err !=3D 0) { + error_report("%s: KVM_HAS_DEVICE_ATTR: %s", name, strerror(-err)); + return false; + } + + err =3D kvm_vm_ioctl(kvm_state, KVM_SET_DEVICE_ATTR, attr); + if (err !=3D 0) { + error_report("%s: KVM_SET_DEVICE_ATTR: %s", name, strerror(-err)); + return false; + } + + return true; +} + +static bool kvm_arm_set_smccc_filter(uint32_t func, uint8_t faction) +{ + struct kvm_smccc_filter filter =3D { + .base =3D func, + .nr_functions =3D 1, + .action =3D faction, + }; + struct kvm_device_attr attr =3D { + .group =3D KVM_ARM_VM_SMCCC_CTRL, + .attr =3D KVM_ARM_VM_SMCCC_FILTER, + .flags =3D 0, + .addr =3D (uintptr_t)&filter, + }; + + if (!kvm_arm_set_vm_attr(&attr, "SMCCC Filter")) { + error_report("failed to set SMCCC filter for function 0x%" PRIx32 + " in KVM host", func); + return false; + } + + return true; +} + +bool kvm_arm_target_impl_cpus_supported(void) +{ + if (!kvm_arm_set_smccc_filter( + ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_VER_FUNC_ID, + KVM_SMCCC_FILTER_FWD_TO_USER)) { + return false; + } + + if (!kvm_arm_set_smccc_filter( + ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_CPUS_FUNC_ID, + KVM_SMCCC_FILTER_FWD_TO_USER)) { + return false; + } + + if (!kvm_check_extension(kvm_state, KVM_CAP_ARM_WRITABLE_IMP_ID_REGS))= { + error_report("KVM_CAP_ARM_WRITABLE_IMP_ID_REGS not supported"); + return false; + } + + if (kvm_vm_enable_cap(kvm_state, KVM_CAP_ARM_WRITABLE_IMP_ID_REGS, 0))= { + error_report("Failed to enable KVM_CAP_ARM_WRITABLE_IMP_ID_REGS ca= p"); + return false; + } + + return true; +} + QEMU_BUILD_BUG_ON(KVM_ARM64_SVE_VQ_MIN !=3D 1); =20 static int kvm_arm_sve_set_vls(ARMCPU *cpu) --=20 2.43.0 From nobody Sat Sep 26 20:51:36 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1789140635; cv=pass; d=zohomail.com; s=zohoarc; b=dGnUF3mW+sFHaff40TjGW0++N21Ss5Ham29JE7AkB5NoaaaCYKYwuVDpyBEYWKRGgZusECaiS0zueeLwClemocqLteWPzk3ezFlRhzhIQHDMCeiiisxEMfLnA0SjvPXDhn9yfVXkRTfDNwO6KV200rl0PCnjy12TR0oqmf1ZJkc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789140635; 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=JkpeyUjwIleydYDKUCQmZXlD1B/OVgbJDkME/++juuM=; b=TI3DxPFCYzzFis11enfJoQRcSrFXiv+6YujCeKkBf7ar78DyPZeIeMRX08LcbI+G3UPAsiPDOcEhJSxYDIOwqRaMVV6TmMKf5sH3JuC6MsIV79fE5B13UbpzVsq8cNbMArHX1PkPWDq73nMtl/oNM5hHt0qaV7PaO7GV3ckZLIk= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789140635873584.9790107347422; Fri, 11 Sep 2026 08:30:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x53Bu-0008D3-Ip; Fri, 11 Sep 2026 11:29:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53Bt-0008Ce-7m; Fri, 11 Sep 2026 11:29:25 -0400 Received: from mail-eastusazlp17011000f.outbound.protection.outlook.com ([2a01:111:f403:c100::f] helo=BL2PR02CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53Br-0007FB-NR; Fri, 11 Sep 2026 11:29:25 -0400 Received: from MW4PR04CA0163.namprd04.prod.outlook.com (2603:10b6:303:85::18) by LV2PR12MB541025.namprd12.prod.outlook.com (2603:10b6:408:3a5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.10; Fri, 11 Sep 2026 15:29:19 +0000 Received: from MW1PEPF0001615B.namprd21.prod.outlook.com (2603:10b6:303:85:cafe::53) by MW4PR04CA0163.outlook.office365.com (2603:10b6:303:85::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.10 via Frontend Transport; Fri, 11 Sep 2026 15:29:19 +0000 Received: from mail.nvidia.com (216.228.117.160) by MW1PEPF0001615B.mail.protection.outlook.com (10.167.249.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.1 via Frontend Transport; Fri, 11 Sep 2026 15:29:17 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:50 -0700 Received: from NV-2Y5XW94.nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XNgWBhb4oBW3COPhdICL8nKAYP7Bars5Q5xy4LqCyq6EXlZ/13XP9BUZlRI/NTVX/pc2h7OO00ArtMiRY6qANxjNIlcwVV5ebNCV6tvOfp09CvRdyzwvbw+Kw3kbABBgXLEt6Rkad4P+JOBekInmNxdTzNWvrQePtMtoEVAgRK5de74Pi8XW090mSEzQf8xjUQ6Pr0HtFky8wr+20szWcfsaJAwuqcUuy9ktoTAlf483/gHtbuNa7Jd6pl5SyAS9aQOUWBii3EAWQNE7jWKhNxqkyqXgz66Vb8GX79/arB1Y68aNd3n8Q7xtH/+eYEfnMWZ6ZyIv7NOr2EGx1Hk2yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JkpeyUjwIleydYDKUCQmZXlD1B/OVgbJDkME/++juuM=; b=ET0A8EUDp4uyCxaVFUrX28stFvSZwWDLH+OvgvfBhzkCPdsTkewXfTQNmANh37HVzraulWfObfB02UFg4l6P9ahbWkpEHzjtZ7XBR2F0AxadQnoLNTQfy1z3pAJ60ZUTANQJxITM1lkZDV/skg5MQ1XKM0hWvvxCrpfmDa64R/5JCazpYVHp1L2iKVWU9vDh2Tc3AJbHoEqXFQ8uQwLr+8IMMZWQkwBeeymZXagcVPygX6COMnfvcdPRWQvfHaiI2RF9ZCHvi/xok4pk03BFItPuDbCaHcdE/J5ALdOMJgI7aBqrUfQNWbHZi/LixcyN7Txy8Tv0Y4ADStN+Whl+7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JkpeyUjwIleydYDKUCQmZXlD1B/OVgbJDkME/++juuM=; b=cyz0u67v6ZHw3xHCFqZM4BWTYxsN/5nuud+TsX4flHCvDec3NxUP1QuMemu8rzEitFL/zgZWByzdgkGoo8hmmuAoQmWRIz3J0xDFfmZptxn94k55ZGgJEEMJsePZq3LyrAX/SyuL8bHMRcGyBv2HncD4nx3ikE6dLjHLOo1OA+AYwjUOguZfqJI0e6AaDBoqwGY8zTIrQJtBK/bT1DNs1fFGM+82ssVGRlQLCeke6wgWukTHgdps6CV3nmirqVcDjjnv+kZQO8ISp5k6YKZ0QBjtdFjiF6muD/9Zujm2fVVbO2BQcgLlrWKpuJlLkqh5GHlBrQ0QZ+NLGXNCQWWVrA== X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , , Subject: [RFC PATCH v2 3/5] target/arm/kvm: Add QAPI struct ArmTargetImplCPU Date: Fri, 11 Sep 2026 16:27:52 +0100 Message-ID: <20260911152754.706518-4-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260911152754.706518-1-skolothumtho@nvidia.com> References: <20260911152754.706518-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.37] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW1PEPF0001615B:EE_|LV2PR12MB541025:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b0701a3-0b15-492c-2f3b-08df101971c4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|7416014|36860700016|82310400026|23010399003|1800799024|10067099003|6133799003|3023799007|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: 9kq3fnYv3vFYN5fPkJSKxyif9CiJPWujnfeevK5tow3qseP4H2f3hFIz25S+pRxdpblI37bDfLceTIDnBFR6Ijufs2dLlX/ZaK55NetAE9UJVfjRb9pfNgRNQ3LdOwX+nbmIktprd5rprWk/cZu3iLyJCzndHQGzQg3l01Gl0UzIyilD/vuC4GzwSKTqEDU/4A4hzAPJYainasbtuS7m5WtWT6wV6hsDNBqZC+sVZD/zMIh9otdtWufZ+REiEk6AA1hwcPH4reZrDS8xvj+1jDNz9saZtZvt6eXfEae3Bn/AD/pC0sO4vqXVgqxw/krhZ7RLLiupkxAxc6iyBtsCv5I5n+obwKmD89w69YT80jivSpgqf1DAsWOmJrXGXKbsUV0XZQwCeLERjCrcAyci7dJRRJ0disGsCmrt9+u9yrlzdiEr8O+e9C9Jt7SnFOvHz736GbJC10f8bgwY5hOoEnJ7I0q2iT55sFsmEXMvUoRqn9hX/MiPcs5tjkjBlwnWCZwBZjW66uYea8ed1tkzg5vECX/AYTx/Yw0knxwq3uwgFqzzu6lHJ+QXBcTwPrkeHBVuMdrcMiqnMFdViU/hPbGlLNtBnAfN4Cd1yML3ldTBikDfAsTHwhAdkxteEXZSl+/5GA+Im8YMVgEcRdaXg98tFIs6ase4QuNOr5ZFazdTmuh2OcVGfQMRCiVyiozE1ox01cLMiZx2rjop4G966A== X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(7416014)(36860700016)(82310400026)(23010399003)(1800799024)(10067099003)(6133799003)(3023799007)(18002099003)(22082099003)(56012099006)(11063799006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: J3YfxpIsTwbC/XSNs6BPz1Mjfea5C9km8OZgtAh1WaTv0AOIZsBYUlciD/m4XfLhoX8FhCDyZG6MgVGJuLS5oTgfT0X8JevLc0iBnQhhwaUz3qHv7yR3HPzIvjV5ibRIiNfYp3yFoJ0q2y+eIlDoYlFvTZjGjKfWAsEGFhuRI/R5gBk192NlFJw8eKQnx8KW0enPawXFqr6jLeRs7DuWmjZ0zyFHMv+TZMrxzAGfa//l88KGpM465jiMV2HuYLmVxWiVv6PK40/pKwWzVHQz9gwoJEtHCMMCXZKDwjaVbbQq3qbx6R0CIpBCMjPP1Bt2ZlVsYM97uC3iLOz414b3gDpqPXi1E61BXXejs0FcUL1z4bOGLtmJ3vj7IdLlR5o8lZ05VyteruoPdeHzCNTzAsZKZsQWheo1LDqKSX66XouWcD97TCEZqdmNuI39A9Hs X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 15:29:17.7273 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b0701a3-0b15-492c-2f3b-08df101971c4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MW1PEPF0001615B.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB541025 Received-SPF: permerror client-ip=2a01:111:f403:c100::f; envelope-from=skolothumtho@nvidia.com; helo=BL2PR02CU003.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, SPF_NONE=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 @Nvidia.com) X-ZM-MESSAGEID: 1789140636597158500 Content-Type: text/plain; charset="utf-8" Introduce a QAPI-defined struct (and its array) for target implementation CPUs. This enables specifying target implementation CPU parameters via -machine, for example: -M virt, \ impl-cpu.0.midr=3D1,impl-cpu.0.revidr=3D1,impl-cpu.0.aidr=3D1, \ impl-cpu.1.midr=3D2,impl-cpu.1.revidr=3D2,impl-cpu.1.aidr=3D0 Subsequent patch will make use of this by using object_property_add(), allowing users to configure each target CPU's midr, revidr, and aidr fields directly from the command line. While at it, also provide a helper function to set the target CPUs. Signed-off-by: Shameer Kolothum --- qapi/misc-arm.json | 36 ++++++++++++++++++++++++++++++++++++ target/arm/kvm_arm.h | 11 +++++++++++ target/arm/kvm-stub.c | 5 +++++ target/arm/kvm.c | 20 ++++++++++++++++++++ 4 files changed, 72 insertions(+) diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json index 4dc66d00e5..8dbfb98fe5 100644 --- a/qapi/misc-arm.json +++ b/qapi/misc-arm.json @@ -89,3 +89,39 @@ ## { 'enum': 'OasMode', 'data': [ 'auto', '32', '36', '40', '42', '44', '48', '52', '56' ] } + +## +# @ArmTargetImplCPU: +# +# Info for a single target implementation CPU. +# +# @midr: MIDR value +# +# @revidr: REVIDR value +# +# @aidr: AIDR value +# +# Since: 11.2 +## +{ 'struct': 'ArmTargetImplCPU', + 'data': { + 'midr': 'uint64', + 'revidr': 'uint64', + 'aidr': 'uint64' + } +} + +## +# @ArmTargetImplCPUs: +# +# List of target implementation CPUs. +# +# @target-cpus: List of ArmTargetImplCPU entries. +# +# Since: 11.2 +## +{ 'struct': 'ArmTargetImplCPUs', + 'data': { + 'target-cpus': ['ArmTargetImplCPU'] + } +} diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 8cd770c7c3..4dc59779bb 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -281,4 +281,15 @@ char *kvm_print_register_name(uint64_t regidx); bool kvm_idreg_write_scratch_vcpu(int cpufd, Visitor *v, const char *name, void *opaque, Error **errp); =20 +/** + * kvm_arm_set_target_impl_cpus: + * @cpus: list of target implementation CPU descriptions + * + * Record the target implementation CPUs to be reported to the guest via + * the KVM vendor hypercalls. May only be called once. + * + * Returns: true on success, false if the target CPUs were already set. + */ +bool kvm_arm_set_target_impl_cpus(ArmTargetImplCPUList *cpus); + #endif diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index a0aed2fd84..9f835787f1 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -47,6 +47,11 @@ bool kvm_arm_target_impl_cpus_supported(void) return false; } =20 +bool kvm_arm_set_target_impl_cpus(ArmTargetImplCPUList *cpus) +{ + return false; +} + /* * These functions should never actually be called without KVM support. */ diff --git a/target/arm/kvm.c b/target/arm/kvm.c index ee4b2e72e8..68c22a6cde 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -69,6 +69,9 @@ typedef struct ARMHostCPUFeatures { =20 static ARMHostCPUFeatures arm_host_cpu_features; =20 +static uint64_t target_impl_cpus_num; +static ArmTargetImplCPUList *target_impl_cpus; + /** * kvm_arm_vcpu_init: * @cpu: ARMCPU @@ -3061,3 +3064,20 @@ void arm_gic_cap_kvm_probe(GICCapability *v2, GICCap= ability *v3) =20 kvm_arm_destroy_scratch_host_vcpu(fdarray); } + +bool kvm_arm_set_target_impl_cpus(ArmTargetImplCPUList *cpus) +{ + ArmTargetImplCPUList *iter; + + if (target_impl_cpus_num) { + return false; + } + + for (iter =3D cpus; iter; iter =3D iter->next) { + target_impl_cpus_num++; + } + + target_impl_cpus =3D cpus; + + return true; +} --=20 2.43.0 From nobody Sat Sep 26 20:51:36 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1789140638; cv=pass; d=zohomail.com; s=zohoarc; b=WPLbzkMiWV1j+X5016hQNfAlXxI1o/MpKOC0GimHWMwsumkN01/mPk9Rulw5t2YPheYl9UejQpSX1/Bb2G9SnujNMSN+szN4f07Gf/3ZGdEbAsRtpUDXu8TATYk4+qGVwTVe2CQEyvDwwBQw464GFhoNYQFTeVyjIij8PqJWjbE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789140638; 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=lbZZQSEilcG66n6kx6vk0RI0RbpH2oGGDd+PxBlvbc8=; b=PuEvFyMAR5v4NDl3kr7M9eV0nUKHz1bvcKxjMJkVTy03kIKR6BJQLicvwTcar4+jxLwDL14EKGACd2jxs0k1yYmsex4/0A1r/+mOikW0cSTpjcUgVbsa1n3mO+V7imvf2lDl+Y8qr94tlHiN8Av4B9Ut4zomv87Ok92j7Ms9hxA= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789140638367685.3905196202684; Fri, 11 Sep 2026 08:30:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x53C3-0008Kh-Ln; Fri, 11 Sep 2026 11:29:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53C2-0008K4-Ha; Fri, 11 Sep 2026 11:29:34 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53C0-0007GG-9q; Fri, 11 Sep 2026 11:29:34 -0400 Received: from SN7PR04CA0026.namprd04.prod.outlook.com (2603:10b6:806:f2::31) by BY5PR12MB4163.namprd12.prod.outlook.com (2603:10b6:a03:202::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.10; Fri, 11 Sep 2026 15:29:25 +0000 Received: from SA2PEPF00003F62.namprd04.prod.outlook.com (2603:10b6:806:f2:cafe::80) by SN7PR04CA0026.outlook.office365.com (2603:10b6:806:f2::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Fri, 11 Sep 2026 15:29:24 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F62.mail.protection.outlook.com (10.167.248.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Fri, 11 Sep 2026 15:29:23 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:55 -0700 Received: from NV-2Y5XW94.nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cd6PsSvfkjCY6LYD30kkgzIjCfx51Dj94FPwJBZUlP61t/FR0MR1fVSnFm6DKV1r5/Ji5JGTQehN3BIJUAraJb1pCAjGy5dkGQip6UkWlewNCNovoNnK/rGL1tgxoVhuO+wogCl2efMigUhzs9LUVsILY0aLtjKTdpy8AH4GsQX0hCrMB1AHTimFUHVYwARzLgug/iruvFYQcZGNHOYW89W+HPrrZZ5cw+tta6CVY11ivVHBiGKjzOP9mIZbdgHHf4BHv2Ftxtz7gAq+I+9X6LmnUCUzPTXjCgXAZGX+SfNjV0lAAte9JVSnc5C5vbMgtA7SVr030wF2hy0/ZzduoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lbZZQSEilcG66n6kx6vk0RI0RbpH2oGGDd+PxBlvbc8=; b=AAwSMraZkzDOH0ILUYrfNTBF0bJuzaFZQOW70H9m+PILetxH6olxKjvOC3uw0QV1pWif79MQRLgyQRMHy/51DfMb2LtKINOA0pieiAOndUjURYQTsxEj0GH/Gh34+tzKlO8u9n4Fd53fcT4CCk6nI5oU4Wq1SdBBGQIPzfeWIi1+tT5eU5WfXNq9UOh75WDIIr+LSSrMheEUOMsFPDNZ9H4fnkU6QHt/uUDC0LZ4X3TMU10dipqfKxgXZHwlhYUZw5lKSaC6uiyGJQzVtPqdihFaWsoCZmSQRsp9RVGXVp3sDRrAoYIhD2205HVSAJ0uPMMCpMDQ7O2jsq/0CLu5jg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lbZZQSEilcG66n6kx6vk0RI0RbpH2oGGDd+PxBlvbc8=; b=E9nkOaYgJEDufmFT9BvQ9exJLK/IfzfR1R1AsiUb/Gjeam9fkOUDsRpE1dDMTvjJ8ggKHW3/Ud9IZCmHiQPkqasc81MFkKbfU+xcf4Quh27/RGMCIcy6JRjAsPhUqOYagoS9DCSHQEqB1Tpun8H/5KPi3MHgF7zph+vtLYI3tM7bxcwor3MWIC7KUWbdY4aY6gWjAJACHGOOjjJY70qvHDA1wM60WYkx1Wfw+njqmRw+XaEB7UH0Fhg+/a659sGv0Q0JlZ07S7Ih6iZKJivTDsr43uJOpFKaf1J9WoD/4DwFcAmToP4k876W9LCF+BLouF8xQTaQCSKZVnnDcWc1gQ== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , , Subject: [RFC PATCH v2 4/5] target/arm/kvm: Handle KVM Target Imp CPU hypercalls Date: Fri, 11 Sep 2026 16:27:53 +0100 Message-ID: <20260911152754.706518-5-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260911152754.706518-1-skolothumtho@nvidia.com> References: <20260911152754.706518-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.37] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F62:EE_|BY5PR12MB4163:EE_ X-MS-Office365-Filtering-Correlation-Id: 681c94a9-b38e-4a64-b332-08df10197557 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|7416014|1800799024|23010399003|36860700016|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: p1LliI100mbdaC3OKa/vhbn/MpAyy0W25IsQNmS5X/RIJXi+op0BmvvWpOeO6Zho1Suax9MUluqGGjH4xqoaCymW0y/q3+5ZP4pSDxRz3Rj7up2J5S+N8P9dG5fPbrLohledxPXvyXS+TOESyEW144NitZzNTUN/p7NnUgNZO0EYqKMz0lU0EWgOKykN7ijjyXn0J8JEGeVeONk08EIB7sAbYf5blb5VUHLALc358RhmAK63WTc1x6VafULG30KXbSbRMK8P8FWBD/1DyyjqP5ECJux5EyEO3hQWlcp0jSjkdJbf7Ue/cvjvL542MhKcJA01Qtjb914rh9OyvEgtce93YmBAKMPzArDBxCyFORyuWvmgDHvtwp3erQJBoRzctAlgz5Mqng/1pSm/kH0bqd9aY8PCnS7hArdAvcx4w/8JaqR73UbtECXdcT/et2Q30h0t3RfR5reb5lyk3WfNKp54sgcAsvZ2Dp5mtrfaZBp334l6gmNPBnr20v02Cllx/deB8R4wiResi7yj25SDiyqrzfHrAdAsrU+Fo/3IXrJLEARX/7Ft/nwFQs3qu+yeuT1e8+lldnsMxCTvvLmKuXSQaokalVVIyBS8vLUJmseVkCNsrw9sM/Hjqu/3S4JiDMGhSl2KOta4qdUTn8DHumpEgcTZaRn6CN4m0Tt0sKzGM4dSBcL9A3bsKwoQoqQL8t0L3TbhGbq/bMH6R3RdJg== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(376014)(7416014)(1800799024)(23010399003)(36860700016)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Ji/hjSs00a2e4sFI8jx2sjUJJ+g617cH9sAHquWeyry+4O6U5JzhrlG4VcX2mVA3XnSHq6NA2z0cw0RS8sZZxRxO2YIEcUXijP3OxaPhlfL7eF2ZnIUktR0PFoxUMdEU5jgWS2Fv6rLsCcTMCnJDaCx8UmewFsrt5TFrA9Dv+jRWjW1eb5YPUtyxOC5NU9Xr4FQVFA4wReKoebx1ncIeX+MG8dt8SYgLdbSH0an+yjwnRujDkEoqZ6VdAMuTZ1RwyTMgB+r+QeVNcdTp9ElnOgCDd3SjRHi7Ok3CPHIaLEWWdpzjE1TjByHtMlRPnRg/KCy2WgKZ9ZDViK2Hm7dMGmjmu3qIW4NEcwG+vkczTBbfNJtQdkQg5XJ3vIjrsBOug0AbL8Zf8Agg2Cyq0Rtv5FtvTNCdIbFBCjA1Vmwmw3YEyK4g8TRz8j/MI21WLDGT X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 15:29:23.7493 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 681c94a9-b38e-4a64-b332-08df10197557 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F62.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4163 Received-SPF: permerror client-ip=2a01:111:f403:c005::5; envelope-from=skolothumtho@nvidia.com; helo=CO1PR03CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, SPF_NONE=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 @Nvidia.com) X-ZM-MESSAGEID: 1789140640485158500 Content-Type: text/plain; charset="utf-8" When target implementation CPUs are set, handle the related hyper calls correctly by returning the information requested. Signed-off-by: Shameer Kolothum --- target/arm/kvm.c | 105 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 68c22a6cde..48eb3e51a5 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1903,6 +1903,77 @@ static bool kvm_arm_handle_debug(ARMCPU *cpu, return false; } =20 +/* Only supports HYP_KVM_DISCOVER_IMPL_XXX hypercalls */ +static void arm_handle_smccc_kvm_vendor_hypercall(ARMCPU *cpu) +{ + CPUARMState *env =3D &cpu->env; + ArmTargetImplCPUList *iter; + uint64_t param[4] =3D { }; + uint64_t idx; + + if (!is_a64(env)) { + env->regs[0] =3D SMCCC_RET_NOT_SUPPORTED; + return; + } + + memcpy(param, env->xregs, sizeof(param)); + + switch (param[0]) { + case ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_VER_FUNC_ID: + if (!target_impl_cpus_num) { + env->xregs[0] =3D SMCCC_RET_NOT_SUPPORTED; + return; + } + env->xregs[0] =3D SMCCC_RET_SUCCESS; + env->xregs[1] =3D PSCI_VERSION(1, 0); + env->xregs[2] =3D target_impl_cpus_num; + break; + case ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_CPUS_FUNC_ID: + idx =3D param[1]; + + if (!target_impl_cpus_num || idx >=3D target_impl_cpus_num) { + env->xregs[0] =3D SMCCC_RET_INVALID_PARAMETER; + return; + } + + iter =3D target_impl_cpus; + for (uint64_t i =3D 0; i < idx; i++) { + iter =3D iter->next; + } + + env->xregs[0] =3D SMCCC_RET_SUCCESS; + env->xregs[1] =3D iter->value->midr; + env->xregs[2] =3D iter->value->revidr; + env->xregs[3] =3D iter->value->aidr; + break; + default: + env->xregs[0] =3D SMCCC_RET_NOT_SUPPORTED; + } +} + +static int kvm_arm_handle_hypercall(CPUState *cs, struct kvm_run *run) +{ + ARMCPU *cpu =3D ARM_CPU(cs); + CPUARMState *env =3D &cpu->env; + + kvm_cpu_synchronize_state(cs); + + if (run->hypercall.flags =3D=3D KVM_HYPERCALL_EXIT_SMC) { + cs->exception_index =3D EXCP_SMC; + env->exception.syndrome =3D syn_aa64_smc(0); + } else { + cs->exception_index =3D EXCP_HVC; + env->exception.syndrome =3D syn_aa64_hvc(0); + } + env->exception.target_el =3D 1; + + bql_lock(); + arm_handle_smccc_kvm_vendor_hypercall(cpu); + bql_unlock(); + + return EXCP_INTERRUPT; +} + int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) { ARMCPU *cpu =3D ARM_CPU(cs); @@ -1919,6 +1990,9 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run= *run) ret =3D kvm_arm_handle_dabt_nisv(cpu, run->arm_nisv.esr_iss, run->arm_nisv.fault_ipa); break; + case KVM_EXIT_HYPERCALL: + ret =3D kvm_arm_handle_hypercall(cs, run); + break; default: qemu_log_mask(LOG_UNIMP, "%s: un-handled exit reason %d\n", __func__, run->exit_reason); @@ -2379,6 +2453,29 @@ static int kvm_arm_sve_set_vls(ARMCPU *cpu) return kvm_set_one_reg(CPU(cpu), KVM_REG_ARM64_SVE_VLS, &vls[0]); } =20 +/* + * Supported Target Implementation CPU hypercalls: + * KVM_REG_ARM_VENDOR_HYP_BIT_DISCOVER_IMPL_VER =3D 0, + * KVM_REG_ARM_VENDOR_HYP_BIT_DISCOVER_IMPL_CPUS =3D 1 + * + * Setting these bits advertises the availability of the corresponding + * Target Implementation CPU hypercalls to the guest. + */ +#define BMAP_2_DISCOVER_IMPL_BITS 0x3ULL +static int kvm_arm_target_impl_cpus_set_hyp_bmap2(ARMCPU *cpu) +{ + uint64_t bmap2; + int ret; + + ret =3D kvm_get_one_reg(CPU(cpu), KVM_REG_ARM_VENDOR_HYP_BMAP_2, &bmap= 2); + if (ret) { + return ret; + } + + bmap2 |=3D BMAP_2_DISCOVER_IMPL_BITS; + return kvm_set_one_reg(CPU(cpu), KVM_REG_ARM_VENDOR_HYP_BMAP_2, &bmap2= ); +} + #define ARM_CPU_ID_MPIDR 3, 0, 0, 0, 5 =20 int kvm_arch_pre_create_vcpu(CPUState *cpu, Error **errp) @@ -2482,6 +2579,14 @@ int kvm_arch_init_vcpu(CPUState *cs) } cpu->mp_affinity =3D mpidr & ARM64_AFFINITY_MASK; =20 + /* Set KVM_REG_ARM_VENDOR_HYP_BMAP_2 if target impl CPUs are required = */ + if (target_impl_cpus_num) { + ret =3D kvm_arm_target_impl_cpus_set_hyp_bmap2(cpu); + if (ret) { + return ret; + } + } + ret =3D kvm_arm_init_cpreg_list(cpu); if (ret) { return ret; --=20 2.43.0 From nobody Sat Sep 26 20:51:36 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1789140631; cv=pass; d=zohomail.com; s=zohoarc; b=RRlU+G2bX85l38OrigMSIo5Ak25Cn8moNQCf5e+mBxPmuB4TF+uAQOt7YE50ABM08Yj2Zga0jXB60tw10xI/ZxA6VqmGVbiArhY+l7aDw1fI4QF8lw1adSLl2YJ3abvJs9/GmhFbRqbQMomYq/ysyX/H45ADHr3xbxc36taZ4WE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789140631; 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=0IayHG9jvRxAIe2Wtqs0j9eJbTZ1Dx6bG1jWZGbo+iE=; b=PwCmVqibdGfdoUHBJDZruW8VPUgk8lgKDfYp2H8IOv9WuT5FA8K0H2nK4eJJ97j3Wg/3w2qeIGDPp4RFryM28BwSMrmgRadyXu7BNF61X2C9H9QAMIR3mlhWiq/vu3b5L06065tTjb92sEF5se5jHeRfkHRsJ8GTC7G8bJFwwEg= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789140631141507.0786937653363; Fri, 11 Sep 2026 08:30:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x53C8-0008Mc-9y; Fri, 11 Sep 2026 11:29:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53C4-0008L3-Ab; Fri, 11 Sep 2026 11:29:36 -0400 Received: from mail-eastus2azlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c110::1] helo=BN1PR04CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x53C2-0007H0-IC; Fri, 11 Sep 2026 11:29:36 -0400 Received: from SN7PR04CA0063.namprd04.prod.outlook.com (2603:10b6:806:121::8) by IA0PR12MB8303.namprd12.prod.outlook.com (2603:10b6:208:3de::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Fri, 11 Sep 2026 15:29:28 +0000 Received: from SA2PEPF00003F65.namprd04.prod.outlook.com (2603:10b6:806:121:cafe::9) by SN7PR04CA0063.outlook.office365.com (2603:10b6:806:121::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.10 via Frontend Transport; Fri, 11 Sep 2026 15:29:28 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F65.mail.protection.outlook.com (10.167.248.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Fri, 11 Sep 2026 15:29:27 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:29:00 -0700 Received: from NV-2Y5XW94.nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Fri, 11 Sep 2026 08:28:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FhgIfeV6YyrHLCJQ66X2FlbKIIWSaFov8rVoyL8/bmechYA/9wuxx2/+s1lWzluDBpNkG6wbsTFX72pZk4wCmd1zGkn0QAwgyVWFRca+zXdOY1cV4SZzJ+f9KGbWYjNgqzqHAs50eQkEkLGqlHwGK+epkOqSezvtz4gZvuAwbVucV2nuK8PN1C0IaAA+8NROioDRl150NmHGb3BzfkU0yEX0YObuKzGGd3gQPi/tYttdDoitVPo6B0rouuR5A7ZL9K9nnuDPfhIL0x6nook5cil0TuAEMMwdh7xBhw3mx3E7+Y7TMtupsITVDASAZWUizx0fUqYcoq039A8wNcEHAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0IayHG9jvRxAIe2Wtqs0j9eJbTZ1Dx6bG1jWZGbo+iE=; b=nX6i7VDlRV6FIZI4K56BTjhV1dOyATY6UKu1cTLr9oBQT9EO9XPaYKWLSrM9tIXB1d6e7Ki8DyqIWDTC7FnOtWbGd0k8dgIMdvf1vElgLld6GcHB+Qtk3uQStKKllomMaJPjj9U4yeSfhtFtZ7DBWlqIW4YMb+iIJXidM2X4rBzElT3uokH23a1uyz8KS+TccVoeGHAPHw+Qs7Kqgaz4ZyxF5yg1/BlezC4sBMBPaHM+FnPNU3IVY0Ufw/Fx+ZJzpDjqcVCKqwWKHDVOWyQJf6JlHVBGkbtF5EAGPv7i+UU+PEmSmBOe6P0rjPq0Z1SS+ddhdeJYHUuMdIEEtZgR3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0IayHG9jvRxAIe2Wtqs0j9eJbTZ1Dx6bG1jWZGbo+iE=; b=n8gsMwcYCLDZ5xqbCxOi+T6t5XkBnOFOkAPdmToFrB2bRrKoq+fX/20B+wm2aV0ZY3LAn07awkz9GlYRQaytV8VnIgmUvTfl5GLQ5KFfPm5nLEKUFFLWUlDo/NyjiLPkPX7RIBBLGT4/ezZPOpLE9DVg1gU7IkTvuzqvcVsoZd1arUtiNSY0vGDYgM2yF39RzGsliOKkGtJaWqpKDpvq+3xuRjoF3Q0TWjM/KimkQZbV32iSjEUmt11hQSrXsjSOSn4TGmjgPN6qte62JfzLZKX0w8HQQyxCg5kBH7BrrAGUrBWT/fRwE3wX7Fpmgol8SCwgVyxW/tFO46nfEgHNNQ== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , , Subject: [RFC PATCH v2 5/5] hw/arm/virt: Add Target Implementation CPU support Date: Fri, 11 Sep 2026 16:27:54 +0100 Message-ID: <20260911152754.706518-6-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260911152754.706518-1-skolothumtho@nvidia.com> References: <20260911152754.706518-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.37] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F65:EE_|IA0PR12MB8303:EE_ X-MS-Office365-Filtering-Correlation-Id: 4678dc77-2437-416f-9471-08df101977b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|23010399003|36860700016|7416014|18002099003|22082099003|3023799007|10067099003|11063799006|56012099006|6133799003; X-Microsoft-Antispam-Message-Info: nFPHdv3zHhXQGmo7qeHD+IkM1lMmuv0qJlh+qmHNbeHTxLDIaRSqlo2u2MssEYMId2r+04AzrT5M7IS/wIrU9awA1opEBAOvIhI4tz8izYZrPYvBgsKgRKN5U0ocw65jYIs5+9519qxCn6wXM805gJCUSqjraCkF+YXQlGxMk8dWmLBLmSMp2RHBTxL5HCnqr+8uNxW20i6Y3D7MB0UdqFM8zZAv39/G+XLNDC9mUxMfzpvQShaUTJz0X+Iq3gjRJ+NDshNirpI7B8JiLLCVqCuO3sdD9CXXU9L4bC75OPbnCZ0r3Ef1a7rOp4NVrkpXBQmxP55k3NIGzcK9jHg++aCQX2GYmaQj/CMjHHuZ4xgutI9dLdksXwY0+mAA1L6XtGre5TR440KyODh1d6xvY7gco0IzTtFdT12LUvl+HBgAPo3jJqjBwpHRy9ijQw2T8Z9McDS8LUYVmTizHkwAbs/XO5aXQkFUGtIEXfbAB/lHu3yaxwWgimRb5zcvNJDa1Y4aT7/cmgBdLhT0/bg9gOUJiUondc9SKUTg8y/hZ/pQqZS0R3vYt5mWEwrX3LHvRpUE7ynxSf3+EPhhNszTsjxJDKi5QwIVxza0ZMBOpRV3zeMo+mvxgQTdoBgcYYZx67fu7m7Oewp0MwIlL0TpsMQEWZrsp7PDT9TFjnaZV4cAyduZz9cqyMWfrEebc4M7f42LL8IK9Qa+KygLYB4qGg== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(23010399003)(36860700016)(7416014)(18002099003)(22082099003)(3023799007)(10067099003)(11063799006)(56012099006)(6133799003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Msyu6foK9gex38CMCjzJEYXdBy6z2UEDzFh2RATSxHVf5CXELeFqVEOGPHFdQCih1ViYA+0tXWMlaD/doAtmzNHTG2Oogy8Be8JBqtvtJEbUX5PieaklbyqwWsWxQ/KC8JlDLBr/GrD6dumok+WJi1pcfO0ONKtTYY0v2hx29sqxjsvpoK4UHlZBMEVvcEvCAQOcDrYqoIrlnryJ2m69syiXAyPZ/An/0djfuP3WmSR7qbRYzViF1W/K00eG7r1179qZRWI1I5QclNDuDAVc8g8h8JySjqiyHyNMkZz9ZBPXKQ6zWk8Fuf6JgDqQUesW1EpapvDax3JhT9BwhKPwzxeZp7bbXrpnxJuEkyqG0skyzycDWydzgyvS0FY5Waa3Q5yZcf/og/k6MHsUaFsfESrBZQB7Hv7NVDnZazEqmKBmQFTNbnkNbKwye+CVLKlz X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2026 15:29:27.6746 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4678dc77-2437-416f-9471-08df101977b1 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F65.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8303 Received-SPF: permerror client-ip=2a01:111:f403:c110::1; envelope-from=skolothumtho@nvidia.com; helo=BN1PR04CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001, WEIRD_QUOTING=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 @Nvidia.com) X-ZM-MESSAGEID: 1789140632426158500 Content-Type: text/plain; charset="utf-8" Add the impl-cpu property to virt machine. This will enable user to specify the target implementation CPUs as the example below: ... -M impl-cpu.0.midr=3D1,impl-cpu.0.revidr=3D1,impl-cpu.0.aidr=3D1,\ impl-cpu.1.midr=3D2,impl-cpu.1.revidr=3D2,impl-cpu.1.aidr=3D2 \ Make use of helper functions to check the KVM support for target Impl CPUs and if supported set the user specified target CPUs. Signed-off-by: Shameer Kolothum --- docs/system/arm/virt.rst | 22 ++++++++++++++++++ include/hw/arm/virt.h | 2 ++ hw/arm/virt.c | 48 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/docs/system/arm/virt.rst b/docs/system/arm/virt.rst index 5f6dd17978..a27a5dc8b1 100644 --- a/docs/system/arm/virt.rst +++ b/docs/system/arm/virt.rst @@ -259,6 +259,28 @@ x-oem-table-id Set string (up to 8 bytes) to override the default value of field OEM Ta= ble ID in ACPI table header. =20 +impl-cpu + Set the list of target implementation CPUs that the guest may run on, so + that the guest kernel can enable the errata workarounds required by all = of + them. This is intended for migrating a guest between hosts whose CPUs + differ in their ``MIDR_EL1``, ``REVIDR_EL1`` and ``AIDR_EL1`` values. + + Each entry is described by its ``midr``, ``revidr`` and ``aidr`` values, + and all three must be given:: + + -machine virt,impl-cpu.0.midr=3D0x481fd010,impl-cpu.0.revidr=3D0,\ + impl-cpu.0.aidr=3D0x551,impl-cpu.1.midr=3D0x481fd011,\ + impl-cpu.1.revidr=3D0,impl-cpu.1.aidr=3D0x551 + + The list is reported to the guest through KVM vendor hypercalls, so this= is + only available when using KVM on a host kernel that supports them. + + The list must include the CPU of the host QEMU is running on. A guest th= at + is given a target list stops consulting its own ``MIDR_EL1`` when decidi= ng + which errata to enable, so omitting the running host means the guest will + not enable the workarounds that host requires. QEMU does not currently + verify this. + SMMU configuration """""""""""""""""" =20 diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 22e66d1a11..1095a5d326 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -42,6 +42,7 @@ #include "hw/intc/arm_gicv3_common.h" #include "qom/object.h" #include "hw/core/cpu.h" +#include "qapi/qapi-types-misc-arm.h" =20 #define NUM_GICV2M_SPIS 64 #define NUM_VIRTIO_TRANSPORTS 32 @@ -211,6 +212,7 @@ struct VirtMachineState { MemoryRegion *secure_sysmem; bool pci_preserve_config; GPtrArray *smmuv3_devices; + ArmTargetImplCPUList *target_cpus_list; }; =20 #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index e7a56e37f7..dde22830f5 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -75,6 +75,7 @@ #include "hw/firmware/smbios.h" #include "qapi/visitor.h" #include "qapi/qapi-visit-common.h" +#include "qapi/qapi-visit-misc-arm.h" #include "qobject/qlist.h" #include "standard-headers/linux/input.h" #include "hw/arm/smmuv3.h" @@ -3027,6 +3028,20 @@ static void machvirt_init(MachineState *machine) exit(1); } =20 + if (vms->target_cpus_list) { + if (!kvm_enabled()) { + error_report("Target Impl CPU requested, but not supported " + "without KVM"); + exit(1); + } + + if (!kvm_arm_target_impl_cpus_supported()) { + error_report("Target Impl CPU requested, but not supported by = KVM"); + exit(1); + } + kvm_arm_set_target_impl_cpus(vms->target_cpus_list); + } + create_fdt(vms); =20 assert(possible_cpus->len =3D=3D max_cpus); @@ -3560,6 +3575,26 @@ static void virt_set_oem_table_id(Object *obj, const= char *value, strncpy(vms->oem_table_id, value, 8); } =20 +static void virt_set_target_impl_cpus(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + VirtMachineState *vms =3D VIRT_MACHINE(obj); + ArmTargetImplCPUList *list =3D vms->target_cpus_list; + + visit_type_ArmTargetImplCPUList(v, name, &vms->target_cpus_list, errp); + + qapi_free_ArmTargetImplCPUList(list); +} + +static void virt_get_target_impl_cpus(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + VirtMachineState *vms =3D VIRT_MACHINE(obj); + + visit_type_ArmTargetImplCPUList(v, name, &vms->target_cpus_list, errp); +} =20 bool virt_is_acpi_enabled(const VirtMachineState *vms) { @@ -4348,6 +4383,19 @@ static void virt_machine_class_init(ObjectClass *oc,= const void *data) "in ACPI table header." "The string may be up to 8 bytes= in size"); =20 + object_class_property_add(oc, "impl-cpu", "ArmTargetImplCPUs", + virt_get_target_impl_cpus, + virt_set_target_impl_cpus, + NULL, NULL); + object_class_property_set_description(oc, "impl-cpu", + "Describe target implementation = CPU in the format: " + "impl-cpu.0.midr=3D1," + "impl-cpu.0.revidr=3D1," + "impl-cpu.0.aidr=3D1," + "impl-cpu.1.midr=3D2," + "impl-cpu.1.revidr=3D2," + "impl-cpu.1.aidr=3D2"); + } =20 static void virt_instance_init(Object *obj) --=20 2.43.0