From patchwork Tue Jun 17 16:33:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897382 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2245693wrc; Tue, 17 Jun 2025 09:35:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX3iNHuSbd2/cgWcvjcAJbgKDnM0D+nyN2fA+g8i/UYUbGDbCnGpEMPyEHLN3/E9bFbtu9IaQ==@linaro.org X-Google-Smtp-Source: AGHT+IFtfGJzvXwiMRj6DEnfw1rlRiafwkEeG0gwaRXt7q7DexFGbXPVFLsRjOKRum1hG55hFRBb X-Received: by 2002:a05:6214:434a:b0:6fb:37:7405 with SMTP id 6a1803df08f44-6fb4774af8bmr235740576d6.19.1750178114729; Tue, 17 Jun 2025 09:35:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178114; cv=none; d=google.com; s=arc-20240605; b=BCsn/PiAuBIJzn32iUGhdJSrvOiiR3YxExT6L3bB160DGfxqHUU6jlOHy/+Z2iNET4 ngToQg2m85TDl68ArHp+toTePvDr1E+G1rj2b9GUNWa8sMcGdiCs3y6OnfJIimnLZpVj 0/rtr4cRfBr4YTiOs6F10abmmC7gwkSgjXwX8WU48FQQjSIMn5L+Z5Gpwex2n+U8s6Up 3z/+ZrZoKlxXvvaSmo72P1Dr4T3vEu2kgq7W/HB+qbv5As9EYYU8wmxnJF91xsApBsLM 6rfsmAOHIApgFyitQXc4iCyM7jYrXEm/1Cc8jbeLs4q1UYPklXk7/bHwtzJ1Et0oPT0w CfYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=pBtlyJQHnn2XrK52w3tY8zONlrGnxASWOwYgRCPrevI=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=JT/m693Rh3gaqKn+8lgqj/KiCki5EWMsKbP1fTyGqiVc0VXfoiIGuJNibi+zpIk42a 1tWUvTZ+dkzVu3FAGiI+lWFHNuRo4x89F/Rc1e0xJczqtv6gowTi75NDPACH0ycdOnuQ 47mQFbVxjt1UWcVD1Q6L+KuZklnF8rbUh2KL74zcAshov5PqySOPSES8noav56vzoQFF v4mNibcJRkyPCfGsi0D2HBjAJD5GE6lsMVDdNfCqG9UKOz5s/AYZ/YORjgqb6mVFS0uj k816JML2fyOUPY1wKPd4AsaZHbJZzYsWW2B//8hNFStkDHIvGqrLKXEIitN/NyOirp6n qwAw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Oo1QJ3GL; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6fb563bbedesi52643466d6.78.2025.06.17.09.35.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:35:14 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Oo1QJ3GL; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZGp-0000vK-Rz; Tue, 17 Jun 2025 12:34:49 -0400 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 1uRZG3-0000l2-1V for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:01 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZFz-0000cV-EN for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:33:58 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3a54690d369so6093591f8f.3 for ; Tue, 17 Jun 2025 09:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178033; x=1750782833; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pBtlyJQHnn2XrK52w3tY8zONlrGnxASWOwYgRCPrevI=; b=Oo1QJ3GL9zq7I9EGEBYKdU5RUUYuHuhKu0tWTGrtKi58tlTadpovRTl2vS3d/fl/q1 oZx6X5CVLoEbgpUxpKn/yQpxOOifaR7OCgU4S4mBZ9Accxb1DVpP+8/lQ1NxU37PwmeR AIbCnSxNG8QKZEKOSdvbRXgXuUNFyQdXkZbpalKaQHEAPpl6Kp8c/m5IsNM/egVdDtoj /KIh1qFF4zIeyfzEGcPOzR5Ijr1AuTLreOsG2pbDEhcPTwh31ddxPggm2zbkRsUCeVFR kVAaA6KhRq7qTY06ps4PEI+2sL2PH0nA1wfKrg19tMblNsJsjrryJqCfP0GD6KiOGPS1 Cl5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178033; x=1750782833; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pBtlyJQHnn2XrK52w3tY8zONlrGnxASWOwYgRCPrevI=; b=ZzKxrqwyPGHFe1MEEuuDps931surkj6V4qoNLfQfZndyZsPyp7zXSKQcUbXWscLPEi 5YFTcaH8UqiSvjwEUURbIpAh9GjWw8NxQdSAMT83u1cL0z+XkAe3rOenRe0QjHe8KkVr xXwcXoqX0Kf6L4tJN8KSqq8dGDOWBi1d2kxWmysEb+2fTEQuxa+NTsugfF19Y7pdJGjl GhPsJ0nFUSU7j7WKK0aYSesdFd5e2/yHeJzENanvpsnIpgj4FiC8Vwlxtngw9NCxDbba 6e6n4vqabE8FHQIkGPEc4/SLWLVSiOUae01rHk/stBcJifo7HfLQa710PznMi1NuMNBW BR0g== X-Gm-Message-State: AOJu0Yw0zYVz1tEMV03J9f6nee8WHRVyAUKBObukSrPf92RnplqFp3uD Eh58xWVeJ+Q4CmRKiuJhRP62l2bNocYOlS1gmdzEH3nCX/IdJyKO4mblNAh6rOlKp7A= X-Gm-Gg: ASbGncvNR1i6lv0+aKEY7JpPrHB8vVxzeGq30BlKDyLFbrW2EQH2y2YzL7+MeOGOlR3 XG1jr0tZm8tbw7PDgQ7TEkNrACcQxBHMc3NC8VgAG7+diMBD7SQkZOyNlZ4WYb8PfdtygVGQISU GVkyLoUgRxYpyVAb41gI8dI6J4QQgoM9kp102dS3/ZNLRuQJ1FHFAb3S+q2lrhGgAePZxSX3ywO fYNew46vkl/M9Uy4edNkZ3ts2t+USbdOZi6241+mppla8UPIg1G5NWdO7Pk/UGtvbSPACTF9aZf S4PqclH45kpn2kpXVe6hiHF2bTPR4pzqNIbznN43znCZDCvdYW/24H1X1bT4uOo= X-Received: by 2002:a05:6000:2582:b0:3a5:27ba:479c with SMTP id ffacd0b85a97d-3a5723af8b9mr11474110f8f.43.1750178033368; Tue, 17 Jun 2025 09:33:53 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568b798d3sm14364723f8f.100.2025.06.17.09.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:52 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id F3F655F845; Tue, 17 Jun 2025 17:33:51 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 01/11] target/arm: allow gdb to read ARM_CP_NORAW regs (!upstream) Date: Tue, 17 Jun 2025 17:33:41 +0100 Message-ID: <20250617163351.2640572-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Before this we suppress all ARM_CP_NORAW registers being listed under GDB. This includes useful registers like CurrentEL which gets tagged as ARM_CP_NO_RAW because it is one of the ARM_CP_SPECIAL_MASK registers. These are registers TCG can directly compute because we have the information at compile time but until now with no readfn. Add a .readfn to return the CurrentEL and then loosen the restrictions in arm_register_sysreg_for_feature to allow ARM_CP_NORAW registers to be read if there is a readfn available. Signed-off-by: Alex Bennée Message-ID: <20250507165840.401623-1-alex.bennee@linaro.org> --- vRFC - this is a useful debugging aid but a bit haphazard for up-streaming. See thread comments for details. --- target/arm/gdbstub.c | 6 +++++- target/arm/helper.c | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index ce4497ad7c..029678ac9a 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -282,7 +282,11 @@ static void arm_register_sysreg_for_feature(gpointer key, gpointer value, CPUARMState *env = &cpu->env; DynamicGDBFeatureInfo *dyn_feature = &cpu->dyn_sysreg_feature; - if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_NO_GDB))) { + if (!(ri->type & ARM_CP_NO_GDB)) { + /* skip ARM_CP_NO_RAW if there are no helper functions */ + if ((ri->type & ARM_CP_NO_RAW) && !ri->readfn) { + return; + } if (arm_feature(env, ARM_FEATURE_AARCH64)) { if (ri->state == ARM_CP_STATE_AA64) { arm_gen_one_feature_sysreg(¶m->builder, dyn_feature, diff --git a/target/arm/helper.c b/target/arm/helper.c index 7631210287..8501c06b93 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4996,6 +4996,17 @@ static void ic_ivau_write(CPUARMState *env, const ARMCPRegInfo *ri, } #endif +/* + * Normally the current_el is known at translation time and we can + * emit the result directly in TCG code. However this helper exists + * only so we can also expose CURRENTEL to gdb. + */ +static uint64_t aa64_currentel_read(CPUARMState *env, const ARMCPRegInfo *ri) +{ + int el = arm_current_el(env); + return el; +} + static const ARMCPRegInfo v8_cp_reginfo[] = { /* * Minimal set of EL0-visible registers. This will need to be expanded @@ -5034,7 +5045,9 @@ static const ARMCPRegInfo v8_cp_reginfo[] = { }, { .name = "CURRENTEL", .state = ARM_CP_STATE_AA64, .opc0 = 3, .opc1 = 0, .opc2 = 2, .crn = 4, .crm = 2, - .access = PL1_R, .type = ARM_CP_CURRENTEL }, + .access = PL1_R, .type = ARM_CP_CURRENTEL, + .readfn = aa64_currentel_read + }, /* * Instruction cache ops. All of these except `IC IVAU` NOP because we * don't emulate caches. From patchwork Tue Jun 17 16:33:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897379 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2245425wrc; Tue, 17 Jun 2025 09:34:42 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXD5zdwlzgZ+7fepdy1eerl6QpPuUSsggZ2ejyuAJdwmMMRYpKxdngVa7/pg37B35NGfM/2bw==@linaro.org X-Google-Smtp-Source: AGHT+IErCZSmSSVGAXTw14+Aqw8TCgJZhqZD5dY0MlAgGBTdzpK/fRkbtAB72ZRxrDcTPCQxHNxm X-Received: by 2002:a05:620a:1a86:b0:7d3:c68e:fcf6 with SMTP id af79cd13be357-7d3c6c0dd22mr1983751985a.9.1750178081936; Tue, 17 Jun 2025 09:34:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178081; cv=none; d=google.com; s=arc-20240605; b=dDzHYfCZBR2Kh5Y6+YgiDRNygtCPWKoX/7miyAdU2XPgKRHdxE0Hjxt9lWQHtQz+BY QnEPbegUNQQvknenDOj1w5Vyx6ntUq8MZjhkQPXVX421uACFACNvd6hfppUlA+pSFQql Y/m7S7j54iHJjIFF29IMb9xpZZK56Jc7RENyTvhG6l6Xm8Q4cjkoLa4iusKTUsyPfRtW 0/3KRE3T+q55lCIn6uIZ5lBsEqur0BEqI3y59waeHo15w7ITE53zK2SF89YOgE8o6F9p LVyW3gIQz/y5++cmNLFucJnxWyXliA6TWRB2yKhfn4xvRXsGvOXTMb18odgumFOmfRKk pwkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/pVLW980tQUeFMbPOSrmbCV35FWVqLGwZwmiSRkT/nc=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=RQcBk08zm/fQxHA8uOzerTfhjr08R9FBg7M/uvCZWQEZQj7zPBydtRBbLRqc1AN3U4 9iyFElO4SSKlvg3A6oCuKJ+7krdtjZ1gK1qTn0+1jGa3dglSVXaJRyIVT0iaYPcg4qD7 1LqzU46Ak6Mb89BeI5XdYw+rItjCu6wBqU8UJ2IZ/9DVJW2pYApmV4M+5sKD4zjsp+c/ o/LNvCWGpYLuilrUuGFsIYpRsUi9BEZR6NvHaHhU2ik+His6qhW3CJoQ7p4IVPRuSsgm SEvMpGOqyV0ovNV2ITwkTBZ2+igXs4leq3788CcRJr6YfjgerMHSYngzK1HFR0kDoIy0 q8Sg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AARro+sg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8edb197si1224044085a.376.2025.06.17.09.34.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:34:41 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AARro+sg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZGQ-0000mc-LR; Tue, 17 Jun 2025 12:34:23 -0400 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 1uRZG2-0000kn-S4 for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:33:58 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZFz-0000cf-Lk for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:33:58 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-45348bff79fso32505855e9.2 for ; Tue, 17 Jun 2025 09:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178034; x=1750782834; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/pVLW980tQUeFMbPOSrmbCV35FWVqLGwZwmiSRkT/nc=; b=AARro+sgTKnFkmA/pCZGdxHsKke7t5ORNlCD7/asYUSrNRTBhhUfHvudVVNoqG8kkQ taO7FDKy+1F3xYzgT5HioSBnmujf5apUsup6Dd4x5aGgLxQdUmmZXcnTmkuiDHSvVfP/ 8VBeIaoNoiETopcMaXNKb/lTKNwzJ11egYrA7P5kyZy1ZYxM5f/r7xw/KWCA86XCchtm BtUJxx9nhQ6TQN+/VW3fYby0SoVzHZElzqbn9YPXrzFWidViKSmjswqgJEtKEKRILdrY shYahkoVtiLYlF0rE7B6bFD0YE8EgqqSzrE2WNVIDYY08UiGIBFAzXT3gc7Cr/k2buYL 3s+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178034; x=1750782834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/pVLW980tQUeFMbPOSrmbCV35FWVqLGwZwmiSRkT/nc=; b=ajkONnWGGWWScgyalrRD+lETQtPPKEG9GWg1CeM/qeva5PFeQ1xqmb/Lpzu/ImaasO 6gF6Pgd+qJDcB8+wHERLigH2Mev9DR5IYLbdEkkvUVEaJ3kE0cbrgbIve59eJjxPlP64 zBrSJRvoMtx3eMPehkETnxGIB8SN3evhxvxA/HCvgMMx+Zq0/Uk1xMXlMzMQXr/7Nl9u dD953cKg6BouhD6W+zQYLnDl8JZRxTv64KAFIAagO8MrDMqEK3gtQcGVsVQ60/niGZ8T 8Y53M+GkThe5BM5xps7Y46aUnj3913vgFYDsEiDbjhnWzsA2tWSUNozhDmLGnEY1OWlk Mulg== X-Gm-Message-State: AOJu0Yz1F2NKSiktWSNbGrhwLz7nmb5UzUmmLJneUcTHZvbkYUCcVN3I Ebs1v34D8pS/ouy92JAR4CSUh4bhXvtDEA1HnHsNMNQkWqYwJODsGr7aDN/f25okK4Y= X-Gm-Gg: ASbGncvLmj8zzCKb16xIPFq54Df34FJXx9Jjul3gRHwYy64m6bHmLZ4P/lk47ucvClu YCB16NflaLXh2QKux3wzegPIkVm1uRLR/30Ir+48Oi4JbHVW+0KD777fJ2uwUYzJ2MsdI3BkeDk MUgTump5GmFSsBi3eNBv0eYqJf2N19ma2cg/AmPLU3upLRfUXE8EV/ya1/AP4AXfa8k5K/8E8J6 avEb10AmaNrliUL6Te60lpaLb3axD9RUGQ61xmbqgYOhBHeIDOvlL6w4idlddU8ZzvDcZxs8MNL JVCQHIzWEqs3WELwwn9XpSs5Nld9iabUCcSGH0R0uXHnIEFuaEzgUiUtMsu8lWs= X-Received: by 2002:a05:600c:8286:b0:450:cfe1:a827 with SMTP id 5b1f17b1804b1-4533cb1a7c4mr155107765e9.31.1750178033665; Tue, 17 Jun 2025 09:33:53 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4532e268de2sm181468295e9.40.2025.06.17.09.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:52 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 15EEF5F873; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 02/11] target/arm: re-arrange debug_cp_reginfo Date: Tue, 17 Jun 2025 17:33:42 +0100 Message-ID: <20250617163351.2640572-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Although we are using structure initialisation the order of the op[012]/cr[nm] fields don't match the rest of the code base. Re-organise to be consistent and help the poor engineer who is grepping for system registers. Signed-off-by: Alex Bennée --- target/arm/debug_helper.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/target/arm/debug_helper.c b/target/arm/debug_helper.c index 69fb1d0d9f..8130ff78de 100644 --- a/target/arm/debug_helper.c +++ b/target/arm/debug_helper.c @@ -948,19 +948,21 @@ static const ARMCPRegInfo debug_cp_reginfo[] = { * DBGDSAR is deprecated and must RAZ from v8 anyway, so it has no AArch64 * accessor. */ - { .name = "DBGDRAR", .cp = 14, .crn = 1, .crm = 0, .opc1 = 0, .opc2 = 0, + { .name = "DBGDRAR", .cp = 14, + .opc0 = 0, .crn = 1, .crm = 0, .opc1 = 0, .opc2 = 0, .access = PL0_R, .accessfn = access_tdra, .type = ARM_CP_CONST | ARM_CP_NO_GDB, .resetvalue = 0 }, { .name = "MDRAR_EL1", .state = ARM_CP_STATE_AA64, - .opc0 = 2, .opc1 = 0, .crn = 1, .crm = 0, .opc2 = 0, + .opc0 = 2, .crn = 1, .crm = 0, .opc1 = 0, .opc2 = 0, .access = PL1_R, .accessfn = access_tdra, .type = ARM_CP_CONST, .resetvalue = 0 }, - { .name = "DBGDSAR", .cp = 14, .crn = 2, .crm = 0, .opc1 = 0, .opc2 = 0, + { .name = "DBGDSAR", .cp = 14, + .opc0 = 0, .opc1 = 0, .crn = 2, .crm = 0,.opc2 = 0, .access = PL0_R, .accessfn = access_tdra, .type = ARM_CP_CONST | ARM_CP_NO_GDB, .resetvalue = 0 }, /* Monitor debug system control register; the 32-bit alias is DBGDSCRext. */ - { .name = "MDSCR_EL1", .state = ARM_CP_STATE_BOTH, - .cp = 14, .opc0 = 2, .opc1 = 0, .crn = 0, .crm = 2, .opc2 = 2, + { .name = "MDSCR_EL1", .state = ARM_CP_STATE_BOTH, .cp = 14, + .opc0 = 2, .opc1 = 0, .crn = 0, .crm = 2, .opc2 = 2, .access = PL1_RW, .accessfn = access_tda, .fgt = FGT_MDSCR_EL1, .nv2_redirect_offset = 0x158, From patchwork Tue Jun 17 16:33:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897386 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246606wrc; Tue, 17 Jun 2025 09:37:13 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWI6G+lQd2XHapz2IRjsmJxzLAQPGJqOA+cFhQrW2G2PaxMICfESJuITdhzNH9i49LZZmtHZw==@linaro.org X-Google-Smtp-Source: AGHT+IF3HnVQk0EMmKO9/qFowlvsQLATqPYM+695dykBWiZ0H0kOp9UQ+VXQ5SV/skI2p95VQSS9 X-Received: by 2002:a05:620a:a014:b0:7d3:dd54:2a28 with SMTP id af79cd13be357-7d3dd542c6amr508156685a.40.1750178232780; Tue, 17 Jun 2025 09:37:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178232; cv=none; d=google.com; s=arc-20240605; b=kpiVyshhtm68iKaCLkRpIH51SkcEfgI9osYqMC+BXz4BFrnDrgcnFSoZyCTt49SXra KsR9nCJxqXwA0TNEmqgU7E/+F79L5GW0Q+T8xexodpUT8KSRdqXBEtC3CpVtZ/9IV2sg j1qyhy370FsSQCwNOaizhxEbO0o6r75w6k0BYh12sVuwNGj0gjFIVEY9h6r86WIYePcU CbdDPai4heJ3+qYWTACi2b2CwQolRc3yC4s/KR2nx0B4OfMvb9BwhlHtBudgS6CF0EFR 1/eAlifqgm1yGouEXfupFT2ZYDAkKsy+IOZSKrttFj3r2k/RaEcPh1iYUsIK4X1EWlGl Dhiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=QKHVjbEZEAlGzEnK1mT5V15dOYDZALJJ9P4ZN2AdSHE=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=dYMX3ZnfPbPQDgTU+jJXfUWb3Iqk1eRsene6MM50r6XD1uFzc3Iu6HKMAoJxWeQKtI qKSKEiwtyGBIdu90Sd2g5qsSWvO4mi8POXXAgZKT8DoayUrDLqiqRNZnUUYsgtY/ZByu d8CARjB1xS4t+asL6izDvyntTGwEvF8j7ldO/yuGSpNO5v2RU+p1p2HaMOn/wZcTRzan i3Bvgh9kPzN6D9wW+QeyIDdHXsWOFHfPyJiYRB4/5WgETeT/Wbc6+ugYUe6Rimli6Rvu F+47jFveBp7l4ceSGJarbtNza+34+md1xZSwlk2uFIDwFDZj/l8jx4g7UwI2xBpXJnZd X/sg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vjOqLM4v; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8eca184si1227263785a.293.2025.06.17.09.37.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:12 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vjOqLM4v; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZHE-0001Lr-Fq; Tue, 17 Jun 2025 12:35:12 -0400 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 1uRZG5-0000lQ-M7 for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:08 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG0-0000d6-K5 for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:33:59 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4531e146a24so36920995e9.0 for ; Tue, 17 Jun 2025 09:33:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178035; x=1750782835; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QKHVjbEZEAlGzEnK1mT5V15dOYDZALJJ9P4ZN2AdSHE=; b=vjOqLM4vNS0Lacmf4nB+l3uVgl5UZ/wJqJ+G8Xfu1u4pyrRFX45dzwXX74K9BFEfUk kem2uO0mjam3j9xFFvUG7gtfEDLMEGgMomL5O/VdXY98RxbpQ3J7JHR7mqlRe5xLKAdv cfxUZXDVPw1eVhMXIM7cADXw1hdBfN9GGvWi5ISs8XV95klaEe3zv3THqNT7dt5JQE80 jR6iQa9NFK63Ir5bTWHEbC6Zf711861irRHIw3pcKFglvnw9hej12rHFiXvd/zQoeZEW OXGbomsa+OnbK9ljMHctDsF5HqyfioQSR0eXg5sUSSu4z0lC+ZJfPl3zuBSl9vbshkYo hjgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178035; x=1750782835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QKHVjbEZEAlGzEnK1mT5V15dOYDZALJJ9P4ZN2AdSHE=; b=MaQGq3R7Rj+QQ1D6YH9kwCzNWy+luU+8Zv0wNCwd36p5V3qiSt/cfcuhT86SpA/II5 Q2JqJXrP0jeSfH1wzjsxUKaki05ukIcNzb6zP4/dR+AtLY+G+H8Fuxq0Wwww3hLEbaOJ y3/0JFcZwB7DANueVq+PtEuymG64T/nysOg2RGJrtwOQJgC1b7vnfwWiCPHeVWanoqrb oHcRqEeHKUl4rSr0dM8L8X7iV8jlR0AhfkkwktVP5xvVQX6A2u+styYUAT8At+bWIBSf gDRa/fEBMvRD6lVBNhAvoF0j7d0R8IS2cVEi+RchuN5lNbNL7QOiNAZ4+LY4awp7TPYG JwwA== X-Gm-Message-State: AOJu0YzrbTXIuBI98DobomV+dl2rmWJ6L2zJnF2AsnS7s5LM6ltpadoF OUw9Qe1dsYK47ojhPqdB84/1RsVnXHCjb3fmIRTsN+8r7F/xWfGpkxEjXERgADKInkM= X-Gm-Gg: ASbGncsrnxdkZIrFHfd3Hui69QpGRy5WgZr1H3Q+tgRawqy3ty0EwkoNrHyq0siLu/t UciDrS/ayf0940oARIu9UkQK2xZzkysbZUXQh3elRuWg7nxGej3PcsyOtcIZxlzJalxMX2vErUL 17YVMpfvVxLO81Yx2mCiwKCmGAGjoa+iP6XrgypE4fsJLVD4lDRqaLrZf9hqzJZyyx4CY9tsV+m hiV4Jp5I5m3H0U3Akahb+1ARJi2J+uoe68iXRX+geVcGWai/zDmMdR1qan3fmK3+3CSO4zmdXUX T7tu6DXUM296Bz1K3RVJo70Gro9WWaOugO9Bwzintuvr6xX627G1HWZRtd1orYo= X-Received: by 2002:a05:600c:1d06:b0:43c:e7ae:4bcf with SMTP id 5b1f17b1804b1-4533c9bf9e2mr148215485e9.0.1750178034971; Tue, 17 Jun 2025 09:33:54 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a7e980sm14106592f8f.41.2025.06.17.09.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:53 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 2E6FE5F878; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 03/11] linux-headers: Update to Linux 6.15.1 with trap-mem-harder (WIP) Date: Tue, 17 Jun 2025 17:33:43 +0100 Message-ID: <20250617163351.2640572-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Import headers for trap-me-harder, based on 6.15.1. Signed-off-by: Alex Bennée --- include/standard-headers/linux/virtio_pci.h | 1 + linux-headers/linux/kvm.h | 8 ++++++++ linux-headers/linux/vhost.h | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/standard-headers/linux/virtio_pci.h b/include/standard-headers/linux/virtio_pci.h index 91fec6f502..09e964e6ee 100644 --- a/include/standard-headers/linux/virtio_pci.h +++ b/include/standard-headers/linux/virtio_pci.h @@ -246,6 +246,7 @@ struct virtio_pci_cfg_cap { #define VIRTIO_ADMIN_CMD_LIST_USE 0x1 /* Admin command group type. */ +#define VIRTIO_ADMIN_GROUP_TYPE_SELF 0x0 #define VIRTIO_ADMIN_GROUP_TYPE_SRIOV 0x1 /* Transitional device admin command. */ diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index 99cc82a275..bb51fb179b 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -178,6 +178,7 @@ struct kvm_xen_exit { #define KVM_EXIT_NOTIFY 37 #define KVM_EXIT_LOONGARCH_IOCSR 38 #define KVM_EXIT_MEMORY_FAULT 39 +#define KVM_EXIT_ARM_TRAP_HARDER 40 /* For KVM_EXIT_INTERNAL_ERROR */ /* Emulate instruction failed. */ @@ -439,6 +440,12 @@ struct kvm_run { __u64 gpa; __u64 size; } memory_fault; + /* KVM_EXIT_ARM_TRAP_HARDER */ + struct { + __u64 esr; + __u64 elr; + __u64 far; + } arm_trap_harder; /* Fix the size of the union. */ char padding[256]; }; @@ -645,6 +652,7 @@ struct kvm_enable_cap { #define KVM_VM_TYPE_ARM_IPA_SIZE_MASK 0xffULL #define KVM_VM_TYPE_ARM_IPA_SIZE(x) \ ((x) & KVM_VM_TYPE_ARM_IPA_SIZE_MASK) +#define KVM_VM_TYPE_ARM_TRAP_ALL 0x10000ULL /* * ioctls for /dev/kvm fds: */ diff --git a/linux-headers/linux/vhost.h b/linux-headers/linux/vhost.h index b95dd84eef..d4b3e2ae13 100644 --- a/linux-headers/linux/vhost.h +++ b/linux-headers/linux/vhost.h @@ -28,10 +28,10 @@ /* Set current process as the (exclusive) owner of this file descriptor. This * must be called before any other vhost command. Further calls to - * VHOST_OWNER_SET fail until VHOST_OWNER_RESET is called. */ + * VHOST_SET_OWNER fail until VHOST_RESET_OWNER is called. */ #define VHOST_SET_OWNER _IO(VHOST_VIRTIO, 0x01) /* Give up ownership, and reset the device to default values. - * Allows subsequent call to VHOST_OWNER_SET to succeed. */ + * Allows subsequent call to VHOST_SET_OWNER to succeed. */ #define VHOST_RESET_OWNER _IO(VHOST_VIRTIO, 0x02) /* Set up/modify memory layout */ From patchwork Tue Jun 17 16:33:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897383 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246075wrc; Tue, 17 Jun 2025 09:36:01 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVydxsHjpx8ssq5kKbJbs8IJFZqLy2PIdT93KjRoZDCtR5KjRpShsvkNsH9m8pUSLs+Tphthg==@linaro.org X-Google-Smtp-Source: AGHT+IEgpBMwKLIfwXKOpFaA4kh6ks9wQD9z8DkNr0UjCW0AWi6VKcqxbltlEfvNxHaDHPMapk64 X-Received: by 2002:a05:620a:1788:b0:7cd:31ca:d81 with SMTP id af79cd13be357-7d3c6ce14b0mr2064851885a.27.1750178160598; Tue, 17 Jun 2025 09:36:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178160; cv=none; d=google.com; s=arc-20240605; b=Dp0bdi17bQPTecbFInyIyOYiTicZWSOEGj1/BJSaX6lHqoQpTWA9WqrpBHPwxyUE38 KHbkchzSN9wdZQ7h7PJ0vgrskL9SraeDEhwyx0dxeZpju5Ybn4a94IxwGcNs5+Qnu3+W oUmeEYJVNbnTvvjXd10jNrzaJSMMf8ssS9HLA+m+29hKYk8MxWLEIUlDGOylaqCMbCnT aZ6Rxc16MPx8wHaFWWXMXEn4K/zIdxjBOTifYR3mRZQjJvvxZDmoNCPkvI0X3dxsLJsU kGTca17Bpk90jcoC5aOp3lv7ocjaE/2nbtLO48Aznq7CSSRtZGM0Lvob4HcZZ2pfNykV PFRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=t40bt1183UrSentyz3550cC0V6NSp0ZoskbuhIRXheY=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=bza9XZnGTdPlHvp7/RTCo/BwLUb3AfIcItfCX7XCmdJnKGUsCLYciJL+Ncu71kHxBK e3UN5HoGZSNdOkzS4yKgmXZo3lYYvF+vdGZL1kc4mTld3p0sCnjCzto8YTftFoH9T/bV gyNawBt939u7EICLUMkph6dMJOaO+ql5hjChycDHaNyERhvs7OjLcj9Az37MRISqXUzf /EbJ3rNwVYVgnH7L8VU41/sEY7Mq9jhFCI0vk2h0XB6wTFQiE86uh1ep9BNVnnwlAJJ6 qPuGoSwk0b67pAtTS0BIR8BcKFv/NwYS3uwM8KeegLpcG/Fy9OFsdrWgVCR0l7UIDv/j kIxQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iYZzXroo; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8ea800esi1234928485a.218.2025.06.17.09.36.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:36:00 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iYZzXroo; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZHE-0001Lo-Gj; Tue, 17 Jun 2025 12:35:12 -0400 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 1uRZGC-0000m3-78 for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:10 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG1-0000dB-5k for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:00 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-450ce671a08so37702105e9.3 for ; Tue, 17 Jun 2025 09:33:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178035; x=1750782835; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t40bt1183UrSentyz3550cC0V6NSp0ZoskbuhIRXheY=; b=iYZzXrooLEVABswjRyJcpawNukewtvdMUDWzFL8TEBSdYHqNbmU7R5p4fD0u6JxUAt F5ycupFpXVopyi6nvRZDnY7LpjmqK5lqg5P+gEraJhS4W9HcwsKlO/+VT/RNSIRWdROr iRirD3v+uRkFPsDO6IX5zNYzmgNWvv33pGpHBFRHT0JqEJ3/AQrv4jZokhPx93dujNu7 mmT+3SJgONekc6ZH47zjoCS6FNjJ0guXBBWAsPjWXbMpUmi+M3gTN3KS5C6IlWQdMI44 W7Mkuiz72bkpeWDjHxYxxxrjVwfhOT/JuMshPiPZzee62NJvUu/fWb9yHedh95t41Pfx apzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178035; x=1750782835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t40bt1183UrSentyz3550cC0V6NSp0ZoskbuhIRXheY=; b=hMegHgrL6sYqxm06KLY3gY1SHO+n/ffTlChTLHBwCdke3pnEHrTYou8z4HM5CmC5Q2 2SIwRXpW2JhjIPuHBSaFd7JYZIxRr3gW2qG+bIYD2Hdr8pBArojEnuTc6PCNChlN7YS6 2qQLfCkBYScheBx2i84BF1V/29T5/N3wk+G4Yvn7mi6hT3FVD0Jy7Gt+VDCta7bDK+tQ uajabfzXGkbPAF72O/kdYhP/SwA32SluQb7jGJbduCB8boEhmGl5fd6BcXhcg97RNJW5 eZ57RUMzmAV5P4cnl4S70wfbVXtMVHV2qBAeDYu3YxuKxtUzTasBZbzoYIEgWK8dgajG g+cg== X-Gm-Message-State: AOJu0Yy6+ucJWtc7KnNREhH9LNHamKIH1xnDAgeyUt4WDTbYPUkm3Mv8 FtiJAUOwJtI1A25VxefWdqZ8aYBiryE6TVoYmU2XEa7Yk5YNnV53ul/VUDbDH77C9Bg= X-Gm-Gg: ASbGncsjTI2tReuGKVBCO2LFtbxGtnCtyWmb4HRToX0POt5TN+08qaBRMMOa7zyHEr+ Cchs4xmqMa1Vh8zsfR7A8RU6ujgbjQsXyQKVsZAqysO5cp4iaf/a9Ct0nV7Hv/kfIn91Cm0JEHi AXAkZ2s+SkFis/x7DdLFDQBENCLZhemBfkR368X2sC/i++GZuOi1p3CKwWV/9j7QsHEZ6Un/NBq 68X0ni22MwbelwcJBsAXD8rk7OXYMmIHIK/JYzJWpKPm1KHvEG7rCerD/Hcv1spUqlfeCgHboaa lDBMNEp/kKowwAEYUmnb3M8dy2cC8x3f3APfH4crTXUedQNl8Q6ZO/WtyB2zCr0= X-Received: by 2002:a05:6000:2913:b0:3a4:d4e5:498a with SMTP id ffacd0b85a97d-3a5723af2e8mr12220518f8f.42.1750178035305; Tue, 17 Jun 2025 09:33:55 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568b48564sm14222655f8f.82.2025.06.17.09.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:53 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 434E85F8A6; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 04/11] kvm: expose a trap-harder option to the command line Date: Tue, 17 Jun 2025 17:33:44 +0100 Message-ID: <20250617163351.2640572-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org It would be nice to only have the variable for this is a KVM_ARM_STATE but currently everything is just held together in the common KVMState. Only KVM ARM can set the flag though. Signed-off-by: Alex Bennée --- include/system/kvm_int.h | 4 ++++ target/arm/kvm.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/system/kvm_int.h b/include/system/kvm_int.h index 756a3c0a25..a1e306b7b7 100644 --- a/include/system/kvm_int.h +++ b/include/system/kvm_int.h @@ -122,6 +122,10 @@ struct KVMState OnOffAuto kernel_irqchip_split; bool sync_mmu; bool guest_state_protected; + + /* currently Arm only, but we have no KVMArmState */ + bool trap_harder; + uint64_t manual_dirty_log_protect; /* * Older POSIX says that ioctl numbers are signed int, but in diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 74fda8b809..8b1719bfc1 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1615,6 +1615,18 @@ static void kvm_arch_set_eager_split_size(Object *obj, Visitor *v, s->kvm_eager_split_size = value; } +static bool kvm_arch_get_trap_harder(Object *obj, Error **errp) +{ + KVMState *s = KVM_STATE(obj); + return s->trap_harder; +} + +static void kvm_arch_set_trap_harder(Object *obj, bool value, Error **errp) +{ + KVMState *s = KVM_STATE(obj); + s->trap_harder = value; +} + void kvm_arch_accel_class_init(ObjectClass *oc) { object_class_property_add(oc, "eager-split-size", "size", @@ -1623,6 +1635,13 @@ void kvm_arch_accel_class_init(ObjectClass *oc) object_class_property_set_description(oc, "eager-split-size", "Eager Page Split chunk size for hugepages. (default: 0, disabled)"); + + object_class_property_add_bool(oc, "trap-harder", + kvm_arch_get_trap_harder, + kvm_arch_set_trap_harder); + + object_class_property_set_description(oc, "trap-harder", + "Trap harder mode traps almost everything to QEMU (default: off)"); } int kvm_arch_insert_hw_breakpoint(vaddr addr, vaddr len, int type) From patchwork Tue Jun 17 16:33:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897381 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2245472wrc; Tue, 17 Jun 2025 09:34:49 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU1gkGlw4MMZL4KKBul1Wlmrj1wbDLsHmIL4TRQwQMuE9LQ205/GracLnOYTCaW2KZA8ppk6w==@linaro.org X-Google-Smtp-Source: AGHT+IFzzgoZqgozUIaU6OEa9NbOGVpI771Kv01OtFuqYJ4QxDXk4qgdjkAQZxTNoPxm+dmBIVHI X-Received: by 2002:a05:620a:2403:b0:7d0:9bd7:f9ae with SMTP id af79cd13be357-7d3c6c0c773mr1987250485a.2.1750178088891; Tue, 17 Jun 2025 09:34:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178088; cv=none; d=google.com; s=arc-20240605; b=VX9DpE2p/xG5qd0V1qDNMyRNSKwjbomwmBuwltbjZOp+KBWfRl4QpixpoLXx4iTlas 1u/tU32UEXJ7lO+BMKYrqjRouij9pO+Eyr0K69i3za0j+YHaAYB74osiWwlMvJpy5Lux gN+In9lwzk09AVeujSfsFiBxMhYbgbBqtgntQ/OH11hrgzYGERJxoq94U1RnKwwSlZRG Ov3ISRmK99TDNKQcFPWHT7qWmG2v1KyR43m5GhwNp1NcQ/ORDrwwhRPRpII0avTpdF4y UMwNuiTkVwtlLJDgI47iJkdiVqWG4EuKnIBMvj2i5kSdAluG4//NFXvXTZ8dQ1eY6+Yn 2S3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=I4mTaJwkAe0rgPcWQ6kEwY/uI1enES5AbvkajjNAiL4=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=XSvXhA5UbD/Z98VMnUyKWRIQ6Oh/gmP5b+XzNcZCHO2TrfPLExlMmmAioAyxS7GpGA hJa2Z121W8gRkdHc3HRW92Hpt2wxANqN+r1uZgpmvha5dKfBYnkZ3y5qnZ0AY7cil9/W CPzGvzn5ImyRjal1fmg746y1Rx5xuzLjOnGPsuPEG9a2PBhcDrzfN3vQNY2qawOaESqC 562Ip5Gc4IPaP7tVmR5c9JWedTuDGdSYH03WegmiFsJqO8/H+CZzOnp/KhC2c/UXfTu0 ry2d7IW9K2LoVIBjhJh/lG0OC1YBvLljBav93Uwgfu+w1Z85R/PYnQ2dUVuA/apgj3Fy 7TSg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=FT3jVPIk; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8dc7287si1227910085a.13.2025.06.17.09.34.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:34:48 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=FT3jVPIk; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZGc-0000sZ-Gz; Tue, 17 Jun 2025 12:34:34 -0400 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 1uRZG5-0000lO-LS for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:08 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG1-0000dP-Cl for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:00 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4533bf4d817so20403475e9.2 for ; Tue, 17 Jun 2025 09:33:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178036; x=1750782836; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=I4mTaJwkAe0rgPcWQ6kEwY/uI1enES5AbvkajjNAiL4=; b=FT3jVPIkt5uUfNwK/IZvjugQHOE5Fn6jzm8TZt0UNPS8R1z2MbtgBKoosXGoWIDSBs eeW6yfR+uVYPLIJK6GWDuKfsODCWwZ08q5tDCwOExP1bKccHjFRI6/uLS0cLPLf28EvS S7xSp8efVGYldEJR5/6RzD2j2x+z8u1MymYOd4MPTTwtn6eWWMMQ/G+8nyYQ8SSv31Is 9GVjv70tLTlM0XGn5ou6aTFohK2FxcRpDlIzBq7/6b4cOfLoiSFxVBiniGj6UWAXzgZL LnKNQ4dSlT0J0h1jxdnon4t2buxeZAxlRiC2xrrg5MXQdmUMQZPXQJdf6jMPCKv3aaOL H4/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178036; x=1750782836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=I4mTaJwkAe0rgPcWQ6kEwY/uI1enES5AbvkajjNAiL4=; b=V+byQ2n72766k1SskNN6pg06WLalCDa9bOpbwtopW73ZQoI0G0MnJIYCyGxXg6+/do LNoI7tCOm4vf9NOkuO4eNdSG53w1nSv6Iq+LHC/FotgXQ5i+G6aJpj5UnTYnq/cURz+W SfP03kvuzHeKzkfbZpa7mIYnlVLi2+EgDFm1wES2TW+hWwl1eKHgjtY9x2cOdd3e9sTj diRtOxWckFlr6hbhgR2jIANIK5Pa4dpFmc0Y2ChPnilcNaFe7bQXTBGOwx+h+7gKkQ8N zLo0L+NoW4/mqydUB8YgFfCwRwPdWgc1RXqb9cwgIkF9sx4eZfY4E/KZcHNqdZkzGBiX 4CSA== X-Gm-Message-State: AOJu0YzdsLiOB/FaJXo+oKl/N/cNA3LC4VKEJGkxFXxB4ogh3ZfshQNc Xfj/hyEPxnTExAGHXWWPYDOSd8CHkxPzsuE3+Y6rp+nZFrVAeNVNc2Ertthbf86xtq4= X-Gm-Gg: ASbGncvRMvHems7MB1X6VBKL/5UknHCKJHzlHKPwCQCL/+w/FJcdXDOwCqNPmrPrWoP TiCX7kBkPa28bSEyDTmY5wwm4MHVQwNG00+52xGQPHtg4VzOJS/Z7Ds4UqjstAHDibGFW7wDH+j LnrJnlsdUckosvFGXZpxKFEEyxzV9Jj/Mpx4RHc6CFiP6fdc9WFynBfqIivBZGwBTR6RaIbygGo MQAVeHJkTv9hDhfxZKBveabfp8a1QedsHSwTMuYbaCW2hrJKK0lOPg5rSFIVnP9HQf6nfcX1/7e fdlaBbpfI9347z3EEsxJRlr+BFfl4DwAnnOp6gCRF5cWQp8UgJx44xg7kLNVEKw= X-Received: by 2002:a05:600c:1e02:b0:43d:fa59:af97 with SMTP id 5b1f17b1804b1-4533cac919bmr120131075e9.32.1750178035689; Tue, 17 Jun 2025 09:33:55 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4532e232219sm178762495e9.9.2025.06.17.09.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:54 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 5B8825F8B5; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 05/11] target/arm: enable KVM_VM_TYPE_ARM_TRAP_ALL when asked Date: Tue, 17 Jun 2025 17:33:45 +0100 Message-ID: <20250617163351.2640572-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Signed-off-by: Alex Bennée --- target/arm/kvm_arm.h | 9 +++++++++ hw/arm/virt.c | 7 +++++-- target/arm/kvm.c | 7 +++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 7dc83caed5..a4f68e14cb 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -191,6 +191,15 @@ bool kvm_arm_sve_supported(void); */ bool kvm_arm_mte_supported(void); +/** + * kvm_arm_get_type: return the base KVM type flags + * @ms: Machine state handle + * + * Returns the base type flags, usually zero. These will be combined + * with the IPA flags from bellow. + */ +int kvm_arm_get_type(MachineState *ms); + /** * kvm_arm_get_max_vm_ipa_size: * @ms: Machine state handle diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 9a6cd085a3..55433f8fce 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -3037,11 +3037,14 @@ static HotplugHandler *virt_machine_get_hotplug_handler(MachineState *machine, /* * for arm64 kvm_type [7-0] encodes the requested number of bits - * in the IPA address space + * in the IPA address space. + * + * For trap-me-harder we apply KVM_VM_TYPE_ARM_TRAP_ALL */ static int virt_kvm_type(MachineState *ms, const char *type_str) { VirtMachineState *vms = VIRT_MACHINE(ms); + int kvm_type = kvm_arm_get_type(ms); int max_vm_pa_size, requested_pa_size; bool fixed_ipa; @@ -3071,7 +3074,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) * the implicit legacy 40b IPA setting, in which case the kvm_type * must be 0. */ - return fixed_ipa ? 0 : requested_pa_size; + return fixed_ipa ? kvm_type : deposit32(kvm_type, 0, 8, requested_pa_size); } static int virt_hvf_get_physical_address_range(MachineState *ms) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 8b1719bfc1..ed0f6024d6 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -515,6 +515,13 @@ int kvm_arm_get_max_vm_ipa_size(MachineState *ms, bool *fixed_ipa) return ret > 0 ? ret : 40; } +int kvm_arm_get_type(MachineState *ms) +{ + KVMState *s = KVM_STATE(ms->accelerator); + + return s->trap_harder ? KVM_VM_TYPE_ARM_TRAP_ALL : 0; +} + int kvm_arch_get_default_type(MachineState *ms) { bool fixed_ipa; From patchwork Tue Jun 17 16:33:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897385 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246599wrc; Tue, 17 Jun 2025 09:37:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV1d9CgjSUhlPjiFWSODPMz7x0Ca3t7nPeY62aHP8zu1VFYr/BMxKmPHj/dQKBYH0xODbhlXw==@linaro.org X-Google-Smtp-Source: AGHT+IE0k8VAnNieHS0IM8Kl3tlZL2tL9GcuDTxHJWJ+ppYP+XnEMJlsRcbqajqe16waX1qKxPy9 X-Received: by 2002:a05:620a:3725:b0:7d0:a1c9:65a7 with SMTP id af79cd13be357-7d3c6c0d336mr2223525785a.6.1750178231574; Tue, 17 Jun 2025 09:37:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178231; cv=none; d=google.com; s=arc-20240605; b=RdMwuvxVwsach0lQPQvsTyeT3xpyS6b5fA2aWuchIrLq5PNUi6q62iLDVyMYoAUHzN B/zNs56ujbJfX2welSoXD6xETf+RW4folbw4HUC1vEUdr5mza5Vef1pPLOLUYU9/VthI r0CBqjvdId6pgccL9ung+4bwezauiNAm9FjqZciMceuajCQLfRU3G62CUBFGLdK/XK7V JpGhOHteeUBR7CrBFHPOdk4tnTPu388J52VGcn5TgGBC8YP1OjDV8HDyLK86977L7h2n As4MbnP2zXGRVfUa7s1s1aPX/9u8YeuisaeAcNSpG7EcHzL+nzqKi3FmkbeExbO4+u+E 2nRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=rbBMXE6agkH4y/ezmub6pqd0ynNZ26J7iJ0lGND0r7M=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=FYqUZwZP5/rivmD8SLiRRicRxL4ko0+/sgx8wSsOOnIp9SToZorygO1+sll8vK3AWD BvhCH6tzIkNBQH5Mp9GpAbYa2xKn9FPvWv+qb1KYBWEQcd2joTbQkZ0VO44HWGAwT8hw pjtEjLun27sALzngt9V8kSyZj5aaopkEngSQWlMMNtVyNCRLYf4DzkWZWkp18XS04oeQ 2825jcGyHjBhSnxbBzUDC14SbyO1S9NN4m8j2+EsO0FgLN62WrMuY+Ox21OH5za3aFkq eoS5HM9RgHmt9Cc4nm2O2MlCGxMWS5sNAht6GBOUodplyiT48RMaF+Zp0N7RI4gE0kwv f8ow==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UEiSHrVy; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8dc6c5csi1196055185a.121.2025.06.17.09.37.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:11 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UEiSHrVy; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZIN-0002O8-D7; Tue, 17 Jun 2025 12:36:27 -0400 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 1uRZGC-0000mJ-Re for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:10 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG2-0000dd-0G for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:02 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3a35c894313so6707317f8f.2 for ; Tue, 17 Jun 2025 09:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178036; x=1750782836; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rbBMXE6agkH4y/ezmub6pqd0ynNZ26J7iJ0lGND0r7M=; b=UEiSHrVyH7ktfqk3LQ7oQjSUP5c0umM+t2HKVzd0hRRdgEkkRRYnGnkUHNzyJpvDY2 e1vNCUeOjDAhrU63aYFuwjuOKaK7Nz4LJrmxQBO5vFbLHZcVzzjPHiSb3glgbOmEx9mp TrYI/nrOFQaQOxXKR5YC5Soycn+QYHwE/lCw/ozqx7TuqYf6hPAfRgsQPk12u4/sA88O Jql8uxaXBBozxmZdvsIJZa2UWIfBlC/11z8obfVw/ShdVeKW3EUIUC+Qej1acwwG1v14 0PMoiFlfXRYLjszJokzTiq2o5MSMFvEPVQnBLHh/G3jfgP6DznwIHJIBOKLinuf2DU2y dPWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178036; x=1750782836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rbBMXE6agkH4y/ezmub6pqd0ynNZ26J7iJ0lGND0r7M=; b=xDeoy+TRjOYLp3sU9tn2G4aMJUBSCLpLiJwEOX0Gl0CYjADGqtb84nI/ER9GksLJhA awvW1HoEtmON7RD5xKPLKiYTrwS7iNUtCht9sjKb6AvDzaoqSp2pcYScrjZayStBJJcC PuRuHXWx4SWQDI0fysZLQyaxVlNBo9kU9cN5ZclSI2oX9gEAFbAjlfPX2GWlUd8bQr7w b8+0FLMFgv/pJWUwnpna/CifpYMO1i5KjEmVIMfi9kXoLuybrP1kSHUOyhDdjRSKU0lz gBkn56DRTJUDo+/a1dGfGD8k8pemCiewP8/uDz4t/V3vHbj90/MgtWYPHrkTVBjmf22g nzFw== X-Gm-Message-State: AOJu0YxDiU9URDoqYh+9NANTA+u08fwPmnvhNA/SgqP5v1LWm769YAe4 LaMrIAXZITVPVnb8storq6dmvaBvmxVJgT+U1Xddib7fNZFBjlgBoSckrQD35Q4i+ak= X-Gm-Gg: ASbGncv2wccL1TUw3FlNdq9zlhFVWRVUWuU+6PYDOgYdl5LAHQ7wpTu+MvpH9k/lT1c lLk60iNG5kNiJOnn/vZ42Pt/Ci2TdzXmKJddvGPrjfw1PHLmiUTJIyJAUlRWpLd30i1eYSQ8Eam +E+iwCxYUOi5Q1l07MTj5h5cxZkNE1UHakUi8+UbMGgwcsr021Fh5wSPhH3VnIqFTsWVwBHnyVu Vu6JaZQQBD6sTILHWmYKIRqHNOBG+jhRxbd5trYKhL0sshn1ZTaWpZDHP5AUEPqjPEQCV5n9ril oDNl1K8XtcUT+Uri071gdnfhSLZgUQBjZ2C6XSNI+8DnjxX7c4Z6h3Jl05CI3DU= X-Received: by 2002:a05:6000:2507:b0:3a4:efc0:c90b with SMTP id ffacd0b85a97d-3a5723974e2mr12693214f8f.15.1750178036481; Tue, 17 Jun 2025 09:33:56 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a54d1fsm14265133f8f.2.2025.06.17.09.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:54 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 77B535F90B; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 06/11] kvm/arm: allow out-of kernel GICv3 to work with KVM Date: Tue, 17 Jun 2025 17:33:46 +0100 Message-ID: <20250617163351.2640572-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Previously we suppressed this option as KVM would get confused if it started trapping GIC system registers without a GIC configured. However if we know we are trapping harder we can allow it much like we do for HVF. Signed-off-by: Alex Bennée --- target/arm/kvm_arm.h | 8 ++++++++ hw/arm/virt.c | 11 +++++++++-- hw/intc/arm_gicv3_common.c | 4 ---- target/arm/cpu.c | 2 +- target/arm/kvm.c | 6 ++++++ hw/intc/Kconfig | 2 +- 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index a4f68e14cb..008a72ccd4 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -200,6 +200,14 @@ bool kvm_arm_mte_supported(void); */ int kvm_arm_get_type(MachineState *ms); +/** + * kvm_arm_is_trapping_harder: return true if trapping harder + * @ms: Machine state handle + * + * return true if trapping harder + */ +bool kvm_arm_is_trapping_harder(MachineState *ms); + /** * kvm_arm_get_max_vm_ipa_size: * @ms: Machine state handle diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 55433f8fce..e117433cc7 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1998,9 +1998,16 @@ static void finalize_gic_version(VirtMachineState *vms) gics_supported |= VIRT_GIC_VERSION_3_MASK; } } else if (kvm_enabled() && !kvm_irqchip_in_kernel()) { - /* KVM w/o kernel irqchip can only deal with GICv2 */ + MachineState *ms = MACHINE(vms); gics_supported |= VIRT_GIC_VERSION_2_MASK; - accel_name = "KVM with kernel-irqchip=off"; + if (kvm_arm_is_trapping_harder(ms) && + module_object_class_by_name("arm-gicv3")) { + gics_supported |= VIRT_GIC_VERSION_3_MASK; + accel_name = "TMH KVM with kernel-irqchip=off"; + } else { + /* KVM w/o kernel irqchip can only deal with GICv2 */ + accel_name = "KVM with kernel-irqchip=off"; + } } else if (tcg_enabled() || hvf_enabled() || qtest_enabled()) { gics_supported |= VIRT_GIC_VERSION_2_MASK; if (module_object_class_by_name("arm-gicv3")) { diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index 1cee68193c..9a46afaa0d 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -662,10 +662,6 @@ const char *gicv3_class_name(void) if (kvm_irqchip_in_kernel()) { return "kvm-arm-gicv3"; } else { - if (kvm_enabled()) { - error_report("Userspace GICv3 is not supported with KVM"); - exit(1); - } return "arm-gicv3"; } } diff --git a/target/arm/cpu.c b/target/arm/cpu.c index e025e241ed..f7618a3038 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1463,7 +1463,7 @@ static void arm_cpu_initfn(Object *obj) # endif #else /* Our inbound IRQ and FIQ lines */ - if (kvm_enabled()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { /* * VIRQ, VFIQ, NMI, VINMI are unused with KVM but we add * them to maintain the same interface as non-KVM CPUs. diff --git a/target/arm/kvm.c b/target/arm/kvm.c index ed0f6024d6..c5374d12cf 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -522,6 +522,12 @@ int kvm_arm_get_type(MachineState *ms) return s->trap_harder ? KVM_VM_TYPE_ARM_TRAP_ALL : 0; } +bool kvm_arm_is_trapping_harder(MachineState *ms) +{ + KVMState *s = KVM_STATE(ms->accelerator); + return s->trap_harder; +} + int kvm_arch_get_default_type(MachineState *ms) { bool fixed_ipa; diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig index 7547528f2c..0eb37364a7 100644 --- a/hw/intc/Kconfig +++ b/hw/intc/Kconfig @@ -23,7 +23,7 @@ config APIC config ARM_GIC bool - select ARM_GICV3 if TCG + select ARM_GICV3 # can be used by TCG, HVF or KVM select ARM_GIC_KVM if KVM select MSI_NONBROKEN From patchwork Tue Jun 17 16:33:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897389 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246680wrc; Tue, 17 Jun 2025 09:37:23 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWDIFaBWBhVHIjf2z4Q/UJsxbgFACPYYLV+jmZiuI4uSY6N3s7dP9GWWQYCWRO5Q6YHPBkdiQ==@linaro.org X-Google-Smtp-Source: AGHT+IFrLbWrpcyYdDDpsNMy+COOqyiLLZwm/phUCNVQtSwVpRx9EbiXM/QHBUXDarsz5bN41+fm X-Received: by 2002:a05:622a:199f:b0:476:aa7a:2f78 with SMTP id d75a77b69052e-4a73c65b72amr227124561cf.49.1750178243029; Tue, 17 Jun 2025 09:37:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178243; cv=none; d=google.com; s=arc-20240605; b=cvF4rxWfdAw+heqmjlCA7oDlMsW9pspGR5UqTWiYoRTefnunJ8NXI8cphQu7DqXAk2 fT01UjpbrsHXd3PfVu2BDEQE6YezeXIuXnXlYVYySeS159VhLoLIyzneUR4G8q1QIPYy 8Mb4iq1m93UpL6f06ApaqgCfpCdJb1xm1F4fDypl3ByKcvo8DLcK7xaOKbkFBQGIn83u DGGnTway+BzW3oUtbwRMWDzkhc3XXBfa6RRhcri7NuSs/cytEfF8/9xlcHvnutPVx2h+ XZFJXLqvsKy4+vYcOdcHWsYcgF+yeHeMFauCmzkLkIG2qS96bdwABX5Gp4chlp0+CGbR VLLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=e1HQznq99qoCK8P8PgCsYfpPefLsvFqz98NOZI1uUSU=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=NOYByWCo1/dZFWgaUuvbiPjL1Zja4GgVlCiW1EpVcj0VdMHCsmrswZhP32Sg/kg8Bs xJiiP8pjVJVP8Su3xhsjGT2gPCCowGSTzjqDFk0+3FEK2B6y63lHYOzkEdxe/rjBVpQS IST3k86NAjdQdC9EwJoOZg7PN51d6dgAzRTpfjnm3LjDmJ7FmBPMb+0kGd5zPgAhLHjl grsrDEhDIl953Kodxl0y4h0ZQIm+oVM6i348ITFjmH6G6ziCEKTjiyACaWFM+QzhGe3e Bps3oBYH7zh2dRafXqIx1XzZZJbxgHaUE6rr8+PWiY5SMwdBu5dj2KLZnDectNPJXX03 3qZA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="ox/IQgKB"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a72a4ff983si123233471cf.493.2025.06.17.09.37.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:23 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="ox/IQgKB"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZJ1-0002u7-IQ; Tue, 17 Jun 2025 12:37:07 -0400 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 1uRZGC-0000mH-R8 for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:10 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG3-0000eM-Gm for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:02 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-450d668c2a1so47398815e9.0 for ; Tue, 17 Jun 2025 09:33:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178037; x=1750782837; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=e1HQznq99qoCK8P8PgCsYfpPefLsvFqz98NOZI1uUSU=; b=ox/IQgKB3OQg4OVOn6+163FpfmnWREMGSc0Ls0RiPermpmp154i4M7fAfaA8FCBwsR aQAJ7KB9ByXuSHcrX5XPg1pA1IGr9qHeXyBPUHG65xHlBDV3ntdJaPJB62qxaaOjohP6 1O3YyLwsi5C5ZtYlgoZwKp5+2CvM4k9R6+uoqYkYCybVr8HBmvONvgYswEWmqbh5pCu8 tsdQd3RsWHWoCC5h3kckV5cLJ83hkoxrsB9KEE3P2KOwBrWklLt92gKUrWP8x3pCraIy 3sdqOMhEFvlNrrpCol4nRey2LG6Ul7BOyfhnvAgD/7opzwsheSKC3qserT9OLRzEEzPN +aYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178038; x=1750782838; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=e1HQznq99qoCK8P8PgCsYfpPefLsvFqz98NOZI1uUSU=; b=BLWRdLADgpK8P5syaIfHC6nzhF8pFjN12NXdKn45X4ZBC0eBHQIvuUuvfvaAzP9yVJ 6xWkdv9LJcAOYuGsWg9WmEzYi+5o5nY9PEHpUxQWiYI06ubMEZaREFQdRIKQtIo29jOb xMWwBy1Ix4EaVwI9Y5VF6h2hyxUg2FnpFIi4mBaRDELUXxnhJjBLfcXk80SkMPYGpumK 15SWC7EuQNMe7QN9F7JUDdwO6KccMmfhny1A9VKChDXflE3KQr3g92b4A4Twg6hJpunl lIgmf7s6noHWeRPnMh+C/DOH/VtAJbS/mR4osjqI+WZQiURsSToUM1tTARhkMUpkIy1d XfXg== X-Gm-Message-State: AOJu0YxVxhlkOeZwMYf44aTwbZ5w6G5zSgfO3o/HmPGqa4XB4TKBubEU MxaP3YfTiffM+p9As0J2kaXdkXFmhQpAZSH9Js+0KAn1QUzfPyTE3bhgkhvGlAp07wQ= X-Gm-Gg: ASbGncvxqO6aN/QZb78tl/uEXP15fml2r90RA8mVMLlqdkbCnZ8vz8X4tttRb4t7z9B 0tO5xHhpi8EcKglheRJBKL/BEjLWBuJvo99fuo+g+P9+iT501JDbVrgE044CCZADNDo81ixWIhq JyuefXWf6FYcBMGPC1OqDqMQi23XyOQE9QJFz2YseYdDBCPmERpbPtxSODZzCVnFTlIWYwkTT49 5bnziz7WLaiyrSgQa9RgGn5bJa9QhzIZFFwsHvEPJOFtwS9UMJlp6IdaCnZXZxRpb6tDY9C1vqG UxxMynGAZ4EcA/ueM8xhBjGPlMTVc2NAgmGKh/LBo7Ag55W4rUaKY07GYoCzse8= X-Received: by 2002:a05:6000:64b:b0:3a5:8977:e0fd with SMTP id ffacd0b85a97d-3a58977e508mr2505193f8f.0.1750178037635; Tue, 17 Jun 2025 09:33:57 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a53f79sm14266546f8f.4.2025.06.17.09.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:55 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 91A355F90D; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 07/11] target/arm: clamp value on icc_bpr_write to account for RES0 fields Date: Tue, 17 Jun 2025 17:33:47 +0100 Message-ID: <20250617163351.2640572-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org If the user writes a large value to the register but with the bottom bits unset we could end up with something illegal. By clamping ahead of the check we at least assure we won't assert(bpr > 0) later in the GIC interface code. Signed-off-by: Alex Bennée --- hw/intc/arm_gicv3_cpuif.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c index 4b4cf09157..165f7e9c2f 100644 --- a/hw/intc/arm_gicv3_cpuif.c +++ b/hw/intc/arm_gicv3_cpuif.c @@ -1797,6 +1797,9 @@ static void icc_bpr_write(CPUARMState *env, const ARMCPRegInfo *ri, trace_gicv3_icc_bpr_write(ri->crm == 8 ? 0 : 1, gicv3_redist_affid(cs), value); + /* clamp the value to 2:0, the rest os RES0 */ + value = deposit64(0, 0, 3, value); + if (grp == GICV3_G1 && gicv3_use_ns_bank(env)) { grp = GICV3_G1NS; } @@ -1820,7 +1823,7 @@ static void icc_bpr_write(CPUARMState *env, const ARMCPRegInfo *ri, value = minval; } - cs->icc_bpr[grp] = value & 7; + cs->icc_bpr[grp] = value; gicv3_cpuif_update(cs); } From patchwork Tue Jun 17 16:33:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897384 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246588wrc; Tue, 17 Jun 2025 09:37:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU7FCT+UrDTL/Gk0pVY70XcuLLLhYUbP1GGKiYX69xBovEt9Gy4HKE7zUF10pt8sniUeFa5TQ==@linaro.org X-Google-Smtp-Source: AGHT+IHkBSmLesoK2u5X6vR5nb/jtoK49SQWEqR6/08JOlecvTNTD2VORjJFHd+tu7AELD6xRCRI X-Received: by 2002:a05:6214:468a:b0:6e8:ddf6:d136 with SMTP id 6a1803df08f44-6fb4779a603mr231986226d6.45.1750178230835; Tue, 17 Jun 2025 09:37:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178230; cv=none; d=google.com; s=arc-20240605; b=GK7xNDRjofDliOVhAwMzrI+7Dm2TRKZNh5x7nwbJMrQW2i3n+QN6BuQsIYwo4P3h40 /Oy2Xu2q2uZBf9kxsMfpWHqnpcrUywPdwa9a6p2WJaHe9NZhllJ47yO/w2LzGfxshI0o xCt1VWFcz/wmWJOOdLI/+dC2decyaGpuzN5OIA25sA6/nj7xjbUOA6xcdWToWKYP0btP KqNeepzd/ve5QfecEP+XJL5mw5F9mQxnn/xIhGZ36nowSVbuW5EF7A8iCw1hqkypJ77T yhMluRhBphJI9RBwXQvBbqwi5ABdHhHXI7MG09HWkQ4lcvz10dUPzAbhwCQ24rK/ghEU Uqtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=08AiNc4t9QnXpXVjsIzl22ewoa/Tdv5ZaJHW+qjaXxo=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=eOYfr3PR3CGJPj+qZWNWj35qCjthOm0GeBZ/Vi+JNh/zk+Nq+R1x9LiAIvguYGE/Nx uZuOBjlP9SyNebvWbGgnAasGWPoW0Hib0tY6WGWr8Enrwu6BhD9d3hZwEyYrWOURUjNr PpPPJWTyLnRdTQeM+jdvbtKtfk9d2aj29/wUN7vhvoBt7E9GLQzGcYTlfl8d5i1MtH4m s8WK6KHda806T0plLdJff6MGRdVxKBu+G8LSsdst8myKueAQeI9EksE4c39PvPPHu+/O Rc6ElaYbgqu8EoORPZT5qpvwqYi4LAFkYziE4QXgnWhrOda5pRb2B+B+9xt+tqC4EZO6 aQBw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dZ2Xvev7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6fb35c1aec6si141566416d6.390.2025.06.17.09.37.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:10 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dZ2Xvev7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZHa-0001tP-Ae; Tue, 17 Jun 2025 12:35:34 -0400 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 1uRZGC-0000mF-QN for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:10 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG3-0000e4-2K for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:01 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3a536ecbf6fso4061571f8f.2 for ; Tue, 17 Jun 2025 09:33:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178037; x=1750782837; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=08AiNc4t9QnXpXVjsIzl22ewoa/Tdv5ZaJHW+qjaXxo=; b=dZ2Xvev7DErfPQpq1ef2zHiuMhYP3G4/18/9sV5vMq5nfEP29ytS2gtR4xmZGijIfK WZJZDFWGxEVwjDGsEMVEWegCa4h2MzWnCgzHCjU5WAckF/PpcqArWG4RtKuv+Iu83SWN xaOQs6ePl4xcmua/c2iWPi5gUOClCJjaqENd+KCROXuX/MWJzy56OjMnNsODNp09xyFo 6Kf2jlry3SgqM1Fh3s+Cg77KSbBAnjnxX0Xhm9euQ13uhMWJJfSwv/irULrSZc+vwMAB Hl/eD6p//HK8JP9Ky/PEvKScHeP6n4LSydOh+n4nh22N8kE0CinRDPiWxEDbyLYN0wyW XNzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178037; x=1750782837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=08AiNc4t9QnXpXVjsIzl22ewoa/Tdv5ZaJHW+qjaXxo=; b=inmYPsuuj8bjqnRHeODPeKHD9WOGI1V9ReQY/CdiXRTLQGCobuIIIs1jRcMdMazn1V aLNkN+qB7WJqXl6cjK2QqhCDQiHOKWIiSFqZTpdYn77SGjwS/qHZTESvzF1zNpDw2cl3 SLC4CnVMSbUjcpwdvDjoVV3ZVdCQVrtxTVdzvmte2UFsHyPll8jM04oQKEfrwlL7mfwQ WvVbo5gewaZbNFOj21I9DjafEIcTQYu0ho7aBBEcZvN1avYmHZ2ARoawELyfH0uDCJv3 +9gT0ZjPIoP6TVaVpTlQiDWxRsZ3dyYJ/Sx73nulqD0on1J5woy27PRrt1iwRlxSWHwi eQVg== X-Gm-Message-State: AOJu0YwZykp3b4jpdFjt+YEYRlWIFiqBR1W52ecTiRc7xbKDrI8dvF/e 10646YOFCZn5HIHGA/YyDA1Cmt2NIkRn6QoDFA9VoPpHN96zCuVUS2SCPZMIGjBYeXY= X-Gm-Gg: ASbGncvoULdG8lxBXdWN9oYv9VQPqhF+0iuVGZF8hPpO112R8F4mHujyselhm5fChCR YB8J5ChK3xs7n4HJ0f9qDR6g3Yl1wZQ4L2OaUJDQxCOdNAubn42tjUoNlD1XPako34TcGv6wtZz 2/IN2YBjWPnQMHX0EFPf1yEs5qbt62g4dNzcb9su4rjLmMXCh/c8lt0QyPiT6DEh/luNv9JZTtF Kwd1bnDEpx0KMJvCvohId27VKRikqXKPNysoCDdbn1UxtVx2D+Bvma0GHCDcGH1DkZZkw6A88On gzIxCI6IGEpsTBgAArcTqzignXgycZVO1LVBaSigzPV/XXGUs61DtIAqHRWhe3Y= X-Received: by 2002:a05:6000:708:b0:3a5:5278:e635 with SMTP id ffacd0b85a97d-3a572367577mr10901001f8f.3.1750178037072; Tue, 17 Jun 2025 09:33:57 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a68b0esm14233217f8f.29.2025.06.17.09.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:55 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id A920F5F914; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 08/11] kvm/arm: plumb in a basic trap harder handler Date: Tue, 17 Jun 2025 17:33:48 +0100 Message-ID: <20250617163351.2640572-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x430.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Currently we do nothing but report we don't handle anything and let KVM come to a halt. Signed-off-by: Alex Bennée --- target/arm/syndrome.h | 4 ++++ target/arm/kvm-stub.c | 5 +++++ target/arm/kvm.c | 44 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index 3244e0740d..29b95bdd36 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -88,6 +88,10 @@ typedef enum { #define ARM_EL_ISV_SHIFT 24 #define ARM_EL_IL (1 << ARM_EL_IL_SHIFT) #define ARM_EL_ISV (1 << ARM_EL_ISV_SHIFT) +#define ARM_EL_ISS_SHIFT 0 +#define ARM_EL_ISS_LENGTH 25 +#define ARM_EL_ISS2_SHIFT 32 +#define ARM_EL_ISS2_LENGTH 24 /* In the Data Abort syndrome */ #define ARM_EL_VNCR (1 << 13) diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index 34e57fab01..765efb1848 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -60,6 +60,11 @@ void kvm_arm_add_vcpu_properties(ARMCPU *cpu) g_assert_not_reached(); } +int kvm_arm_get_type(MachineState *ms) +{ + g_assert_not_reached(); +} + int kvm_arm_get_max_vm_ipa_size(MachineState *ms, bool *fixed_ipa) { g_assert_not_reached(); diff --git a/target/arm/kvm.c b/target/arm/kvm.c index c5374d12cf..f2255cfdc8 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1414,6 +1414,43 @@ static bool kvm_arm_handle_debug(ARMCPU *cpu, return false; } +/** + * kvm_arm_handle_hard_trap: + * @cpu: ARMCPU + * @esr: full exception state register + * @elr: exception link return address + * @far: fault address (if used) + * + * Returns: 0 if the exception has been handled, < 0 otherwise + */ +static int kvm_arm_handle_hard_trap(ARMCPU *cpu, + uint64_t esr, + uint64_t elr, + uint64_t far) +{ + CPUState *cs = CPU(cpu); + int esr_ec = extract64(esr, ARM_EL_EC_SHIFT, ARM_EL_EC_LENGTH); + int esr_iss = extract64(esr, ARM_EL_ISS_SHIFT, ARM_EL_ISS_LENGTH); + int esr_iss2 = extract64(esr, ARM_EL_ISS2_SHIFT, ARM_EL_ISS2_LENGTH); + int esr_il = extract64(esr, ARM_EL_IL_SHIFT, 1); + + /* + * Ensure register state is synchronised + * + * This sets vcpu->vcpu_dirty which should ensure the registers + * are synced back to KVM before we restart. + */ + kvm_cpu_synchronize_state(cs); + + switch (esr_ec) { + default: + qemu_log_mask(LOG_UNIMP, "%s: unhandled EC: %x/%x/%x/%d\n", + __func__, esr_ec, esr_iss, esr_iss2, esr_il); + return -1; + } +} + + int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) { ARMCPU *cpu = ARM_CPU(cs); @@ -1430,9 +1467,16 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) ret = kvm_arm_handle_dabt_nisv(cpu, run->arm_nisv.esr_iss, run->arm_nisv.fault_ipa); break; + case KVM_EXIT_ARM_TRAP_HARDER: + ret = kvm_arm_handle_hard_trap(cpu, + run->arm_trap_harder.esr, + run->arm_trap_harder.elr, + run->arm_trap_harder.far); + break; default: qemu_log_mask(LOG_UNIMP, "%s: un-handled exit reason %d\n", __func__, run->exit_reason); + ret = -1; break; } return ret; From patchwork Tue Jun 17 16:33:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897388 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246659wrc; Tue, 17 Jun 2025 09:37:21 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXNIhqcNgkMhRN4IaHjp91s9J9YuZMwkdcJe74Ew19L7D9CzLXFFCiTcg+xWkrO+jU7waEDeA==@linaro.org X-Google-Smtp-Source: AGHT+IGtGE480zz3IJws5KtT/VJfQqcrqDBJMwUoBGiT7cP1niZYFV39Q/Ruphp9480ubGyCDEPE X-Received: by 2002:a05:620a:4408:b0:7ca:cd16:8fcb with SMTP id af79cd13be357-7d3c6cd9f9dmr2485362085a.37.1750178240638; Tue, 17 Jun 2025 09:37:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178240; cv=none; d=google.com; s=arc-20240605; b=KmFwqyrysoJHSBpQX4hwvleldJjNErQUCXj3d+V0AbBW8t7gCfeDD9Y2WCiy9BqNjG mkRA+hbpw4a+9LuE8lZGF6RzJrvnmd3b+0Jt0kFeHObr5e1WsqJXFqTwJKvAyboE4Rc/ UrxchYjZ2EZRdB5dnpzfhihfY8ysd+n33hjqiwIgVBpJv/eJMOvqyXjuMmRAYWZQ8fD8 7QP+2fbxgVCBvWDsv0hQPFDndrs0jcAe2ERdz7ffMZtcF7MBkKjduUBvOptN4Jreu6i6 uasaMTwRSx15ku6IqL8+Ld38WWKulVyrq0WLxqzoQoutNTa51FF20LaCnRKjEFqzuddJ IAow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=n0sO4FG8MJlTgihEHf66llt9xMF7CLK1g/3AupI01Bo=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=Z5ubEM/w6vb6WPDefy528sIGYjpixjBmucePl1PE7aSZ1tirvriBjW/Rxfsis/SwYF GaEH843ykJG0UbxW3Nt6jjHxxSlk4SAj80ymxFOeD7EzteM63dMPZPpKjs8UgDI/oHrc NnhOjCYZc2/mmlPotp2mVfhCH/prbR5UOtp1WYFtsvOctB8LzTKMCh4nybRBrK18Pn84 pQWB/fIrhW5Fm+1MfSPUpkscxpZJd7oBq1arOO6FyPaMzl4XF/ZezM86vULZGugWTZI1 VY1zkEmsgSuwkaVmVdlwDiGmrCDqKC2UkEXuBTENx0Qd4m0YNnjuNtRqLlvR2/xQB3e7 ad+w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=s0vs5UOO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8f44601si1247552085a.595.2025.06.17.09.37.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:20 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=s0vs5UOO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZJF-000436-Ro; Tue, 17 Jun 2025 12:37:18 -0400 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 1uRZGE-0000mP-2o for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:10 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG5-0000fC-Dn for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:09 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-450ce3a2dd5so56423695e9.3 for ; Tue, 17 Jun 2025 09:33:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178039; x=1750782839; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=n0sO4FG8MJlTgihEHf66llt9xMF7CLK1g/3AupI01Bo=; b=s0vs5UOOotw2kRN4LmSwxK4N+WEi3Jp4sxZ2s7OVvdofGc+o9IISIENtUymGifxr6w U3BYvuBdUNGwLB+owhz94rjrUF2oX5g7dE/Qntjsq74is/LTb/65wVovOxiF8AoC7xw3 k+jLizw0u9l2AIuQe9qeb65eoD/qci7bZJNX9ndA2NTabMRGDzKF0MikuPnTMXaJZEfV E2qizVp4DLO8PMop44u9Z46/U38WyTdmebxy9TXohHjuAO3uYXMWnQC0Q140spGPPvQF scnnqBBd+LVqCA9kPqwsqPVeS74ka5Jj0Hn4c4RkE1qQ8jGSsHD7aCrFaN3SnKjMvB5a GpdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178039; x=1750782839; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n0sO4FG8MJlTgihEHf66llt9xMF7CLK1g/3AupI01Bo=; b=XptscxX2VT8UDZbNEpXzbSiwwjtkHK30trjo7LJpm1Z8zC9+5OgU7TdUD/sj1PWnFt bkDQxpXV7ul/t6Y+NSku9s/6xzVTQyqz6fcyAgWn/NJFFQUupkhT4Eq3Hs3sv5ufN6D4 W5NHALFFW945dNDk4+tfm49uJRFMR4ufnIt8GPld9L95vH1QU+0nHCsnoRfuDTf89uBR krXqHba8+ewJkvwldbeoFpxFexZ1W2Lpz0V60mCmCt5+y/SG1zul3KKJe/QLOe6K6afN 096ZWFLCU5RIi0V99/ZcGrYBVexG26ryaozW7aNLbDHbFV/535+8LHTaVslgsism4KC/ psRg== X-Gm-Message-State: AOJu0Yz2egPN5mTcA1Bv79rSHkz1qoz7Mw6yTjdixH74XKfC4YWeeUXi qFmwKusqTL9/jzvT+AGlVf9v0Gy5zJFMmicQgH7hlrpUmyB4/6xT22vKQoYCJRISnrEbaaW8Q+0 lJue5QYk= X-Gm-Gg: ASbGncuD+CS4aNDBzIOwfi7THTU7AJUdbbf+Dpmxf3gk5IexiCXqXtJKaTP3DJ3SNLh oYq1zDEFT9NGrmhWIqUDF8DlgBsdb10lagKLCyjNMwhSHbhTVmRaCzRTqadG25Wfiq+0ZZPfBDz vF/7VmLdP6OyW9C1ZvjF/UJyr/zW+YbNcGGSr6JMpqZWKcgJgJhDEiMMQ8kKl5FYHncaY3e2L4V AAze0fJNgaIN6ZJQHT5l0PCaA/gV8T4JwyT463bFZFi6gHgPcYoIITXeFo/cGVFkqusZqbIiUlQ MdtqKxsPvXRKoDhgam2QN1JlzQIi6ad/iF6761SePUKEhtg3eBOloYD2DbfGYBBmX2wZ04vzyg= = X-Received: by 2002:a05:600c:3b92:b0:43d:2230:300f with SMTP id 5b1f17b1804b1-4533c9c6e8fmr147105255e9.0.1750178038731; Tue, 17 Jun 2025 09:33:58 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a73845sm14651906f8f.35.2025.06.17.09.33.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:55 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id C30215F91D; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 09/11] kvm/arm: implement sysreg trap handler Date: Tue, 17 Jun 2025 17:33:49 +0100 Message-ID: <20250617163351.2640572-10-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Fortunately all the information about which sysreg is being accessed should be in the ISS field of the ESR. Once we process that we can figure out what we need to do. [AJB: the read/write stuff should probably go into a shared helper]. Signed-off-by: Alex Bennée --- target/arm/kvm.c | 95 +++++++++++++++++++++++++++++++++++++++++ target/arm/trace-events | 2 + 2 files changed, 97 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index f2255cfdc8..0a852af126 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -24,6 +24,7 @@ #include "system/runstate.h" #include "system/kvm.h" #include "system/kvm_int.h" +#include "cpregs.h" #include "kvm_arm.h" #include "cpu.h" #include "trace.h" @@ -1414,6 +1415,98 @@ static bool kvm_arm_handle_debug(ARMCPU *cpu, return false; } +/* + * To handle system register traps we should be able to extract the + * encoding from the ISS encoding and go from there. + */ +static int kvm_arm_handle_sysreg_trap(ARMCPU *cpu, + uint64_t esr_iss, + uint64_t elr) +{ + int op0 = extract32(esr_iss, 20, 2); + int op2 = extract32(esr_iss, 17, 3); + int op1 = extract32(esr_iss, 14, 3); + int crn = extract32(esr_iss, 10, 4); + int rt = extract32(esr_iss, 5, 5); + int crm = extract32(esr_iss, 1, 4); + bool is_read = extract32(esr_iss, 0, 1); + + uint32_t key = ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, crn, crm, op0, op1, op2); + const ARMCPRegInfo *ri = get_arm_cp_reginfo(cpu->cp_regs, key); + + if (ri) { + CPUARMState *env = &cpu->env; + uint64_t val = 0; + bool take_bql = ri->type & ARM_CP_IO; + + if (ri->accessfn) { + if (ri->accessfn(env, ri, true) != CP_ACCESS_OK) { + g_assert_not_reached(); + } + } + + if (take_bql) { + bql_lock(); + } + + if (is_read) { + if (ri->type & ARM_CP_CONST) { + val = ri->resetvalue; + } else if (ri->readfn) { + val = ri->readfn(env, ri); + } else { + val = CPREG_FIELD64(env, ri); + } + trace_kvm_sysreg_read(ri->name, val); + + if (rt < 31) { + env->xregs[rt] = val; + } else { + /* this would be deeply weird */ + g_assert_not_reached(); + } + } else { + /* x31 == zero reg */ + if (rt < 31) { + val = env->xregs[rt]; + } + + if (ri->writefn) { + ri->writefn(env, ri, val); + } else { + CPREG_FIELD64(env, ri) = val; + } + trace_kvm_sysreg_write(ri->name, val); + } + + if (take_bql) { + bql_unlock(); + } + + /* + * Set PC to return. + * + * Note we elr_el2 doesn't seem to be what we need so lets + * rely on env->pc being correct. + * + * TODO We currently skip to the next instruction + * unconditionally but that is at odds with the kernels code + * which only does that conditionally (see kvm_handle_sys_reg + * -> perform_access): + * + * if (likely(r->access(vcpu, params, r))) + * kvm_incr_pc(vcpu); + * + */ + env->pc = env->pc + 4; + return 0; + } + + fprintf(stderr, "%s: @ %" PRIx64 " failed to find sysreg crn:%d crm:%d op0:%d op1:%d op2:%d\n", + __func__, elr, crn, crm, op0, op1, op2); + return -1; +} + /** * kvm_arm_handle_hard_trap: * @cpu: ARMCPU @@ -1443,6 +1536,8 @@ static int kvm_arm_handle_hard_trap(ARMCPU *cpu, kvm_cpu_synchronize_state(cs); switch (esr_ec) { + case EC_SYSTEMREGISTERTRAP: + return kvm_arm_handle_sysreg_trap(cpu, esr_iss, elr); default: qemu_log_mask(LOG_UNIMP, "%s: unhandled EC: %x/%x/%x/%d\n", __func__, esr_ec, esr_iss, esr_iss2, esr_il); diff --git a/target/arm/trace-events b/target/arm/trace-events index 4438dce7be..69bb4d370d 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -13,3 +13,5 @@ arm_gt_update_irq(int timer, int irqstate) "gt_update_irq: timer %d irqstate %d" # kvm.c kvm_arm_fixup_msi_route(uint64_t iova, uint64_t gpa) "MSI iova = 0x%"PRIx64" is translated into 0x%"PRIx64 +kvm_sysreg_read(const char *name, uint64_t val) "%s => 0x%" PRIx64 +kvm_sysreg_write(const char *name, uint64_t val) "%s <= 0x%" PRIx64 From patchwork Tue Jun 17 16:33:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897387 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246649wrc; Tue, 17 Jun 2025 09:37:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX9WB6nLrc5w0fJpbcctBWnj3DhJl71p7nk7lYrvC00K1vJAmPsSCRPRylbukH4ECfnpqo4JA==@linaro.org X-Google-Smtp-Source: AGHT+IGy4eg9VAAixvC5m+8CAr5EuN9fGL7b/+scheMng3LYCAfKLuHYK+ujvs+IJ2W+qYFYgluq X-Received: by 2002:a05:620a:40ca:b0:7d0:eac6:6df8 with SMTP id af79cd13be357-7d3c6c1ea6fmr1951849185a.18.1750178239025; Tue, 17 Jun 2025 09:37:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178239; cv=none; d=google.com; s=arc-20240605; b=ZKAgJe80YJLoEFV7SMw2VjPl47fK+eIoWcL/uoCr+TYkXvvMdaTlvn6KWmKp0/uAJc U5BkBi61DxVGXmHTBXHn067kHfpuH8hW75rwIxKuejjgwOfIVuAEQdlsJ3eJboWoYnlP +iNFu6LwsJr9MMQLLctUkxauD+qp/CN1lFBCfVAW8Odd0vWrFFdMR6+9OHFbLNToOEdS DGsl1BAf0uM9ZSQhWtaDlLWoKYHb527UZYfs0hSKVV5UGYNdWykZXnq4CHv4vpMd2DRS xvE2WbchxHmQ7D3IJBqkbR5RJXuMrMJ485O5kZON3g6cXaaIwVYZEpFHFkE2SKdbpI+l OCpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=aoMza4IYUrQ4pKhizFEWSlqdn80g7ODuwHDUZB6a5Mc=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=kmHT5cXEGU3JeArrwlzinbn5ZT2d9H9co+UV+Msqb6V9Iisvxy+lfqg4xX2H1dwmwX EacQxqYMlkvJRGolG8WvkxzCQG1FkrrPdWi/JQVGEbJEDWYXJST3Ujoadkxj22udXWE+ t2tu5nFw8gUOnnolJFY5x8IsJEbqRMLr6T11H/bxv9XdhCy87NNOM9XNW6aAdPgH9NQ9 cmzXcK/8uUI/jVBken/TO7xSoJlO13GcrMRnUvloWvFHURIfcAh2sTyYn/mp5fUORpeq 8euInYc9ZzjP4mHhuJaihzvKZdt+mtvJLYTZvd+LHpof2Vbj4hlWlJcAi1SKzT+WbG8y Zr4Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vN0DXITT; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3b8dc88cdsi1221029285a.54.2025.06.17.09.37.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:19 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vN0DXITT; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZJC-0003n7-Fn; Tue, 17 Jun 2025 12:37:14 -0400 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 1uRZGD-0000mN-PP for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:10 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZG5-0000ek-Dd for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:09 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-450dd065828so48835875e9.2 for ; Tue, 17 Jun 2025 09:33:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178038; x=1750782838; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aoMza4IYUrQ4pKhizFEWSlqdn80g7ODuwHDUZB6a5Mc=; b=vN0DXITT142R1G1HVYRZagx6SjIaDNtzCoLXWkYwCXFZ7CF3w1mIOYMFawT0JN5zLo ui1sOMnHfFb4nz86Ma17pN1K/8Vnv4/4/3q3p/eWe0NYBfXZd9t53E5S1R2EVSZyxIC0 1Pjme7CMArdwLIl3omtOoTl+iFQG+2BjCO7kpmJnhV7KTVPjY+ae+HHwnW3daAU0ACN/ 64J1KJfgnxv4M7XRa/iD2SQrTvo0B47oXDAbY0mPPl8jnH6s0PD6ovN++RL+KjNbofMy SnjohHJdLFm1nILdU7QUIho0ij0Chi3mP7e72UuCdnFvBHURjMXk9bH8YAlCKTkPnAwR KdzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178038; x=1750782838; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aoMza4IYUrQ4pKhizFEWSlqdn80g7ODuwHDUZB6a5Mc=; b=e/glX/QxJiOxgy1jO7IEnMMycUDMshvYqp1RKNhD4GFwDV94Giwn68TlVTPB/sNXBy Bgwq/nOYsPEq+QAA2lhymKWWiMSpZJMuQcZND10472kVR0HRHn3UYvoYFRFEX6FYgRoU eXUBE0Vwf5CemQNMlxUrnkmSHkss8dhGvfWu5gC/QGrPVdHgdXdWu439j2c2bHc4ghgd 9siSeJ0P/anNagxdhwI82rmRLAfUS5sFyyWYKKgsa2akVWVXe5pdD6XwxdxF/gFv28kg kXa1S6pqZYNWhFjnbvG/IXaeQP+Z/Poc7YEB93Mk29FU1+UriDe7Og+FSVRV+H8D2/hf smGg== X-Gm-Message-State: AOJu0YxGJ3cbj9iLr8S9I7KOM9BYJbYRhX8fxCm5CBCCGsOx0og2ieyJ DI3wNLsM9p/qgmIXx2G0Q9Of6jw+iVqo1Q8ye5Ky/CClniYW+nVTtOjJeJd6PgZZzgU= X-Gm-Gg: ASbGncuCBipdKuX2glhbt4KTWtpNLeKqc92Y9TdTM2z0EilUHauocbzSeBzlgGtSb6w 1gJZwj/KDG/4V2LpRZ+3VQzwWKyVoetLXzt1ZQSlJw/Hb0TnN4ABOQlre88trxQWwBe0z/T7Vzl HJPba3GcoZ49Pm5F8b+1/ELcrHgGdxqj2r5IooLSinojuhfN+xGgfoDMSIs2d4YYgLR3E+7JXVB 0jOKTms+Z4lzJ3I6xToec9KEjxxGLIrQGwbPojUdF/AlTUo1PP+2MgEQ7ahI0UBB1hEnVvFk7Ym nf2PyDewlw2UdBOgCWF7Nsn/l5a3TSXFIes9HyQgfLdwFmHTv4M04nVHytdvWUA= X-Received: by 2002:a05:600c:6095:b0:43c:fffc:7886 with SMTP id 5b1f17b1804b1-4535627dbe5mr19855865e9.8.1750178038202; Tue, 17 Jun 2025 09:33:58 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4532e232e4asm178682015e9.11.2025.06.17.09.33.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:55 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id DC5DE5F924; Tue, 17 Jun 2025 17:33:52 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 10/11] kvm/arm: implement a basic hypercall handler Date: Tue, 17 Jun 2025 17:33:50 +0100 Message-ID: <20250617163351.2640572-11-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org For now just deal with the basic version probe we see during startup. Signed-off-by: Alex Bennée --- target/arm/kvm.c | 44 +++++++++++++++++++++++++++++++++++++++++ target/arm/trace-events | 1 + 2 files changed, 45 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 0a852af126..1280e2c1e8 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1507,6 +1507,43 @@ static int kvm_arm_handle_sysreg_trap(ARMCPU *cpu, return -1; } +/* + * The guest is making a hypercall or firmware call. We can handle a + * limited number of them (e.g. PSCI) but we can't emulate a true + * firmware. This is an abbreviated version of + * kvm_smccc_call_handler() in the kernel and the TCG only arm_handle_psci_call(). + * + * In the SplitAccel case we would be transitioning to execute EL2+ + * under TCG. + */ +static int kvm_arm_handle_hypercall(ARMCPU *cpu, + int esr_ec) +{ + CPUARMState *env = &cpu->env; + int32_t ret = 0; + + trace_kvm_hypercall(esr_ec, env->xregs[0]); + + switch (env->xregs[0]) { + case QEMU_PSCI_0_2_FN_PSCI_VERSION: + ret = QEMU_PSCI_VERSION_1_1; + break; + case QEMU_PSCI_0_2_FN_MIGRATE_INFO_TYPE: + ret = QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED; /* No trusted OS */ + break; + case QEMU_PSCI_1_0_FN_PSCI_FEATURES: + ret = QEMU_PSCI_RET_NOT_SUPPORTED; + break; + default: + qemu_log_mask(LOG_UNIMP, "%s: unhandled hypercall %"PRIx64"\n", + __func__, env->xregs[0]); + return -1; + } + + env->xregs[0] = ret; + return 0; +} + /** * kvm_arm_handle_hard_trap: * @cpu: ARMCPU @@ -1538,6 +1575,13 @@ static int kvm_arm_handle_hard_trap(ARMCPU *cpu, switch (esr_ec) { case EC_SYSTEMREGISTERTRAP: return kvm_arm_handle_sysreg_trap(cpu, esr_iss, elr); + case EC_AA32_SVC: + case EC_AA32_HVC: + case EC_AA32_SMC: + case EC_AA64_SVC: + case EC_AA64_HVC: + case EC_AA64_SMC: + return kvm_arm_handle_hypercall(cpu, esr_ec); default: qemu_log_mask(LOG_UNIMP, "%s: unhandled EC: %x/%x/%x/%d\n", __func__, esr_ec, esr_iss, esr_iss2, esr_il); diff --git a/target/arm/trace-events b/target/arm/trace-events index 69bb4d370d..10cdba92a3 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -15,3 +15,4 @@ arm_gt_update_irq(int timer, int irqstate) "gt_update_irq: timer %d irqstate %d" kvm_arm_fixup_msi_route(uint64_t iova, uint64_t gpa) "MSI iova = 0x%"PRIx64" is translated into 0x%"PRIx64 kvm_sysreg_read(const char *name, uint64_t val) "%s => 0x%" PRIx64 kvm_sysreg_write(const char *name, uint64_t val) "%s <= 0x%" PRIx64 +kvm_hypercall(int ec, uint64_t arg0) "%d: %"PRIx64 From patchwork Tue Jun 17 16:33:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 897390 Delivered-To: patch@linaro.org Received: by 2002:adf:9b99:0:b0:3a4:ee3f:8f15 with SMTP id d25csp2246688wrc; Tue, 17 Jun 2025 09:37:24 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVmGIeGlQrInmv6z7YiDXunGwJuKg6D9ZG2cL+QyHjbugUQ2JcZpOfaLCFbwwX4JcgOv+f7nw==@linaro.org X-Google-Smtp-Source: AGHT+IG0OVOYV25bl+4yA2T9Yp+udxzLJ4nXcjOhUrk1GqEnLIzlyiJRNim2aJYLyQzcScB6RHO1 X-Received: by 2002:ac8:7f53:0:b0:4a7:bd8:4951 with SMTP id d75a77b69052e-4a73c47e0d6mr187960551cf.7.1750178243836; Tue, 17 Jun 2025 09:37:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750178243; cv=none; d=google.com; s=arc-20240605; b=HAi1omrdAlSLvL4wolV3xC52d60+NuNExhy2V2VYzJYL9kieTYNLGgbtudDHpjpjwr LaSfTaRE96OML5scPxd4c0Zh2z2RsyFFYUuYHOjiiuAuOnytVjQXIqvoR90cKg/c/oqh WA+kRlbKAmuTrrcG8VZ5SAyP8PhAul+iRkjIRj2RyUnMh5MadgOUtWM/v0twecSdxPyO v+vb2O85LX66EC9nJyqXlY56rj9wQjzAebHiQKnyUbrYcsLp9vOQPai7+EZh1zQ0fww5 YW2/jDVpuS82EvWE6Bb5LKc6vS++mVUDacjtxwXhEE3tr04j2grBIV97Mk9E35sQKnPr 9EtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=GncEdQO/d7gOZ9LM+QxKenzRx6813cX2TxyJIAl7x3Y=; fh=CysBbgsazybhgHwNDtjR43A6u/TnfAIXG8xcQOkv9c0=; b=SJ5wMLGueK7vDRp2qydHavq5QfVU3dOZhqH4MknCY/+WyjQA8ViMPqcl/PUp7ILljW kzM11Z1PyDJB4/rwmXPGRKy17XdlrLb7mwt2B6wvfXDOfr5HsgQBuqlAM67x/Sm3+7rI t8VIzF3uLJV1i5uYOwl/CafyoFxoCs4UnGL9Yq2am9YmZrH220RNlS0Km+2lIuqzwPBL TjuN6zoLlCogxC6M58JgYVU87JwTNhdyDE+f95fcbvgA++fhUrdupa6r5zr+oHIq7p3O dHsD2Rn04POJpeHDz/hloN+Dz0/jbcbNh2OuvxkPS82dbicoGKMSKjR6uA5d5thWzBNI DiWA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=lwjeugSj; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a72a4e0c85si127889471cf.445.2025.06.17.09.37.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jun 2025 09:37:23 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=lwjeugSj; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uRZIh-0002g2-54; Tue, 17 Jun 2025 12:36:47 -0400 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 1uRZGF-0000n8-9S for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:15 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uRZGC-0000fT-SL for qemu-devel@nongnu.org; Tue, 17 Jun 2025 12:34:11 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3a4ef2c2ef3so4913276f8f.2 for ; Tue, 17 Jun 2025 09:34:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750178039; x=1750782839; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GncEdQO/d7gOZ9LM+QxKenzRx6813cX2TxyJIAl7x3Y=; b=lwjeugSjNXojm8tIkAOD2mZRfEj7Ogkbcu/jJWH4hqFjJCL0caFeJctuezT8MUj6dF 0c1MLdYt4no58+X1dsA4o9r7kuhzkWTZeCUSW5PJUoLjnI4z/U6IjYvI3GNoU/c+ZVMP FoD6N9BJDnvxnWst8ah/cmJpp2Mt2HLYFeoqAiDuAzIc4uMwnX+pN4RyGxlZND3gSJwO iIhVT4Hdh1gJ/2arD1VnjWx1xC43AdCZ72oqrYTocGM4puug5JqKG3vztUiPCMCuXEWp Oo9geWdyTHWfR0zq2Gc4qubeedDW6m9aqsijp5ecTHKTCntAt7FVn5V9hcvaQI31FSSh oh0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750178039; x=1750782839; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GncEdQO/d7gOZ9LM+QxKenzRx6813cX2TxyJIAl7x3Y=; b=eEgGYSONAd8VlS2REvyzqqGbt4xczU1GgGZM/NotvKwfhM1atbF/DQT152w1G0EEIe fPJmV1rDY3Ee9gV9CgrJijMrYEYAeu7NyjyBMDt2k4a6iUAAP4B+1VGQGf8tIjZvLrHh yrkAWme4UU5xevGiEdmUvnWqaM1p7WXCmmdCcB5/ds9woLJ+jxaiKvTcp5RUxVdSCQ4J fjyU37dsa1VKc5W01z0CEvstER8IaPngm/Wk1XRUUz3gB2gnguVYe2U5w0qfX/xbY4GS mVsub3/KX6bWXD8zcEXrfWSYZoRfQVR0cSVMqIcMb6VbrdTfv0Jk6HhHcKMyYsoOPCcq 1dXg== X-Gm-Message-State: AOJu0Yynt8byAxnqh2B3BC7g9m/qr7rr9hs8FViqZdGs8vOGq4piGwmT bcVq7/ENcNffORFFyig+8JJI0k59MaTtJn8i71EAJiw+INCQAjEAexL8iu8vdd4Pr9Y= X-Gm-Gg: ASbGnctprAGOG81EaTDpFlL2khrGhbTw22eljeh5tABlYru/woZnKLyje+xjUXRkn0a FJMxiDKbTzpBbwtW9QfHj5lPRK5zuj+v2YmoZr9R8kCer75JBZFZ9iBAq/mg8iKhMYrRGKgHlKv ZGFHvY0pe7eoLeIoVKlk8rTv+XDDaEJ113HF6KARYSAUmB3yj3yc9B0+KPnd6ThtWIMFTRx4VHx vaUc28ZC097DLufJMA1QURNiazE99ygbIaqoqQPzP8bIhgnB9Ql+W4ofE1g8peK0nuhS+BTVIlX 54+7itsIIsOkwuQhJt5a8bCtlRuyQhSM+v3boKH410a17VKZ711ow9amWCa765U= X-Received: by 2002:a05:6000:400b:b0:3a4:f2ed:217e with SMTP id ffacd0b85a97d-3a5723af786mr11907985f8f.42.1750178039291; Tue, 17 Jun 2025 09:33:59 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568b090b0sm14359958f8f.46.2025.06.17.09.33.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 09:33:58 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 01A2B5F929; Tue, 17 Jun 2025 17:33:53 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Cornelia Huck , qemu-arm@nongnu.org, Mark Burton , "Michael S. Tsirkin" , Alexander Graf , kvm@vger.kernel.org, Peter Maydell , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex?= =?utf-8?q?_Benn=C3=A9e?= Subject: [RFC PATCH 11/11] kvm/arm: implement WFx traps for KVM Date: Tue, 17 Jun 2025 17:33:51 +0100 Message-ID: <20250617163351.2640572-12-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250617163351.2640572-1-alex.bennee@linaro.org> References: <20250617163351.2640572-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x433.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 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_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org This allows the vCPU guest core to go to sleep on a WFx instruction. Signed-off-by: Alex Bennée --- target/arm/kvm.c | 28 ++++++++++++++++++++++++++++ target/arm/trace-events | 1 + 2 files changed, 29 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 1280e2c1e8..63ba8573a2 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1544,6 +1544,32 @@ static int kvm_arm_handle_hypercall(ARMCPU *cpu, return 0; } +/* + * It would be perfectly fine to immediately return from any WFE/WFI + * trap however that would mean we spend a lot of time bouncing + * between the hypervisor and QEMU when things are idle. + */ + +static const char * wfx_insn[] = { + "WFI", + "WFE", + "WFIT", + "WFET" +}; + +static int kvm_arm_handle_wfx(CPUState *cs, int esr_iss) +{ + int ti = extract32(esr_iss, 0, 2); + ARMCPU *cpu = ARM_CPU(cs); + CPUARMState *env = &cpu->env; + + trace_kvm_wfx_trap(cs->cpu_index, wfx_insn[ti], env->pc); + + /* stop the CPU, return to the top of the loop */ + cs->stop = true; + return EXCP_YIELD; +} + /** * kvm_arm_handle_hard_trap: * @cpu: ARMCPU @@ -1582,6 +1608,8 @@ static int kvm_arm_handle_hard_trap(ARMCPU *cpu, case EC_AA64_HVC: case EC_AA64_SMC: return kvm_arm_handle_hypercall(cpu, esr_ec); + case EC_WFX_TRAP: + return kvm_arm_handle_wfx(cs, esr_iss); default: qemu_log_mask(LOG_UNIMP, "%s: unhandled EC: %x/%x/%x/%d\n", __func__, esr_ec, esr_iss, esr_iss2, esr_il); diff --git a/target/arm/trace-events b/target/arm/trace-events index 10cdba92a3..bb02da12ab 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -16,3 +16,4 @@ kvm_arm_fixup_msi_route(uint64_t iova, uint64_t gpa) "MSI iova = 0x%"PRIx64" is kvm_sysreg_read(const char *name, uint64_t val) "%s => 0x%" PRIx64 kvm_sysreg_write(const char *name, uint64_t val) "%s <= 0x%" PRIx64 kvm_hypercall(int ec, uint64_t arg0) "%d: %"PRIx64 +kvm_wfx_trap(int vcpu, const char *insn, uint64_t vaddr) "%d: %s @ 0x%" PRIx64