From nobody Tue Sep 29 06:46:57 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B2A9445AD3; Tue, 11 Aug 2026 14:03:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457027; cv=none; b=e1kxug4k/Az2+yYu3fRbnHNKe1qs+wrJBbJbfbdnmlp6/dpKOjBfHAXtKt//+IcRXWKINGWXSzAg3tpcs0FMZncLCpxFbf7WeJ4zp2rtZ5lqpmMfQzqya/SqmpNS5GMYk/3nae2usvCLhQpgrZftpzqGmbytcOHbuCWjvoP5aNk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457027; c=relaxed/simple; bh=AkI5PIvNMijPqD80ONSRCsi77Pd+04EdJQ8RHPgUgkA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uB/zWHMFS1STxzqerQgdSYhgOIdPGWZX10fm6nR5bIqbfZrF8qHAeEpBolEMpaiuFZNceDSy669z5nEI4CuKJV9iCiaB7qus0XdllUAXNPglxJCKrb6QFa0ek7TT0plo8mmD+yNOPE+SZj04Tqd13EowmWh3TLII5HPfbpw+rcE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=FcCXUEwx; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="FcCXUEwx" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BDXAIk569992; Tue, 11 Aug 2026 14:03:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=z6IXOIpdpQznsNPd+ qftb3KOHokP0NhoXlYJAhh6GXs=; b=FcCXUEwx2f6NvdDKLNEUIXWqHqAX0W2eM v4pbo/14FIEiIvoCr0RrgKF86bWEPhQULr5Hh0cPq5z4ZgE75eiccqofcGYErzRr 61qwpsSuFtJ/ZtzbmKg1m04+PT7LU70xhT1T0sBrP0m+Uk0I0Jk+JUwid0PzAjWh Xbo5qE85CD5ufpZWmWyrJ6J32t3B6omYNQRm5VW4a7GTYLPXKvuiXM3yvP7LlzTG sJqwBSXq3NaLAZIE6ivcoUliTEMIfUeMCl8LuOowDZ8aL7I4YZtI87p1iC2Qzzfd d7S3qHA+rfKqQb5ZSn2pM0riOvjXt3NDR1NRdnKFvmxQ8t7g3ymkw== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvnw4kt0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Aug 2026 14:03:34 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67BDuHfn012719; Tue, 11 Aug 2026 14:03:33 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fxh0g92by-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Aug 2026 14:03:33 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67BE3TuX36831504 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Aug 2026 14:03:30 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D26162004D; Tue, 11 Aug 2026 14:03:29 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A599B2004B; Tue, 11 Aug 2026 14:03:27 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.219.6]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Aug 2026 14:03:27 +0000 (GMT) From: Gautam Menghani To: maddy@linux.ibm.com, atrajeev@linux.ibm.com, npiggin@gmail.com, mpe@ellerman.id.au, chleroy@kernel.org Cc: Gautam Menghani , linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] KVM: PPC: Book3S HV: Maintain aggregate context switch values for vCPUs Date: Tue, 11 Aug 2026 19:33:07 +0530 Message-ID: <20260811140313.15397-2-gautam@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260811140313.15397-1-gautam@linux.ibm.com> References: <20260811140313.15397-1-gautam@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=RsP16imK c=1 sm=1 tr=0 ts=6a7b2bb6 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=8UmGTkYCL32R6Bbc0TMA:9 X-Proofpoint-GUID: D-nJeyP14wjrQolOxb6Gm6rNb85ea8-P X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDExNyBTYWx0ZWRfXwjtu/Jxl3SZe gfncvTXW13LD3/Yh7DlgBd1CB9k+BVPFmI/msxF3ZZSgdt4AroCDradbNWMvcdO+5Av7lJiy9an DS0QLYA9iOaFvaArYLh+8k/9wgTTKT23i5DTj9JdKvyZajslHEusQUakNGBeP70NwrGuX91uRUQ Hu5owhFRMd5rMteWJkyIMY6vHX32GXYBKaikeJvZK6yOR2BKcrj2f3+fIa2i2qWALy/3/hirvAk +Iid5D0pE8qQNYTaqLx6St44cU7boOTFXfz8w1mF/KNWhAdIMHVzHN3RMkF0qIKtMed2Z5qgP2t ygBoVTIo/54CbgFhoPW9jOdB70EMj+SezY2ARpUFUmcnuhtwcPV18IQ5Eg4tJXeahv4ELxrX+So Tb3Ghmdutv3issEb0XXgUMcqNYJJ1cGhZj48cNZhnmLfdcMcp7arombPoU4TdD4RcCqcHeyhTOD 258QwRsQkBBfmpSQYWg== X-Proofpoint-ORIG-GUID: vZ27zggUO2WVRtHJwx-Z47FiDl59PRE- X-Proofpoint-Spam-Info: AW1haW4tMjYwODExMDExNyBTYWx0ZWRfXxPZtrC0ErRhc FuTj1s14RIW0KtwBkh1TrEKiXpuztzl+1Ui9MPDuyVfhIWSiKVaGnbMIYMqaQzQVdyxV5eJnm9o 3uCSQVjzdeU0EAIy0AnwmVLBZH89Pm0= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 suspectscore=0 clxscore=1015 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110117 Content-Type: text/plain; charset="utf-8" The variables in vcpu->arch currently store the latest values read from PACA when the vCPU exits. Change this to instead store aggregate values so that every vCPU has its own record of total context switch latencies it has accumulated. This is essential for the vpa-pmu driver to report correct numbers. Signed-off-by: Gautam Menghani --- arch/powerpc/kvm/book3s_hv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 3cfe9a7be9c6..0e8a959122a8 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -4164,12 +4164,12 @@ static void do_trace_nested_cs_time(struct kvm_vcpu= *vcpu) trace_kvmppc_vcpu_stats(vcpu, l1_to_l2_ns - *l1_to_l2_cs_ptr, l2_to_l1_ns - *l2_to_l1_cs_ptr, l2_runtime_ns - *l2_runtime_agg_ptr); + vcpu->arch.l1_to_l2_cs +=3D (l1_to_l2_ns - *l1_to_l2_cs_ptr); + vcpu->arch.l2_to_l1_cs +=3D (l2_to_l1_ns - *l2_to_l1_cs_ptr); + vcpu->arch.l2_runtime_agg +=3D (l2_runtime_ns - *l2_runtime_agg_ptr); *l1_to_l2_cs_ptr =3D l1_to_l2_ns; *l2_to_l1_cs_ptr =3D l2_to_l1_ns; *l2_runtime_agg_ptr =3D l2_runtime_ns; - vcpu->arch.l1_to_l2_cs =3D l1_to_l2_ns; - vcpu->arch.l2_to_l1_cs =3D l2_to_l1_ns; - vcpu->arch.l2_runtime_agg =3D l2_runtime_ns; } =20 u64 kvmhv_get_l1_to_l2_cs_time(void) --=20 2.54.0 From nobody Tue Sep 29 06:46:57 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0054A445AD3; Tue, 11 Aug 2026 14:03:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457033; cv=none; b=MQE4r5wLyRY7la8TgZICprH75fSYYIDhyBGW9sCR+pUpoV2qm/QuPdY5xFNYpwiJAA902Nt9aBn+miCGg/MnwOCQ1JpOFTOAAKcrLnE9Yp9WHNlN83UvMWGa1h5Hylv6aoaIsj202WRiXLCNqD18g3CYxw+WZjZZ2iMct81eY6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457033; c=relaxed/simple; bh=moVLitlI5BOWzY5urGe765jYhLB49OyNW2lMcKp3YAk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AK3spE2FiQT41bok1KzIkDa4NTsinSkKZwT3D/lU3Bw8PDXPqxa+FiNjE5P5duf/FGNReEYAwREtuORx3YRzlGDqE6rcj9W7r3Nw8fPd744F0dIyG0nR+yT2Dc3HN5BNZ/MXODP7DIYuUj2EvS1Ju3bsHgacDcw2hfTgmo/3iOc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=aLqU6OUk; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="aLqU6OUk" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BDWSAq492273; Tue, 11 Aug 2026 14:03:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=VmybN1WfXfiCuAnGG rvYNknnExBzVX5Li+2hHIaUUZY=; b=aLqU6OUkXWZq+qf3IdlJbEb5Vf3sHictC fL3SsBTLuQ8C+hqsh/oGFhhfHGkfdlaDyd4rHYswbQkHsjsUil91gie6x25dcnTO W5yzFq1WcebhwqnRY8qp84ujdAXd4G8Q0XTNx70ZyymUQLFQnn4qkvW66ZQkwlx9 YBkQbqFP0Os1u85PaiucP84YVFHQKORKOl8+BsqrMo/5wbKge+tWLagAqF99Ybw5 GuSiLKnO9LWCCkb/3oJ0MnW95YuNUvIo8MchObyN9y9JeiVYQz4tVEHD70l+W2PR izPWq4Tmyk5bTWEKmeBxx2/Wkdz/tY33TAN224j1XWr26QjRe8NIA== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvq9d82j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Aug 2026 14:03:41 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67BDuS3w015709; Tue, 11 Aug 2026 14:03:40 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxfsjs77n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Aug 2026 14:03:40 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67BE3aK635521004 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Aug 2026 14:03:36 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1C3B12004B; Tue, 11 Aug 2026 14:03:36 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 23D6D20040; Tue, 11 Aug 2026 14:03:34 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.219.6]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Aug 2026 14:03:33 +0000 (GMT) From: Gautam Menghani To: maddy@linux.ibm.com, atrajeev@linux.ibm.com, npiggin@gmail.com, mpe@ellerman.id.au, chleroy@kernel.org Cc: Gautam Menghani , linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] powerpc/perf: Use the aggregate context switch values from vcpu struct Date: Tue, 11 Aug 2026 19:33:08 +0530 Message-ID: <20260811140313.15397-3-gautam@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260811140313.15397-1-gautam@linux.ibm.com> References: <20260811140313.15397-1-gautam@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-GUID: ZOsXnLa6Nxx_Rgu6PEfNL9GbbOC5s8lK X-Authority-Analysis: v=2.4 cv=PbDPQChd c=1 sm=1 tr=0 ts=6a7b2bbd cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=77216UCIGRllsWULn3kA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDExNyBTYWx0ZWRfXxF+9ditkf+WX muqmAhwPaIu6cn07RaWHC7Zi1BcQeCnUI3o5l9GpoFos0JchsTzO5Bo1XlsQ7qtKEALNZd9gFfL MrTnzp1x7WrCHPpaY6L+e4LL6nvVuceKAta4M6tqOso2syZr+IFbj9COaJMHR98b1GVZ5xJR/GO JHJYtFb9ttSJiDr4NoKyL6cE7sDnxjjOYyRC7s3/exfn77/dywDCM9Bhlf3r3BGtDB0uuxogF9c uWw39YIdL5yiRmitRTMml68qP5mWFIYZGcobBMaW/3JgqTlN3SfcByAH5a49AZu4G8Znj3IANZ+ swXTFJ0hUHMsDDdgRs3X1JS60GFDlJPnFJfkvkF7s7OgFRF9T74638CjfhPfwN47TafYsY2k0BZ HXKgOrsL3ZTm+wlmjUwh5Ii+/4dvdOQosmhdIBD/5yw4LCnMVuItc7EhotEKbzc7as2F/kSv4bB 4EhHCisYyQZkmzddwxQ== X-Proofpoint-ORIG-GUID: co_g_qcu_BstO8maNbb2rZXG7kOdS7yV X-Proofpoint-Spam-Info: AW1haW4tMjYwODExMDExNyBTYWx0ZWRfX3H4ahDK6Jd43 8BEnwsqFMfaBganjj51jun71zQTv7P//JUsyxJcbCiEjf8Affr3+yJv2MAJNrQQSwa0g6xJ7eR6 TTbtYlrZgB7smxlRFI1M0kBrKOj2nOs= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 impostorscore=0 malwarescore=0 adultscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110117 Content-Type: text/plain; charset="utf-8" The vpa-pmu driver reports incorrect numbers in 2 scenarios: 1. The vCPU process gets rescheduled to a different host cpu - Incorrect numbers are observed here because the PACA is per-host cpu resource, and the KVM vCPUs can be rescheduled to different host cpus. This causes the vpa-pmu driver to subtract wrong values when vCPUs are rescheduled. 2. The vCPU is not running when vpa_pmu_read() is called. - In this case get_counter_data() returns 0, and this can result in negative numbers getting reported. Fix the above issues by using the aggregate values from the vcpu structure to capture and report the difference in counter values. Signed-off-by: Gautam Menghani --- arch/powerpc/include/asm/kvm_book3s_64.h | 6 --- arch/powerpc/kvm/book3s_hv.c | 63 ---------------------- arch/powerpc/perf/vpa-pmu.c | 69 ++++++++++++------------ 3 files changed, 35 insertions(+), 103 deletions(-) diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/includ= e/asm/kvm_book3s_64.h index b936e174eefd..11065313d4c1 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h @@ -688,12 +688,6 @@ int kvmhv_counters_tracepoint_regfunc(void); void kvmhv_counters_tracepoint_unregfunc(void); int kvmhv_get_l2_counters_status(void); void kvmhv_set_l2_counters_status(int cpu, bool status); -u64 kvmhv_get_l1_to_l2_cs_time(void); -u64 kvmhv_get_l2_to_l1_cs_time(void); -u64 kvmhv_get_l2_runtime_agg(void); -u64 kvmhv_get_l1_to_l2_cs_time_vcpu(void); -u64 kvmhv_get_l2_to_l1_cs_time_vcpu(void); -u64 kvmhv_get_l2_runtime_agg_vcpu(void); =20 #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */ =20 diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 0e8a959122a8..b315a959d2a1 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -4172,69 +4172,6 @@ static void do_trace_nested_cs_time(struct kvm_vcpu = *vcpu) *l2_runtime_agg_ptr =3D l2_runtime_ns; } =20 -u64 kvmhv_get_l1_to_l2_cs_time(void) -{ - return tb_to_ns(be64_to_cpu(get_lppaca()->l1_to_l2_cs_tb)); -} -EXPORT_SYMBOL(kvmhv_get_l1_to_l2_cs_time); - -u64 kvmhv_get_l2_to_l1_cs_time(void) -{ - return tb_to_ns(be64_to_cpu(get_lppaca()->l2_to_l1_cs_tb)); -} -EXPORT_SYMBOL(kvmhv_get_l2_to_l1_cs_time); - -u64 kvmhv_get_l2_runtime_agg(void) -{ - return tb_to_ns(be64_to_cpu(get_lppaca()->l2_runtime_tb)); -} -EXPORT_SYMBOL(kvmhv_get_l2_runtime_agg); - -u64 kvmhv_get_l1_to_l2_cs_time_vcpu(void) -{ - struct kvm_vcpu *vcpu; - struct kvm_vcpu_arch *arch; - - vcpu =3D local_paca->kvm_hstate.kvm_vcpu; - if (vcpu) { - arch =3D &vcpu->arch; - return arch->l1_to_l2_cs; - } else { - return 0; - } -} -EXPORT_SYMBOL(kvmhv_get_l1_to_l2_cs_time_vcpu); - -u64 kvmhv_get_l2_to_l1_cs_time_vcpu(void) -{ - struct kvm_vcpu *vcpu; - struct kvm_vcpu_arch *arch; - - vcpu =3D local_paca->kvm_hstate.kvm_vcpu; - if (vcpu) { - arch =3D &vcpu->arch; - return arch->l2_to_l1_cs; - } else { - return 0; - } -} -EXPORT_SYMBOL(kvmhv_get_l2_to_l1_cs_time_vcpu); - -u64 kvmhv_get_l2_runtime_agg_vcpu(void) -{ - struct kvm_vcpu *vcpu; - struct kvm_vcpu_arch *arch; - - vcpu =3D local_paca->kvm_hstate.kvm_vcpu; - if (vcpu) { - arch =3D &vcpu->arch; - return arch->l2_runtime_agg; - } else { - return 0; - } -} -EXPORT_SYMBOL(kvmhv_get_l2_runtime_agg_vcpu); - #else int kvmhv_get_l2_counters_status(void) { diff --git a/arch/powerpc/perf/vpa-pmu.c b/arch/powerpc/perf/vpa-pmu.c index bff4cfab7b94..334ef7719db9 100644 --- a/arch/powerpc/perf/vpa-pmu.c +++ b/arch/powerpc/perf/vpa-pmu.c @@ -71,6 +71,28 @@ static const struct attribute_group *vpa_pmu_attr_groups= [] =3D { NULL }; =20 +static u64 get_vcpu_data(struct kvm_vcpu *vcpu, u64 config) +{ + u64 new_data; + + if (!vcpu) + return 0; + + switch (config) { + case L1_TO_L2_CS_LAT: + new_data =3D vcpu->arch.l1_to_l2_cs; + break; + case L2_TO_L1_CS_LAT: + new_data =3D vcpu->arch.l2_to_l1_cs; + break; + case L2_RUNTIME_AGG: + new_data =3D vcpu->arch.l2_runtime_agg; + break; + } + + return new_data; +} + static int vpa_pmu_event_init(struct perf_event *event) { if (event->attr.type !=3D event->pmu->type) @@ -91,56 +113,35 @@ static int vpa_pmu_event_init(struct perf_event *event) return 0; } =20 -static unsigned long get_counter_data(struct perf_event *event) -{ - unsigned int config =3D event->attr.config; - u64 data; - - switch (config) { - case L1_TO_L2_CS_LAT: - if (event->attach_state & PERF_ATTACH_TASK) - data =3D kvmhv_get_l1_to_l2_cs_time_vcpu(); - else - data =3D kvmhv_get_l1_to_l2_cs_time(); - break; - case L2_TO_L1_CS_LAT: - if (event->attach_state & PERF_ATTACH_TASK) - data =3D kvmhv_get_l2_to_l1_cs_time_vcpu(); - else - data =3D kvmhv_get_l2_to_l1_cs_time(); - break; - case L2_RUNTIME_AGG: - if (event->attach_state & PERF_ATTACH_TASK) - data =3D kvmhv_get_l2_runtime_agg_vcpu(); - else - data =3D kvmhv_get_l2_runtime_agg(); - break; - default: - data =3D 0; - break; - } - - return data; -} - static int vpa_pmu_add(struct perf_event *event, int flags) { u64 data; + struct kvm_vcpu *vcpu; + + vcpu =3D local_paca->kvm_hstate.kvm_vcpu; + if (!vcpu) + goto out; =20 + event->pmu_private =3D vcpu; kvmhv_set_l2_counters_status(smp_processor_id(), true); =20 - data =3D get_counter_data(event); + data =3D get_vcpu_data(vcpu, event->attr.config); local64_set(&event->hw.prev_count, data); =20 +out: return 0; } =20 static void vpa_pmu_read(struct perf_event *event) { u64 prev_data, new_data, final_data; + struct kvm_vcpu *vcpu; =20 + vcpu =3D (struct kvm_vcpu *) event->pmu_private; + if (!vcpu) + return; prev_data =3D local64_read(&event->hw.prev_count); - new_data =3D get_counter_data(event); + new_data =3D get_vcpu_data(vcpu, event->attr.config); final_data =3D new_data - prev_data; =20 local64_add(final_data, &event->count); --=20 2.54.0 From nobody Tue Sep 29 06:46:57 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0FDA7445AD3; Tue, 11 Aug 2026 14:03:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457038; cv=none; b=cxpQ+8HYU45OM3LvF6tMjPyA8PerOneedDBC1Xml+xzn9SD6jsjkaSlSFGwSp5i9tpvXq5ywduO77TyA7oJEoe3tqj3S+FsGOSMO3E3yn0RdkBXvszRCLYyyDPUBIifOpAHK1DOWw7Llmqlj9DZDvhXaPNitY+OuUaotm0gVlLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786457038; c=relaxed/simple; bh=7JHJsVwv8q9ro12ZyXg8t3aIaavLSfxDmwSP+nXunHo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AG/jZBtVOlvSv3/0rtck+EpozXO3mGho54rjhFg/QnAc8A7mTFzhm0E4In6ckvoxgMHXjesZv5ejIaS6Y60zUsm3eyI5WcaJkFwWBooA9nMcpIblN0D34WQbn7guvkO6GJUsQ+UNUsZ5p0PYf3tKwdC3WWswX+3FiD9YteLJTmI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=rKBHPFAg; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="rKBHPFAg" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BDWct5492485; Tue, 11 Aug 2026 14:03:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=dKAHFXuRiLyTFft9S xrzg1DrtOzev+TQHXYWHsfwFkw=; b=rKBHPFAgz+E5rgmuXJO7q9WMQa8Y/3NIo Bg/MM0iDRHiUctH6L42X8JgKfmQUyz/1jl33d1SVvLfHLSTe2SMXU5GIhZN/wKXy GsIWNLMvgHT83bqOGv9SWaM4FxcvDZpgaBEKtqOehNzt39js86I+IAROaMS99Hup CULsI+3us876Q1T9iPXsXRMcSaFL3joDbruxwlIRymmKcg+eFVfFwtuEwCH8tSQZ lHcU0pkM8bvPclYkhIJebekMANBbHqMNj7Pjz7+5kqHy1BGu+/QSIFb0e/7F7r17 oYPkzca9L38gmxZ4ZPL0rwbhxJs2KjJCCQzYovgpSB7NSw0fWoSkQ== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvq9d839-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Aug 2026 14:03:47 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67BDuG8g029804; Tue, 11 Aug 2026 14:03:46 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fxhfy0yv7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Aug 2026 14:03:46 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67BE3hWF40305104 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Aug 2026 14:03:43 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 253A52004B; Tue, 11 Aug 2026 14:03:43 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F07A220040; Tue, 11 Aug 2026 14:03:40 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.219.6]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Aug 2026 14:03:40 +0000 (GMT) From: Gautam Menghani To: maddy@linux.ibm.com, atrajeev@linux.ibm.com, npiggin@gmail.com, mpe@ellerman.id.au, chleroy@kernel.org Cc: Gautam Menghani , linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] powerpc/perf: Update prev_count of event to get accurate values Date: Tue, 11 Aug 2026 19:33:09 +0530 Message-ID: <20260811140313.15397-4-gautam@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260811140313.15397-1-gautam@linux.ibm.com> References: <20260811140313.15397-1-gautam@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-GUID: u4Na4jzxmqRsBFgKisVgJDNiZERexDqA X-Authority-Analysis: v=2.4 cv=PbDPQChd c=1 sm=1 tr=0 ts=6a7b2bc4 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=2AWsWaKDJcEKxLcdIakA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDExNyBTYWx0ZWRfX5VXTNq0FaKf8 Qysatjkipqj+OzTqOUeaHVRPTakkrv9q1p693Ntr8EIoaZ2Cyndj4mMwXbausru4ksnUcAYWkaY yxCiiUAlie/++h+VxfZ8hmXWdaFZzCqsFXB87TjVPpr5JCN5pkvA3pXkIOWUK7M+9mmLdIZtgqw 9YxANRKgNZC65QHFwJnXawGu0IFvgxhuH/d2EZUHNM5DCUMD9QhEeoz2Bicgd1PePMZ1g44ycHK zzSKbKxCr68TZCRwmKw7Fi5HlZEPbVjUr1Q09MbdOgCeeHEjh+rVKq/zbQq9FoX/Rd0zqrGdyuQ xj/XnKbrDlecmjYerkTiqCoNEpAqSeGdWp8JtbzOXrj1aI6yd34+aa1wNrYwAzhwh1Hpb+VEoh0 fKHIio2PXGJ3geINzIxgoBXz05YeWnpVcRinUbOZv5zZmaZTB4n+yEVOO26E+gb3sR1nKjsoX6K Pr6Ktr5Vj48836BSecg== X-Proofpoint-ORIG-GUID: pIdlkqF6E0zehb9GQMbNwchtfqSQ5FfX X-Proofpoint-Spam-Info: AW1haW4tMjYwODExMDExNyBTYWx0ZWRfXw3ycQyk6lPb0 smC+YbrhzeemXW+C0Ww5dmPd981VMHLC3HKID6iGE5lFcWMtN99hg+Nedkfu//8nCRQKNPoMVBh /1RFk5tDkh7XOquPjhqSFlyBt++z1zA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 impostorscore=0 malwarescore=0 adultscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110117 Content-Type: text/plain; charset="utf-8" When vpa_pmu_read() is called twice while a process is running on a cpu, the "event->hw.prev_count" variable returns a stale value on the 2nd read which results in a larger value getting added to event->count. Fix this by updating the event->hw.prev_count every time vpa_pmu_read() is called. Signed-off-by: Gautam Menghani --- arch/powerpc/perf/vpa-pmu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/perf/vpa-pmu.c b/arch/powerpc/perf/vpa-pmu.c index 334ef7719db9..f5cfa4d5e369 100644 --- a/arch/powerpc/perf/vpa-pmu.c +++ b/arch/powerpc/perf/vpa-pmu.c @@ -145,6 +145,7 @@ static void vpa_pmu_read(struct perf_event *event) final_data =3D new_data - prev_data; =20 local64_add(final_data, &event->count); + local64_set(&event->hw.prev_count, new_data); } =20 static void vpa_pmu_del(struct perf_event *event, int flags) --=20 2.54.0