From patchwork Mon Mar 3 22:53:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 13999596 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B456FC282D2 for ; Mon, 3 Mar 2025 22:53:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=eYS2HXBhY/CB9xXa+uWiIA2ZgjwSIp8WUBDKja/Q0J0=; b=KI6IlSOKRg8xoR 9aEjKFdcu5hUj4rTjg6NHYPBTKGArJBnqi94Y5WurnaZ30HwUvqfMcmkhhmTvyPy5CqpzfFzrLTlS fLYA7OSCe8JATj+UaGBF+9qcohJSMpS2XXKrV4FvjFfXuz5+jlpTJO5e9fQcf0Lq1lKwwrpFzNrCR WyQFaiYYfHhyzUz+sHqnlBjLDfpxAR3kxry6r3ARH0YNbv+kvSXKUtSDldXz+AxPQ2U66rre4p+VO YG5sKqAA842U8096IvvOn1joHxpj14yreOcuxIJL9T6C7g95g5J/T0qbZI2zkMBNokDEwZiSHXp7L NjizUZxqNUH5Y2j5pUOQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tpEez-00000002Vzq-2VpQ; Mon, 03 Mar 2025 22:53:17 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tpEev-00000002Vw5-3S2Y for linux-riscv@lists.infradead.org; Mon, 03 Mar 2025 22:53:16 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-223378e2b0dso71982745ad.0 for ; Mon, 03 Mar 2025 14:53:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1741042393; x=1741647193; darn=lists.infradead.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=mugBhowmjHeOZ8voD78niLPk8kFDSWBL6lZCl8cn1Qg=; b=ch3ccgSJtvNry+ip5X0qGjeYI5gMZ7V5/KXNQmr9PTahLbHlH72IfJJAgNQLyiNAFt BUNJjBUADoXqozPgKSAro5qBkXO5kMpEvV631lWcPb9yqPh9lShILqWxXMJi2PgG4lTp 1lTNcj/LKoujmFSZbrhVGsy6h+w2+Is8Y0jgv6O/2F3XHZTKCCpGErvhb/55xNsJU62k N5nXCHCywbfGZvNosyTVCX3zK9SFBw2jet0u+/o6BN4VNb6G8Mp7cfjpoP4T2SuFkGI+ +TIFepY4cydDDbHRzYVxe/m9TWUEgx1EzADTGlZO7+HQPOKYVW7VxDVhH8irLSyun0V0 dkDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741042393; x=1741647193; 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=mugBhowmjHeOZ8voD78niLPk8kFDSWBL6lZCl8cn1Qg=; b=jaYJMJVl7N71W/Ni9pSX5QaXaiwJU0cG0Ci4vqhOTUrRS6/FuuAUeY1nnDrluy1Cww fYwIk2cGJCH/Hwg01NPtqAuf2gvx7YHCE5k+fOlbWDKT7NzhPiMoDcxRPBH20KYZly2G 9pTXfKdMqX//r13JK+ttdCAxQSEB6YXKL3JuDtM9ieqqoM2DncPAk1lixzALEiyODUwN 7AbP5qj+Ci/ZmGfq1qb9OMC9vFhJyqjsc5oL6ytcKvfTzQVmcOl9zONE3X2ZDqpxVIKw v6p5uCLzJh+SeaYFlE7+p2whEYnN2K7XSwOognc1DzftcFeT1scpmWRiUqBBSJybJQGH f2Yw== X-Forwarded-Encrypted: i=1; AJvYcCW+pWkw7G3JkvIKWj9A1TcDe24ncfGs4/M7h/D3jimBJT0JUjeP62r8WAKO58iZzFf0331nkHUxBmGCVA==@lists.infradead.org X-Gm-Message-State: AOJu0YxIwzRV3K45D69pSrZgeYdMChCZub7Nfs1W2rEbZkeQdK7IPboI Jrdn8OdLO1dlA89zsJIM5vt2qx1l37UohRr9lZXbVjZueP6zZ1Dyocf1Kpr3sL4= X-Gm-Gg: ASbGnctiH+OZTBRe6DCHaYhGAbRLKWS2TYVaG6rqOtKjSZVHeIuOq/RxOamE5lUHd1R mKYF5fADXioiSao9XSTSKh6K10zBz137ZPfLK2XZ1cRVIWpCn+skQkld7EZcS66Sir+02a4YF/m sZT/W+LSXtnVNCrKZo9kdz/XODx0/Zpoh5IsBNf8qr3agTBc8TY4Vkwx+WRaPUGwwNE8fwm3fZr JLySbtd2nD+QO6+3t1D9Mt2roMufIA+GYHOl9eLI68vWY/z/Bae+Hqw+BmCsSNpsVwDM2dNHS9Z vj+Gg1QMDtbdjlmrRqT3Hnz44K2Ul7cf4QH9AN8rUBN5NcGILzs2x/Qp5A== X-Google-Smtp-Source: AGHT+IGcN7KmSzWUc3x2Q9hIKcCxmrhzor1ESo6ey42ZNpnLuX0uKU0+qCp3SXFy7hHj8nlBIEN6rA== X-Received: by 2002:a05:6a00:240c:b0:732:2170:b68b with SMTP id d2e1a72fcca58-734abee4a68mr22681643b3a.0.1741042393072; Mon, 03 Mar 2025 14:53:13 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-734a003eb4fsm9440601b3a.129.2025.03.03.14.53.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 14:53:12 -0800 (PST) From: Atish Patra Date: Mon, 03 Mar 2025 14:53:06 -0800 Subject: [PATCH v2 1/4] RISC-V: KVM: Disable the kernel perf counter during configure MIME-Version: 1.0 Message-Id: <20250303-kvm_pmu_improve-v2-1-41d177e45929@rivosinc.com> References: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> In-Reply-To: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Andrew Jones , Paolo Bonzini , Shuah Khan Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Atish Patra X-Mailer: b4 0.15-dev-42535 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250303_145313_863586_FADD0B20 X-CRM114-Status: UNSURE ( 9.50 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org The perf event should be marked disabled during the creation as it is not ready to be scheduled until there is SBI PMU start call or config matching is called with auto start. Otherwise, event add/start gets called during perf_event_create_kernel_counter function. It will be enabled and scheduled to run via perf_event_enable during either the above mentioned scenario. Fixes: 0cb74b65d2e5 ("RISC-V: KVM: Implement perf support without sampling") Reviewed-by: Andrew Jones Signed-off-by: Atish Patra --- arch/riscv/kvm/vcpu_pmu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c index 2707a51b082c..78ac3216a54d 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -666,6 +666,7 @@ int kvm_riscv_vcpu_pmu_ctr_cfg_match(struct kvm_vcpu *vcpu, unsigned long ctr_ba .type = etype, .size = sizeof(struct perf_event_attr), .pinned = true, + .disabled = true, /* * It should never reach here if the platform doesn't support the sscofpmf * extension as mode filtering won't work without it. From patchwork Mon Mar 3 22:53:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 13999595 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2302AC282D4 for ; Mon, 3 Mar 2025 22:53:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MKzlnGz0pekpSdoUgM/VIHhviaa+RVREgKW8o0t1mqc=; b=WDFg7stGwSQjOm NlAM+EweDxLN3cEnK6H+XD8TW2n/xyNygmu3yLeBY/1obadc1JZ3aDqjB2ZuFle3Exrfyaa+Jf7Yp gx1YtTYKc+bcczKNE6EpV4MhEtJQh71WNTh4ounfDdavmwdIlAO7N4UWQ8LKls/94ePLjkiIik9c/ pD58jRDkzH4yhOmwfBUeryVGURDxLJrLNpgXvDXHl8V1kT1E50z9fexPzSVDtOx6ruDqL9N4u4fKM SC2CnopNbXnwu6XARlgylPZz7iucbr5QxOjL1clo2HaqusZwBlVA8i7xlMtVCXCo/oQAqGHjfqmcB vjgiBkv8nKCua5e8kzCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tpEf0-00000002W0o-1LjI; Mon, 03 Mar 2025 22:53:18 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tpEew-00000002Vwl-3ynB for linux-riscv@lists.infradead.org; Mon, 03 Mar 2025 22:53:16 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2234daaf269so67658385ad.3 for ; Mon, 03 Mar 2025 14:53:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1741042394; x=1741647194; darn=lists.infradead.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=b5xoxucipI3r87CV5kbgeUb/z0QLUAJbC0b2XlScuLU=; b=x4m2p6eWFylsRwtv2AF0PxoKI2IIfPsEW4aOD//bRVPmGpt6Bq5Nxj9ZdgZHS5UW6n orCbku9DWOs+qVhGD5viAAIH/6SWIICc+4pZx5882J2+4guj3k2nbnqpOj1wDj9gdVLo KYi2PzmSjhDUgTLw0SxBeTnSXIETDfLhdqzliWrquqf7zZwitp+KO4vmESq2OB3v08bb lRlG+NTFLL4WArUCYjLh0G3s1r/E3dSBsbW4lHkv3fBQlNEbJ1qU7GDAWBv6gbxvDP9e u3xZMiIgXBmZWsgy7p9Jr1ulZpkioB+vxwdGjfDrOduGbouphbwV+T91sjjIcA1pwquJ AzQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741042394; x=1741647194; 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=b5xoxucipI3r87CV5kbgeUb/z0QLUAJbC0b2XlScuLU=; b=uHa0SVBt+TL3yzIrvbI3j/3HhFf3w0IlrrlhIKwrQiRA0MKv9XCqMXXd9Tik9zOlsi 6jRIIsS0i2tLpIDoNzLlMDUPDL93JzLMBp77ZKJ9znKAr/LHKgAI2w34oinHbzWsClq1 oFOb339w9QMChcYIQyud34q6+4Q6Xt5lGtme9ERVGaQlkE0AuY3kuRmcd/lQOptIdtlM Kl+92C1alcLdhfpWM3CNdCRJUIKsGWnesiwnG29uGqTGXmNgjnU5ZDbzC3Z1A9jFUOGx cgxZ3+Uthw1UJldnpjF4gqw0d0YEWJDjHV9wRiFmTxkQdJ1930Kt3B4F5m+KAfUeVvr9 5LcA== X-Forwarded-Encrypted: i=1; AJvYcCX62BNeS808K0aKv8X5rKMptoFp0Ln5W7PNxuYDNQjiVjnyitRFIOKuT09VnuOphGf2I2el6EClSeK62A==@lists.infradead.org X-Gm-Message-State: AOJu0YzBaR4abqLyWORQjKLKCK31567vKY5wEUNpwiXhrn/bmuhYL96U mwrHT4hqh4uL9zWSyEl8z3Zm4Ck0K2mM3/pTrIWg2SY4qagFJg+kWrVVIUUbCJU= X-Gm-Gg: ASbGnctAEsd/dnxqb4MdEgrrn2+f6rFxPgVWETUfq+W0Hu6ZzJuGnPpgLD9f2PMHbiC Xo3PMa6Hu8VXDTija9xnE2sLATK3oQJ08PUUwDZQ6mOOvt4FpeLTpvrKpxQ/XCdkfUlmce0AUNZ 5OZ3S7pnnbErjrwRDD1J4gROQ29AkhBf5laESDQUBISbzpEk2J/kndMSWW1mIX5paAoT0O/APqF 16aZk9BL7mCbSHiqt/neMMaPmLrrs3gu1JZf1iK++1Jsr6GGHZzTJcSpdL0D+ppCm4nZdo5DN3/ crs0Q6yHu2wAZ/SfeC6MWkP6MU3NMm5fWH+rDc0/EgxUaW7aQvfPMTYpdg== X-Google-Smtp-Source: AGHT+IGy8hMH+W8RZy5SJOGyzi1MeiJvJku2zV+j7M0txVehkixRDHS/MmEvMDbU3gziq5b3wIbZEQ== X-Received: by 2002:a17:903:230c:b0:21f:78f:c178 with SMTP id d9443c01a7336-22368fa5425mr202955235ad.3.1741042394242; Mon, 03 Mar 2025 14:53:14 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-734a003eb4fsm9440601b3a.129.2025.03.03.14.53.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 14:53:13 -0800 (PST) From: Atish Patra Date: Mon, 03 Mar 2025 14:53:07 -0800 Subject: [PATCH v2 2/4] KVM: riscv: selftests: Do not start the counter in the overflow handler MIME-Version: 1.0 Message-Id: <20250303-kvm_pmu_improve-v2-2-41d177e45929@rivosinc.com> References: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> In-Reply-To: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Andrew Jones , Paolo Bonzini , Shuah Khan Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Atish Patra X-Mailer: b4 0.15-dev-42535 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250303_145315_014695_112B7266 X-CRM114-Status: GOOD ( 10.31 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org There is no need to start the counter in the overflow handler as we intend to trigger precise number of LCOFI interrupts through these tests. The overflow irq handler has already stopped the counter. As a result, the stop call from the test function may return already stopped error which is fine as well. Reviewed-by: Andrew Jones Signed-off-by: Atish Patra --- tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c index f45c0ecc902d..284bc80193bd 100644 --- a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c +++ b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c @@ -118,8 +118,8 @@ static void stop_counter(unsigned long counter, unsigned long stop_flags) ret = sbi_ecall(SBI_EXT_PMU, SBI_EXT_PMU_COUNTER_STOP, counter, 1, stop_flags, 0, 0, 0); - __GUEST_ASSERT(ret.error == 0, "Unable to stop counter %ld error %ld\n", - counter, ret.error); + __GUEST_ASSERT(ret.error == 0 || ret.error == SBI_ERR_ALREADY_STOPPED, + "Unable to stop counter %ld error %ld\n", counter, ret.error); } static void guest_illegal_exception_handler(struct ex_regs *regs) @@ -137,7 +137,6 @@ static void guest_irq_handler(struct ex_regs *regs) unsigned int irq_num = regs->cause & ~CAUSE_IRQ_FLAG; struct riscv_pmu_snapshot_data *snapshot_data = snapshot_gva; unsigned long overflown_mask; - unsigned long counter_val = 0; /* Validate that we are in the correct irq handler */ GUEST_ASSERT_EQ(irq_num, IRQ_PMU_OVF); @@ -151,10 +150,6 @@ static void guest_irq_handler(struct ex_regs *regs) GUEST_ASSERT(overflown_mask & 0x01); WRITE_ONCE(vcpu_shared_irq_count, vcpu_shared_irq_count+1); - - counter_val = READ_ONCE(snapshot_data->ctr_values[0]); - /* Now start the counter to mimick the real driver behavior */ - start_counter(counter_in_use, SBI_PMU_START_FLAG_SET_INIT_VALUE, counter_val); } static unsigned long get_counter_index(unsigned long cbase, unsigned long cmask, From patchwork Mon Mar 3 22:53:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 13999597 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2D482C282D0 for ; Mon, 3 Mar 2025 22:53:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=NsFgeJoNMw6zhif2yd6c7Q9WJQBXNUk69M/89m6RsmI=; b=kXvBWEKvwuaQIr rHHQJ6Bz0laFLDovX4TnE7qEF1vSJWXDvodEEoBRctBgL43BbGCiD4z/iztgSOZ6dzGOI1sqcTJLP LlTWt5Bj97S02TVbg1cE7pQZVZKKHHyf1Lv7SrT4Ce1uBlbNtwEGN8Ct4bUy+c8zJq3r0S31nT6Ed 09tbXsQoN/3eTtFrmYj8HCLk4Te3+9x/hjVrGT2i0Dh4TTzibA7gNRzRvLfmIkU7hX/PDV0++RRE5 z87ofAn8cCkqZItl1vDQvt0RGuq3jQ1AOYdJszZq6eWxLjb0hAHELuOPgIDSGuwuDVIH/7dEuSvnn SaPE6Z9q+DPjE6f8ckkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tpEf1-00000002W33-2SS0; Mon, 03 Mar 2025 22:53:19 +0000 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tpEey-00000002Vxp-03U7 for linux-riscv@lists.infradead.org; Mon, 03 Mar 2025 22:53:17 +0000 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-22374f56453so82803475ad.0 for ; Mon, 03 Mar 2025 14:53:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1741042395; x=1741647195; darn=lists.infradead.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=SSJ9VliM2a+aTryqldG0CH+Q28sfdpKDs8cwc/DPQU0=; b=SK9bzEOvlJ/WgfCCYl0a6q/GLS8bSqZ5yKU9MZ2M2HsP5v8n3WZqvu4PO7QAJLcBGO 2rNseWsGP+YfIJjrhcnTli1S7baePrUijmOSHkFoxt4RdDQ/pHNmQzXCV6Vi11JuDfKg DxqJAfh5Z/DBen7g1iXt0NFtithVgmhSoAiCmya3TdytTA/zRNOOWCSMGk+o+yjqwvLQ OKKZjp98tmuWQbKng5p+DFhPDKXFwQPSEwipb0ZQDRXqnlnGdwPLvh4CXidbe37MFl43 OByuxsoFtCsIj2YtdWvvW2VYMrWtzFlZOII5qezsFvhqC2FEMirQVvLULVK0cQkC3i1Z 5aTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741042395; x=1741647195; 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=SSJ9VliM2a+aTryqldG0CH+Q28sfdpKDs8cwc/DPQU0=; b=nLm4o472kthjdnc4GK71YMDxqoJisftYkVBf3dulXAjwFF2RyvyFI+6OmkvBVG6Ssi pIt5ANA5PGpsYPM6dfJnkzDjEbnDJ6z23fghUU/vOvZQSh5lH4IBKLPfg8ETHu8T6YZK eqfmkYhZFjslm5FGMN35vhfrnJgqPg/ZGVE+PvHMvmzshNcFiqhG68q5wzzr+iQUi1tY /kbg9/RIimfKyZJaCIlkUZ5XUvm+xJ/C7SBmaQy673WOFfvvqsS/sf4KeJ0Xr3EapSUA wFThpJ/dDN04rVcaP2WroONUI9WotuljJA++dnyZaIzbviR4lZzx2QkDvbn9oHxd4MFF oqbQ== X-Forwarded-Encrypted: i=1; AJvYcCWKZhBJHod6kAne+G65FGaefvrRk6Spaf7XMkf7A1ak2HUExK6Tb6BuEiiP8OrGoekmeO1pKYIjRGoqzg==@lists.infradead.org X-Gm-Message-State: AOJu0YzNIpVgWPHmZWQgzesZeQG9vV10PqOtuBkcSZm20nV7QsGj1SBv 7as6QJue5Tn1ltD/Aa8jBQtf7ETFE5SxcBPNCJVqFy7nZ6EPQJY6mJoKtmXZVrg= X-Gm-Gg: ASbGncuNIHKGfwI7Ii/9n5afEYC4JIWeQsIRE8pdOZ32QWNA6K1c/Xin9h8N1NU2ZJB +dB37VhEDUyPdKNkuoSh6ggaWX3ih4Hs4cAatb3Ymu//rQrqPCgPbat2yvOhXpPv/leZFu34Jvi ACGa+iOFgN4EfkwAmwjgGudWTaUEt/1ll93nDeeRFjA8Ncr5NtN/3Bz18c8u4eD1PV/8MzoA71h 4Ai5G6tqwT0l2k263DNcaBC3TaC4jpkBo2GqApL2yHOM7iTU9QB68TPZpM9xzok7plbyNSN8b3z aRRp8o0j+55rs/A0iFlw9u5hDvJACklOtrhi9gqy3/upwrlHlPhRA9hw4A== X-Google-Smtp-Source: AGHT+IFgJxk7LwSBEIbBrY7Dr1CLOJZk/TMcnbzG8visvcRF+/r9iXWzrvGMz6kqm+x+c1jOver7mQ== X-Received: by 2002:a05:6a00:244d:b0:736:5504:e8af with SMTP id d2e1a72fcca58-7365504e9edmr9350148b3a.24.1741042395376; Mon, 03 Mar 2025 14:53:15 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-734a003eb4fsm9440601b3a.129.2025.03.03.14.53.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 14:53:15 -0800 (PST) From: Atish Patra Date: Mon, 03 Mar 2025 14:53:08 -0800 Subject: [PATCH v2 3/4] KVM: riscv: selftests: Change command line option MIME-Version: 1.0 Message-Id: <20250303-kvm_pmu_improve-v2-3-41d177e45929@rivosinc.com> References: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> In-Reply-To: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Andrew Jones , Paolo Bonzini , Shuah Khan Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Atish Patra X-Mailer: b4 0.15-dev-42535 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250303_145316_095632_4804ADBD X-CRM114-Status: GOOD ( 15.56 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org The PMU test commandline option takes an argument to disable a certain test. The initial assumption behind this was a common use case is just to run all the test most of the time. However, running a single test seems more useful instead. Especially, the overflow test has been helpful to validate PMU virtualizaiton interrupt changes. Switching the command line option to run a single test instead of disabling a single test also allows to provide additional test specific arguments to the test. The default without any options remains unchanged which continues to run all the tests. Reviewed-by: Andrew Jones Signed-off-by: Atish Patra --- tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 40 +++++++++++++++--------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c index 284bc80193bd..de66099235d9 100644 --- a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c +++ b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c @@ -39,7 +39,11 @@ static bool illegal_handler_invoked; #define SBI_PMU_TEST_SNAPSHOT BIT(2) #define SBI_PMU_TEST_OVERFLOW BIT(3) -static int disabled_tests; +struct test_args { + int disabled_tests; +}; + +static struct test_args targs; unsigned long pmu_csr_read_num(int csr_num) { @@ -604,7 +608,11 @@ static void test_vm_events_overflow(void *guest_code) vcpu_init_vector_tables(vcpu); /* Initialize guest timer frequency. */ timer_freq = vcpu_get_reg(vcpu, RISCV_TIMER_REG(frequency)); + + /* Export the shared variables to the guest */ sync_global_to_guest(vm, timer_freq); + sync_global_to_guest(vm, vcpu_shared_irq_count); + sync_global_to_guest(vm, targs); run_vcpu(vcpu); @@ -613,28 +621,30 @@ static void test_vm_events_overflow(void *guest_code) static void test_print_help(char *name) { - pr_info("Usage: %s [-h] [-d ]\n", name); - pr_info("\t-d: Test to disable. Available tests are 'basic', 'events', 'snapshot', 'overflow'\n"); + pr_info("Usage: %s [-h] [-t ]\n", name); + pr_info("\t-t: Test to run (default all). Available tests are 'basic', 'events', 'snapshot', 'overflow'\n"); pr_info("\t-h: print this help screen\n"); } static bool parse_args(int argc, char *argv[]) { int opt; - - while ((opt = getopt(argc, argv, "hd:")) != -1) { + int temp_disabled_tests = SBI_PMU_TEST_BASIC | SBI_PMU_TEST_EVENTS | SBI_PMU_TEST_SNAPSHOT | + SBI_PMU_TEST_OVERFLOW; + while ((opt = getopt(argc, argv, "ht:")) != -1) { switch (opt) { - case 'd': + case 't': if (!strncmp("basic", optarg, 5)) - disabled_tests |= SBI_PMU_TEST_BASIC; + temp_disabled_tests &= ~SBI_PMU_TEST_BASIC; else if (!strncmp("events", optarg, 6)) - disabled_tests |= SBI_PMU_TEST_EVENTS; + temp_disabled_tests &= ~SBI_PMU_TEST_EVENTS; else if (!strncmp("snapshot", optarg, 8)) - disabled_tests |= SBI_PMU_TEST_SNAPSHOT; + temp_disabled_tests &= ~SBI_PMU_TEST_SNAPSHOT; else if (!strncmp("overflow", optarg, 8)) - disabled_tests |= SBI_PMU_TEST_OVERFLOW; + temp_disabled_tests &= ~SBI_PMU_TEST_OVERFLOW; else goto done; + targs.disabled_tests = temp_disabled_tests; break; case 'h': default: @@ -650,25 +660,27 @@ static bool parse_args(int argc, char *argv[]) int main(int argc, char *argv[]) { + targs.disabled_tests = 0; + if (!parse_args(argc, argv)) exit(KSFT_SKIP); - if (!(disabled_tests & SBI_PMU_TEST_BASIC)) { + if (!(targs.disabled_tests & SBI_PMU_TEST_BASIC)) { test_vm_basic_test(test_pmu_basic_sanity); pr_info("SBI PMU basic test : PASS\n"); } - if (!(disabled_tests & SBI_PMU_TEST_EVENTS)) { + if (!(targs.disabled_tests & SBI_PMU_TEST_EVENTS)) { test_vm_events_test(test_pmu_events); pr_info("SBI PMU event verification test : PASS\n"); } - if (!(disabled_tests & SBI_PMU_TEST_SNAPSHOT)) { + if (!(targs.disabled_tests & SBI_PMU_TEST_SNAPSHOT)) { test_vm_events_snapshot_test(test_pmu_events_snaphost); pr_info("SBI PMU event verification with snapshot test : PASS\n"); } - if (!(disabled_tests & SBI_PMU_TEST_OVERFLOW)) { + if (!(targs.disabled_tests & SBI_PMU_TEST_OVERFLOW)) { test_vm_events_overflow(test_pmu_events_overflow); pr_info("SBI PMU event verification with overflow test : PASS\n"); } From patchwork Mon Mar 3 22:53:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 13999598 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B13E1C282C6 for ; Mon, 3 Mar 2025 22:53:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dvg82/w5aUD57JCvfcPZBg39dRGimWJrl1mRTrGcGUQ=; b=hphkjEVqOq4UR8 zATC3KH4uiLzk3Hlaub8UcVgCfuMbIuZXpQwqi8L29dlnfscTFqXTgUEVTYDt4F8cZK3FWqxwfNpf 5aFBGd3F0+DBAqlqZ99TulBgbBp7jTYFaocx4M0opHIi1mM7UZdjDPkWJJ6nU3g0IXpz4whuFgpXw tOYLNJdYdNoEDaHhWXgveYBpfyPckKphmpBaDfJQmo1H9E+kmBmNGLKU6/JCXpcW0sMOe5kL1NBJu rqlNDOuQASN9h2QKTemd+cRKaK0s1NW4OEFVpr66WQ/7JUkkYSsL6szsgugAZ2rlByt7RJLd6pX4P 1w/figLlN6F/Fab/fquw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tpEf2-00000002W3v-2Fla; Mon, 03 Mar 2025 22:53:20 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tpEez-00000002Vyp-01jg for linux-riscv@lists.infradead.org; Mon, 03 Mar 2025 22:53:18 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-219f8263ae0so92314365ad.0 for ; Mon, 03 Mar 2025 14:53:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1741042396; x=1741647196; darn=lists.infradead.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=ZCtM/lSFNLHVQ6KX2EDg2QNHrviALMnTGfDgB4f3TXM=; b=APO4lA1h0JMF3lbAiQ8LnpidI5BNQEzg1QwjC+jmIvdd0/IM8PtxqZC4GY9f8x663k 9scuMy7suZllFKETQkFGzYsYUpePLnGJRi5IKoYllEij8PCl5W9X7dCMjoQ4CARll3n0 Q1OTTzfFLRmPcxM1/XPyE7OZaC5c9HHwNQBd5NFgvhk3hIcCWQxDr8C/SOMsQbNV7OBH QYkf5wlknRvsxZOzSIpkcFxNhZP4fhXcyrKGJeanxeGLaFbXnrjnXb6u9WllA5Q+y0Q9 /3o8OYBcTb44q8DmB12CeqORyZdE1QN8e6pQFIsWWMuAa2IkP7kLd9S/1mwqQdL1478k VkgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741042396; x=1741647196; 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=ZCtM/lSFNLHVQ6KX2EDg2QNHrviALMnTGfDgB4f3TXM=; b=VTY7MYrJm1rBcMy+Oth2tFGsZd6kwVqSl36Jefed85KmE/JAdL9kcMom1ydVyMbQmE S3OAYn5WRXj/BcfRAgFv51PKNCYkgsSocXrVHtb7Md23hvxFcQOGMtPr95YC/CmzD0c/ vrS/5QDPNZl8PsbUt0Aav2fyI0g7EMF/cloUSgz7oRhQ4Nu5cx6DMoSVlUcR03svV05j TxiwtZD7CPfYfG4Jx2oa4MFRT0qu+CZz3GoGkNQwRxUshTC1oHgGg+hK1feOgmXl14XN rr/cbTc2NMPwdTPhmIHU0GqNzugBv8s+/UN7LyDuNGnVNYz+lMFlU/rlWhS6M/ppsOh7 leAQ== X-Forwarded-Encrypted: i=1; AJvYcCVNxJ7Oan2QL+tV8fodXaS9bM+0UD+czFlthzht/z6snqO9AlNjCnQ014SzkeWz0lipKbf6Sqpt/k+ggw==@lists.infradead.org X-Gm-Message-State: AOJu0YzD6hW5c5q4XhU/lLu5V5HlMVUfjwZAaWzWr4vVpRTkGeO0cOIs sEH9kO/jKk2gOtPMINd1SXG1+iqf6He+jFO3bEnFBwxT5EezraAfcDCa4coGDpI= X-Gm-Gg: ASbGncslHD1MFd6R2c3Ln2mH6EBfDEdxkRUza8uQhSh+NTdLRDBXpyS1qFzPF1eqjxg ldH8Qtp1pVKw9/owseaXP69yW/Ejc1DX4yJy61idITCVX5kI344QnCLzIJrVknBXfnXboXDlrtr FIlLtJ4el6+tPa0NiFLzruFNzQo8RJsNCKX2Ao3ndTioXpr0wpB5EZQvfoTjVyadRGIPK4fmUui 5ciRnHMmljWSKuFSk0poHFFNsFp97rMHD/zHOLfT6BUMf4g58glRIEuMDTkM1ZtFvgKoADFYss4 aaEMtodfl1m+VJC5GTCILSxFRdkzodJKx7py6qq8Zjg0HmVomr8T2qdj0w== X-Google-Smtp-Source: AGHT+IGXirVkG7YmM+e3F/UoJqVCuA4YUPHtWRuh1VU5G5YFfQvPrt0/VrZAaOMzGSWX8Cr6YTAmAg== X-Received: by 2002:a05:6a00:92a1:b0:736:3ed1:e842 with SMTP id d2e1a72fcca58-7363ed1ec20mr10954047b3a.20.1741042396365; Mon, 03 Mar 2025 14:53:16 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-734a003eb4fsm9440601b3a.129.2025.03.03.14.53.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 14:53:16 -0800 (PST) From: Atish Patra Date: Mon, 03 Mar 2025 14:53:09 -0800 Subject: [PATCH v2 4/4] KVM: riscv: selftests: Allow number of interrupts to be configurable MIME-Version: 1.0 Message-Id: <20250303-kvm_pmu_improve-v2-4-41d177e45929@rivosinc.com> References: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> In-Reply-To: <20250303-kvm_pmu_improve-v2-0-41d177e45929@rivosinc.com> To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Andrew Jones , Paolo Bonzini , Shuah Khan Cc: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Atish Patra X-Mailer: b4 0.15-dev-42535 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250303_145317_052598_38A0CAB9 X-CRM114-Status: GOOD ( 17.64 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org It is helpful to vary the number of the LCOFI interrupts generated by the overflow test. Allow additional argument for overflow test to accommodate that. It can be easily cross-validated with /proc/interrupts output in the host. Signed-off-by: Atish Patra Reviewed-by: Andrew Jones --- tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 38 +++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c index de66099235d9..03406de4989d 100644 --- a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c +++ b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c @@ -39,8 +39,10 @@ static bool illegal_handler_invoked; #define SBI_PMU_TEST_SNAPSHOT BIT(2) #define SBI_PMU_TEST_OVERFLOW BIT(3) +#define SBI_PMU_OVERFLOW_IRQNUM_DEFAULT 5 struct test_args { int disabled_tests; + int overflow_irqnum; }; static struct test_args targs; @@ -478,7 +480,7 @@ static void test_pmu_events_snaphost(void) static void test_pmu_events_overflow(void) { - int num_counters = 0; + int num_counters = 0, i = 0; /* Verify presence of SBI PMU and minimum requrired SBI version */ verify_sbi_requirement_assert(); @@ -495,11 +497,15 @@ static void test_pmu_events_overflow(void) * Qemu supports overflow for cycle/instruction. * This test may fail on any platform that do not support overflow for these two events. */ - test_pmu_event_overflow(SBI_PMU_HW_CPU_CYCLES); - GUEST_ASSERT_EQ(vcpu_shared_irq_count, 1); + for (i = 0; i < targs.overflow_irqnum; i++) + test_pmu_event_overflow(SBI_PMU_HW_CPU_CYCLES); + GUEST_ASSERT_EQ(vcpu_shared_irq_count, targs.overflow_irqnum); + + vcpu_shared_irq_count = 0; - test_pmu_event_overflow(SBI_PMU_HW_INSTRUCTIONS); - GUEST_ASSERT_EQ(vcpu_shared_irq_count, 2); + for (i = 0; i < targs.overflow_irqnum; i++) + test_pmu_event_overflow(SBI_PMU_HW_INSTRUCTIONS); + GUEST_ASSERT_EQ(vcpu_shared_irq_count, targs.overflow_irqnum); GUEST_DONE(); } @@ -621,8 +627,11 @@ static void test_vm_events_overflow(void *guest_code) static void test_print_help(char *name) { - pr_info("Usage: %s [-h] [-t ]\n", name); + pr_info("Usage: %s [-h] [-t ] [-n ]\n", + name); pr_info("\t-t: Test to run (default all). Available tests are 'basic', 'events', 'snapshot', 'overflow'\n"); + pr_info("\t-n: Number of LCOFI interrupt to trigger for each event in overflow test (default: %d)\n", + SBI_PMU_OVERFLOW_IRQNUM_DEFAULT); pr_info("\t-h: print this help screen\n"); } @@ -631,7 +640,9 @@ static bool parse_args(int argc, char *argv[]) int opt; int temp_disabled_tests = SBI_PMU_TEST_BASIC | SBI_PMU_TEST_EVENTS | SBI_PMU_TEST_SNAPSHOT | SBI_PMU_TEST_OVERFLOW; - while ((opt = getopt(argc, argv, "ht:")) != -1) { + int overflow_interrupts = 0; + + while ((opt = getopt(argc, argv, "ht:n:")) != -1) { switch (opt) { case 't': if (!strncmp("basic", optarg, 5)) @@ -646,12 +657,24 @@ static bool parse_args(int argc, char *argv[]) goto done; targs.disabled_tests = temp_disabled_tests; break; + case 'n': + overflow_interrupts = atoi_positive("Number of LCOFI", optarg); + break; case 'h': default: goto done; } } + if (overflow_interrupts > 0) { + if (targs.disabled_tests & SBI_PMU_TEST_OVERFLOW) { + pr_info("-n option is only available for overflow test\n"); + goto done; + } else { + targs.overflow_irqnum = overflow_interrupts; + } + } + return true; done: test_print_help(argv[0]); @@ -661,6 +684,7 @@ static bool parse_args(int argc, char *argv[]) int main(int argc, char *argv[]) { targs.disabled_tests = 0; + targs.overflow_irqnum = SBI_PMU_OVERFLOW_IRQNUM_DEFAULT; if (!parse_args(argc, argv)) exit(KSFT_SKIP);