From nobody Fri Oct 3 14:29:02 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 344D42EB85D for ; Fri, 29 Aug 2025 14:41:10 +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=1756478471; cv=none; b=Fg/A5I3N5jTmFg+8tbXbDCS7Fe6Thlb0yTMU/TbJz6QzBy4C9QJ73Vz43lHvEfsnagEk23Rfvi53aHs5PW0bnWtd1Uki4JIlhdSuIKwkp5B2GnmLLSiW0QcT04cbq/PRToWP+9D6ruWjH1P+ke7xStEBDkwFJg6II6J0NoNDLC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478471; c=relaxed/simple; bh=m2E8W7DiSx6Ltrasj+rnR9WEkMr09MKsEoyxo0F+Klg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tkzt3GGDPRK/xNjlzysHqc/frzuK40HJfUlsjVtp8wPAEF7jWGwJtXYY281d3sjzPIWTWaEVAgkbQ0aV/q1GDKb4h4sAbdbPkOK2AmwYyZ+R0+7CVTtemDaoWiKKzxfqKIQDiJzR954n1jwi+nd8t/iCLlaI7/zo7A1DWGDsacM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=J2lZAwMe; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="J2lZAwMe" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-7718408baf7so2109323b3a.3 for ; Fri, 29 Aug 2025 07:41:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478469; x=1757083269; 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=J2lZAwMeDRUl811hv53I23QJWBwz6961FQgBLeHdvbDBDomJSn6qLvLAr9tjlsJHL5 QTFsj8vcPQN54Xo77LNRt2OX8/JDqvGA58ObrM4yKhxGWx5fkkj6RlwrtL0UOcbGPMQ1 gUqv5/gGVqoTdOIZ4pGIwHfRo6aDYtvJLfrfNngIcRAGpAzpFiKajHYjZkkO5Umm29qb hTiT9Bpga7IfE2H48Jzw7BSWbDc6dzDFOyWd0BEZdzRTP2Gx3DMiEKPAMZQG8AF1BXll ypbVG2Kq/lQ35pxybndDazJ+SmDPbdH4fER1INxceVoHTEf7ltYuHZtuBss7s8FoTS3Y 0upg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478469; x=1757083269; 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=Hrjlj3Dd3OXMrnftYKV//PMP5VlE7mNfpOIB918x9gCov/7wIzLzeum0JukAcMglV5 iSYXBJ+ZQV1qD8S4lHwuZd5y+gLa07mj69ThyBut+pbM8H1vZIXa3mRDd08wG+4Lt8RT isQXn0Dv9JydijwFS8aS84zybaC5L8TQlXPTMeQDGEZ7Ixoprrf/X/75PpDjmUa8Nawo mdk3fyhEVPi9RYglR7mIE/oQ2Q4Q3ZMYc9RJmw6iwuAf+fvU9/JmYOkMP+B+UH+2dQlp 1PfJ+v2TrQZtZtC+niu9HxZ7hbDvgHE2szztwKuoNIrA+rD2U5w9Y0ZxEYBnUXATe7VN v+bA== X-Forwarded-Encrypted: i=1; AJvYcCXCZNddMB89fXdi7iz34UY0XmX6C0cjQqmAF7tIA253yHx6MPxhGkzOlgQoKQbxE4Y0+Zjzzc9HDRh7MxI=@vger.kernel.org X-Gm-Message-State: AOJu0YxWdu44WXbqulahHh77wx3z1XEmByqILZrJuXzgjNtnuxoT0vdl 1aymbQVfDr9TR9LjbsDXluCBbOSfm/skHp3voFlqlDRw1XWui56nucfqEo6rl7j1hfo= X-Gm-Gg: ASbGnct3wQfMNlK3hfP5Wwy92VsRpRcXkQBbKiblJ4xscNIMKTUf7i56iMLnWflRtVZ PlAD7HUESwAUJh+BHQbGRaQnmoDVdSKcueUlsVCn6zVeUWWDBNuUQBWD4j3UVVqPhMH8GTVnILl YzAeE8x8QjiPIHQKDlYzmDJIug6UHXPWJUVCMH5RsyaCER0OB+gYzn1UXvzIR+82eWtXdCo17vP IvWMwQJB41Q8PdlZaRpKqLT5LsfivjkxYPyOddh9KdurY7J10QaKiVAtwJCaAy9RSmzqycufT97 4JwikD/DvACQvwg6kUy96uf9p6DBQBcHYgJYCZc337TwasZQGMmCYor5qaUdICr2IWr4LZnsFJa Ahh/0zPRhL9DQUx1QzKs6jMYe5Hv4K83sWws= X-Google-Smtp-Source: AGHT+IEyDQaVO7hw6M+jmWcVL/199fQHjMH7i3C/32jO0Trqcu+fqIoi/CB4Tct+03RcyOTn/ZKedg== X-Received: by 2002:a05:6a00:2306:b0:76b:e868:eedd with SMTP id d2e1a72fcca58-7702fc059c7mr38073588b3a.24.1756478469428; Fri, 29 Aug 2025 07:41:09 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:09 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:02 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-1-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 Fri Oct 3 14:29:02 2025 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (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 2D135314A91 for ; Fri, 29 Aug 2025 14:41:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478472; cv=none; b=Dr+UT6gpTPyqllL+2wS6H+PaENZZKdHeyRF4m81grmkcFVziuzCIrPUC88TppBGAzIgSraewPbHF8sEGjE7RSdoQEWN3GYB5ZO6cIn0RbjSCoOPdCw4gts5LO4LOJQqfwzS8czq5tdCqpP5agSXziX3nYHsF76UAYQcnQkeEpVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478472; c=relaxed/simple; bh=5a42n+9lUYW8j8nzv38kypGGaOUyfv0cna4E1TQCaGY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hOaBBY6BDAbNOkqx4cXSIvIMa2VFgVgpjXX3BFcoeD3R6FFDVEzNTWHODR+Vh4EPVpmdWTpHNq6bq9VzmblZp34EC8KssKefm3UQz/4OAGXGQ1EtSfko7Kn/3HVp0yE/ie4AYKXjQzNXa92ZJ+00fQIHKAdN8Jv6Yh2ns7oIzJY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=LlHbSHF0; arc=none smtp.client-ip=209.85.210.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="LlHbSHF0" Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-772301f8a4cso712842b3a.3 for ; Fri, 29 Aug 2025 07:41:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478470; x=1757083270; 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=tI741R36HWDh2RhVHZyQphWWAJjaxVoQsq24GTtFdYc=; b=LlHbSHF0cBJquMcepqNY3+jppsv6CidYIcqxQz0r9YMPkBJ3wdim7gEVjfmGmOceVN JaFetMALYtbQ+3pzwd4M4D4cwI71yzShhUlRS5SooWrY0XM+Nxx8FtEwB0zmyiHYnl4u n60j+wVWRE/wPV30Dt7EG2kwbGU8gkE2A3ab1o1A/ZOx0+xst3N3obU02G0k4HCrYk+Y q4dhUhUFnXgwZdTk0WGHaJ7zL1ev6hwbDRvINEIKgghSH6V6eY52TyVks++B/qixAoh4 1HR8N/ac7BYD3jgaAgdWfpCg84iq9GkO0ZjQCHYElWb/KHhSczud9qIY+lDhcUcu/qgP miAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478470; x=1757083270; 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=tI741R36HWDh2RhVHZyQphWWAJjaxVoQsq24GTtFdYc=; b=NyOg6TC/ZG4klujoeYsxMb5eXimprMilftQg6iGSK+mr5EH1V8JhVOXLsG+LFnefaX TpR/JwZXcAim+Qe9254udhfioJhGEqrf7hfpABgKTFrm9/RI26U9IXEmAS7JkBZawpu2 7McGfX22hzkc+u3bBOYIDt077jMZzVhKK+MAk3ZAuq3Ds0k2SnL4g/k39dbnj7pVJdYD Ivx9c9k6Rdb0cuTBJBszvbb9rFhxmYkNBk1EQlJrq1KnRUQ4PFijUCSyLfjVwe/wpVfx 2Hdjg32QET7eXAL4HM8Poai1vf+bTAN7fufSqCD1nXzk3e0uTxVJQagGaEzh/3BX48Bt TH7Q== X-Forwarded-Encrypted: i=1; AJvYcCU1tSfKMi6oQpQG6l/QajDQLQAtkLf1/cqirsgR1SIFUJGgdPpWN9YCXqTBz9rvX1zNgIQvGSEtThPdovk=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6nSyKGivkPl5+fHfN/ETQgU8c+qD14UUbftRkR38HogPedYXP T355TX9ypijl0ZWUMx8rSSCFbJgYEM94PUel3jkLnmQlWrpuvfTHUV3SKRevx5WWM9I= X-Gm-Gg: ASbGncspsRcWl1zkgcdmVa6y30Zu09+q36MxYyu8JjIOkZgBLhjlwCC05LhY9saMkDJ +/zXUZIB17FHzwwOaRI+5mVUoMdgK+pseXXaXOd7u0IyQWU73cVGVNeDE6AKGYYuP7lHYEpJ2Cz PvidrxRLoN+jNJ9GtJ6b7Pxajl6FtnuZsdjELE7bXJEzfio+QBErSTkqi0gcwpZYEONTJgczcGh 4h0bw5PI+8yFHUYi7RporM9Bc5dIGVVz11IFdKvx4SvQPZe5k9nvYrYAv/vFkZuI2+/YmVG8gZf MLSFdmDq3mtp7EHpESqzXlxnk4kCErS0P78MdNPWXisFGvt5ozXwqPxr4QS/4FeHPSVlbv8yk/n BGuNScdb6ad65b/f4raakm/2o5r3D405m/3th7B6Iib58ig== X-Google-Smtp-Source: AGHT+IFF8VEo1uPvNaAIFv8C/+fiPXouMqAeY9Jx+FQMbKLtAKcRvd4Ch7pGF/LiqKMh1EOfkolHEw== X-Received: by 2002:a05:6a00:148e:b0:771:f4d4:24fa with SMTP id d2e1a72fcca58-771f4d4290bmr21272864b3a.18.1756478470351; Fri, 29 Aug 2025 07:41:10 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:10 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:03 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-2-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 5 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..7e984ab717c6 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: - /* Return error any bits [48-63] is set as it is not allowed by the sp= ec */ - if (!(config & ~RISCV_PMU_RAW_EVENT_MASK)) { + if (sbi_v3_available) { + /* Return error if any bits [56-63] is set as it is not allowed by the= spec */ + 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 if any bits [48-63] is set as it is not allowed by the= spec */ + } 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 Fri Oct 3 14:29:02 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 E136031CA76 for ; Fri, 29 Aug 2025 14:41:11 +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=1756478473; cv=none; b=X9iozJ6ahhmoRlB7zNEzS5ZD6coNf57prfBgWpOkZGl3yxtdrNv1rqs0nt11GMizYPAdrdhl/LA250m9Ar0351xV2znWLypWOXDNJAQCo1dY/wlurS1pRiqoWQSeI376mMwB/ZlgkAqvxhJcXAI2f4OWgskSLrwTR1rvyFkDOUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478473; c=relaxed/simple; bh=e7KhWyihGNeHQtmANrYGamMrWZjvNUfv+srLihtniBI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OrsDWjKJRrYmy1h9eSywnHqI/exyN0IE+J86lw6ylpFk0ww6IiLKkQaJV/lOFykOaTHoanRxtwLHiU7CpAwU6JdI9yiGWYAuvwTCprKqpXYzxIHU6RlQZAR2MuL6ASsY9m01k/gtf5pnQ8+/1mneXQayhtoUgZ4sPDFQ/lMnHCk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=EtK8PRuo; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="EtK8PRuo" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-771ed4a8124so2241977b3a.2 for ; Fri, 29 Aug 2025 07:41:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478471; x=1757083271; 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=EtK8PRuoWOe95IqWtOpL1KDEh2Pv3PO+5PrWMXKT/e+2YbjNsIRDwLBkgVQIxjvmzq 6WVDsFecW5MYzFjYAHag/p/IKLpCSnnCTNZ7vs/AfxVDUnnuJlcB42VhRWcflO3TfNDq VDBspTSvPpdaDfmpW0hyd9s6mw/zJ7Ulu5Tv987en4c0yRnSuLDgTQ9pFRLJXOjPPSKm k/mUUMT4AndDNwpO9TmKLQMAgl/bR2jcs1Lr+CeO259qwJ4RMqlTCqzVP+hcGwDjlZ+4 k0Rq9QXNBSzi9ohKZTY98Zbo15iK6jhsGDwbnLOYYvez9PCbTIk8LSVgP+1CPglTBiih XvOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478471; x=1757083271; 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=TC2PjmRiKPhVHUaqaoDFjC/LicfgGmt6vaBFl3IkrfweGRLP+mkCNsM3OLUXd/Xbwf jZkLOTmEIL+mrvp0sYErImAfG5dlUZxWcbz+2btrxSAqsFJjxKE3uW3Dv8bra/QehhsD ZIS76AN8+D4wenpJkUACemSh5FFM8mgvow/LNl/vatH2MnH768m3kr6ZQgui6MLbB45U HXXoHFS0IoLM0jJSypZqLtzWUQUmpmicDqf4Sg1Ysvka+KgQk1iT1DDBaPRkUQcdkwrN CZEqyVleZf539OnHiGqzoKLH/NFghG3HrlyU/bL3f2iczB8CWMfty1Pa9hDVXsXjjELe A3wQ== X-Forwarded-Encrypted: i=1; AJvYcCWtT6JkYsbqjK/sZA1CfqexSNMBMqTydGk0kC8vQynA5UGPs8ri2l0meqvPYUmmCjPGmNmTG066qx1uCDQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyeeCitXQoC7TZ765n0/Nr7N1ep6PVtzypYg7NDi2pDANnxiejX fNdkkn2dEzxVUcuqnBRDM2pt+JxLNUHx5hFMmR36MZYtC32KfZtIeSDDAb2FbqGGL4g1CRNh71Z 5+9TG X-Gm-Gg: ASbGncs/iO1MSJ3wP2plKyrEDY75cOPZQBsiK63gsO0o4i2S2LGO9baSTFIIID79kHT Y5vwswhTRAXqB+P1blDnBXWbtR6v2xrA69jnCESzNDyBhRVALMEL6nOnzzeQww6HRjEHOrtFYR8 TjF+NQiZfa2wOSIxItrzyi4Cj16WDC9noXYaSaoIwCBCSUt0xROi4UTh1wTn+i7fwt3Bg6F0dr2 8kGYtPwWopXucFv6XgB3YN2GwcIcG+AbqZeYqlRblWJeIFWDktoUuPlwIZLFSP2BwHCMd3VmGP3 tewddktLaK+8vugy6jDNNASTLcc7kBbSx+1Mq6M8yWJznXKIcFY7JgcsREdzMWMXWRbHZ6GNzh+ btqgA0Re+L9caw3a3Jj4e33pztJnOcJu4tXzprFbhe9WEs2nfLv1baBFE X-Google-Smtp-Source: AGHT+IEjIYlQyj5LF8L5OMDqDMzS8FXoLsXKsGZxQnXqTFQeAwVRK9v09HJ44UP8l3p9Cu40jXYhVg== X-Received: by 2002:a05:6a00:4f92:b0:772:38a9:4d98 with SMTP id d2e1a72fcca58-77238a950ebmr927358b3a.13.1756478471237; Fri, 29 Aug 2025 07:41:11 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:10 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:04 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-3-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 Fri Oct 3 14:29:02 2025 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.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 23AD9321F22 for ; Fri, 29 Aug 2025 14:41:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478475; cv=none; b=XXLRbGn0Fa8L9UL2Cyie4LJisq3zTgO/fvINLmxAc9D8RS8vq0GczaLCnNSoGegA18GSqytCAiEU5GM41+fXqLiGI1KQkAEFi7WZ3mbgR3KIdhPhh/8UigZVsooQsB465X6GoWrq8VnjW9bG7sdzlBZcO1FivLj/s1Vg2ZDNegQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478475; c=relaxed/simple; bh=MdulXEOUM7UKpN/Xgy+wJxXxlFoIIiYmV/qS25UDGvM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M+RtGGU7nGyObuSetMszborfEI34eMfpq4vXfI8ZWdMir0PbXz1K4xysW50exJ9LVK9Q3jDtGNMhWZWhKhNSeAmWK9XNAJ7/JoQV5wbtBKaa4NRb3hnfWRb573w3l9Pir6pdNtDhXad+m3iQTg4+uQPNGtA23wQtys8Dtf6RTkE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=NfZAxqw5; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="NfZAxqw5" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-772301f8ae2so551138b3a.0 for ; Fri, 29 Aug 2025 07:41:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478472; x=1757083272; 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=dxbAHn2gu8hPzgAv8AKJJWeRS0gDiHkMgaOyBvCoSlM=; b=NfZAxqw5Ckn9nmjBeNoVPmXgPi2paoprNMbdkJ+vJD36DuPyk3fx4+4KhzmKP538M7 tj0BHcdROamfUqXf8XC4u1eznOo+v+h5YLqr2ZmqZKSnQbdGDPJTfb9LSXF4oM9G1b54 tyUvu335hr+ywuelWTPZPjpWJ6aolOHOe4pvCVs4ZlYj/y4Uy5+ELGHG/cTjRRsNUiiC dsBdxN6wem8pthYfgRMC6RjHalcL9KjEy8U9QHDel/EsmrfketyqWLWMVYU2l92IRVil laaAZ8ufrX3CgKSMvffNvu9oMamDKql4sqSXKD402lJPVjhHg6pznhkJpH2rV4dDW9zc +3OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478472; x=1757083272; 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=dxbAHn2gu8hPzgAv8AKJJWeRS0gDiHkMgaOyBvCoSlM=; b=j8VAGt7F9Gn4vm9YZU9IcrB85Ya3pQh9IyxGSx0GQY+e72iu8T/5c1WtcG36JnHen7 LL7ALTO39hXHS9XRkr8D8Y67+0g2d5EfO6xQxcJLR13m5vcV/e4+nLgOScXFPkbrr3Aj 72/4tCsNyO6GWCki0ueTofZhA+aOsvJawCXgxthfrZceW2UEJ0damuuxy0GmPRrk7pGX 4/Vp+R9+3O1yvZyGQjvbJGEtfNwTLDskcZ4Q8O9kLcubrQUVUt537JvsgRhoeMlJcMJ6 wSO//obvR4IhXnH6vMw0myIiO4ZOlCfVruJ22vhFs5ntVvg7Gk6FqYg0STKygEk3hxvn +1qw== X-Forwarded-Encrypted: i=1; AJvYcCUwgxpLdvikNjy2FdDdrSj9cjM30gaElKD6a3ZBJsizqEelqBu21bZOr5/GkaFH2bWzUnaepsS3TtuvbaU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+GR9USv4D+/LemY7O0xWho5OcgXJybOhZeDus0G7TW0NIh8At bFaE4YMkwz1hsso0NCZqiew7XdyyTeAWaMm1H6R6UrR9wNoEIKgcD6JN1XV/82PPHPI= X-Gm-Gg: ASbGncvoh35KJR6Q6BnFtFsURZ6Tqqj7Il2aU1CqC8OHaypNfBGEmzDq8/lUt15GPaj ja+UbKYfTxqnaPfqJeILfUdvgSjS6fzzWKEhjKnguxON46Cdzs4nGeWdjV9KT2YfraZvjGAr0H+ F3x9q7LGNPBmjQc0fKJ+I3Ec/hH3odvZfaLyMbEE53/OhAYKmIbRcMjvUUwVHCpw+DSWednFOjM XYRx50EApqFxUoRmAkOOqJqkvb7GefEuQBXyn+lFV/o+aLkZfYdcn15YpK2sm+iyvDUhF8MYFdA g+g4/PySg6AlOltoVaH7rVCCTOhTzV4vM/KIbRGsqEfaLufzWaUo8sqNJjDcoXeeGCFb0xHaRzB 2ICuzMDffObys4JqT2JXCAS1WgIIfNzdDPpR/qfUpudXHNw== X-Google-Smtp-Source: AGHT+IEcRaNRwLVZvQ0+PFDpEZBl5TqywmCgn+6HMV79ElMQ8KBIAJHpCBhlQym1EiHDUaUbZ/iP1A== X-Received: by 2002:a05:6a20:6a26:b0:243:c36f:6a7c with SMTP id adf61e73a8af0-243c36f6f4dmr3879485637.18.1756478472441; Fri, 29 Aug 2025 07:41:12 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:11 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:05 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-4-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 --- 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 7e984ab717c6..0800ade1d0d5 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 Fri Oct 3 14:29:02 2025 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) (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 F25823218DE for ; Fri, 29 Aug 2025 14:41:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478475; cv=none; b=NMccmjrFHUdVQQMddYM3mA6ppSU2cZbnPTbZPDZRk9kNp4Xxu52SDAnhkOPXSC8hX+HgZBM2VEDSwTvgX6BGCFPEwlny3cTQ0i3M76BZZrmce63tI8Xa/Ug5taBLjychEQ+L850V1PLnF9mbYxnA9VQ4+vnFwYWYNgdruYFQSVs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478475; c=relaxed/simple; bh=k+LqgjXzzLmGK6Fr1/7D9cO9WxsdSZi3fAFA+heh200=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IiOPa5PxV4koomHTE2zcvgMkicjXKOaoePoYaxDY1N+PP+y8bdfw5tPobxtHDmobEJvf8ObxyUDtVU7c56C9di85SHSm2oM+/fdqQhYfAghGigBP8ngPOJOLj9ze35phDfXhRb/p+Dhw/TJHaU8bjSvlXo17IvjJczVFs5B3CQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=OC8PKl0g; arc=none smtp.client-ip=209.85.210.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="OC8PKl0g" Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-77238a3101fso129934b3a.0 for ; Fri, 29 Aug 2025 07:41:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478473; x=1757083273; 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=DuhopmvMJD6AmI9ErsWAbRzYROuI1OFJgLKz4muMCjk=; b=OC8PKl0gBAj++yaGLyQ3jKNZvlby8fI1wznHsN2Eok8nXOal0/+jlGAR1q5g2seeE+ 2cZUYmgqUSxjNkbA5P5mlCNpBv/R2nFlTvjPyHymErEPheeGgZuQFTEf8UWlgmZz9TqW 4c1rGwqbqgFVDZdORjMobmu54uYNezpb1Ob4X5/p2/pEyevq5kmjxJYTWbmqGDkxrJtI BynS/lerBqap5sG+Rc04V29M0AwD0Xo9DuSLY8sNAnIe0e4BSzYnEs36+tSBAG98cn7f RwdClGLhc/4LLIj7d+MkZLAox21M/TCcdafF7RmeDlUOdUSGU6ceuhjqWsQDa2tQVHZg Z0Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478473; x=1757083273; 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=DuhopmvMJD6AmI9ErsWAbRzYROuI1OFJgLKz4muMCjk=; b=pKCVrEQ5jb73KhhNKQ7zbG+/mzjzIxjk4I2GE5UAgfIh8iKMS3zAMUzYi/VMkqpzDJ 1DaojLE2g5F36c4AY/fPCHyjwIBfss2IG7SzHn3jFHhvzYhCAjOpP2/4J/JLio7VX3kJ ee+/JTMWsguoxq2JeMfBDxS8nwyvr3mwwLi2kRmWsFlLdCxVIr1H9+i7Wmbm/4SKPUIZ JvMEEJeTLBQOmh8/wY8Lcp7OdViC/Cf69Me+bPNUs66b9iSYavQkf5+KSQYci1SmZO/g 1p4hLmDT6Vrvbk5kBwSGAV6uhXDKFoxZli1BoL9Ai8Dv+fStKBr0ttpJ8xZNqQ2c9Swz tKxA== X-Forwarded-Encrypted: i=1; AJvYcCUvpFbHdJxjvDt+V1GZ8VYjfECW+jjK7dTQN4Xcgef+Ifou9vlbUAt+1pCSuJavmJ8iVBi+5/XRtDPuxmg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4iBQ3+ByVySY2q32eeRlkO7+hE5dXaQmnoY4rU2sMKlonxvDm yuMf4EqvBGRhYssqAJuQxJGwWz5wbugmDO1EA7mDV4+FKQy1H2LlLHiLm99KwCHMcLM= X-Gm-Gg: ASbGncsx5EJfMNh7+Z+yl97MZqgsU5Lqt8tG6GEdJZp3E9jku0y9AtzsJWAy5dVE9K6 mBgJIA0BlF6kRrJvbR92cAqfaLkizTdaxIjbOdKO/Nq0nv7sbqRoCTRCjQJBJPvpatBpqp6StIK W7gg5F83hZpfLNxlNKJ6smGoGXccL7JlVXYlO0m6aeD/pNoFvz55qhoeKfwz/dFLYx42jbIhAd6 IaziZVT5cDyRJTa1Cgidyp0GSinxr6Y/dATWCmdn51QcaZuH/ZxovrBmG1PaVKIVHJBWTetIOv1 RwrmKmaH9MTqxegYOuJrQ4m6rd7b9PfzEfZn76H5sYTkuKRhDxwSxvIEbYiiILxq1tW0ZpYv6Iy 1KNYIYvCKLcjL9TdQ0+l/pxXbUYS5jfp6cdMVEDckNJALQw== X-Google-Smtp-Source: AGHT+IFKu+50yqqSOgpeLJyOFV4rCaLFVpp2RVi5iZb8Nuz83CnzQCACwKb8OL/eXwNpYfHYvSwbXg== X-Received: by 2002:a05:6a00:4611:b0:772:3676:64d with SMTP id d2e1a72fcca58-77236761dcemr1223973b3a.27.1756478473332; Fri, 29 Aug 2025 07:41:13 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:12 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:06 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-5-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 Reviewed-by: Anup Patel --- 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 0800ade1d0d5..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 if any bits [56-63] is set as it is not allowed by the= spec */ - 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 if any bits [48-63] is set as it is not allowed by the= spec */ - } 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 Fri Oct 3 14:29:02 2025 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.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 C62E8315790 for ; Fri, 29 Aug 2025 14:41:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478478; cv=none; b=KCyEtQcIJzAugwmVjzvut6R2VHiW+BSTW9F60GXiWhIHGsabfYJQScGJNTpz0v+rQE43m+MF/R5bhDvc+bkjrj8KlFUBXPP21FJfxXJJq6+izptEFqSuanu+o1iwS2UlphKQPvcYxiDm7aF4qojFFvzgQQVePhXcgh8m0MhJ4dk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478478; c=relaxed/simple; bh=P9xlKEicZbq+4RuRvDD2ITpXhX/jhYOsR8b1c9w53oc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A7xIc+7CGhefkd4o7U0xxmL9WBctQIx9oGZsuCSNxPhJ6KhWbsfRQ8CTPeJUKHgxhwZBXl2fugc3trKxlrxbC6AOld+QxN8NvpbsVv1kdMcoZNweD4RGHUtlqFum4MgD1InGXNNYwmhoeIZmP1RJSJTVcj0qgxgO/qOzpz5gyR0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=d+I8lA3C; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="d+I8lA3C" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-77033293ed8so1939310b3a.0 for ; Fri, 29 Aug 2025 07:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478475; x=1757083275; 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=pJrFx3WCqf6VFVoWT85m6XL4XoNDn8hAld/4UFHpYgs=; b=d+I8lA3CN/HohPgLZ1ZwlR9u5iHLx25tnBWd+8YlZUWC4C37jn+1wguJCSNKtKz6gs x+5LmIqY/BeyZE4f7QX5cgVeeZUc+As2XAcJZH7t8hCWWTjE/xzTg0doqWUaXfJA9/cW gUWFecr78UPoFOFY4Z1thJTjMwigMdS0JXmv0JhgV9EBU3hM84OaefLSQ8xBqxP0lYTr rgi6cdbX5+Yu06WA3EEVxL+KAVFr9r0ko2oYrsQ9HfZIDMrOM9XzLOLUrxD4lTzSLEaP sRA98uFp2//ciKTdqo3vI7KvwAVB+laQOAsAgpGEKbVOLBp9NFXJ1ct275kaEifEX1Jq ia2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478475; x=1757083275; 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=pJrFx3WCqf6VFVoWT85m6XL4XoNDn8hAld/4UFHpYgs=; b=rF4gNiKEoPkCb4PG8iaLuNFrRKdNjJ4L1ZnaCO2tKkhJaydosd8jGd87Sxng9ZT2Mx nAp+w+EwOlom1HtYY7T3/4gp22X1WN9CiVtLu8uSv19T5Urrq76BKQUnuqI14nVsELhn YxvkimkpIAiRyxCVvSVC/x+N4XYDetKJrAdL88BSSNPBdDUTjAl+qeH9Xv+LuZXz2bGX UWbMN6pJWF6jVBiC0SVOHCMX6O7GaIQqLAWX4iZaz996iw1Tn2jDV6T56HO8sIfBqmFX K9E91ZlwYHwOh0j9468gMgYDhMBpqgXt9OdB6HUUIEORUd32bGzOSdiXAXrMTri2jaQD FMAA== X-Forwarded-Encrypted: i=1; AJvYcCVdXngzsqhld/vQgeV85ZaXLQccKhmYDHFuWlCzdkBUtgXFhUbMk7l+neaKTwAodCNJAJESmLXrYVVDito=@vger.kernel.org X-Gm-Message-State: AOJu0Ywt1LhRp/8M4K1z//s+y5DnZjsx00I6vDOmhPKjrnqr40+qniBD mOXeuD2pV284DKpZH31zqlIj+hWmQ22JTfPPnXavrxtaHAc/HCN41TytKn2tqdqPPnM= X-Gm-Gg: ASbGncsHE0nWhqdsM/jg/df4Ss1J4UXr1KrHQyzLpZxWr+Lsp3EjozdFOg6L5GBl6sL iCuCbrd7DyiYT2GXpg+eFKsITNJpgTGwgwd4CNSKJAczWWsT9u4l/pOcrQhIjRHTeQJ83eePr3J 0lw+PwOeaxMClT81G/OHVrAPvNub/kuTMamxFBwh8Hn/Vn3eRXjvgdyigrkY1hfvFgMQsXN+pFc H/lL8b8yFN8s4+Lpptw/2cQzmc7lpAzdYMiM89n5YW4BF7ieNzj/HQdqD3KeU3sMGn5xVRUzHaL dOulJUDC18UInVw2HWLFrVdhOrT71ZM3UA8lDZXIEFXhA/pGsGobcEuJimbp1sRB36JdQyxsZ89 XnWyz6wXyFB5Ah4LV6ad/ZIDnKOMtpZxObr22WedPa3gOrA== X-Google-Smtp-Source: AGHT+IE+tippTw8I5Rjqj8J4MuD+XFXMLrYSoKCBTNLNIx4D19MX2vzDRgyVPUrBIKEMjW6IJPF1lQ== X-Received: by 2002:a05:6a20:c127:b0:243:b8c8:a247 with SMTP id adf61e73a8af0-243b8c8a5b5mr5669681637.2.1756478474637; Fri, 29 Aug 2025 07:41:14 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:14 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:07 -0700 Subject: [PATCH v5 6/9] KVM: Add a helper function to check if a gpa is in writable memselot 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: <20250829-pmu_event_info-v5-6-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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 , Sean Christopherson X-Mailer: b4 0.15-dev-50721 The arch specific code may need to know if a particular gpa is valid and writable for the 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. Suggested-by: Sean Christopherson Signed-off-by: Atish Patra --- include/linux/kvm_host.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 15656b7fba6c..eec5cbbcb4b3 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -1892,6 +1892,14 @@ static inline bool kvm_is_gpa_in_memslot(struct kvm = *kvm, gpa_t gpa) return !kvm_is_error_hva(hva); } =20 +static inline bool kvm_is_gpa_in_writable_memslot(struct kvm *kvm, gpa_t g= pa) +{ + bool writable; + unsigned long hva =3D gfn_to_hva_prot(kvm, gpa_to_gfn(gpa), &writable); + + return !kvm_is_error_hva(hva) && writable; +} + static inline void kvm_gpc_mark_dirty_in_slot(struct gfn_to_pfn_cache *gpc) { lockdep_assert_held(&gpc->lock); --=20 2.43.0 From nobody Fri Oct 3 14:29:02 2025 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (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 C3744322532 for ; Fri, 29 Aug 2025 14:41:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478479; cv=none; b=Q/lZnmOjgC0pbKvwWPDzSM2ye2FK45Zzh7qHcEtYn3xHpRN7QOg2kwfoGic5r2WeD4n3/ZBH6aqtwMh0DISdFdhLSfhZHpwRbVzKiRv5VMQ/1iP3P9CewyAVx2Hs9EN3PzaodFGSINkCObkbViBfsLaeAKBaNgiEePi7MqxXfB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478479; c=relaxed/simple; bh=OIK2edexmMK460AAbag3XeqDeoi08HRp9qzXGx0bT/w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pRj6XfxPiWPHbzmr1jGJUsehgnhTPNCKrUd7squdwYaYq55cQkpksHtE8rJzFJOyy4graijuwqW7PzdmLEC8cQxr9IxAr8lkSBJlwcorAden7nmNE22PRXWe5eecfUtGH/xmkE7fb7Tbdx7YvyMNgrH8ar0paW2klU0gZ0bn0kg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=Lh+YeIS8; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="Lh+YeIS8" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-772301f8a4cso712966b3a.3 for ; Fri, 29 Aug 2025 07:41:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478476; x=1757083276; 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=/MakGsp/S2cNx5PFmj2E2VVtHHLv1RzGj2Qogo6hOhw=; b=Lh+YeIS8uU0oKZaRM02NqtKJRiINqEaf4E7OOXIh0qeWnkmCyYd5znmi0T1yJ0akMh RAuwdKylWl3lJmPOQ1R/vnw3nBbQgEcFkRHPj+SOwesn/RiaV8HMC1N1pl7+/wZlcUcW tytRi10LGrYJmG7G1q12tDoJC9bglJp4DBnbr0ji07Y4WngPxn/KrW+ftSdknYDeCkh3 ti+rrj4jeDAiyT+nkf44vUK/tGAQpnpxEq5jZ8EpfYwfwfVWihJmogqFxwHJ9yYhz6b+ /gQzODFKENIBtfTQnesZ9IIbBQjkYiJSVIoY+VVHf3o1BSnU9oV5OZg9IR+hjkJvQo20 t3Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478476; x=1757083276; 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=/MakGsp/S2cNx5PFmj2E2VVtHHLv1RzGj2Qogo6hOhw=; b=T0MgmI6K/4Ox/rbOe38KFnSgs5YejuNHdVB0Wn4U1KF92RoJHSnwJGoWDliIPNCiS4 8GMvNJzV4ae9AoaNce2DVe1nXGhYvx4kzMkXR/w/b6oR6s86dK2oXa+v64FkOL6h1uYC FY1qj5xpPGX56i2Li45K+LT0in5iTEtHdj5w4hhlWbOIurnm0lpMEZ2QsAUzVC8PgbBm p/4iarPMAHN3YtFkJ9Lkq3mrokBm9A08R05w8xwm0Y440X+3H+XeWjy+J0vmF1aUOVyo rlb0KDnoz07sJU8Mb0UnfcA/ZURKqf0Qehu7FwIl7sJOzE5xtYKk/HDf0sNGIZg0o4wQ v8IQ== X-Forwarded-Encrypted: i=1; AJvYcCW0lqqNLC37SWft0UtCXjWG/axnL4IHD6xGn15gZo3TbShsXI3cl6Ip9yAOQBBcwOHqnf7YZKdsANP6Cls=@vger.kernel.org X-Gm-Message-State: AOJu0Yxbz1XynksbyCErD8xeH6jMkFWvMUYdmv/XNj6zXn/zThtpwGgs dq4/669T1t/tsEMl7coIcNIh6EVIdzThMngwv+grnoZBaYqLVdXT6sC12ognujJ0o/Y= X-Gm-Gg: ASbGncufwCDRVe0/bPmYFcY2GPzLIS9qlIVFFtN3szzWjNh7kyYx/JhrMS/MnBqOIgN HVMpYMQcWWNB5c56YUPydAnRFZmyMGLj3nsJqiPMmLOJu+vrKC6epmmls2HbZsISoesruKZGi3j DtivZoPvkuLAcZM6K4dcfdIubEqpo3H3H3+ogXATdYrYRe1p0j4rcekLraTewkpZQdSPRJX76+k JXi49bJVTOZRcKLuVQcK6goOvv+B8dQlswQof6LcDHO9F5decBxXbbsYfPHzOuuC+u7EbQSgP0K 04WEHfS69ibhEHBIgorI2LV6ITZvx4hCb+0N0+8oeM7WZQjIWZ0RmcsE2rQVpxis9uEFDh+Re+t jNIureIdtn2zzUMZEzHlEMwpquMn6fcBoz31uZNfnR0IBGg== X-Google-Smtp-Source: AGHT+IFbDhya0VpL4dDdmpa2UiIlEb5E5l+kiCERG2V1mfvmn8kbsxwgyRACqpsdN0fY/j0vO5OnzQ== X-Received: by 2002:a05:6a20:7d8a:b0:243:78a:82b1 with SMTP id adf61e73a8af0-24340db3ac2mr40858661637.57.1756478475772; Fri, 29 Aug 2025 07:41:15 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:15 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:08 -0700 Subject: [PATCH v5 7/9] RISC-V: KVM: Use the new gpa 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: <20250829-pmu_event_info-v5-7-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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..851caa86cde2 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_is_gpa_in_writable_memslot(vcpu->kvm, saddr)) { 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 cc6cb7c8f0e4..80acbb75041a 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_is_gpa_in_writable_memslot(vcpu->kvm, shmem)) 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 Fri Oct 3 14:29:02 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 80C6E322A25 for ; Fri, 29 Aug 2025 14:41:19 +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=1756478481; cv=none; b=m0WM8MqIuGkrpAW2gPTPWFOLQX6gfRw9dfX0N+WHVBmqOSQmr5Zn9hVSElNbgVa/rpjp1yWGVnp8gFandcQHyI5/tuN5ixxlh79xDOzoRYjewdyexXxWvmRndHoPLRfyD4MpzfJZOQNDS28ErLhoFLRkbSWZL2XzbnRBWNsMejM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478481; c=relaxed/simple; bh=N6+h+tsIWnMjf3ceMOGaeiYo79VIo7jfDe4CcDtFJJU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ty8a+/iKkyaql/ShQep6/zYAe9hQ/BGbzr9aWTNCtdcXxZU0PteVp4eoWJ9lHwswSpmi4mQ2XOv1noii1IX4hNO2P5n+al424Xqg83kWOm+LJulWSHMLxPYXd1ursNok785+66UK0tsugrMDl5gjVBUpCNeOgn+gBf1Xcq6AYsc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=EZKfemrC; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="EZKfemrC" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-770593ba164so1760464b3a.3 for ; Fri, 29 Aug 2025 07:41:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478479; x=1757083279; 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=8n6toQkVFfP8na+ISaaEJDAIrFZoZwC9O7ud2sWM9B0=; b=EZKfemrCg3JJx0ABXxSUVRtXcQexwlRUrR0R7WCwYFk14RK5lwdIPAsgC8UrArssgf CD25+kmX/w39dCz+FrWRSb8veQYAxL4XGV3xjWhGhJzH9qg8h7aVL6kdwVyYkBc5tpyW ByqTWo1Xp3f3AiKQrvUVDyLm03cqWan70iQq1M1wrJF/Fekt5QxivRAQQdYYrOWcPME2 uClb36TjVfG0e1hoZcZ8XAsOO1fMgP8HaBs6L6FguwbgPA38TdJsjPto6iYZQ4flT5KG z9VNtcuOgB+Z/okC21BpgbjP43+3Dc9tBKl1n0qppVyPhIGWLQEVsttOgbAp6I5qb5ve /oug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478479; x=1757083279; 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=8n6toQkVFfP8na+ISaaEJDAIrFZoZwC9O7ud2sWM9B0=; b=l5SK4RD6foBLa5uJE5IcXAvsXNGy6JwmX6+2Od8LX369pSL8cIrHi+mXQ7QU7oYsjt pebdRh59uXiSZ0a7gl4ZWPtfjQ2m3noIIBETjpLVYUYMl4rWbM8SRDyJtoZ7pQqvzAuu P5lPZO9cpmKADsv7MTTDvDQMGW1aotTTDng4M3KO2xVh6+ILlhrhC7SN7VKDhmS8yov9 7dsWgBTJqtz0XjE1jmNCYRCVN7R67l078lNNQxmfU/uktXCXeCYO0ScWqXoT1PfZh1hl qKphDMImaupY/8H3axWmPC7GD8RfUV5tddtJf6tzoaxnoqE29zoRMtcRNZaPBSjfh2jQ al4Q== X-Forwarded-Encrypted: i=1; AJvYcCWWjVQpLuZL/BPNnjorBkau//k2bp9Hj2VLS2J/UGsMq4WmSj9pyTwFRzSwLWaqO19TQ4YJzWumoFMfinc=@vger.kernel.org X-Gm-Message-State: AOJu0Yxo3yud++rfWjKvkQJtec5MLarGOOZXlgkiFd4rErXaW193UF6r 3MTFWtA9+M2NsIaIg5xydCMJdMuTzJdsfRAUIDO4MdDzZRKnedZGgaqJRpRIwC9Tqf8= X-Gm-Gg: ASbGnctv/DAbywkr683cVjIgN0K8dcys46Jayu0TVPZdtgMFZD5tWwO6hW3Tf2Udcyt lzXlmNSUSlvbRhv7oqcf+udz3eZ9Bx/OGfs5ifNK+F0TtgaC2PBd1qHU6d/UoplfDZXdi0Ks09D r0GGauqEfc9BQfKO7M7FfwjxqzkP5+L41ycV5lCYoy+HqcMqyxTHFJfZmgoyYLnDe/h/Nrw4ab7 SBMiut/5DoDaFm+XrCVUh73CtTkeRan+aCVqco6iAD2E+o8pkcvPNuWvM+FL08j3wS8RHZ03cAj bWu15HLJ3K7xJ6YTkslOeuFeDnAbuliNP4msU/d+7SXr9mJ8panBX2jh5p3EytbNN+Ic/Zbaivl RNjO2sy3RyhkdkFMPQKXzeTTJb+Yqa+G3eCc= X-Google-Smtp-Source: AGHT+IFbwzsbSElYu8KYbXCV/+je/6mE2S0/2liCEwQBNCHEuRYMQctOBLGbIAGZhqVBmpmbFujhhA== X-Received: by 2002:a05:6a00:929f:b0:772:306d:a1ed with SMTP id d2e1a72fcca58-772306dac16mr3197588b3a.32.1756478478747; Fri, 29 Aug 2025 07:41:18 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:16 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:09 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-8-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 | 68 +++++++++++++++++++++++++++++++= ++++ arch/riscv/kvm/vcpu_sbi_pmu.c | 3 ++ 3 files changed, 74 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 851caa86cde2..bd93b0f2ed26 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -453,6 +453,74 @@ 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 =3D NULL; + int shmem_size =3D num_events * sizeof(*einfo); + gpa_t shmem, gpa, end_shmem; + u32 eidx, etype; + u64 econfig; + int ret; + + if (flags !=3D 0 || (saddr_low & (SZ_16 - 1) || num_events =3D=3D 0)) { + 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; + } + } + + end_shmem =3D (shmem + shmem_size + PAGE_SIZE - 1) & PAGE_MASK; + + for (gpa =3D shmem; gpa < end_shmem; gpa +=3D PAGE_SIZE) { + if (!kvm_is_gpa_in_writable_memslot(vcpu->kvm, gpa)) { + 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); + einfo[i].output =3D (ret > 0) ? 1 : 0; + } + + ret =3D kvm_vcpu_write_guest(vcpu, shmem, einfo, shmem_size); + if (ret) { + ret =3D SBI_ERR_FAILURE; + goto free_mem; + } + + ret =3D 0; +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 Fri Oct 3 14:29:02 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 C90D73203A4 for ; Fri, 29 Aug 2025 14:41: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=1756478494; cv=none; b=Ozb7UsQjlo3pvDbBM4qQ3LjCQ7zQekRbofn3T7/wKELVKJOYVmXnpkxugdxUNpao5ZgKmAc16VEgnj1A/ecSoe/XyoTYyJt1kTQtuzqUFdv+bb/hXF/3Wp0DAThJXkNQUxO/FTHDy/GtFYehEECGGyy8lBOGalWJrHP9zDvvCnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756478494; c=relaxed/simple; bh=XThoAUpZFHs1s+pwrFwO14HP8Izu5U/x/smPnCa25bQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kGFySBS3xrwhkpaEJMVgoUA2yskbWPuL3ikjKzumMIPRgKFsOjmJjVPosU53Odqa+SKXkeCDQUOkzniD4wPC5Rs8TzlxFhxrgyklCKYyHN9FitrGZFUDIDqtfCLzY0Z2+bavJt03vDkUgxTtkSxIs4ZsB76FIfQFAo2NT+U+8K4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=A/LETT7K; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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 header.i=@rivosinc.com header.b="A/LETT7K" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-770593ba164so1760731b3a.3 for ; Fri, 29 Aug 2025 07:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1756478491; x=1757083291; 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=WRvT6lW8SE24T6disqBtYa/lDa3Uh1O4/DOC6STqtSc=; b=A/LETT7K2IPW4rW/n60t4X4rzlm1pCbfDLvvlUXpqSC/qogDARyEuDjb71VPOzUL4s sMxC6OdJNbqHN1E/wSJE6bbWanvHJHZW7ix+3FPgCWz2NREAlQ07eq7llEXZ95yV79UJ K2Y+PlneEt8QVj0H2OQsEtVbiirHhizFVHvLNqdnletBiflcUmZd01V0/7RHkKQGVves Js0NPUNCHIFLwPU5+D1c0lYDHinBqOgT/Z7idEbnEMb4D1GWupXq0DA/hUPlhKdtqIv7 7eLmCmgrBOeF4Ghvjxo9asodnjPk3IjryecZxzkBHaO7ndDnwM6ywBRg+dEQX0tObjU9 B2XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756478491; x=1757083291; 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=WRvT6lW8SE24T6disqBtYa/lDa3Uh1O4/DOC6STqtSc=; b=lnJEVJVAduRWcNDGfSzkq6zOfpvc04zXPQR6uII2d4IQJI5RposDow8W1wzYMno7UM dZ9qFq+F8CxVb6p1sMFLPh29f8xPX3NM2h2Jfm9yYSgXMSRUz6lioJK/2U/9hycQeav4 jTYBjXpe0ohSut1pAbYxxY3YBZ1soZR8TXUrpMS1mDbFMn1iEcttKnedLzn/JtSpjC3H 1fmH+H02bmsvdHNLos/esURMtjFq2mOpfSefRU5WCpCe0SqeShgS3BgozKq452d2aj7b vuEfGp3utx3i73TYTLNmzXNGThgmm1h6L3CPpnezE3x9Bjm6W6tDX/g+AHQl1ImWmB7N Gzqg== X-Forwarded-Encrypted: i=1; AJvYcCUHRDu+US8mybgp0kB9UCuOuwFurp2DUW8yO9U4fIpiXs77YlrOFqRsmXq1nyiNa9ygj6tqBUt65CU32R4=@vger.kernel.org X-Gm-Message-State: AOJu0YzCqxvOzLZ60iObW0DSi7CrBIQxNba7Tqq90Sze6Ft4fNJF4XMQ cAkYMwlZIv14gM1KdClfN5Ea0lsUJiD+j3xuDb4F0H/ElOf/RXXjclzPu2XQV1DycC0= X-Gm-Gg: ASbGnct3JXHLzMu/K3Dr1VRDFQFL/aLiVuDgRaWJqOr53EeaV+b6a+yEETfi4PMEx/Y wZ7pNpjBVYchfTbm4Kw34vks2cl7iaR5m7nKAosXdUFLa7DpNRpgrreHZISu7m9IQBUkiNi1fGW GNC3LhR/0U/9QAS/qeXc0QzRotno4vIE2dcW075kUwqNIutAnWO2X18BX+y+QLIwXbaq3DnuM32 cluWPnaLjVePazxTVIM3Ajt654nlPWDhwJhztkhD4pFtYsZe0NC6dXCIiqkgBUTuyxKqtfBNHuf TGUvFmjlcSq2TBTmAkc1K1TSS1QmoEJVOhB2bjLngDRCsUHCf9jxNx2aeC81g7DXFdzq2ltmHQX Mz6FTLTcwH0X1e6xPZrN4BEXKsLpZk1kk2HZPuva8CmM5lw== X-Google-Smtp-Source: AGHT+IFDBhv3MLTcxgH+II4bHiTtnlUQ3Qi3MwL3+YWiPJW3Bh7QRSHoNEvUKcz9tZC69e4QqkawWQ== X-Received: by 2002:a05:6a00:9a5:b0:770:374c:6c55 with SMTP id d2e1a72fcca58-770374c6e1amr32573308b3a.31.1756478490940; Fri, 29 Aug 2025 07:41:30 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7722a4e1f86sm2560999b3a.72.2025.08.29.07.41.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Aug 2025 07:41:23 -0700 (PDT) From: Atish Patra Date: Fri, 29 Aug 2025 07:41:10 -0700 Subject: [PATCH v5 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: <20250829-pmu_event_info-v5-9-9dca26139a33@rivosinc.com> References: <20250829-pmu_event_info-v5-0-9dca26139a33@rivosinc.com> In-Reply-To: <20250829-pmu_event_info-v5-0-9dca26139a33@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-50721 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 d678fd7e5973..f9c350ab84d9 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