Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3000863ybt; Mon, 29 Jun 2020 12:33:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYlirwbBvApgUYNsW7FDU/yurvvvvZXslkXGUiY7NaJ3S2biz6Qsfstx334GY5qKHtvguQ X-Received: by 2002:a50:ec8b:: with SMTP id e11mr8510672edr.344.1593459219057; Mon, 29 Jun 2020 12:33:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593459219; cv=none; d=google.com; s=arc-20160816; b=jpAl82GLQFv710PeROUtbwYWx84I23q6rUURfxpS9Mn0R1HozS1lBMH0BHAnJ88YD/ eWaWoAl4dS/JrlFNUQumev3AFR+V1Ndq8jRfRzAb15VT+sTcJi/Z7djwYXya86L2aeSV nWD+2jGuD8DTow/KbKfeaMqjEh5ItAer+7hpHTP8jJ7chh98NMYDYrLiYusRANF6x5vI SClLvwflPNZnd0H2uHFROgSl+/krtVAzhREvqeDk2cu3sDl/zrYhmOZusz0iSfjtNp72 LaDfu5R7YxDI7bAMV1TmjUlXgWlMeZwt6pbYPLitpzqoE7mWT3Uo94g16vRN4C//6Kjs OOdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=CpGY14F7o8tvnSzx9JOHKFiHnDFjBtM9leHhvp2Jk2Q=; b=Q5EBjG2EQ38JNPJtffXaZ+TgAKFOJqQx2nuTtc8OwwzZB19cfRCU0FROZJa3wQcngV w9pBc3ertAh1ZcuZvtU8QMNR0skbZKYcPt3HETtxza5CFQLXJyKVHLNplDbf93M9zMjp oD+Xmrxyn1i26rDA2ZOrUAPvvz55ijjLNIIOQmEHr9KJeNYVL9/L6IFQqZNlFhi7gW1A /RIqVfwqd3LC3OVqlQ8W1nrf0PcICNfC+grUdEJFMcLBi/AiXPi709SpYQ3rGwIhNJ1r dXEc4ZRk7DUiZpJuxeRIEQ/yUufLkGjXoi5AAftht32CekiJO4WTwU9/m7gv4uCs8gnu sZ1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b="E/BIkeJ3"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z9si361118ejm.47.2020.06.29.12.33.13; Mon, 29 Jun 2020 12:33:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b="E/BIkeJ3"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733244AbgF2Tcy (ORCPT + 99 others); Mon, 29 Jun 2020 15:32:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733237AbgF2Tcp (ORCPT ); Mon, 29 Jun 2020 15:32:45 -0400 Received: from mail-ot1-x343.google.com (mail-ot1-x343.google.com [IPv6:2607:f8b0:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA3ADC02A54B for ; Mon, 29 Jun 2020 05:53:15 -0700 (PDT) Received: by mail-ot1-x343.google.com with SMTP id t18so2554034otq.5 for ; Mon, 29 Jun 2020 05:53:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=CpGY14F7o8tvnSzx9JOHKFiHnDFjBtM9leHhvp2Jk2Q=; b=E/BIkeJ3asC+kXjjStwJJA5dG4G+MZ4kz2qFEdYHNZxCWxWvSe4xDKIrHmimQqSfMo Cfeh5RGaPg+ctZ5yoMPEnn3B4dc7SG7+7bveYyqnKQVbmmUYpcl2PeDyT5DrEVRMWJI7 73DMiaCu8DulBQWIv8b/PcnOmUzR5HqcSlRTUGD41ylmF2N7sh6sonFf8HS5eCAwJdI4 8RkTlGnGuXGsR8OSqINbsbtbbqPjsEEEhYVZZ2ALVqrO7Tl4RBHXWL6XjWlcBT+yTv89 yBU/zVKIkkoQYSoZrS9MzUD3C6847fY+dlJ7XnmEiE7E3uQfB6zPKMYHArgVrZr+yAhb NAqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=CpGY14F7o8tvnSzx9JOHKFiHnDFjBtM9leHhvp2Jk2Q=; b=cLy/KqdQ8OM6tXG7r6HCQ9A+n6gp8SO9/kENvAkl/tvgvQWvmVasORz0pnrtquUV2n xm+9AaWpqH/OeQcGTogbqPACj6iKArDht4ze90/yy3KGZ1rNFW/mJofRlHWknmsJgQvJ UKmONSLe+wre4TgK0qWG/wexG2i6Wcl8sTfBP7QLQQT1khNr5DqkQU2ckbZYjcfCAs8M h6m4YpkJQAEB8Q3hBd0rl38842Y1l3swGundTHpce6PJj/ck3q22Fqmdod2ipeUM8EID Ch2IaUQaKtoI7vRBJ2zh1I4v3TACj/6xCQt/seHNLYd6klVxbB48Eba412UhiBWncg4u 5X5A== X-Gm-Message-State: AOAM533rfULEdGFjdPlpv/FMDA++tNI5o/DZkxfEe2aUPwXQL7Tni4kB jrPuPdyDthb+kEm5eaA1cwT6zrvCR2oJxR0h1dke4Q== X-Received: by 2002:a9d:186:: with SMTP id e6mr13462718ote.33.1593435195031; Mon, 29 Jun 2020 05:53:15 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Zong Li Date: Mon, 29 Jun 2020 20:53:04 +0800 Message-ID: Subject: Re: [RFC PATCH 0/6] Support raw event and DT for perf on RISC-V To: Anup Patel Cc: Alan Kao , Palmer Dabbelt , Paul Walmsley , linux-riscv , "linux-kernel@vger.kernel.org List" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 29, 2020 at 4:28 PM Anup Patel wrote: > > On Mon, Jun 29, 2020 at 11:22 AM Zong Li wrote: > > > > On Mon, Jun 29, 2020 at 12:53 PM Anup Patel wrote: > > > > > > On Mon, Jun 29, 2020 at 8:49 AM Zong Li wrote: > > > > > > > > This patch set adds raw event support on RISC-V. In addition, we > > > > introduce the DT mechanism to make our perf more generic and common. > > > > > > > > Currently, we set the hardware events by writing the mhpmeventN CSRs, it > > > > would raise an illegal instruction exception and trap into m-mode to > > > > emulate event selector CSRs access. It doesn't make sense because we > > > > shouldn't write the m-mode CSRs in s-mode. Ideally, we should set event > > > > selector through standard SBI call or the shadow CSRs of s-mode. We have > > > > prepared a proposal of a new SBI extension, called "PMU SBI extension", > > > > but we also discussing the feasibility of accessing these PMU CSRs on > > > > s-mode at the same time, such as delegation mechanism, so I was > > > > wondering if we could use SBI calls first and make the PMU SBI extension > > > > as legacy when s-mode access mechanism is accepted by Foundation? or > > > > keep the current situation to see what would happen in the future. > > > > > > > > This patch set also introduces the DT mechanism, we don't want to add too > > > > much platform-dependency code in perf like other architectures, so we > > > > put the mapping of generic hardware events to DT, then we can easy to > > > > transfer generic hardware events to vendor's own hardware events without > > > > any platfrom-dependency stuff in our perf. > > > > > > Please re-write this series to have RISC-V PMU driver as a regular > > > platform driver as drivers/perf/riscv_pmu.c. > > > > > > The PMU related sources will have to be removed from arch/riscv. > > > > > > Based on implementation of final drivers/perf/riscv_pmu.c we will > > > come-up with drivers/perf/riscv_sbi_pmu.c driver for SBI perf counters. > > > > > > > There are some different ways to implement perf, and current > > implementation seems to be consensus when perf was introduced at the > > beginning [0][1]. I don't persist to which one, I could change the > > implementation as you mentioned if it is a new consensus one. > > > > [0] https://github.com/riscv/riscv-linux/pull/124#issuecomment-367563910 > > I would not recommend taking the original RISC-V linux fork as reference. > > Rather we should study how things are done on other architectures. > > I really appreciate the attempt to make RISC-V PMU driver depend on DT > but if we are going this route then we should maximize the use of Linux > platform driver framework. In fact, whenever possible we should integrate > RISC-V features as platform drivers under the drivers/ directory. > OK, I would change the implementation to platform driver if there is no other voice. > I thought about SBI PMU counters as well. In future, we can easily > expose SBI PMU counters as RAW events in the same RISC-V PMU > driver. The sbi_probe_extension() can be used in RISC-V PMU driver > to check for SBI PMU counters so no special provisions needed in DT > for SBI PMU counters. > I thought about probing raw events by SBI extension too, I'm interested if you have more detail about this. It seems to me that it is a little bit hard to return all events through one SBI call, so I thought we could map the generic hardware events and maintain their own raw events by each platform in OpenSBI. But eventually, I thought the DT mechanism is more clear and easy than that. Let me know if you have any ideas about probe function. Thanks. > Also, the RISC-V PMU driver can be implemented such that it will > work for RV32, RV64, NoMMU RV32, and NoMMU RV64. > > Regards, > Anup > > > [1] https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/f19TmCNP6yA > > > > > Regards, > > > Anup > > > > > > > > > > > Zong Li (6): > > > > dt-bindings: riscv: Add YAML documentation for PMU > > > > riscv: dts: sifive: Add DT support for PMU > > > > riscv: add definition of hpmcounter CSRs > > > > riscv: perf: Add raw event support > > > > riscv: perf: introduce DT mechanism > > > > riscv: remove PMU menu of Kconfig > > > > > > > > .../devicetree/bindings/riscv/pmu.yaml | 59 +++ > > > > arch/riscv/Kconfig | 13 - > > > > arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 13 + > > > > arch/riscv/include/asm/csr.h | 58 +++ > > > > arch/riscv/include/asm/perf_event.h | 100 ++-- > > > > arch/riscv/kernel/Makefile | 2 +- > > > > arch/riscv/kernel/perf_event.c | 471 +++++++++++------- > > > > 7 files changed, 471 insertions(+), 245 deletions(-) > > > > create mode 100644 Documentation/devicetree/bindings/riscv/pmu.yaml > > > > > > > > -- > > > > 2.27.0 > > > >