From nobody Sun Dec 14 19:14:26 2025 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 EC5A61ABECF for ; Thu, 12 Dec 2024 20:56:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734037021; cv=none; b=XQg8ndUGgG7VTfaZWmNsT+Ck6IfPeHlKVPiZwxK20L12dH3D5oHbBFgNRaWa5IaRva72AQsjvb8+QJBQt/rLePoMzbzt7Q9RtOMYv4NFX1S9TDQ+CfEDldSnu1gCCkRTyI8+SPwaaYTBu/KVn2ea4meHMl5brNjWLTmT+I+FCzM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734037021; c=relaxed/simple; bh=STe4e+9WEqKYdCIY+5uN2OC0S3vV4Xd+VYk5Fl2odcE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eALHrPdIJbt/lSjG8OiBoSkwb3vm3gmF2om6uK4ApAkqa31Gz31NcBpmpWJ2UWp+mVnJs4/5zDGP5xkviXtOTQ7O4TGJnzymt0dqHnA7ziYr2FadTvspbr03hLAs3MLBuS1j5/JRFI1bQZspxNEu2lh09fBfZ03itukmze7NAY4= 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=DDjfKFD1; arc=none smtp.client-ip=209.85.214.181 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="DDjfKFD1" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-215770613dbso7530475ad.2 for ; Thu, 12 Dec 2024 12:56:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1734037019; x=1734641819; 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=d9bocf/te6xqIlX1+3PhmzweHiQ8rAPL41LYUao1zG4=; b=DDjfKFD1KbG1l5UEQv/eWLdfaogq7kyuXEijpz7Dm9ftgAGGKtKlA+ZyPCXnbscyji 8+fRGF50Sa5L8+vnFRBsPCRUXNyeB0KaXiAMVzLzr3C7kfU/zogUCqvtIcBNR1IbymUX ziVXgdd1GbMEekEt8e6XPQCSMPMyH/ByyJH0wI1qEHgVcNdiCzUEdf2xW1lzN7YzEKmm rDZ/v/QYRXdOndvGew7eLcnnQ/7e5ZUB4frRxjDkoz210sDcLPVLSdmiOK8Sk50k6+a/ 7zNzBvCtfcAubuUUBvTqGKhKk3b27qmh9xRnWI3suAwBVa4Tk5BFQfG6SLH8x/60HSkA 2kQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734037019; x=1734641819; 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=d9bocf/te6xqIlX1+3PhmzweHiQ8rAPL41LYUao1zG4=; b=OIT5QmHCG3IcPOFm9kwTNMaWKoBfVCzsOlohSegXNSPx0sZYVziEZjt43xfT1rstr9 JHdQiZOgPo6N1GnJmMyqJoceIisSUhUSJNO3Y9eIrW8z7PwqF9cHQGR7r61/TzP9BIUZ DHXXHvputapzFsmQjHPBiEZjyRtawkeu9RyjFFOC2F2WnU7h3dkpx1WAehE6avSsO9JC 9FRb7Ko1dMPy59SoAmdj4BC2Q0puUNc83kFQoEMvzVkHRAg38gQFS6grH6kzrEsJ9RBp 6zpJlYL5dBr0n+dt76j7TdZsAlVPHvil28X9aFp/UcNozP4tQOaCQqycdfQrc0NmdsfN 4CQw== X-Forwarded-Encrypted: i=1; AJvYcCX2toeHZZ0i0zoDf0QisjdF2C7PNovGzV5dluE984f8Dx9qbULDLRIxfou2HAXWFYIbwoRgUSH6hCvJfkU=@vger.kernel.org X-Gm-Message-State: AOJu0YxLcs7DT7yL0kWG2S43CuJwWMaPQTWQrZxZe0/kLhak11jWZy0R VEyVHa8tjd+ey17RF+jYRKUUXxkXmnZfMeoMV98WtSpscUUBMDr6azkpO+Dw8Bpvt8ZiH2xl/Vf t X-Gm-Gg: ASbGncvm6Zh8uUtnKxmr48I5x35QmxBC/8gc/M6/+bzRKpQqmkBhdt93uxHOrz88wIQ +faZKoqZ8C2cRvjRFihwUhcdL85UhIfzk6ifL+ywMC/0QjD3ytkpLLOi/pPbiPsZdKRlKZFAujk FuaxfPD5s/W7I+CAIQjv/n52W9oteJRr98kCtBRASF4iT9yTYyIX1JUIY5UBwHA1Nv2vBL65ti2 2Fv6AL1CyrWTBcqzjvj6rZjg8E1o5tbFl6j3LBe78Hfpe5oY1ACW6JJurAA88a1Hr+CkQ== X-Google-Smtp-Source: AGHT+IFh1FwmitrjM9d4Q6KSLRToIyFObPTDHz3LQbh1hbARG5r4BQI4+oOsAfuzEnKREvzvjAp+Cw== X-Received: by 2002:a17:903:32cf:b0:215:b9a7:5282 with SMTP id d9443c01a7336-218929c3a18mr2340805ad.26.1734037019285; Thu, 12 Dec 2024 12:56:59 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2162e53798asm94019785ad.60.2024.12.12.12.56.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 12:56:59 -0800 (PST) From: Atish Patra Date: Thu, 12 Dec 2024 12:56:54 -0800 Subject: [PATCH 1/3] RISC-V: KVM: Redirect instruction access fault trap to guest 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: <20241212-kvm_guest_stat-v1-1-d1a6d0c862d5@rivosinc.com> References: <20241212-kvm_guest_stat-v1-0-d1a6d0c862d5@rivosinc.com> In-Reply-To: <20241212-kvm_guest_stat-v1-0-d1a6d0c862d5@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Atish Patra , Quan Zhou X-Mailer: b4 0.15-dev-13183 From: Quan Zhou The M-mode redirects an unhandled instruction access fault trap back to S-mode when not delegating it to VS-mode(hedeleg). However, KVM running in HS-mode terminates the VS-mode software when back from M-mode. The KVM should redirect the trap back to VS-mode, and let VS-mode trap handler decide the next step. Signed-off-by: Atish Patra Signed-off-by: Quan Zhou Reviewed-by: Anup Patel --- arch/riscv/kvm/vcpu_exit.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index fa98e5c024b2..c9f8b2094554 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -187,6 +187,7 @@ int kvm_riscv_vcpu_exit(struct kvm_vcpu *vcpu, struct k= vm_run *run, case EXC_STORE_MISALIGNED: case EXC_LOAD_ACCESS: case EXC_STORE_ACCESS: + case EXC_INST_ACCESS: if (vcpu->arch.guest_context.hstatus & HSTATUS_SPV) { kvm_riscv_vcpu_trap_redirect(vcpu, trap); ret =3D 1; --=20 2.34.1 From nobody Sun Dec 14 19:14:26 2025 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.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 BF4DA1AF0B4 for ; Thu, 12 Dec 2024 20:57:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734037022; cv=none; b=lpiE7SezSeCAFIJvd8Wgr5mfDILMxkPdM3nWZQzTltNu+qjBCT6ho9i7tI+xx+zzvedBpXpAP7XNcPrj6hBHiDIquAn559eJMCCZyuWlebbNUFTtqXgzeMk+ytslV/lSOeR0jpHSttj9HVrkY6I5uNjM3KM9+YXPbP3ZrqUAjEc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734037022; c=relaxed/simple; bh=aB7frMBfUTuHgeG2iqJQRR7h5YH7OQziiHAZLJcCY3M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ulGm3E7rLSKaIP4uM5qtEW1gpzrmOaKxexGeOVD00gX3/+LQ2QFfPiuP1iaJkbdqLnKoo1T4QRIUzrzU7+MMzro7iq+MtxKDyLTZ3pXysnRZD7GIe6Flb9rDQqiE0G87m9NGDtTCZ11K0+l9lf7E2JCyyTWgajsb7bM+j7N42b0= 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=d+Q8SSrs; arc=none smtp.client-ip=209.85.214.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="d+Q8SSrs" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2166360285dso10425015ad.1 for ; Thu, 12 Dec 2024 12:57:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1734037020; x=1734641820; 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=PaPMD+BdCyI5hLi3/kV/S6HLELSeYS1h2xBFfdAEcTQ=; b=d+Q8SSrsINXoShh+rKMAzeMdQY1OXx2224FD6ttzuoN81TfnIiUkbd2SalstFDhMrg vhVMAosz+DXP4dFkEXQqq2zJyhEseFgAoqS/fKP2aJKwwKsjIq5PEdLs5yuDw9Ru63S8 AQvkPfUbnfpXSCO0dyevNW74nHrWYWKQ2e0pfGKJMem0zLd+ip8pOk+Ay+wzjqi9fmyr CsGaSxK3S0IT5P200d7+8oYCKY7nxYVUzFq4OCAWAYp8pOkZPSbXbgSYx4XsGi6/GMn7 LUbeMntVtq3le9xl6/4f2QmZ+4DzxK8Ia06XC5gg66vptQbmGgVBrPvTplTBAAO9zTik tNrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734037020; x=1734641820; 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=PaPMD+BdCyI5hLi3/kV/S6HLELSeYS1h2xBFfdAEcTQ=; b=ilvuSnWJkpANmj2SrRMSadRnrsK/fg3yRoA3ywACPuarz9sPHdcS3ay80zxzWtqIdo bHcNeY2dSCOlf5LgMQD6niIwEBoIqNAPq6TQrKEhMffSq8mzvmnay3NKqS2AWCp9iNps r2J5LzenfoWdu2WJ3gA1ho88YKg82cFeO/Bbossxer8wM/tyFMuQ6iORey0aj0LkuBHI vDOuDlif7uDA2Ot9TXwGB7P0HTWjdKyyiHkVAdVm7s+dNdSj1Z8CSxeKtWRMbSrF3xHt lqXtFJMN200wA1SpUCRy75W1WMaziktLj7IHIjapVwraqTnJEMwXISIqQOHYuJ1RvEjS sdFA== X-Forwarded-Encrypted: i=1; AJvYcCXCYKpqOTqCfU0YiuZrPMLz3UjsPjXxVlC0v4dyhORNGk/oJtkrES4HaDXYm+2ZzWD6GzEkPHr8/NsFb98=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4ajz10sNHCkVeMWuNqyiGISC6azn6NR3HXzaWOhCYN6emoYsR oEr6DejN8XYA2Wx3ZX7rdC4slaCvpFLKdWa/yOHTHroYY1R4fFLaQAcsPx1wlWI= X-Gm-Gg: ASbGncvHGp4xQEZYOx3tPS/1IZetKWKYpXiXIXv0NawRMI/M4aFosuW7FYnjK73Okgp hbGitCQHkCoSYpO67LPhuMIGjOpcIRhOaMu6nz05Z2XpBdlrZEw0Hut7KoqLOLpGRRVaiS/QgxY H6tasaT72LAByGSNCEXQdx+mfXB6rl8mbRBhG0aj4sl6OfPs5D2IjEzD6fSEH8xptK5v7CS2Vq6 spuez0BkVMwbEEYtz2NYS3vcoL5EfwzyVpSehhU0St8Phhe8FHFCl0qqyXnPETJGA2oMA== X-Google-Smtp-Source: AGHT+IGLXA772pUTt0BVGAPXfaZJ5WaJQ7JivmCyvoMmFNjKdV2TZP6t/5GpHJeWN5LeMnNdr4yhBA== X-Received: by 2002:a17:902:f908:b0:216:69ca:7714 with SMTP id d9443c01a7336-21892980b8dmr2076045ad.11.1734037020131; Thu, 12 Dec 2024 12:57:00 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2162e53798asm94019785ad.60.2024.12.12.12.56.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 12:56:59 -0800 (PST) From: Atish Patra Date: Thu, 12 Dec 2024 12:56:55 -0800 Subject: [PATCH 2/3] RISC-V: KVM: Update firmware counters for various events 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: <20241212-kvm_guest_stat-v1-2-d1a6d0c862d5@rivosinc.com> References: <20241212-kvm_guest_stat-v1-0-d1a6d0c862d5@rivosinc.com> In-Reply-To: <20241212-kvm_guest_stat-v1-0-d1a6d0c862d5@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Atish Patra X-Mailer: b4 0.15-dev-13183 SBI PMU specification defines few firmware counters which can be used by the guests to collect the statstics about various traps occurred in the host. Update these counters whenever a corresponding trap is taken Signed-off-by: Atish Patra Reviewed-by: Anup Patel --- arch/riscv/kvm/vcpu_exit.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index c9f8b2094554..acdcd619797e 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -165,6 +165,17 @@ void kvm_riscv_vcpu_trap_redirect(struct kvm_vcpu *vcp= u, vcpu->arch.guest_context.sstatus |=3D SR_SPP; } =20 +static inline int vcpu_redirect(struct kvm_vcpu *vcpu, struct kvm_cpu_trap= *trap) +{ + int ret =3D -EFAULT; + + if (vcpu->arch.guest_context.hstatus & HSTATUS_SPV) { + kvm_riscv_vcpu_trap_redirect(vcpu, trap); + ret =3D 1; + } + return ret; +} + /* * Return > 0 to return to guest, < 0 on error, 0 (and set exit_reason) on * proper exit to userspace. @@ -183,15 +194,27 @@ int kvm_riscv_vcpu_exit(struct kvm_vcpu *vcpu, struct= kvm_run *run, run->exit_reason =3D KVM_EXIT_UNKNOWN; switch (trap->scause) { case EXC_INST_ILLEGAL: + kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_ILLEGAL_INSN); + ret =3D vcpu_redirect(vcpu, trap); + break; case EXC_LOAD_MISALIGNED: + kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_MISALIGNED_LOAD); + ret =3D vcpu_redirect(vcpu, trap); + break; case EXC_STORE_MISALIGNED: + kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_MISALIGNED_STORE); + ret =3D vcpu_redirect(vcpu, trap); + break; case EXC_LOAD_ACCESS: + kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_ACCESS_LOAD); + ret =3D vcpu_redirect(vcpu, trap); + break; case EXC_STORE_ACCESS: + kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_ACCESS_STORE); + ret =3D vcpu_redirect(vcpu, trap); + break; case EXC_INST_ACCESS: - if (vcpu->arch.guest_context.hstatus & HSTATUS_SPV) { - kvm_riscv_vcpu_trap_redirect(vcpu, trap); - ret =3D 1; - } + ret =3D vcpu_redirect(vcpu, trap); break; case EXC_VIRTUAL_INST_FAULT: if (vcpu->arch.guest_context.hstatus & HSTATUS_SPV) --=20 2.34.1 From nobody Sun Dec 14 19:14:26 2025 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.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 C39351BBBD6 for ; Thu, 12 Dec 2024 20:57:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734037023; cv=none; b=neKH3GFIrNeXnLN6dfPSDlNNf5n3Y/3HfJncH9tXYpQxEiQaX74DcG+0y1EnCdxZZlHSHZkMo4JYtt2S5q7zPXHBdGOKm6WCQHoTLgZ0hpwcLASj31v5rG3mPq+I4ug08+bxfhCZ46ZuTbVcXXtxqkTXzXYqJPC/kRZWubRKI0w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734037023; c=relaxed/simple; bh=FCqQrI1H1EUUmtYhOFAa3PCJetDrIooxo67JfXKS4QQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Su48b4HtQekngiKifUulTLexjYkLBGwuRpJoApkmpVjxSJwwuUtUzMmWyHRs9MzBBrTEiWJtn6x+1gavjLwtEKBEneVVO9pkHimNaoeJql519PBP2QO8E2VWpSrhToRVqzrSOjCQ5wnPcwQsG+yx67uwGUelk3eUQzfxp8xTwII= 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=FuWLkwKM; arc=none smtp.client-ip=209.85.214.174 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="FuWLkwKM" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2167141dfa1so9709445ad.1 for ; Thu, 12 Dec 2024 12:57:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1734037021; x=1734641821; 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=avDzzP0/VkNzm+n9LZOGcxgwhkTK2s0/hK10f7P3aeQ=; b=FuWLkwKMWRa8lYhhr2Vlkk6HI2Jr1W25hqxqYoX7pym8A5plCjOAtLDnmGvGM/e5j4 JQGoOSjWg4zIeBw6GkvoNSxf3feA2YjclyFX9GSBFULEOXM/tlgfM7GRzg/ciUyi5YpD K/fja2yQp+BLAQs4Gc7gK3+5HYC0N9BvTFRA53uvibnDMCsFZ4M3zM1deuI4b5VLNMfa 3/j0Aq1cA2b4r4ThHNe2TeARa224t56irRj1du2O1gw9DPixiCMNC9IedJ3JId3rgWq1 90gN/8u/hbN05BMPp9stihix9Jp4NRmmxzjsFEEXIHpf0PqH6x35hvYHxuM2RTzXf662 Qihg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734037021; x=1734641821; 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=avDzzP0/VkNzm+n9LZOGcxgwhkTK2s0/hK10f7P3aeQ=; b=s7ozqmSVKRW6a2/N12y8RlGNeyF9FiLGJK3sM6UKMJuhBcI6bPZv0VhbMfJD20MRLM il4bYiC/4cwBYMlnPWayj2J9UuwVjLiFEJkwdXCkD0XyFqACyGGza0hvBKvTOZr7ZnTA mc4OmKmjYN7qANE8pMBQvc8O+d1P+xd7wmyD1J3WSckkLH+yUUM2fH6nG1lZsED05SaL bZPitsM/abhlDXlFvU+m/hx58PkOtXyf5WjHGzaXADvbh8VYe71BwHL5mgBzvwklCx4E J/hhcShR8m6RV4Lja0bXB34mdmRDMrJtRZ8Y47LVeirrlP381pUTKs80o4wsm5I7F8t0 gUrA== X-Forwarded-Encrypted: i=1; AJvYcCWUpOPtuzWn1kMBaySyMaNjr8P79sedXCIQIOm8Ian2JYWWcZ0MUbu7ye3yhZay0TtaDQem/SJRqMyn+ls=@vger.kernel.org X-Gm-Message-State: AOJu0YxJqDpg2n72Gx881X1lx8IbWBsPQyCv68S6mrVq8z1gtUPEvaDK TvDqZq5HnpSSC5bFZtspHdRpq+plY1ENgHJBbcCgLliyJOae34cY3rR55zMfMrs= X-Gm-Gg: ASbGncsX9RExlxPkHQv6iVUkbgo5PMuH/GW9R5R1yjbgocQagMDGlXjrvCXdqNg1/Rc 2YBXG8KPOzNxrdaewETTWDmqSKyPjPQPj40hnSiSOslEtLmXts+kz4trh5qLfFUBG0EU5zM8i/Z 3EbVdQsh/LWaskl8a86dZ7zUi2odedlpDVRtQlSk7Osl12jxlRH4SWrUmr83t8WslvcvD32fn/4 PzqM7C1jEQjV4SVds5VCGegu0reteUblea1LhzSSoG7IElWsjwtAnGqnm5nEBV4i+vpfQ== X-Google-Smtp-Source: AGHT+IH/wT2q7FeXEvOXyiLAeM+qgkw89AmTDwfUlGcclhBbzmkDVZQZXv4TvB7hgFblbmwcDG7kHg== X-Received: by 2002:a17:902:cf10:b0:216:5cc8:44e7 with SMTP id d9443c01a7336-2178c872406mr71955495ad.25.1734037021033; Thu, 12 Dec 2024 12:57:01 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2162e53798asm94019785ad.60.2024.12.12.12.57.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 12:57:00 -0800 (PST) From: Atish Patra Date: Thu, 12 Dec 2024 12:56:56 -0800 Subject: [PATCH 3/3] RISC-V: KVM: Add new exit statstics for redirected traps 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: <20241212-kvm_guest_stat-v1-3-d1a6d0c862d5@rivosinc.com> References: <20241212-kvm_guest_stat-v1-0-d1a6d0c862d5@rivosinc.com> In-Reply-To: <20241212-kvm_guest_stat-v1-0-d1a6d0c862d5@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Atish Patra X-Mailer: b4 0.15-dev-13183 Currently, kvm doesn't delegate the few traps such as misaligned load/store, illegal instruction and load/store access faults because it is not expected to occur in the guest very frequent. Thus, kvm gets a chance to act upon it or collect statstics about it before redirecting the traps to the guest. We can collect both guest and host visible statistics during the traps. Enable them so that both guest and host can collect the stats about them if required. Signed-off-by: Atish Patra Reviewed-by: Anup Patel --- arch/riscv/include/asm/kvm_host.h | 5 +++++ arch/riscv/kvm/vcpu.c | 7 ++++++- arch/riscv/kvm/vcpu_exit.c | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm= _host.h index 35eab6e0f4ae..cc33e35cd628 100644 --- a/arch/riscv/include/asm/kvm_host.h +++ b/arch/riscv/include/asm/kvm_host.h @@ -87,6 +87,11 @@ struct kvm_vcpu_stat { u64 csr_exit_kernel; u64 signal_exits; u64 exits; + u64 instr_illegal_exits; + u64 load_misaligned_exits; + u64 store_misaligned_exits; + u64 load_access_exits; + u64 store_access_exits; }; =20 struct kvm_arch_memory_slot { diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c index e048dcc6e65e..60d684c76c58 100644 --- a/arch/riscv/kvm/vcpu.c +++ b/arch/riscv/kvm/vcpu.c @@ -34,7 +34,12 @@ const struct _kvm_stats_desc kvm_vcpu_stats_desc[] =3D { STATS_DESC_COUNTER(VCPU, csr_exit_user), STATS_DESC_COUNTER(VCPU, csr_exit_kernel), STATS_DESC_COUNTER(VCPU, signal_exits), - STATS_DESC_COUNTER(VCPU, exits) + STATS_DESC_COUNTER(VCPU, exits), + STATS_DESC_COUNTER(VCPU, instr_illegal_exits), + STATS_DESC_COUNTER(VCPU, load_misaligned_exits), + STATS_DESC_COUNTER(VCPU, store_misaligned_exits), + STATS_DESC_COUNTER(VCPU, load_access_exits), + STATS_DESC_COUNTER(VCPU, store_access_exits), }; =20 const struct kvm_stats_header kvm_vcpu_stats_header =3D { diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index acdcd619797e..6e0c18412795 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -195,22 +195,27 @@ int kvm_riscv_vcpu_exit(struct kvm_vcpu *vcpu, struct= kvm_run *run, switch (trap->scause) { case EXC_INST_ILLEGAL: kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_ILLEGAL_INSN); + vcpu->stat.instr_illegal_exits++; ret =3D vcpu_redirect(vcpu, trap); break; case EXC_LOAD_MISALIGNED: kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_MISALIGNED_LOAD); + vcpu->stat.load_misaligned_exits++; ret =3D vcpu_redirect(vcpu, trap); break; case EXC_STORE_MISALIGNED: kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_MISALIGNED_STORE); + vcpu->stat.store_misaligned_exits++; ret =3D vcpu_redirect(vcpu, trap); break; case EXC_LOAD_ACCESS: kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_ACCESS_LOAD); + vcpu->stat.load_access_exits++; ret =3D vcpu_redirect(vcpu, trap); break; case EXC_STORE_ACCESS: kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_ACCESS_STORE); + vcpu->stat.store_access_exits++; ret =3D vcpu_redirect(vcpu, trap); break; case EXC_INST_ACCESS: --=20 2.34.1