From patchwork Wed Feb 26 20:25:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Kumar Patra X-Patchwork-Id: 13993160 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 8078FC1B087 for ; Wed, 26 Feb 2025 20:28:37 +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=13av1zCnXRGub7etFs2rEfSZhx1vgjQrE6ACyxhBm1o=; b=YX22XMtK146g3r Qn6SA2tyKZ4XNam/pXIJv/RSy7+3NqMtk+fzOO7mZm/ZD++9OcPb92Se37YzSlx0Big6ZMG2RXzaX PRek7rwApb/InYi0+Np4kfFi04estv2WQen4/Hmf66Nk+iKTmfkgzDUxh7NNZ+Wj2e2/LM8BHXpTt s3Z1u7XpBQ36c1vKeyJG95eI8hyffN8I0+ohhKSpxfiwjnDRwPmoKTppqBPREHrfced0oT7cULbr6 8XL/A+/RCaZNma8gQ11vU+QbQxZqoQfIAjXRRRTGzNwbxnOHPueHgTClHJEgVWN/RJySQjhRJWiyL BX1ypbRsAhsYzCU2Brrg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnO1B-00000005LCk-0S9i; Wed, 26 Feb 2025 20:28:33 +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 1tnNxw-00000005KQ2-1Vl4 for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 20:25:14 +0000 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-223378e2b0dso2809265ad.0 for ; Wed, 26 Feb 2025 12:25:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1740601511; x=1741206311; 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=9sbKkO5vslqQzNclWEzfBDF/g1FIfkcy+q0e0Bhe+Aw=; b=xTW1aWpeVgV2k5lBnADqBby4LbnZbWzmRKdVexmEtiqr0qbrYkpgQw+u+zn/NYlmZo lgSJw3e99txTg13vgmygp9IpXwn/xV4daxSTwE55zWpdp44BwEeLriVOIE/fdysO/7a3 3CQxkiRQl3FGhUCBqpVFxchJot51TnRzik3HMhP52sQTiJsLh8kJFd7DKSTm7q1Jd5XD g8OL6MAvQ5MfAEbW1NySRU1K0Yculp5aMRnBLEfVxj/u0DE9M05ve4xRihcH7TnIDn1M 4JuvUSfcbs0/3RB65n87WdjhlzoeA+TQcR9/th4UzwNlNPSplxIeukSTC+vsx49MI1zV I93A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740601511; x=1741206311; 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=9sbKkO5vslqQzNclWEzfBDF/g1FIfkcy+q0e0Bhe+Aw=; b=FLkJxQOylN6pYMrkWrs5gPX1hwG/PkPANzTGVUVs9mdNO6zo6qMGNQXKmRK4CCO7Oz 1NfYPglbOtNfRTxoVxREazEvH5PKcpZtNSaAKz38oSU7J0yeT2MhbyQw/NxmXaYuzOiV rQqUsi85dWhJopPxSrQUv7jJL7IlRkAwaPONrCGTU+1B08NF02ursMQpPBkeVsgQZhdU io4jYd6DeRoWpkVclB8EzmDicSMMgF8P8NpapEJs3UKvcwclQ+m2uUVfXL/rOubyqxdr R+jAMdDSJ2afzLZxp03UU2ifyFb1LofOmu9AV34+sFoHZNBJqd5ZisJn5+ZNG40OeY4x p1aA== X-Forwarded-Encrypted: i=1; AJvYcCUvtOSYZyiExDJVRJmBupOD+/JVI6cUirtnzvHYGDFL5dGw31muKs38ETOOfb9x6IfNG2oGxMonZIwTGg==@lists.infradead.org X-Gm-Message-State: AOJu0YyTNmuPYlwi7YDmdXxD8M63kM+v5PWoqjSj9XrA1x7F0bTjksPc WAuX1Yzpjr91evvQpiljFuHSvHe91/DuTtIISHLeqtyq8xHDiZ1bNtdn8l4djAc= X-Gm-Gg: ASbGnctvY8IPTnQEKO64gX4PmvLtvvODX1s3SUkiReYIlu2vYYPzFuKVQARZG1jkJfQ zHjE5ZtNxypNVU6G32MSSA+LVuhwUQlk0le/hKl8kk5OC8I0JPz4cmlPUu7HyqeF8vOe+I9cxk1 l9pPjqdvpCY6QmLfAj19XivModpF0wsrEK7bbgOMhBdnNXqpDZJOOVx+2UtHwmDYraHdhiSKuut TomGJ+6ffGzbfG/Zk1QoPDfmtmGolKSfyatbgFplij46rESsZLbOwZhraBvq86pHBRknk4MW0Lu CHxzJ3gS5sw/usF8wz2jlaPVxNb4F3O7EiwdMTQ= X-Google-Smtp-Source: AGHT+IEWIj7IHjMpuZgHnt8pmhZWNooJK4EQmrGTIUbek2AswW1q0QzF8a3PR6HcOQhdoiMYN4qKxA== X-Received: by 2002:a05:6a00:1ad4:b0:730:888a:252a with SMTP id d2e1a72fcca58-7347918d99bmr11980276b3a.15.1740601511484; Wed, 26 Feb 2025 12:25:11 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7347a7f7de2sm4100963b3a.106.2025.02.26.12.25.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2025 12:25:11 -0800 (PST) From: Atish Patra Date: Wed, 26 Feb 2025 12:25:03 -0800 Subject: [PATCH 1/4] RISC-V: KVM: Disable the kernel perf counter during configure MIME-Version: 1.0 Message-Id: <20250226-kvm_pmu_improve-v1-1-74c058c2bf6d@rivosinc.com> References: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@rivosinc.com> In-Reply-To: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@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-13183 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250226_122512_416126_07388E03 X-CRM114-Status: UNSURE ( 9.53 ) 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") Signed-off-by: Atish Patra Reviewed-by: Andrew Jones --- 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 Wed Feb 26 20:25:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Kumar Patra X-Patchwork-Id: 13993162 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 25271C021B8 for ; Wed, 26 Feb 2025 20:28:39 +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=Rm2Idudu8GzAI9xx3hZ/6wvDWoa24P3TCxwSbBImesw=; b=VcEABi52IN6AfC zpXuNtht8cViryRZV/XtNH2NlZnJR8zkNO1Q6GE5GqcTia/0ecHpoG+jWiXkkL6cyG7EUzoa8UJU8 cxO+ImkTVozy3au0+va60F4laU7HFjFLICdFumsvLxDjOAW8stjubLkDFtFIOnxX13iQI+bVi/naF 3pXsgrJgmxSSe4ea36szrk/wpOAsu28aGEjME7/wyGv+vKEkT5w7W1p4jFt1RQLdu+q6nDfkgOt4v EkQ7XY2r1XH+qSjTeVf3sgAr/q6BcUi+k42WCqa6eiyxJMkYnWO7B0G7/F0/EtYnFKQHRH3AoMH6i 4RptJxkcgf3M9vX/SlAA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnO1C-00000005LDv-0INg; Wed, 26 Feb 2025 20:28:34 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnNxx-00000005KQt-1ZXf for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 20:25:14 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-221206dbd7eso3170055ad.2 for ; Wed, 26 Feb 2025 12:25:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1740601512; x=1741206312; 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=ElQVVHGvy1PCJJEf3x7O3Wq4GDtnkpov0IINkskU+dk=; b=y1U2GVrloXOUtcxXnO7FFCq/QNm4YpnpFWjEb4jdr8meEyTx1GimBN7icSKKhhSoJb oaJvKTGHUisCKL7j76IT7YbPIc9RrY64KFEGCjjGZBtoxw8lW51+rlpriGcFOtl9cqfL nZNZc9UYVJwzv0Lwf1LfURRE9dlWMi+WtYuxWjqc5FN2epDK907pTN7U0pkrqUAWYryt cx6q0jzTH9Nfb9kHX0BGn8hIr7vzKvYxQ8pROORKVON8yQZ2zrFWp+f3dehRyF4kZGC8 Y6SoRf71SjF7R8ZCH3hCjXNI5CRCvMf3X17WK0PJPJ7+vAPlmKUv3EGLfswvrgsF1SIw n0Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740601512; x=1741206312; 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=ElQVVHGvy1PCJJEf3x7O3Wq4GDtnkpov0IINkskU+dk=; b=LnmiF5FexeshyNn5d6EE6z/gaLSXf0IGVTBk9gpKYi78NJNkru8tSrKDDhRy7ZGDKx JBzXqPA4nlNNDPVyFlNRWcSjU5BfIk6yODi/DXxxSmUxQtO85/VkeprU662xx8qt3B99 ml7wsU10IhQg4PoU2k2ZmLu+x6atKB3Z8FVZkm2aDrf1+bJmKkiCIqpVnxHfMOvGcZfh MTF+Nbh8JOjFha2dzOn2LvKMcFgM+98zjE+Sv7NVOYq4LGVr4nqABkDyfBFUP9PH/1/z 9Nc5LBDJ/DHhFhPqAccR925xJUncwbqCQ5yXqlB2zhp7s3lBQzDPGflngsAkp6zXJgjv Z2ww== X-Forwarded-Encrypted: i=1; AJvYcCV66eEy//pZbyW45tU7Fui+AJF/zljl1BCTzXlDDwuNkA+5jLhO0+g5t8JO4SzBqbyIhBmLjyHsoyzSXQ==@lists.infradead.org X-Gm-Message-State: AOJu0YwTbch2qNYlZ3N0pHfi3pRR36V93YxgsxhJxCiF0d8gqH14WG+v TcPorCEYWt8aF8i1R3gbS++Vsr26olbmyvRaKcZFztP0QZXiA3E0TZvdotW9yoc= X-Gm-Gg: ASbGncu9IuUFAIVvWmHje6fzh1XqvvuvB2z+FVHPDXuuzGthvgUpa+5sxeKqtCmFwKf h3rQE0ZEvkIFUpwNxdo6LgGtUgLvUyODfZv518FYZ38/erAozeHw5jvK42KyqhMzgftlbZMxGTg v4fJ0kLXGNNGQkv1G7pt2qvIWRF6ES/wy5a4YIKPEpGjlGvMMUCefmJaEzoDfk7csBCTJ037c8y dumKVA0oezFxT96sSkJbk/eaVQuqCilKKHXpGyvNFZXheLo0+2oJAsK0v8kFcrPvnLXuyH2iDBj fBH+Db2MEFNR7tGD1iSGXtOc6GerwABn9zBD53c= X-Google-Smtp-Source: AGHT+IFqbgodjU8bkbuDJlr/kSmLoWQ/SEWprjRdiuzVEUOwMd31NiSuNQgBjPeic2eXnfkR3SMW9w== X-Received: by 2002:a05:6a00:a1e:b0:732:22e3:7de6 with SMTP id d2e1a72fcca58-7348be4650cmr6595071b3a.17.1740601512524; Wed, 26 Feb 2025 12:25:12 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7347a7f7de2sm4100963b3a.106.2025.02.26.12.25.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2025 12:25:12 -0800 (PST) From: Atish Patra Date: Wed, 26 Feb 2025 12:25:04 -0800 Subject: [PATCH 2/4] KVM: riscv: selftests: Do not start the counter in the overflow handler MIME-Version: 1.0 Message-Id: <20250226-kvm_pmu_improve-v1-2-74c058c2bf6d@rivosinc.com> References: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@rivosinc.com> In-Reply-To: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@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-13183 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250226_122513_436457_55C051D7 X-CRM114-Status: GOOD ( 10.25 ) 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 supported error which is fine as well. Signed-off-by: Atish Patra Reviewed-by: Andrew Jones --- 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 Wed Feb 26 20:25:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Kumar Patra X-Patchwork-Id: 13993163 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 9CC6DC1B0FF for ; Wed, 26 Feb 2025 20:28:39 +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=EJNPw7KzqVnRiK/FqwZ0LbOsmLCZnshhYOfalfwURaw=; b=ANRMEmYU/dJJas 1LvBy9Tz7EF11k3XedVQ1PZUH+zAztTe3QGa1iAwuH+aRcQxsifsXNSBT9OTibQWFfq1kbjBA2v3S wkLWHDiGxORWanMPehVLXm3m6fGEcihQ++UG6XeednNTzu+UIucm5RpGijUTOEZ0Rd8cTdVxyHJzM twtmQ5OhJ1WAGESuP0Cv5PETHqWNthG9Xs/Pa2hHuSk2W93J3cqCL4/VpuZ0cbmxTYv6T12T+4Uqk 5VvGnPviac9QYNAChKORn1r46T+u8pkfaQ7t93QVwt15MiAvr1nxl7DsWEqiTjdYwwZiIp+xhUn9S wmgxA5uIFFN8kFN5n/AQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnO1D-00000005LFX-20DS; Wed, 26 Feb 2025 20:28:35 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnNxy-00000005KRf-1rsd for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 20:25:16 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2211cd4463cso2660105ad.2 for ; Wed, 26 Feb 2025 12:25:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1740601513; x=1741206313; 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=CUL9vPYfIsBYwLRgV8qB6RCZqGNjsrfsVU1Ka6aFYBY=; b=kD3VJdllQQ55pUbEzMJY3nD+gu+XD+QQE+GwCdqy57QhYi1Iv+wgZqgtXDxAGDPGDo r2VYP3rGNhOJHGkLggDOTZZwOv2/A1oJyXb2jx/5s6bpW2m1rd5NCUlvuiYJcey2PElH dGyGO2SOsU+5Wud+w/VOOzXQOppCFSFbOFyApKmPZZRztao77yPAFsgXWHniz3/5IH87 6ypiidAFKhpqbmnaw7Z4Peogkfm7W3pHA0QtSnqqJ+Yhv8wr0TteYhylidJ5UNmbYYiI LL1T4W6Z3jeB8XFGjrUQNWBEIIoi858ixx0mcKzQO9NF6PIdKEfKw94JpohFdv4kC8XN uoNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740601513; x=1741206313; 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=CUL9vPYfIsBYwLRgV8qB6RCZqGNjsrfsVU1Ka6aFYBY=; b=ihOouMkAlGm2r2zemVXdcv4jyappRCBf6o3p7iqTL27mEebGktcmNCg6GqXfTFmvjt OszgjOkAX0A+hbFtZJwKBFFJtH4/OTdJ4AbxbB98HO9jJb+xZM+iDttq3aQZjWpKc1um ZOr9LfJkIXN6KpGYPuf70XstV71Xz4bYVInp5g4iwyQv0yKKGmDPdutSd9QSKqWXf+Ff KC+XiJfJB6MB9qGkmiw63jZlAbfN+qfZBDb7XqEtZcvJe7z+hl580gnppnQmYlldLc0B VITp1Q96ekSOlkosgCCQQ5zKC23sK8HgaevFKQc/DEOwBfTXgTuGJEM/21jwNx4toqG9 BVIw== X-Forwarded-Encrypted: i=1; AJvYcCXhj8uPdPMYFymmptvF0tIPbr/5efVgTQVLj0jU0TWdfiYt+B6Asv0MGzvQyI/ltHZHhfvfqGjWubGOWg==@lists.infradead.org X-Gm-Message-State: AOJu0Ywe8HYrGlIti0Lzj+AELugYCgKlQ42CD5rzlFi3POtLn7+JzGZW aO+hB2XPT5Sa2bKTkmENPwsU/GOsVW6sZuv7fgE5wpi1gj3YAf6XhBjnmX7w7Vg= X-Gm-Gg: ASbGncuAse965HLexqqJ1iFP0rP9wt+k/Caw7qFFPK+A+F97a+ucA8485WbH4rsFbkc ixab1ScFL1Zquwyije4q1D7G0j4kqKHhg+KxXtNmnFuGpdjCYp+luses9ZHe8hF0mbbZ4zqQayE n75NF2SBEtTciJPAZSlwc34hc0AeL8XAiwKmRYFd5Os2ZIyJ8imwdYSnNKp9ny7uB/7DDpW0/Q7 EX7aZ6huvjIg4ZAHpx4QUGEl3h+5H1HzwSYu4JdOdXEVTAwvc4SOO+GUlht2KLr/GkpiOYfmHi9 vvLcgwCrWpwieGAnsATe7Yz4qs8Hst1DsA/bphU= X-Google-Smtp-Source: AGHT+IHVxqxBZKHrXRbMLQx94rePhcj/KMG3dvOa85IKXsVDVZmW7p4O5rV92MpOYiz4YyuBZBfk6Q== X-Received: by 2002:a05:6a00:1828:b0:732:5b10:572b with SMTP id d2e1a72fcca58-734790cbaf5mr13305359b3a.10.1740601513545; Wed, 26 Feb 2025 12:25:13 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7347a7f7de2sm4100963b3a.106.2025.02.26.12.25.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2025 12:25:13 -0800 (PST) From: Atish Patra Date: Wed, 26 Feb 2025 12:25:05 -0800 Subject: [PATCH 3/4] KVM: riscv: selftests: Change command line option MIME-Version: 1.0 Message-Id: <20250226-kvm_pmu_improve-v1-3-74c058c2bf6d@rivosinc.com> References: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@rivosinc.com> In-Reply-To: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@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-13183 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250226_122514_491946_917104E3 X-CRM114-Status: GOOD ( 15.60 ) 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. Signed-off-by: Atish Patra Reviewed-by: Andrew Jones --- 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..533b76d0de82 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, "h:t:n:")) != -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 Wed Feb 26 20:25:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Kumar Patra X-Patchwork-Id: 13993164 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 09BF4C19776 for ; Wed, 26 Feb 2025 20:28:41 +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=ljVZyvnxz7rBIWOWGWthDB7+WwDF/hSkfvxJau7I2RE=; b=bYRD7p0W7Z/8/6 b5OKgkZLgqqCPBmus0Jo/HxdhDWkrce0YNrx1EFp+pdUSf2EJkw9nrd87dEFhMn6dxBXWm5vhEjnS 4NlYC4Q8WFjOZIcCn6LZtw6S9oxPZSoElvSx/893YSibyLqKHc8ET/P0pL8WmvbedbLCzT0v+d6RA ZevOa9+xoIWr++pdaUVyFbxQTUZfIt+Gon67uxcrrdzmeIy/Lo7Ktx94UHMXyXcExcUxhcX+hDVb6 TJUOU0tspWM/xfdAr3+FGP4CiVTZJT1NyYNHVZcQyJVU6sfEBeH7oJChmNS6C64WXvhehtKWmIESs +ZB3kuUbQQ0a4fCZ01Vw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnO1E-00000005LGB-0h9d; Wed, 26 Feb 2025 20:28:36 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnNxz-00000005KSV-0Euf for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 20:25:16 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-22328dca22fso2348315ad.1 for ; Wed, 26 Feb 2025 12:25:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1740601514; x=1741206314; 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=K+xf5rb3O3ZrwcS1pmKysmwXefhXbLuGjQJfAu9gHOI=; b=dXeIdpkCePzWenDydTTLOy7FUhFTAR9lXw83tlUuwbuXzMtyJoXoq/FqZeinDZQ0Gv lvb16e2gkbyNYqmQg2ryNJAi1wLMUIc8AuYWk72tTTo7K7z2dU2bqKq6SjA2Wwa5dye+ uBVOulcSfOFxa7Hc2n2Bx3xjbrvIZOhaDT2/U8NOMtLHJhdeIpQHjyz/RB/XZAB0Q8Pf AEwut6THsLtCrxaVtxSAbYCTz17IRTCce10tdVAPa/6h43dNS4K/TB37tTAqjxmdga+5 dttFo8PG/xGP2o2h9CSaE5acnVZe1zLNiNTK6Zssejbl4JT/c6ycSnSXOHkMswjNTWH1 Y2ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740601514; x=1741206314; 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=K+xf5rb3O3ZrwcS1pmKysmwXefhXbLuGjQJfAu9gHOI=; b=iLSDsHx5FbYecFm7pIyrBOjhudBqw5hiFVF48fDfmPwAVIGO+jM0b2R0gVlSb6PQ6q UlEYHAt/g/yay6LGN7GTM7rpnr5u0BLLrY5RCD8eqqLBHNYsBqd05fl4mDYzGZxGnz0U mideUkcLUjut0pf7QwFjZK6lNvnkLOhPUoJd86UMtZ2wRk9HsIkI9oNh7hd+avskyGpB De5jGZQHtLAz+usug4gXE6UNVq1HGBGvCvmhRdw8B4eUq7tZ/jJxni31WAxh0BIxtRF9 2AYZOlCn/uS9gyiTJP/fmQWbNpiMy9ejhkFAl611PS79eGZIf+Gfs2UNgwhP20uMk9IA zpAg== X-Forwarded-Encrypted: i=1; AJvYcCVBf+09X7gCVaAasww7WzYcBBMH40ISvJWDoEjqyP5aSdSJDTsfvFI3llmBybGrkMuk/BUmWjXqgll12Q==@lists.infradead.org X-Gm-Message-State: AOJu0Ywt7mxYehZZtIMPKzzk72MbfRg9pkrcNaVBcfWTR0jor7MqiLOw rwCFT57bQlNv7d40bTOeUEapP27GUNsjeWgFLl0z4AP+nWQMw2uqx6O8737sR04= X-Gm-Gg: ASbGncuiNoKLmq5paEWButLro/Qjz0s5/PJKNJePK1Fn6zDnBro7mBXp1aEr4cQ9xpE f7nl+oV3iWrRNhjYgQbeCbvgXDwtyYz7jOAnDTTfn+X2je6mI9IbN/2HWAJ3DHi1IQo7MXmu5Rr ewp0RWXErYc6i8gdJjH5OcHvNTkH8psoVKkjT1T64wcwcWUTNOKfAg773RhDvizpXo7Coo8W31G vdsWm4EsbdNWn0vVjdWm6+lUY2BS+zc9Ptrr6T99xxxg+E5M4MNAI7ImKCN+ZlSCbcuT6NCCDCp W1PXo0PQnFJFlqecut3tgch2KyXAI26yUJv/oi4= X-Google-Smtp-Source: AGHT+IHw0vBB+PSny2qMliUf6DTVa+ZvGcPh/rPnK0tt+c9UR1fNAKJeSn8VDRagyarmbZCnK8Ejgg== X-Received: by 2002:a05:6a00:a26:b0:72d:3b2e:fef9 with SMTP id d2e1a72fcca58-734791aa184mr14536500b3a.20.1740601514558; Wed, 26 Feb 2025 12:25:14 -0800 (PST) Received: from atishp.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7347a7f7de2sm4100963b3a.106.2025.02.26.12.25.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2025 12:25:14 -0800 (PST) From: Atish Patra Date: Wed, 26 Feb 2025 12:25:06 -0800 Subject: [PATCH 4/4] KVM: riscv: selftests: Allow number of interrupts to be configurable MIME-Version: 1.0 Message-Id: <20250226-kvm_pmu_improve-v1-4-74c058c2bf6d@rivosinc.com> References: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@rivosinc.com> In-Reply-To: <20250226-kvm_pmu_improve-v1-0-74c058c2bf6d@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-13183 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250226_122515_103145_FCBAAE57 X-CRM114-Status: GOOD ( 18.19 ) 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 --- tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 36 ++++++++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c index 533b76d0de82..7c273a1adb17 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,6 +640,8 @@ 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; + int overflow_interrupts = -1; + while ((opt = getopt(argc, argv, "h:t:n:")) != -1) { switch (opt) { case 't': @@ -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);