From nobody Mon Oct 6 12:06:35 2025 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2783828C022 for ; Tue, 22 Jul 2025 03:15:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154128; cv=none; b=XiqNa0ALf0GN9rgE6d27CytT+gukQzZov1r9Re5AU3jq+oKDiseHtXqnG/7sLl3CbmHfHZchzPz5opmGfAnkqLwGwA4xdNoVWgyMb22PcpFm8OX3xzhJ8fgl21eiMOAyQnTc+boq8soS0LJzOdeljL5zR77fIA8/lcaRvNwi4WY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154128; c=relaxed/simple; bh=m2E8W7DiSx6Ltrasj+rnR9WEkMr09MKsEoyxo0F+Klg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kLHpOj1i99VV4520Z0yRAhE+hoRiIxhyjYCJxZHxZ5oBEqfD8xhrPLtKuGm784wYbZKCYrSMnlxG6B3RSl4+Y93e4nloWQLFJR/sANR2O1j52+CenZdp/qrMs3uXH0cTIQ4OSJteXRIbuoMJJKBDCamMVW8zJphc7C7cYRMUFAQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=cxOpbG6o; arc=none smtp.client-ip=209.85.215.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="cxOpbG6o" Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-7fd35b301bdso5228635a12.2 for ; Mon, 21 Jul 2025 20:15:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154126; x=1753758926; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QppemwXg72umVaHol/lc8lTgDOnrssZANvnDyByXBzA=; b=cxOpbG6opvR+8IuaxkxL2yUWP/SmqzCtnL0uJLzhO9ngBg4TPwHd307T/KZgGzxLHx 0HhzDt915bdN7Xnx3H4TljgciT96Iz5JYgDsG01mqC5gzID2si6wqzI05BDwy1zCwXDT xhjok01RlUUo2tSU67j1ncR8TkNx1UW8MtKt41qsM/QAYgKXmBBZgOSFQGA6YRjSwo7v wpHGlix7+fJ/jBxVnT6HOvm9fdspIsFZjnrXfQ0vHs0nSZh0EmmGNuNbopSYtcRZx+4X yPev6AhsOOtMzOUNwOSut5tVsSqBNj8ZS3gxpWD60q4NgbhmUEDNlBPBeEj66+YYRyAK iJHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154126; x=1753758926; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QppemwXg72umVaHol/lc8lTgDOnrssZANvnDyByXBzA=; b=GydbGdXIoORm+lNJ/ZVy5HI/3WMDsAG9q1vSV8b66WZMoCERRCqKmgGRHz/DB8MMep fTd0Z/0piPrTGu+VFvQVNy6U/xJnSeckbazK3L5brwWnOpNMQwzGEdzPHnY5UIO38Q94 Sz1NV8HcKVtFZQi0yN+IBTFh6bHkHqDX1emq48uP8wOiWxSljgikkxtlleHJwk0iLZk7 0UZJggDaiU5GArZZ/OVQGJwBCQR65kjEaM0IZi+QqaWOl4rk7jaCdzdQpNIY4QSe0Uio F0e3yJigC+uli6nwM9O2AO0q1+wkXQEqWrvYQFOtaRdV3er+C58s7NnAqhKkLE9LcFma Rakw== X-Forwarded-Encrypted: i=1; AJvYcCV7VHHkSQ5j64c/bRh/4UJBZL+8kLtJ2P+kgjaCVsNo+GRzvpEXowS5Tcs5orPEF0wYYpoWV8kzbjwo3dw=@vger.kernel.org X-Gm-Message-State: AOJu0YyAnfo8YlCaw/aPBKD7d9LzsbtupiWRkQoKKeLtEteKOvmieZH7 YmP6gjRgwvJ38grbM0csii3NqaXHE4RusVkkIzC2/+29RCftYk6lapKSRIlVrv+9Kyg= X-Gm-Gg: ASbGncsNvd5FBXmBC0PeXtJ3yQ9ggbuyNPaVec5zL9kS2dr+8su70yesyS9kRLuDBNz +9RlS/kJtIqAzNzG80Dfv/9YrcLt7AIdpKMNUvCQvi4qvID+8WQv54KpGlekj3Qy3VyiZ5lHP7u gVJVDniUoeQx3r2Euxgr9cNIhQo69WZbztoJFB8FApurpHFV0iY6v8MPuY6Lwa76/DQHLU3osMG DLBmAh0V60chG4AQ/0lxOyjBBbbCl2h8FBWNKPW6PNsYeDCRwfCO1sOu8MZSE0X5euFv+U+hGRu lIzkepX4SAucq6N0QOrD3/v+P3YKlTJd+tx1U9uoLa1x3D05KPUmsrYtvK/+SjPK4DvQPfg568K SnoOsSZRXHxRl7koZNIzRE6EZLe7+ht8jXEk= X-Google-Smtp-Source: AGHT+IFGWxj3iUKxSSdZKPT9lOfiDcRTnkWskcnNV9b0jBWk2yItlB0Jg7U1GDfAal+i2ahxkqkLKQ== X-Received: by 2002:a05:6a21:6daa:b0:1f5:8a1d:3904 with SMTP id adf61e73a8af0-23810b4dd3dmr37662781637.7.1753154126114; Mon, 21 Jul 2025 20:15:26 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:25 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:17 -0700 Subject: [PATCH v4 1/9] drivers/perf: riscv: Add SBI v3.0 flag Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-1-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 There are new PMU related features introduced in SBI v3.0. 1. Raw Event v2 which allows mhpmeventX value to be 56 bit wide. 2. Get Event info function to do a bulk query at one shot. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- drivers/perf/riscv_pmu_sbi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c index 698de8ddf895..cfd6946fca42 100644 --- a/drivers/perf/riscv_pmu_sbi.c +++ b/drivers/perf/riscv_pmu_sbi.c @@ -63,6 +63,7 @@ PMU_FORMAT_ATTR(event, "config:0-47"); PMU_FORMAT_ATTR(firmware, "config:62-63"); =20 static bool sbi_v2_available; +static bool sbi_v3_available; static DEFINE_STATIC_KEY_FALSE(sbi_pmu_snapshot_available); #define sbi_pmu_snapshot_available() \ static_branch_unlikely(&sbi_pmu_snapshot_available) @@ -1452,6 +1453,9 @@ static int __init pmu_sbi_devinit(void) if (sbi_spec_version >=3D sbi_mk_version(2, 0)) sbi_v2_available =3D true; =20 + if (sbi_spec_version >=3D sbi_mk_version(3, 0)) + sbi_v3_available =3D true; + ret =3D cpuhp_setup_state_multi(CPUHP_AP_PERF_RISCV_STARTING, "perf/riscv/pmu:starting", pmu_sbi_starting_cpu, pmu_sbi_dying_cpu); --=20 2.43.0 From nobody Mon Oct 6 12:06:35 2025 Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08B5528C017 for ; Tue, 22 Jul 2025 03:15:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154129; cv=none; b=V9qhNxPoKxRFzPLmLSAy73clLGiyCGAG2WLCH62AsXf0+kz7gjkDoLOKg6XLVLY2Gy2OrGjhxp/A+OuGesqSeDh55PSWraP7hZssSzfyg00Cg7xijuf25trd87Ip/vlCicLAmUf8AQ36kKsZPfEpyfB/haNPOTZQyomWHIHfEFw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154129; c=relaxed/simple; bh=0VfGT/sW+BOyeAlGwTbRc/p0DZepzw2VTroKK4qkIkc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ad8yux09Ao0fvztERkV/a3E/9SPmoqRHfLqn4XkKzNHn2RmU/pZK4PM/LDnSgwnrQZR2jSGrUY6eQfwCrzo5Y6X5RnjzPGpgzp/W+oGxbarzkRri+lpVsp0yDHwEnKLTSXSzQhog/JpxVJjhWmfkbip5k5hhppzZm1Ou+zS1+UY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=OGALig4b; arc=none smtp.client-ip=209.85.215.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="OGALig4b" Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-b3be5c0eb99so3733544a12.1 for ; Mon, 21 Jul 2025 20:15:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154127; x=1753758927; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oaJ9aiB4PvqQF4lL2czHSQpu5RmdGPHGPdEr5UPHKqo=; b=OGALig4bJpTUJC6ZQBcACrAugi10sX0EPX2l8qzY3h8P34AeD3Dj2LZKHnMWABsd08 ycOgpToxzARhgFCpqkUMWwq7Yc83CQBl2rQ6Y3YbUuBc/k2b6s9d8uwK+Q0UlV4e0RIp xnMT9fMoR83EIyMWE91CLZPvzdwO2UVmy786+tfCYJa0mQO2splkfctewD3Kd3vWQ7QF EH7WEXA1vSxJRwIy+T0GphnBypToLjr+EIQkDKkfN3yuny8J/8dPq61AlQ8X+KkN/FDM UgaT3ikKz1J8Pk4XCECNFZxRn+YvSnR33DK6e4dXutY2GCXTAEvASUpgofh8Is1xi0Fl yxwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154127; x=1753758927; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oaJ9aiB4PvqQF4lL2czHSQpu5RmdGPHGPdEr5UPHKqo=; b=kTLNWoB2ToT/OClTXIuRXQbH8g4nUFiEEyarRmCIihIkGvLuEO2O9lSym8I0+e1Gvf fRkKi7z1TV05jjxPeK8IVa3RlGmCuMpyRPXmQVlq+kWWPYumc4utrXwyJl7efAUzu4HZ vIXEd9baLWOy7v2XRKNT9Qipe6jxHqSfhC77Kg8FauZxvYlA84M02NpZFYs04K1zMgAY k39J//3lYBN8aygrm1ExBWL/MbkmNGr7lLHPKJpEd/5BlHlz79V2LvTMKFoodCLW1Q0p 2Bax4TsG9i5vT60CPV0uR8v+TbTeeryzXxlqnSeP03wXPTelicdP+0pNcGoivn7mI8Fn nDzA== X-Forwarded-Encrypted: i=1; AJvYcCX9W5BkRDezsn0QTOgeAR3ZdJ54cGi7LlGoSnYJSg5JqaNrxfkXzXC98FD2xmto2lsXEeXa0I6gNAZms+c=@vger.kernel.org X-Gm-Message-State: AOJu0YwmHEJRhI6/bNu4mDZ4oFSx1/0BcsyCHIhEylJgcB75scfFFUMy zNH35pk+1wHNACJDYuNBM25SbAlhWnO9o+2NeewxCrDF0UELzdidcoXlAxe5TznTmtk= X-Gm-Gg: ASbGncvKTItaCa9IZzoBbUDKwjEi0VwNSKdL0EEJbE3tRNiysi9B+ZUIEsTkXxnGc9w HqYssY3uL5BmHBfPcWxs5bawcfe2OZRogEWMoOo+OrTiHDGl3HGji9V4vgpGkrd1H0PwskXHcmG 3tMnBCAWoDWdQy/EtHFxoOLcH8Pn89z+apWyHA0YOCkja2igi0LhWgcu1CVe5l0OPO+8eZRL19s Vyjc2PHcIfItsx1aoA7qT1f/WvxYW+/L+/zWRu4S8Z/QSc29nfTSiFWyE7CiCIpeLC0NlP8ADHB aCBw5yYCLdYeL2vOyPgK44B3bc/wpwURqIWSbnPMXYzr30Njl6a7RRRjuMelL31+PIYyOezLNFw uEtLCYBuAjMY6pTDSlKfeA4iqN5iyFh9fcfo= X-Google-Smtp-Source: AGHT+IGF6Po1DKvJeXFzJdS6UmW3bPEOUN9x/0ZpQhlGwgu/vmfAIzOtjATRI7XYcQq7ZH2Dfk1C/g== X-Received: by 2002:a05:6a21:a81:b0:1f5:8e94:2e81 with SMTP id adf61e73a8af0-2391c92a648mr23761386637.9.1753154127264; Mon, 21 Jul 2025 20:15:27 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:26 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:18 -0700 Subject: [PATCH v4 2/9] drivers/perf: riscv: Add raw event v2 support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-2-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 SBI v3.0 introduced a new raw event type that allows wider mhpmeventX width to be programmed via CFG_MATCH. Use the raw event v2 if SBI v3.0 is available. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- arch/riscv/include/asm/sbi.h | 4 ++++ drivers/perf/riscv_pmu_sbi.c | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 341e74238aa0..b0c41ef56968 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -161,7 +161,10 @@ struct riscv_pmu_snapshot_data { =20 #define RISCV_PMU_RAW_EVENT_MASK GENMASK_ULL(47, 0) #define RISCV_PMU_PLAT_FW_EVENT_MASK GENMASK_ULL(61, 0) +/* SBI v3.0 allows extended hpmeventX width value */ +#define RISCV_PMU_RAW_EVENT_V2_MASK GENMASK_ULL(55, 0) #define RISCV_PMU_RAW_EVENT_IDX 0x20000 +#define RISCV_PMU_RAW_EVENT_V2_IDX 0x30000 #define RISCV_PLAT_FW_EVENT 0xFFFF =20 /** General pmu event codes specified in SBI PMU extension */ @@ -219,6 +222,7 @@ enum sbi_pmu_event_type { SBI_PMU_EVENT_TYPE_HW =3D 0x0, SBI_PMU_EVENT_TYPE_CACHE =3D 0x1, SBI_PMU_EVENT_TYPE_RAW =3D 0x2, + SBI_PMU_EVENT_TYPE_RAW_V2 =3D 0x3, SBI_PMU_EVENT_TYPE_FW =3D 0xf, }; =20 diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c index cfd6946fca42..7331808b1192 100644 --- a/drivers/perf/riscv_pmu_sbi.c +++ b/drivers/perf/riscv_pmu_sbi.c @@ -59,7 +59,7 @@ asm volatile(ALTERNATIVE( \ #define PERF_EVENT_FLAG_USER_ACCESS BIT(SYSCTL_USER_ACCESS) #define PERF_EVENT_FLAG_LEGACY BIT(SYSCTL_LEGACY) =20 -PMU_FORMAT_ATTR(event, "config:0-47"); +PMU_FORMAT_ATTR(event, "config:0-55"); PMU_FORMAT_ATTR(firmware, "config:62-63"); =20 static bool sbi_v2_available; @@ -527,8 +527,10 @@ static int pmu_sbi_event_map(struct perf_event *event,= u64 *econfig) break; case PERF_TYPE_RAW: /* - * As per SBI specification, the upper 16 bits must be unused - * for a hardware raw event. + * As per SBI v0.3 specification, + * -- the upper 16 bits must be unused for a hardware raw event. + * As per SBI v2.0 specification, + * -- the upper 8 bits must be unused for a hardware raw event. * Bits 63:62 are used to distinguish between raw events * 00 - Hardware raw event * 10 - SBI firmware events @@ -537,8 +539,14 @@ static int pmu_sbi_event_map(struct perf_event *event,= u64 *econfig) =20 switch (config >> 62) { case 0: + if (sbi_v3_available) { + /* Return error any bits [56-63] is set as it is not allowed by the sp= ec */ + if (!(config & ~RISCV_PMU_RAW_EVENT_V2_MASK)) { + *econfig =3D config & RISCV_PMU_RAW_EVENT_V2_MASK; + ret =3D RISCV_PMU_RAW_EVENT_V2_IDX; + } /* Return error any bits [48-63] is set as it is not allowed by the sp= ec */ - if (!(config & ~RISCV_PMU_RAW_EVENT_MASK)) { + } else if (!(config & ~RISCV_PMU_RAW_EVENT_MASK)) { *econfig =3D config & RISCV_PMU_RAW_EVENT_MASK; ret =3D RISCV_PMU_RAW_EVENT_IDX; } --=20 2.43.0 From nobody Mon Oct 6 12:06:35 2025 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E51228C2AA for ; Tue, 22 Jul 2025 03:15:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154130; cv=none; b=jiVo0ozpqcash0n+WlfvLoB9TBirUlWeman3FLcKdOEPqy/ra7tsdKVND37063YfVF4iY+BE3vcb0JTOT3v4RKe5HzjL22cVs6kjGcPRMqUatDKZItBimSr/vVIuVz3SPP4tZMQRTsiwW54AZ1OITJ0AJOHv829WP1rU5+3WUA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154130; c=relaxed/simple; bh=e7KhWyihGNeHQtmANrYGamMrWZjvNUfv+srLihtniBI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KxsN5lT0mG4nvJZ9tzBZdOcZKxotzG5XyPPMFLrliirL8UDFK29ZGu5FkxazbGkT56byh/oDn5nYBXBW/nDE34RqKSga6BvpplwLyT3RiBr6ID16LP/9cB21o94uqxL5KXGoVM4NQTIGiqVLa6LAeosw6NMnC1FFPLX99G6BRiI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=s5YeUef6; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="s5YeUef6" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-74ad4533ac5so3241363b3a.0 for ; Mon, 21 Jul 2025 20:15:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154128; x=1753758928; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=goqLKtDob+ZNX+w3rmmnq6+zF8DlfuvYjDiKv2ieDbU=; b=s5YeUef6RTO6GfWIMiC1SiGduaDJSwIs1PcaM2diW9VDyubdNMNxwdhu9BO/1p4Fhx BWY8qJlBnPphX1opyliabfp2IxHk/PGGZZyImCMH4P/xTzPQtFqNH4r2ONmMh8nz4oqJ f/K54DY7ACvjc1a/NqZl1UqFaKDntienWU6mAUD+DlEY9h89kFx/8c9rxg3aYJ7HgMqR tzvR72wtEurfepWaZdH6YrW8dJY93iv8A3ixcqJvdqnBArXSODGveH8sIKvkTCg4xIuG t6uC0DUghYrFCPH48gM32fX1cNIqWyX30vRrrnyxd7aJdbpDULtFTaJR6qei6lfhwrGq D8JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154128; x=1753758928; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=goqLKtDob+ZNX+w3rmmnq6+zF8DlfuvYjDiKv2ieDbU=; b=EBe58gPlylFZs8cvPGhK41en/XfcYpNEkIQE1lY/7TN6RLM1HkO9FE3iur7uJlOqpU zBVtqIVs5N86J5bntJ975BhlmRCtQSUfEgY1v4iPXGhJ6jquTmtOm9Q8kbmEyckugb/w 7Xnx+ukPcL+xZYsWuqQRdeuZfizsNDDQ/IpEReXNfyv1/jyCMZeogPm4yw9SlTeM2i3j 4L7dytkKoO9RSGzrSwCmyx4IhJlMZtAd0OozMRtZY9CQdGaG4Nb1yfl104NzGEp16+Py UpfkJUiVO5PbbnS5rRqGZn2sLAFnTTldmGfLnsx7ER8adgnnMsdL/bpthfyWEZD+hVJ/ RK4w== X-Forwarded-Encrypted: i=1; AJvYcCXP65n5HR0+hlGtfYBvg+wK1dlrEZWTZi12vqRZ+z6uOEDogUF4lhKMGq1/U3QWE0ISOa4Gno2kTdpwcHw=@vger.kernel.org X-Gm-Message-State: AOJu0YwteuLVL4N9aJPdIdwuwUz+nXuJMajcFab6faGRfyRNpYgPPDuA 79xIiN+BI+dxWRNZc/Gp0EwJ4d4vhCXIvm67GUMj/xHsiB576ghsw+5TwwZH19EV37U= X-Gm-Gg: ASbGncs+nLvD4qNzI78kpB7KpmUNIz964sIl8NdM7V1hUPmS7WMinks30PbGUYm6c8v XudHt4RxJjZlC9Tx9o5O6iEc+DPDpOZDC40nqzgdRcotFLLKqajmy0FYOZgNVB5yjVayA4EoXjr tV8w4BY2FqTR/EsZw/AOjgb0CBoPWLcons804k/QOuc+nxAWCDiRCLBMLiYiV051yMP1BMa9MkS PleiPIUZW4eCOgI/kRrvr99fWQq5L2cSYkVUF7dG1mEGLMhTzGtvcMixiK5sSKySeiKYdWL6DdZ 5BWVrQYjRO4OentFbzuguimVXHdRvyw5H1BCHN5efGw9ACDg8/0u2sTwqza+1Mj9EkbScU733tD I7APQgOtlpWXN04UB72c1UtHN7PhkYD7JpY4= X-Google-Smtp-Source: AGHT+IHQyL4rtGfOdMFXQZYZwkkphmY+Xgv9oIObvrdf8R89tWOPveRkw6OvWr9uZxH2fTwJdfujLw== X-Received: by 2002:a05:6a20:9186:b0:235:7452:5867 with SMTP id adf61e73a8af0-23d37d7e90dmr2717183637.20.1753154128287; Mon, 21 Jul 2025 20:15:28 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:28 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:19 -0700 Subject: [PATCH v4 3/9] RISC-V: KVM: Add support for Raw event v2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-3-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 SBI v3.0 introduced a new raw event type v2 for wider mhpmeventX programming. Add the support in kvm for that. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- arch/riscv/kvm/vcpu_pmu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c index 78ac3216a54d..15d71a7b75ba 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -60,6 +60,7 @@ static u32 kvm_pmu_get_perf_event_type(unsigned long eidx) type =3D PERF_TYPE_HW_CACHE; break; case SBI_PMU_EVENT_TYPE_RAW: + case SBI_PMU_EVENT_TYPE_RAW_V2: case SBI_PMU_EVENT_TYPE_FW: type =3D PERF_TYPE_RAW; break; @@ -128,6 +129,9 @@ static u64 kvm_pmu_get_perf_event_config(unsigned long = eidx, uint64_t evt_data) case SBI_PMU_EVENT_TYPE_RAW: config =3D evt_data & RISCV_PMU_RAW_EVENT_MASK; break; + case SBI_PMU_EVENT_TYPE_RAW_V2: + config =3D evt_data & RISCV_PMU_RAW_EVENT_V2_MASK; + break; case SBI_PMU_EVENT_TYPE_FW: if (ecode < SBI_PMU_FW_MAX) config =3D (1ULL << 63) | ecode; --=20 2.43.0 From nobody Mon Oct 6 12:06:35 2025 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 043F128C5BC for ; Tue, 22 Jul 2025 03:15:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154131; cv=none; b=gCJ61umv954uVdpV6ZMINXJ0PfzuUS5Ou4pcgHxst5lzTkf4kMmHgxB2Sx/iR1UcH4iqN4UIihGdmBEFeksjOFTw68cnqaDxqHOkmJJIxsEAWsXGJ92lpC76SjU3XdfqGG4VRXQzSSrYYOxZ3NcQh0NmHX8kI6Vxwm+bhs1u2JM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154131; c=relaxed/simple; bh=IzHWWZDhpoWbiCLmY/J2cSfKIfgXeRaJyx31cs9ScgU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c2YyISDkrnJZTXjCYd1hC5d/5CuL+rGvP6L/Oc7wr/AP4OPl7vr3uINQ4sPw3vFe4k8bfY6UAbChQwoF6lBkXB6rt5eonQXWdnTLOfTMsCqMxvm9Yt5qXIldzAx3w/8bHgdozU1MA3GAW5DkA58uyLCAadZZln/3V9UP1EngaBk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=ghFdOTZG; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="ghFdOTZG" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-74af4af04fdso4186923b3a.1 for ; Mon, 21 Jul 2025 20:15:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154129; x=1753758929; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YOiuLvmg0zyyTxkdzmKKTYBl9SQzDB7q/BZgYmb7rvg=; b=ghFdOTZG6l/oi22GK/plQJ29dmS6rMRWBRf/mALNHGkP5eb5gXvd2q0BTDRbKoT6Rv UGqp7eWpOITgLIKzaGDodrDyFxf34HNQG2UUfPTFyZ/p/Rb87Lmf0mQmJnqFGXJyEdER E72/EbhNHP+KqReQoFSvKwbCGSkfwpp2cBMrXfiMUVmLBWyfaYYAxKAEz5U8m0kj5T1z KCs6/CAZ3Sg7jbozjxoZhlMSOwuvxgwXc6WKdDa3PWGFJ2hX+aFfmBIvuJ8ECY+Jp2eJ 5wOG6cwQUSrfY9qfLhbLDR0JLT2bIFL+nVVLEXIurmMdRWGixT63lMZ4Ew+4rQxgZIh5 SR7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154129; x=1753758929; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YOiuLvmg0zyyTxkdzmKKTYBl9SQzDB7q/BZgYmb7rvg=; b=kllOzkyNfr6/0BayJPl/0peBvYvH5hfyJdiSmPGrqXpbeIaIAa8tTujiOFjmeOoA2y 0zFpvBnYE36aAXr0xo4FYohZebLY0SJofWQoZgOQbDDi/mfR6q2EGg47eTFNg5bGOO4I e4xpLgm/VHX81Tb7/gUNwtNUDsZwHejrP908DLkprNotlP9lZct4WWgMhS1GmJewqKRD Pff0bXimBCybmAXBmiWUXpClANsxTSbczgR+jaRAKLyvD+eBG8BGH/TjrsbsR/tFXSfV fwTc6BGC/1xkZt1E9//kKhdBmD2g1uwsb0hAmoin7Rk4c9DSmEQeM+0Zkf/puuTnLsRp YNfw== X-Forwarded-Encrypted: i=1; AJvYcCVVKphxi85TzbNpCRinHcPEEkBui3eSA+8iAhzKxjeWdktHYDxLJn0bsIYHNqpXtnxrYvH/KF3rDTuHvS4=@vger.kernel.org X-Gm-Message-State: AOJu0YxtvO0Wq4vhY3JdGNzst3/bAxVlfL+1AgTWlck7i7h5FCoQUg6L JLY24BNHtUG9EuF19YdmvHKa901K57N5lii2nhU7dkxnMoi56uO3ylXv/TI58Hx4RtU= X-Gm-Gg: ASbGncvwPaVRijGtKsVtyRuZUeH6/hYc53Y8kkjsm1v+HR4Oc5cdwJR4byB+uc5GjMw TGzpr4yc82B6vhrkgOGhOqBduyDjYzsYE5w4qixHaqlXxLcY9PnrcCGSHh53DUgR+I6uPuOxqFx djb+GtrII4jE+k61TI7cAhxrsVEiq0a5OsDCuzIElXGZ3s1h8btmRSwodVTOTYkOE7cf5mGBve4 GTakWpwil3AYk824bBb07AyXJjDHOLG1b/AuFihbyCWyBl33iOf7+nGWIq53FzKuz4+8ipz7V4d GbeJoX1tT4nvJRvyYPW5D181l/Md0H+Geno+N6qgwAi09aWQSYz1MdLId/fBAi6yIH8si4n9Z+O ihzBF40QEu0mWL4V6jMMxa9zjHUU6xGHr4Ic= X-Google-Smtp-Source: AGHT+IE4m/tGD4iWa8+mTThA0s1cqsabkUVocojZBeVv2a32z+xQKzcohOpb05G+cpoLAKrGJbuRZA== X-Received: by 2002:a05:6a21:99a1:b0:233:aec3:ce69 with SMTP id adf61e73a8af0-23d37ccbf52mr3181460637.3.1753154129335; Mon, 21 Jul 2025 20:15:29 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:29 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:20 -0700 Subject: [PATCH v4 4/9] drivers/perf: riscv: Implement PMU event info function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-4-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 With the new SBI PMU event info function, we can query the availability of the all standard SBI PMU events at boot time with a single ecall. This improves the bootime by avoiding making an SBI call for each standard PMU event. Since this function is defined only in SBI v3.0, invoke this only if the underlying SBI implementation is v3.0 or higher. Signed-off-by: Atish Patra Reviewed-by: Anup Patel --- arch/riscv/include/asm/sbi.h | 9 ++++++ drivers/perf/riscv_pmu_sbi.c | 69 ++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 78 insertions(+) diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index b0c41ef56968..5ca7cebc13cc 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -136,6 +136,7 @@ enum sbi_ext_pmu_fid { SBI_EXT_PMU_COUNTER_FW_READ, SBI_EXT_PMU_COUNTER_FW_READ_HI, SBI_EXT_PMU_SNAPSHOT_SET_SHMEM, + SBI_EXT_PMU_EVENT_GET_INFO, }; =20 union sbi_pmu_ctr_info { @@ -159,6 +160,14 @@ struct riscv_pmu_snapshot_data { u64 reserved[447]; }; =20 +struct riscv_pmu_event_info { + u32 event_idx; + u32 output; + u64 event_data; +}; + +#define RISCV_PMU_EVENT_INFO_OUTPUT_MASK 0x01 + #define RISCV_PMU_RAW_EVENT_MASK GENMASK_ULL(47, 0) #define RISCV_PMU_PLAT_FW_EVENT_MASK GENMASK_ULL(61, 0) /* SBI v3.0 allows extended hpmeventX width value */ diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c index 7331808b1192..433d122f1f41 100644 --- a/drivers/perf/riscv_pmu_sbi.c +++ b/drivers/perf/riscv_pmu_sbi.c @@ -299,6 +299,66 @@ static struct sbi_pmu_event_data pmu_cache_event_map[P= ERF_COUNT_HW_CACHE_MAX] }, }; =20 +static int pmu_sbi_check_event_info(void) +{ + int num_events =3D ARRAY_SIZE(pmu_hw_event_map) + PERF_COUNT_HW_CACHE_MAX= * + PERF_COUNT_HW_CACHE_OP_MAX * PERF_COUNT_HW_CACHE_RESULT_MAX; + struct riscv_pmu_event_info *event_info_shmem; + phys_addr_t base_addr; + int i, j, k, result =3D 0, count =3D 0; + struct sbiret ret; + + event_info_shmem =3D kcalloc(num_events, sizeof(*event_info_shmem), GFP_K= ERNEL); + if (!event_info_shmem) + return -ENOMEM; + + for (i =3D 0; i < ARRAY_SIZE(pmu_hw_event_map); i++) + event_info_shmem[count++].event_idx =3D pmu_hw_event_map[i].event_idx; + + for (i =3D 0; i < ARRAY_SIZE(pmu_cache_event_map); i++) { + for (j =3D 0; j < ARRAY_SIZE(pmu_cache_event_map[i]); j++) { + for (k =3D 0; k < ARRAY_SIZE(pmu_cache_event_map[i][j]); k++) + event_info_shmem[count++].event_idx =3D + pmu_cache_event_map[i][j][k].event_idx; + } + } + + base_addr =3D __pa(event_info_shmem); + if (IS_ENABLED(CONFIG_32BIT)) + ret =3D sbi_ecall(SBI_EXT_PMU, SBI_EXT_PMU_EVENT_GET_INFO, lower_32_bits= (base_addr), + upper_32_bits(base_addr), count, 0, 0, 0); + else + ret =3D sbi_ecall(SBI_EXT_PMU, SBI_EXT_PMU_EVENT_GET_INFO, base_addr, 0, + count, 0, 0, 0); + if (ret.error) { + result =3D -EOPNOTSUPP; + goto free_mem; + } + + for (i =3D 0; i < ARRAY_SIZE(pmu_hw_event_map); i++) { + if (!(event_info_shmem[i].output & RISCV_PMU_EVENT_INFO_OUTPUT_MASK)) + pmu_hw_event_map[i].event_idx =3D -ENOENT; + } + + count =3D ARRAY_SIZE(pmu_hw_event_map); + + for (i =3D 0; i < ARRAY_SIZE(pmu_cache_event_map); i++) { + for (j =3D 0; j < ARRAY_SIZE(pmu_cache_event_map[i]); j++) { + for (k =3D 0; k < ARRAY_SIZE(pmu_cache_event_map[i][j]); k++) { + if (!(event_info_shmem[count].output & + RISCV_PMU_EVENT_INFO_OUTPUT_MASK)) + pmu_cache_event_map[i][j][k].event_idx =3D -ENOENT; + count++; + } + } + } + +free_mem: + kfree(event_info_shmem); + + return result; +} + static void pmu_sbi_check_event(struct sbi_pmu_event_data *edata) { struct sbiret ret; @@ -316,6 +376,15 @@ static void pmu_sbi_check_event(struct sbi_pmu_event_d= ata *edata) =20 static void pmu_sbi_check_std_events(struct work_struct *work) { + int ret; + + if (sbi_v3_available) { + ret =3D pmu_sbi_check_event_info(); + if (ret) + pr_err("pmu_sbi_check_event_info failed with error %d\n", ret); + return; + } + for (int i =3D 0; i < ARRAY_SIZE(pmu_hw_event_map); i++) pmu_sbi_check_event(&pmu_hw_event_map[i]); =20 --=20 2.43.0 From nobody Mon Oct 6 12:06:35 2025 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F3DDA28C87C for ; Tue, 22 Jul 2025 03:15:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154132; cv=none; b=Z3kr5O46/vuZIo2l6QESv9F6zvgy/bZ44SFnq7He77O2vjiolX0apk8JxfVENOEhVnkgTJ96iz92sLtoMcD1PavN5VRfueZNNSFzMd6WtWbzZB3uGnVCKRHiq7ojfbfgcWv64RCKD6ZHBeqhm+tRCzMdo1GJO+EsPwzsqqOQlkg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154132; c=relaxed/simple; bh=uYtYjvm/CF8/xHKZUyL9yCAMuXwAK4qREoTrGl5k3v8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Freb+bdqpHSfnkXHQOKq4DnIQWFAfKI4i7wuz7JBPC3etkZ0XOtyDWOx+IRgl6odXoc6LIi/6Ougur9IzrWv4Sm5TVvLFKTeNkgOEbCwFBKBZAMwPHHJArCTgRM7LShcr+j+TPRr+Jn29oCGnaZsCHopoCkjkn36xXpBPX0jXVo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=0fLJEhji; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="0fLJEhji" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-75b5be236deso1811997b3a.0 for ; Mon, 21 Jul 2025 20:15:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154130; x=1753758930; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5nz8h60LGers/LCMxx/FZVBLZipiol25W5EeTvz9jgI=; b=0fLJEhjiM4wCazJK+2hC3bVI3MHOP3WGEmtIE1iM2a46s6K9WckDz9Zn0QI8sX7z53 jEhYveUIJT0JgphCs7I90UddDaHVCnbH5LI/WNisQC4uB15HgZsQkvLEcz93gdwVxOoM o/T6NjEFrVdF9SwAZ69VzEVutH1JyWJNQFxeYWDuOVPMiMZEv6hiwFrytvQX5YBsgcfB kulDHriIkiscNdNf312tPF7gCAky8diPAGWgxwamMaY/XaZvFoaf9/5UruteZY82ff/9 8FzWrYIt6jbJtqWPYSd1y69g65+Y7KAEtSGemH+0dT45RDhlcZNlzqcPfZasqYk/j2kn c6bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154130; x=1753758930; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5nz8h60LGers/LCMxx/FZVBLZipiol25W5EeTvz9jgI=; b=pHTHrLF6Yw0R32u5ZBLgB9dK2k1IH7WGzSifHbjdQl9QGeAV68cwT3p85B7cI7yuQY q9GgQCT5nXyem3qrIcYvfyHBw5nlKObzLBQZ2eeJRCw15npCxsHL5FIyHhrwUV+obQwt Pakc7JfdBmKhgZxDEuYn+VCUaQo0vVsnu3A0BQFk9i6cdqPfVQXc+1CMQeoWshf98cTN GKeYFoRcGhg2IInNaHMBBjm52bCZI4IGmOQ5l31FaDxuuSSX8RLNAR5qvG9Ph/E6bCBX LZRpXzhzYaPPO+VEccT8vy0GFYFLhSfw5WPWMCJxcHDvawBJTjWNibOJWWjN4VPcuL9F bs9Q== X-Forwarded-Encrypted: i=1; AJvYcCX3zCJUDVGdgkY963H72DqjBadBkQDknIy1OJHJZCqkm194tk2TSzULWekYy4ET+UOzRI5t4NvlBN27pBM=@vger.kernel.org X-Gm-Message-State: AOJu0Yw435mYdKA6uJSave8ohBDtO/4P2k2AiHEu9YA8J4X0YbuXQYEd UhS8TFIEU0H14pB4/p5BWbeoaZkmm0hLPEqn5KIMPZcvew1IYMHwt56/HKoklHimuYI= X-Gm-Gg: ASbGncv2k1eu05DQhu8qFOuw+yd5FnfNjAmxhwGNXelmsxB8tVLKivuu/BKbx2IttJZ kVSVEj2vm6HClFfxUyoqCnAUn2pqTSw83B4ad+hrC5AY9I0L57ExJojmzQYJEMZZ5Yz5bQvxL7b eGJG22F3JWKugq9juFpJKAkvo3Zc/+t5OtWFiAtetmlqaTzRTCcRdxrtY2fA70b2qq2JRvKxeZH bKJsNPbCrEXVKannb5F6Xn/kGpmZ8xeklPwiBLOcVQJHvjYvIz6ntdISlvyTtrUdDjMEFxOuJPm gskTEbHTITKUzf4CL+cEfHXs0oQkutwQs9uWO2fSKhpWd0ABi0nShGx5gt/sha8YGutTaOeabUh Ya8wCRh0OPXDZADyrVr8VQBxXLTBoBUJDLCQ= X-Google-Smtp-Source: AGHT+IHeCYnECMIvVJTGoFI3WdlJXM5+Krq/lzUsH6dPnZ6JduY2zNSHMUmatJU7FYEFS6JUREJreQ== X-Received: by 2002:a05:6a20:3d8a:b0:21f:5324:340 with SMTP id adf61e73a8af0-2381366444amr37445192637.41.1753154130401; Mon, 21 Jul 2025 20:15:30 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:30 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:21 -0700 Subject: [PATCH v4 5/9] drivers/perf: riscv: Export PMU event info function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-5-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 The event mapping function can be used in event info function to find out the corresponding SBI PMU event encoding during the get_event_info function as well. Refactor and export it so that it can be invoked from kvm and internal driver. Signed-off-by: Atish Patra --- drivers/perf/riscv_pmu_sbi.c | 124 ++++++++++++++++++++++---------------= ---- include/linux/perf/riscv_pmu.h | 1 + 2 files changed, 68 insertions(+), 57 deletions(-) diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c index 433d122f1f41..0392900d828e 100644 --- a/drivers/perf/riscv_pmu_sbi.c +++ b/drivers/perf/riscv_pmu_sbi.c @@ -100,6 +100,7 @@ static unsigned int riscv_pmu_irq; /* Cache the available counters in a bitmask */ static unsigned long cmask; =20 +static int pmu_event_find_cache(u64 config); struct sbi_pmu_event_data { union { union { @@ -412,6 +413,71 @@ static bool pmu_sbi_ctr_is_fw(int cidx) return (info->type =3D=3D SBI_PMU_CTR_TYPE_FW) ? true : false; } =20 +int riscv_pmu_get_event_info(u32 type, u64 config, u64 *econfig) +{ + int ret =3D -ENOENT; + + switch (type) { + case PERF_TYPE_HARDWARE: + if (config >=3D PERF_COUNT_HW_MAX) + return -EINVAL; + ret =3D pmu_hw_event_map[config].event_idx; + break; + case PERF_TYPE_HW_CACHE: + ret =3D pmu_event_find_cache(config); + break; + case PERF_TYPE_RAW: + /* + * As per SBI v0.3 specification, + * -- the upper 16 bits must be unused for a hardware raw event. + * As per SBI v2.0 specification, + * -- the upper 8 bits must be unused for a hardware raw event. + * Bits 63:62 are used to distinguish between raw events + * 00 - Hardware raw event + * 10 - SBI firmware events + * 11 - Risc-V platform specific firmware event + */ + switch (config >> 62) { + case 0: + if (sbi_v3_available) { + /* Return error any bits [56-63] is set as it is not allowed by the sp= ec */ + if (!(config & ~RISCV_PMU_RAW_EVENT_V2_MASK)) { + if (econfig) + *econfig =3D config & RISCV_PMU_RAW_EVENT_V2_MASK; + ret =3D RISCV_PMU_RAW_EVENT_V2_IDX; + } + /* Return error any bits [48-63] is set as it is not allowed by the sp= ec */ + } else if (!(config & ~RISCV_PMU_RAW_EVENT_MASK)) { + if (econfig) + *econfig =3D config & RISCV_PMU_RAW_EVENT_MASK; + ret =3D RISCV_PMU_RAW_EVENT_IDX; + } + break; + case 2: + ret =3D (config & 0xFFFF) | (SBI_PMU_EVENT_TYPE_FW << 16); + break; + case 3: + /* + * For Risc-V platform specific firmware events + * Event code - 0xFFFF + * Event data - raw event encoding + */ + ret =3D SBI_PMU_EVENT_TYPE_FW << 16 | RISCV_PLAT_FW_EVENT; + if (econfig) + *econfig =3D config & RISCV_PMU_PLAT_FW_EVENT_MASK; + break; + default: + break; + } + break; + default: + break; + } + + return ret; +} +EXPORT_SYMBOL_GPL(riscv_pmu_get_event_info); + /* * Returns the counter width of a programmable counter and number of hardw= are * counters. As we don't support heterogeneous CPUs yet, it is okay to just @@ -577,7 +643,6 @@ static int pmu_sbi_event_map(struct perf_event *event, = u64 *econfig) { u32 type =3D event->attr.type; u64 config =3D event->attr.config; - int ret =3D -ENOENT; =20 /* * Ensure we are finished checking standard hardware events for @@ -585,62 +650,7 @@ static int pmu_sbi_event_map(struct perf_event *event,= u64 *econfig) */ flush_work(&check_std_events_work); =20 - switch (type) { - case PERF_TYPE_HARDWARE: - if (config >=3D PERF_COUNT_HW_MAX) - return -EINVAL; - ret =3D pmu_hw_event_map[event->attr.config].event_idx; - break; - case PERF_TYPE_HW_CACHE: - ret =3D pmu_event_find_cache(config); - break; - case PERF_TYPE_RAW: - /* - * As per SBI v0.3 specification, - * -- the upper 16 bits must be unused for a hardware raw event. - * As per SBI v2.0 specification, - * -- the upper 8 bits must be unused for a hardware raw event. - * Bits 63:62 are used to distinguish between raw events - * 00 - Hardware raw event - * 10 - SBI firmware events - * 11 - Risc-V platform specific firmware event - */ - - switch (config >> 62) { - case 0: - if (sbi_v3_available) { - /* Return error any bits [56-63] is set as it is not allowed by the sp= ec */ - if (!(config & ~RISCV_PMU_RAW_EVENT_V2_MASK)) { - *econfig =3D config & RISCV_PMU_RAW_EVENT_V2_MASK; - ret =3D RISCV_PMU_RAW_EVENT_V2_IDX; - } - /* Return error any bits [48-63] is set as it is not allowed by the sp= ec */ - } else if (!(config & ~RISCV_PMU_RAW_EVENT_MASK)) { - *econfig =3D config & RISCV_PMU_RAW_EVENT_MASK; - ret =3D RISCV_PMU_RAW_EVENT_IDX; - } - break; - case 2: - ret =3D (config & 0xFFFF) | (SBI_PMU_EVENT_TYPE_FW << 16); - break; - case 3: - /* - * For Risc-V platform specific firmware events - * Event code - 0xFFFF - * Event data - raw event encoding - */ - ret =3D SBI_PMU_EVENT_TYPE_FW << 16 | RISCV_PLAT_FW_EVENT; - *econfig =3D config & RISCV_PMU_PLAT_FW_EVENT_MASK; - break; - default: - break; - } - break; - default: - break; - } - - return ret; + return riscv_pmu_get_event_info(type, config, econfig); } =20 static void pmu_sbi_snapshot_free(struct riscv_pmu *pmu) diff --git a/include/linux/perf/riscv_pmu.h b/include/linux/perf/riscv_pmu.h index 701974639ff2..f82a28040594 100644 --- a/include/linux/perf/riscv_pmu.h +++ b/include/linux/perf/riscv_pmu.h @@ -89,6 +89,7 @@ static inline void riscv_pmu_legacy_skip_init(void) {}; struct riscv_pmu *riscv_pmu_alloc(void); #ifdef CONFIG_RISCV_PMU_SBI int riscv_pmu_get_hpm_info(u32 *hw_ctr_width, u32 *num_hw_ctr); +int riscv_pmu_get_event_info(u32 type, u64 config, u64 *econfig); #endif =20 #endif /* CONFIG_RISCV_PMU */ --=20 2.43.0 From nobody Mon Oct 6 12:06:36 2025 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 00DEC28C2D3 for ; Tue, 22 Jul 2025 03:15:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154133; cv=none; b=DmCMzdB4Y40Fd9vL8Skr9VRJh+w6D15vOu1MsccKA8ynLwK8tBk+cCBnELZVaFtpOxFjg1HbWLpBTdcLBPoKAk51lkwkb4FepsqpSvkhO0RuMqF67Bx2ncJTGqdXQb3eceN7/bVzkv2IWYDV8g9fGTfhcFMd5u6IVbtPC7mFohM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154133; c=relaxed/simple; bh=MqHwXxa9SSyAxr2Hw1r4Mv5fnDVYLJpVS2ULkJu1mRU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qFmkVeZv44jSTr+IbT9gAGkv8pQymqkgCp9AJjwOQl/q1Xv6LLydDK4G9pHxJ6wd24Hs40yh9TE6xeDKrHpf56CwCkHEyB+qwif2vNsP4mw2Tm7k8AcRpAr3cqxx5h60wqMV1Kp5Qco3tyYE7VKInbRLnRV15OrQgYDXExoUaFc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=w68NOB56; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="w68NOB56" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-74264d1832eso6388345b3a.0 for ; Mon, 21 Jul 2025 20:15:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154131; x=1753758931; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=SzDB3T8h1PmSiiQR5aHwi6QPgnFacs+893qWZ0jSQcw=; b=w68NOB566VukxOWmJF0Pvk2Jk4tg53iQuicIbSOlTmnnA9g9vsHMT5mtOVGHYgARWV n/PVjc8FCHCHiXOe+Ia/HyZR0CrrZuJ22yB7CfRDasHQrcdpvyMr8h3/3ODHATCR1Vh/ KhH+ymfgvsArx39lh5py7NyoU6LBP4TbCW6xU7+nvw3eokG6VGH4HXVamFbsGlhWRvY4 bRFx/o5HZX5xOb6bEovDb4B/iISdOu1khf4oefHeVu7CBOgqVpAVD+VnAmIAjmaImXiS jg4+krkupDVfNYmaaq2f6lrxmfPO+RRAyIINoAyPxa2+aoRXEbufOS+LD3bUwEV/uPDB rJdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154131; x=1753758931; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SzDB3T8h1PmSiiQR5aHwi6QPgnFacs+893qWZ0jSQcw=; b=MSJRG+rh85FJ98+AfjykWAOcUHTqwwSMjFRoedQ7n7gdUyQxb5yzT2f0oM0pO4CTjs egjZqfAUyVt+s76We8GKRvjdxcqbYaY7p9qaI2ZjzdWvda5tHqps8mAxgmpOU3yEMSni avy2JU26t1sLBKr+aG185a+r+2glHxbWGZSrX2nPsb1jFmzv4iFGgVQA+rpYu/la4xbo Tvf7Zt3rzr0HIv2+Hx16V/DtybR2xYrCpMXtujrMlIZqx03CmVg6OUg7TEfuIsNsVIBr nWzvhUypmvVTcTyuHVfU5psXFXvUCuBmlJW5C9VC2uG0efRfjpTzDFzzxeEgHOO/7LCa jijQ== X-Forwarded-Encrypted: i=1; AJvYcCUJssFXrf+KYlTuyUUvC2aYN8X9FR96g43nxtjmIMKLQ8K1WgrE5qhu57Sx1DsSR5zJl9N5ulVcLCRvSUI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4cMTlM+VXk8i63Wu3/cebVlHvMf7RVZ2jneYaanp1LNvBaVQu Zpps84PSkJcrvVsWK9oGWxvHFm0hM/MVV5MvFJd2o8TrG+QHx7bNllKOdfEnvvztQus= X-Gm-Gg: ASbGncvNRpi9wK3KcZY+W1aARXERy8cEtNIxKAKO1LQku8edpZmAAtqTahoIFZ58MYm +OXF2he7zP7UZug36XAYAlgE4ImHp6jM6RylHTL0Gy574/P8cu+5/WPTcP42WqJAx257oR7Aiwb F1qfHYcS6IW5jDrhmqoZe18AltoIWqahNWbSu1htRKTwboDIV4fJOC+gInHfhgwj5FaS0JrX5Qh UUHcwzAIpKlJjY7uX1g2yQduZF0GFmx3B6pp+UOaU95XU8nbsdTsVCjhy8Ik0pq1Xmt3fwij3q4 6i0wNJpEc1JA0wkcfL4VaYgH8EJwPViP6i364iAdAurdF529snSZfioXBbTdLyKWa69AUn0anyI 7LZ1Oomv7w4yjyVhLDftxgSwVY5o3p40d+go= X-Google-Smtp-Source: AGHT+IFIrVKrPK9UdCTELOyVWNX8T+lBXipMNBQiQT8fVWHbL9rvRg5zysIp/cvj2jz89NoBA/hgbQ== X-Received: by 2002:a05:6a21:2d4a:b0:215:efe1:a680 with SMTP id adf61e73a8af0-2381143ed4emr32571364637.16.1753154131380; Mon, 21 Jul 2025 20:15:31 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:31 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:22 -0700 Subject: [PATCH v4 6/9] KVM: Add a helper function to validate vcpu gpa range Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-6-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 The arch specific code may need to validate a gpa range if it is a shared memory between the host and the guest. Currently, there are few places where it is used in RISC-V implementation. Given the nature of the function it may be used for other architectures. Hence, a common helper function is added. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- include/linux/kvm_host.h | 2 ++ virt/kvm/kvm_main.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 3bde4fb5c6aa..9532da14b451 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -1387,6 +1387,8 @@ static inline int kvm_vcpu_map_readonly(struct kvm_vc= pu *vcpu, gpa_t gpa, =20 unsigned long kvm_vcpu_gfn_to_hva(struct kvm_vcpu *vcpu, gfn_t gfn); unsigned long kvm_vcpu_gfn_to_hva_prot(struct kvm_vcpu *vcpu, gfn_t gfn, b= ool *writable); +int kvm_vcpu_validate_gpa_range(struct kvm_vcpu *vcpu, gpa_t gpa, unsigned= long len, + bool write_access); int kvm_vcpu_read_guest_page(struct kvm_vcpu *vcpu, gfn_t gfn, void *data,= int offset, int len); int kvm_vcpu_read_guest_atomic(struct kvm_vcpu *vcpu, gpa_t gpa, void *dat= a, diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 222f0e894a0c..11bb5c24ed0d 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -3361,6 +3361,27 @@ int kvm_vcpu_write_guest(struct kvm_vcpu *vcpu, gpa_= t gpa, const void *data, } EXPORT_SYMBOL_GPL(kvm_vcpu_write_guest); =20 +int kvm_vcpu_validate_gpa_range(struct kvm_vcpu *vcpu, gpa_t gpa, unsigned= long len, + bool write_access) +{ + unsigned long hva; + int offset =3D offset_in_page(gpa); + gfn_t gfn =3D gpa >> PAGE_SHIFT; + int seg; + bool writable =3D false; + + while ((seg =3D next_segment(len, offset)) !=3D 0) { + hva =3D kvm_vcpu_gfn_to_hva_prot(vcpu, gfn, &writable); + if (kvm_is_error_hva(hva) || (writable ^ write_access)) + return -EPERM; + offset =3D 0; + len -=3D seg; + ++gfn; + } + return 0; +} +EXPORT_SYMBOL_GPL(kvm_vcpu_validate_gpa_range); + static int __kvm_gfn_to_hva_cache_init(struct kvm_memslots *slots, struct gfn_to_hva_cache *ghc, gpa_t gpa, unsigned long len) --=20 2.43.0 From nobody Mon Oct 6 12:06:36 2025 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D69A228D8DA for ; Tue, 22 Jul 2025 03:15:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154134; cv=none; b=Q9zK3GG9dHTPv5SFev15CptxkL7dm1gJ+ySAs0KBEHvHIdUeLPUXiz80TbZ0yLr3Z/sqFJZDxl+ne6mBisYLpUtrxof6RC7Dz8vdw/QippEK+15Lxqex+pUeiLyfvpr2pd54Ajbdqh353datHijN/Nb5x4brUOBGmPXdW5fZpXo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154134; c=relaxed/simple; bh=n7ot1ZDrapxOuuoKWAWNChBQRBahYk/5sPYJuIjMo04=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hm+pznMwA6vIE9a6R/iTex0OnZ2mfHWRs3Ku8/A3HuxS7963NG1O4j77zIZCoNffSMzvabnmDLXyN9CX4K9S3IGZ05100OLyXTq0tJNqq7kQ/Bq8FiUkuaG21/9BkUOW1S6Iti5HjBh0KU5KWR4ajLefMmflmUxfiYirweeOHPk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=AXDuL73Q; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="AXDuL73Q" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-7494999de5cso3396617b3a.3 for ; Mon, 21 Jul 2025 20:15:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154132; x=1753758932; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=jhkogpIzLqmuw+J4yXbDtFu/+vtMV2ME5+zsyZigSm8=; b=AXDuL73Qib4HNSK8RzQZ0ZiMvr6QRbQKaeVj1FN4dJdKasgawDFqmRcD6bC0jucWEF XM4TO2wzXWsG41JCZUx3ycSLKhb+eNY8tjO4UPkPONtphjY40y7Nv1sJp/nhpYigNJ/g VqD9Hq+0QAwQ8iVG861hVSX8hralGkNEYMAr8bxWEerGRhiC6NU7Fa4qGCSbn3vMaDUd RisE050OpjHOxTaaGS86mAMpMZlkjRwktFW3VuSgF7oEVVa5d/rY4i+AMMmwg21KFFQd 6Gyl/wt967+fC3cR2RWWCQjYOSwbPAO/Egu9Do7uwvatUG6N6GNs9cgkZuZsE5vkgpkm 3b3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154132; x=1753758932; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jhkogpIzLqmuw+J4yXbDtFu/+vtMV2ME5+zsyZigSm8=; b=YFAX5qFePiVS7+rfELxQh9ZhxdKeh13nikVnFzHcDz3wIOHp6kj329nW9iQ1Q8FOqE VUae+lAoCANMZSHbRKlvNBBhovfYjn/XKnYE9w9Q1et7FyMtDW9rdf5LLixTtYyOrRJT 943JOgxzNTVRwHsj/i4/Ocw4ldrfWyeruLWCAdXUhUqAqJwn2ncGEm9ReNW4IEwTbCzB 2F6MvLzO8kAWO6liwZEJsJIESylPkaxQbFhFuii71rB2ufQtelzgH0FpXxo7Q6L0Gv/q ULvef4igvesiquRxPaxBi4FeDCkILL0IBn+jKqeh9d8IA8VS4bLt+QR9tM26OpJnE4Bi 9CzQ== X-Forwarded-Encrypted: i=1; AJvYcCWBkjaTnxA6zkCHZm3+2YlOYqkgq1qdckqi6Rgjq1o4JeeL07qZD4gIlHeTxdzlJgmjXylqynqC9TuxwYk=@vger.kernel.org X-Gm-Message-State: AOJu0YzbOdeilsZ8oGQeSnbp0ji19eH0c5J0F/uHutxjhQ3QQZXzu0Ol 7D05nmaO2O6vkc3lFl0NAbTcxeY3olUBh77Y89f7XM+2pbz5/WHwGDPqBK7NftcKbqs= X-Gm-Gg: ASbGnculHyhaM9r4crXCV981EVfyGHgdNxfYkH2AAB9PZgw2nOhJq7ZJJQJ5pnryAUQ lLj1S41AbFF+UGzacmogOSo+wtW+L1ZX7O4Q043+YRQtrbrp8+4Sw/ciLQ7vBEMR4cP5MymjMM+ Uq9n+969+zvJC2UyTKUtimmfxITlr0W8IgtlZ/2H/ln0onY55Aon6GoV0Q+LRYydAdAYTc8wWs6 o+hQqf+iAgJ+j25J75uvmgLCT+emwwfK9O+FvFEDZirlASgRNYpX9ZN//iIbh21iPNJZw48ovDt zFnYIMPpZrsKNKMXKKH4M9Ur6HpP6UeewOawXkG9KeMA6d/KzVazZTeMkFiZNdGzSsrnVX0dd47 XnQLeohrC2h3TFtizXqB/95eIR1MfjiHHRgnfgQOpF/HrrQ== X-Google-Smtp-Source: AGHT+IFymBDNRC6n0aOx6RiDMH5WWpmPfPiOTR2NPfmMJh6ymjUAaxXLpsltj/PI9MkAWHdOyBXsLA== X-Received: by 2002:a05:6a20:7d8b:b0:220:5c12:efa3 with SMTP id adf61e73a8af0-237d89607dcmr37332092637.38.1753154132341; Mon, 21 Jul 2025 20:15:32 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:32 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:23 -0700 Subject: [PATCH v4 7/9] RISC-V: KVM: Use the new gpa range validate helper function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-7-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 Remove the duplicate code and use the new helper function to validate the shared memory gpa address. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- arch/riscv/kvm/vcpu_pmu.c | 5 +---- arch/riscv/kvm/vcpu_sbi_sta.c | 6 ++---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c index 15d71a7b75ba..163bd4403fd0 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -409,8 +409,6 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vc= pu *vcpu, unsigned long s int snapshot_area_size =3D sizeof(struct riscv_pmu_snapshot_data); int sbiret =3D 0; gpa_t saddr; - unsigned long hva; - bool writable; =20 if (!kvpmu || flags) { sbiret =3D SBI_ERR_INVALID_PARAM; @@ -432,8 +430,7 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vc= pu *vcpu, unsigned long s goto out; } =20 - hva =3D kvm_vcpu_gfn_to_hva_prot(vcpu, saddr >> PAGE_SHIFT, &writable); - if (kvm_is_error_hva(hva) || !writable) { + if (kvm_vcpu_validate_gpa_range(vcpu, saddr, PAGE_SIZE, true)) { sbiret =3D SBI_ERR_INVALID_ADDRESS; goto out; } diff --git a/arch/riscv/kvm/vcpu_sbi_sta.c b/arch/riscv/kvm/vcpu_sbi_sta.c index 5f35427114c1..67dfb613df6a 100644 --- a/arch/riscv/kvm/vcpu_sbi_sta.c +++ b/arch/riscv/kvm/vcpu_sbi_sta.c @@ -85,8 +85,6 @@ static int kvm_sbi_sta_steal_time_set_shmem(struct kvm_vc= pu *vcpu) unsigned long shmem_phys_hi =3D cp->a1; u32 flags =3D cp->a2; struct sbi_sta_struct zero_sta =3D {0}; - unsigned long hva; - bool writable; gpa_t shmem; int ret; =20 @@ -111,8 +109,8 @@ static int kvm_sbi_sta_steal_time_set_shmem(struct kvm_= vcpu *vcpu) return SBI_ERR_INVALID_ADDRESS; } =20 - hva =3D kvm_vcpu_gfn_to_hva_prot(vcpu, shmem >> PAGE_SHIFT, &writable); - if (kvm_is_error_hva(hva) || !writable) + /* The spec requires the shmem to be 64-byte aligned. */ + if (kvm_vcpu_validate_gpa_range(vcpu, shmem, 64, true)) return SBI_ERR_INVALID_ADDRESS; =20 ret =3D kvm_vcpu_write_guest(vcpu, shmem, &zero_sta, sizeof(zero_sta)); --=20 2.43.0 From nobody Mon Oct 6 12:06:36 2025 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1710F28D83B for ; Tue, 22 Jul 2025 03:15:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154135; cv=none; b=s4WCN+YTLvhcX28geVlAdsLiqXdw9mZHKOKo9jPJyjI3NGhLAAMVHRPKi1sSnzZv6KuQBqRD7tOgN9ka7JzY+EwtQliHuO9I6iZncLfvEQq82QuBsV0gTFMwAog9e8rJlNTsPNT7Ij12WKAN3Xcqmz/ep3D3dalVOkJz2iVdn0c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154135; c=relaxed/simple; bh=v6S2VfqVeBS/FwUN3sX2qA4Qo7NlLhImwGJEW5/a4E0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fDVCg2i7v8zhY1cWHYHx1/EjAgS8sKIOr1g5krpRMnZFZHLwG081XUPI9ZbD3fp3aHuqd0a4rCFyWbGqCgpJIkVnDRcYdvQbY63Ln+3Uz8WRGbcpEuUfWcR7nZWgQ5/D+ffCSlvgUrGNfncS05Rd+RCyjMwn/jxK+7Hi2OnufGU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=d4XR+Knt; arc=none smtp.client-ip=209.85.215.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="d4XR+Knt" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-b34a6d0c9a3so5083032a12.3 for ; Mon, 21 Jul 2025 20:15:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154133; x=1753758933; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LNWjjR5K8ESMPCBOjPDxpC1mFayqfXlLuYgjg0J+sww=; b=d4XR+KntSRpcYufPzmPlupfpv3Z+VpHNkfjScMcXIqgxFSIgbGTW3zqnn5IcCYBIm1 viXyr+5f3neVFNgKmDCEN3ZEInHbeeSHQD2eCyqT9zmPIx16f9pPLfmK5BvWmqm5vq1J ifT9dKI1WdR2UZrW+Y9X9TLM/EUghDocnzx2o9bl9+s9/VwPb4jJKZajsUSwwvhxOXmy 64SX7KXTESBTa0QtkoYk2q/OBSJ/5kK22srHi56COTiyEpgqQg3CvXPjGyDDmcD+sYlW 2N2abu7P3a+T1sC39F3iTWuryHXDEzr4gGofJ0tr6THbQ2ppxeB2rtci0W46+F7qIrAn U48g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154133; x=1753758933; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LNWjjR5K8ESMPCBOjPDxpC1mFayqfXlLuYgjg0J+sww=; b=w4W7xIheHg4hw3+fCl9m8EhqZoIR/e/v/HdDZIFeGfXHnaWnglhkBrHQRcs4xaXMGs c0tR9sEAyrJhTTFAdA2LD6z+By6MiMq2HyLPdynsUW2HvBp57fsYAopqqB9+XtcSYDKI rlr21L8Tjcv8lYbffNKBMvgrXLY/EnryKvEkBBrWq9QlgF+2AUgEtPOiKP9jzYlrWOzd wwq/Zu1TCMN3Bez4MdXMcPxXlMndri+6vCWgnnWYnp43Vvcq4RRM1lc6eT8miFsbsoch epfQOg1b1DMiRNCQloTV6b/uVYQj//kfwsCcCNbLToA7d4BcfDQKBFTP/SZjHg2HcLjk ZoLg== X-Forwarded-Encrypted: i=1; AJvYcCW1B3H/fg9eIHjcSNCZJfXBW+iySYX9G89PmdPVpctsYpdhaA39w88/mQXhaA3NrErhUzJV9mpENjiP970=@vger.kernel.org X-Gm-Message-State: AOJu0Ywcv60PMiI0Goa1w95hsOigUpRTczYcFlk0ap5J2N0K812YaJ/0 pByl2OC+Z5wjj5Sh33G4Dg3PGRnH5bmD/+kGLYEvVUXYj75HOOZCocATYr5vF1BFZds= X-Gm-Gg: ASbGncvhYJq4qn9ILEBVbP2rBRIz23vYAfRsuxM4WG4+C8tAzOkrkIwlXombWeddFLf IamsP0XLgYV5cKeiiHdr97U70dCnO4I7XUlaTLRzC8AjCRY7G2Sq4Hty6Lqjq2yAwMYsSY2fvTG XzbpJJhg6CLf+Ma0cr8zhvge5WSnW8ytTb36tzKIZPJh8mOE8oJlZzZeX2SlCZ8YYGxX+qDs6SB h/nDEZnm9szuQ0U10BuruV6nyU6bOP+1HGrueAuBIw+CstJYnAtbTqSz7gkTE0stc+8j7tUw+qd RUw4lMjANZrqXV7azut1ilOYCCdZ3H/Wd+wNfPXTLIIgiJLpMosxlP4uAinZMB1KqwJgE8TTT56 QNjdGAi00TugkRbWbRFt8FYGHhnADWPHF398= X-Google-Smtp-Source: AGHT+IFlRcqyUqzUESij9IbKtqtTK+LGpo7DYk//VPdyGweTn0oqQsSsmoM0vc3xGcaHFEJntaSgwQ== X-Received: by 2002:a17:90b:2650:b0:311:baa0:89ce with SMTP id 98e67ed59e1d1-31c9f3fc33bmr32891641a91.12.1753154133418; Mon, 21 Jul 2025 20:15:33 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:33 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:24 -0700 Subject: [PATCH v4 8/9] RISC-V: KVM: Implement get event info function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-8-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 The new get_event_info funciton allows the guest to query the presence of multiple events with single SBI call. Currently, the perf driver in linux guest invokes it for all the standard SBI PMU events. Support the SBI function implementation in KVM as well. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- arch/riscv/include/asm/kvm_vcpu_pmu.h | 3 ++ arch/riscv/kvm/vcpu_pmu.c | 66 +++++++++++++++++++++++++++++++= ++++ arch/riscv/kvm/vcpu_sbi_pmu.c | 3 ++ 3 files changed, 72 insertions(+) diff --git a/arch/riscv/include/asm/kvm_vcpu_pmu.h b/arch/riscv/include/asm= /kvm_vcpu_pmu.h index 1d85b6617508..9a930afc8f57 100644 --- a/arch/riscv/include/asm/kvm_vcpu_pmu.h +++ b/arch/riscv/include/asm/kvm_vcpu_pmu.h @@ -98,6 +98,9 @@ void kvm_riscv_vcpu_pmu_init(struct kvm_vcpu *vcpu); int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned = long saddr_low, unsigned long saddr_high, unsigned long flags, struct kvm_vcpu_sbi_return *retdata); +int kvm_riscv_vcpu_pmu_event_info(struct kvm_vcpu *vcpu, unsigned long sad= dr_low, + unsigned long saddr_high, unsigned long num_events, + unsigned long flags, struct kvm_vcpu_sbi_return *retdata); void kvm_riscv_vcpu_pmu_deinit(struct kvm_vcpu *vcpu); void kvm_riscv_vcpu_pmu_reset(struct kvm_vcpu *vcpu); =20 diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c index 163bd4403fd0..70a6bdfc42f5 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -453,6 +453,72 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_v= cpu *vcpu, unsigned long s return 0; } =20 +int kvm_riscv_vcpu_pmu_event_info(struct kvm_vcpu *vcpu, unsigned long sad= dr_low, + unsigned long saddr_high, unsigned long num_events, + unsigned long flags, struct kvm_vcpu_sbi_return *retdata) +{ + struct riscv_pmu_event_info *einfo; + int shmem_size =3D num_events * sizeof(*einfo); + gpa_t shmem; + u32 eidx, etype; + u64 econfig; + int ret; + + if (flags !=3D 0 || (saddr_low & (SZ_16 - 1))) { + ret =3D SBI_ERR_INVALID_PARAM; + goto out; + } + + shmem =3D saddr_low; + if (saddr_high !=3D 0) { + if (IS_ENABLED(CONFIG_32BIT)) { + shmem |=3D ((gpa_t)saddr_high << 32); + } else { + ret =3D SBI_ERR_INVALID_ADDRESS; + goto out; + } + } + + if (kvm_vcpu_validate_gpa_range(vcpu, shmem, shmem_size, true)) { + ret =3D SBI_ERR_INVALID_ADDRESS; + goto out; + } + + einfo =3D kzalloc(shmem_size, GFP_KERNEL); + if (!einfo) + return -ENOMEM; + + ret =3D kvm_vcpu_read_guest(vcpu, shmem, einfo, shmem_size); + if (ret) { + ret =3D SBI_ERR_FAILURE; + goto free_mem; + } + + for (int i =3D 0; i < num_events; i++) { + eidx =3D einfo[i].event_idx; + etype =3D kvm_pmu_get_perf_event_type(eidx); + econfig =3D kvm_pmu_get_perf_event_config(eidx, einfo[i].event_data); + ret =3D riscv_pmu_get_event_info(etype, econfig, NULL); + if (ret > 0) + einfo[i].output =3D 1; + else + einfo[i].output =3D 0; + } + + kvm_vcpu_write_guest(vcpu, shmem, einfo, shmem_size); + if (ret) { + ret =3D SBI_ERR_FAILURE; + goto free_mem; + } + +free_mem: + kfree(einfo); +out: + retdata->err_val =3D ret; + + return 0; +} + int kvm_riscv_vcpu_pmu_num_ctrs(struct kvm_vcpu *vcpu, struct kvm_vcpu_sbi_return *retdata) { diff --git a/arch/riscv/kvm/vcpu_sbi_pmu.c b/arch/riscv/kvm/vcpu_sbi_pmu.c index e4be34e03e83..a020d979d179 100644 --- a/arch/riscv/kvm/vcpu_sbi_pmu.c +++ b/arch/riscv/kvm/vcpu_sbi_pmu.c @@ -73,6 +73,9 @@ static int kvm_sbi_ext_pmu_handler(struct kvm_vcpu *vcpu,= struct kvm_run *run, case SBI_EXT_PMU_SNAPSHOT_SET_SHMEM: ret =3D kvm_riscv_vcpu_pmu_snapshot_set_shmem(vcpu, cp->a0, cp->a1, cp->= a2, retdata); break; + case SBI_EXT_PMU_EVENT_GET_INFO: + ret =3D kvm_riscv_vcpu_pmu_event_info(vcpu, cp->a0, cp->a1, cp->a2, cp->= a3, retdata); + break; default: retdata->err_val =3D SBI_ERR_NOT_SUPPORTED; } --=20 2.43.0 From nobody Mon Oct 6 12:06:36 2025 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29D16C148 for ; Tue, 22 Jul 2025 03:15:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154136; cv=none; b=F4L4UThVL+MRkhXV+pw2ljTGkGBS1oc2iA5N6oA1Cbj2vCNZSEJfVS1Yww+AvBwo09x91dF5YiMAGCxNhNLvKjJ0zLpSK7n+z4nzWY97ofaWoTgfYb3Pvjs37t5yoUa3xoNDYVtyAJkUrVVT98MQ0Sm5VPZEw6w/QhRRGKEMZtw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753154136; c=relaxed/simple; bh=yUjOZkjnGhxBQWWEVekYL2PE2feGCddt+D8s2xN7xzU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y5CDgkdI2M6ctgwK2jH0NLVFiiTeGQHBYUamTZ81twPLhmXqfj4iXx/WtFuKNbP4aFB8pf1L7HmrHXELhKkGa6uQdeUqCDqbKcBrSqM7AbN2kGU2BQVjmSNdnZZcN1YrVIFvKzXL+hqoESI74+b93PVx5HkOvjBr/GNGpq5hsws= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=vghvxWC+; arc=none smtp.client-ip=209.85.215.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="vghvxWC+" Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-b3bdab4bf19so3760943a12.2 for ; Mon, 21 Jul 2025 20:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753154134; x=1753758934; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=IczIPc9KHJgwzJvoZ8OSDmYG0jZ0892D1g8bhwKC07A=; b=vghvxWC+freSDWe8HHFq0EL0qC+AnK+5+5rhhVhu1BHa4ViE6WsnSYikp26q7e0XLp 2YvSBfJq5ZG2jq1SCsZv2LWeMqLvT0HigSAyAy0Opb5PGI1+EJo5x6JET5kLm/J90Nzg zeeTvqdXZxvamLvsstHgBYmTWOX6DysnAMjxERhS7t40O73GhlUXjuaK+GT2iMVXbI5V 7tKS67xlOLBEY2fGSgw6pEMGloSIlSgS4SYTrmc9DGXHevtbD4EJbl2SbzhKxELsF6Gu Y4I3wlkkDpOLRmPBs+B8hgKW92lvNly2mb/mzITzpJdH87H0nK0jL5SZJXv7WaqTU88J godw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753154134; x=1753758934; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IczIPc9KHJgwzJvoZ8OSDmYG0jZ0892D1g8bhwKC07A=; b=oEs5DVYEMLICTsK8J8vFeuxv1vZlMODh7kbfjwiuGWW14rAOoPU8mpMykpwQadY5Tr XUcyWuRu/NH9Rbwaa7HqNjxA5pIaWnHy9mzglw8UUUg6Hpt08zvscS5UYDBhprCGXKav DqFkZ09pmxBjuFDZ5Q1thfuWQydJyVGrpkTjRAyFxFtYHCGZteNuJ8bBINdh+MoExXf8 9MR0/eKqKl+QNNL8SCSV7eDSe2qF65/gUMDp7Hxu1WVJZClQ+fnvuqpdnMjhxeuV6VUz 7TfX3cQui5LhzVpU18IY36NqjEuqGxxh3UQZlDwnzIODDzS/PKisk6jD2fqVLWwijjC2 RyPw== X-Forwarded-Encrypted: i=1; AJvYcCWYY4xPABo7eCbTi57An58Ps19A1uBJKcRS3B/PMAn2RvzxQHnC9gtfEznOhTOVNoTTdN7DNvfCQnA96gY=@vger.kernel.org X-Gm-Message-State: AOJu0YwUSmG1zWkXot+wt1vLJnn1sK4lU//lHWROdYtIcuxcRN0LBVkv GRDMjOOsGo4a2nUqFMmgMYWnHD0i0SEBPktAobcx392ksPGqwwvCoANjTTuERa6KFmI= X-Gm-Gg: ASbGncsxVb8copCq4itbk3VJhBuGiohw9TLX6vcmeiKwjaxtaHLggKeItPuuZWgxOFc tiIUJHaapZQc0QX4wzxMWSnWpc1WYrz1M7ak7OCxWhExovLYqlmXrfwRKaVxPBeQxWe1mg4x/CQ dFmhMBa6a7c/ddVOz0txAmLg09x8/evO5kiQdI+dWXDxEfAEJ0nXUxuAw484hgKKGL6soyM3FDX DlME41ZjiEIpVdiQD7Qdzt+9ag4NLBDGVSqVygbB0hT+f90xdSUE8dUE7dyFE9R3gEEnfeoMFq8 E0jW/o8S/4xc0KhiOXxf9S/5/MedW41SfmnjquZd4FTb7bg9LDcbEQTT0iAQBwPozXqMzeL7K0o 3ezr1zUm4HnDTK84yXOWRdj6+d49eIgjs7XU= X-Google-Smtp-Source: AGHT+IH3k/+gjr1r10wY69nF/zLNtmLpBdy2psVbdr40RupdADuqBFyStTW2VIXjsnxPyVZeQF0kHg== X-Received: by 2002:a17:90b:1646:b0:2fe:85f0:e115 with SMTP id 98e67ed59e1d1-31c9e77cfe5mr28771702a91.26.1753154134478; Mon, 21 Jul 2025 20:15:34 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b3f2feac065sm6027612a12.33.2025.07.21.20.15.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 20:15:34 -0700 (PDT) From: Atish Patra Date: Mon, 21 Jul 2025 20:15:25 -0700 Subject: [PATCH v4 9/9] RISC-V: KVM: Upgrade the supported SBI version to 3.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250721-pmu_event_info-v4-9-ac76758a4269@rivosinc.com> References: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> In-Reply-To: <20250721-pmu_event_info-v4-0-ac76758a4269@rivosinc.com> To: Anup Patel , Will Deacon , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Mayuresh Chitale Cc: linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Atish Patra X-Mailer: b4 0.15-dev-42535 Upgrade the SBI version to v3.0 so that corresponding features can be enabled in the guest. Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- arch/riscv/include/asm/kvm_vcpu_sbi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/include/asm/kvm_vcpu_sbi.h b/arch/riscv/include/asm= /kvm_vcpu_sbi.h index 439ab2b3534f..03fd350ce7d1 100644 --- a/arch/riscv/include/asm/kvm_vcpu_sbi.h +++ b/arch/riscv/include/asm/kvm_vcpu_sbi.h @@ -11,7 +11,7 @@ =20 #define KVM_SBI_IMPID 3 =20 -#define KVM_SBI_VERSION_MAJOR 2 +#define KVM_SBI_VERSION_MAJOR 3 #define KVM_SBI_VERSION_MINOR 0 =20 enum kvm_riscv_sbi_ext_status { --=20 2.43.0