Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp196940ybt; Tue, 30 Jun 2020 18:20:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWGagfpSOHhIcb05CmAdzq8Z3DRfkQTcghMi1M2pdBzrNWfyNwpZ3Mon1uzjA6GbqpSqmh X-Received: by 2002:a50:cf43:: with SMTP id d3mr27594232edk.40.1593566411871; Tue, 30 Jun 2020 18:20:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593566411; cv=none; d=google.com; s=arc-20160816; b=UgWNvO72IIB0BQa9N4x+3f0AwrogDGD3i/m0bdXbMInPMYsR5sWPhSz8er79p1neuQ qa0BZnCyeXg1Qt3+TJGFaBkvCU3Dt4LyVM1ZghgqLsYCsTEPgd3O5xn3Ci5r/v17zENN LZw/FC9RvRXUxdGFGrv1Pb1uCyqEbooPl9tsavyKP/gX8oSFIpeyNdDKMiX8FuazZ1iI 1PvwfPHTBOtPSA9mbfXNwX5XtIibn/1fWEl2fgyguUtGVPIcCyZ/gcwJnuwYpdotDagn BIk9RD1/NI9ZvnpwyuItfG+u3SlF4QP9PiG2/rSSKmgC66mInJIYMiDA6B+z2m7Q3gJs J6dA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=VqVypQWqTxV48bS0QvdBaCuxmaUrnxxaRRipbQWZA0I=; b=cqp4XilNLcKeJnGc2PcxGl/3EDAoQHbBjxhgTes0EQALUdiAmizdcu86fsH1bB35IY eNSw09NdF4vYD75cnWHu7BngzaHcfZIqf4vewelbuQhyOlOWPNquEudbprSQUxrdn9Yp +iCDY9QRlpzdcKU1z6tUG3bER/DcaOxefaQaz+cifWYGN2j000mf5yFCWb5t5gT6Qisd TZkubjBH8r/HMCLIglgCxpIuz/r4FA5Yfh0vDYyXOFeidwyLG4OtM2ImuRETTaYmXmIc tJNnCMklICqlasVu2VrnuQVoK//hkEehsbnqf0i8CPRLgMVcL8aQ3+ZbE3uBKvNAmyxm X7lw== ARC-Authentication-Results: i=1; mx.google.com; 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 h14si2912012eje.503.2020.06.30.18.19.48; Tue, 30 Jun 2020 18:20:11 -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; 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 S1726469AbgGABSh (ORCPT + 99 others); Tue, 30 Jun 2020 21:18:37 -0400 Received: from atcsqr.andestech.com ([60.248.187.195]:53180 "EHLO ATCSQR.andestech.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725937AbgGABSh (ORCPT ); Tue, 30 Jun 2020 21:18:37 -0400 X-Greylist: delayed 1586 seconds by postgrey-1.27 at vger.kernel.org; Tue, 30 Jun 2020 21:18:36 EDT Received: from ATCSQR.andestech.com (localhost [127.0.0.2] (may be forged)) by ATCSQR.andestech.com with ESMTP id 0610ijSs066933 for ; Wed, 1 Jul 2020 08:44:45 +0800 (GMT-8) (envelope-from alankao@andestech.com) Received: from mail.andestech.com (atcpcs16.andestech.com [10.0.1.222]) by ATCSQR.andestech.com with ESMTP id 0610i76Y066903; Wed, 1 Jul 2020 08:44:07 +0800 (GMT-8) (envelope-from alankao@andestech.com) Received: from andestech.com (10.0.15.65) by ATCPCS16.andestech.com (10.0.1.222) with Microsoft SMTP Server id 14.3.123.3; Wed, 1 Jul 2020 08:51:29 +0800 Date: Wed, 1 Jul 2020 08:51:29 +0800 From: Alan Kao To: Zong Li CC: , , , Subject: Re: [RFC PATCH 0/6] Support raw event and DT for perf on RISC-V Message-ID: <20200701005129.GA27962@andestech.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [10.0.15.65] X-DNSRBL: X-MAIL: ATCSQR.andestech.com 0610i76Y066903 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 11:19:09AM +0800, 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. > > 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 > DT-based PMU registration looks good to me. Together with Anup's feedback, we can anticipate that the following items will be: - rewrite RISC-V PMU to a platform driver - propose SBI PMU extention - fixes: RV32 counter access, namings, etc. Yes, all are good directions towards better counting (`perf stat`) function. But as the original author of RISC-V perf port, please allow me to address the fundamental problems of RISC-V perf, again [0][1][2][3], that the sampling (`perf record`) function never earned enough respect. Counting gives you a shallow view regarding an application, while sampling demystifies one for you. The problems are three-fold (1) Interrupt Sampling in perf requires that a HPM raises an interrupt when it overflows. Making RISC-V perf platform driver or not has nothing to do with this. This requires more discussions in TGs. (2) S-mode access to PMU CSRs This is also addressed in this patch set but to me, it is kind of like a SBI-solves-them-all mindset to me. Perf event is for performance monitoring thus we should eliminate any possible overhead if we can. Setting event masks through SBI calls for counting maybe OK, but if we really take sampling and interrupt handling into consideration, it is questionable if it is still a viable way. (3) Registers, registers, registers There is just no enough CSR/function for perf sampling. The previous proposal explains why [2]. Perf sampling is off-topic but somehow related, so I bring it up here just for your information. As this patch set goes v2, the PMU porting guide in [0] should be removed since it contains no useful information anymore. [0] Documentation/riscv/pmu.rst [1] https://www.youtube.com/watch?v=Onvlcl4e2IU [2] https://github.com/riscv/riscv-isa-manual/issues/402 This proposal has been posted in Privileged Spec Task Group, in https://lists.riscv.org/g/tech-privileged-archive/message/488?p=,,,20,0,0,0::Created,,Proposal,20,2,40,32306071 but never receive any feedback. [3] https://lists.riscv.org/g/tech-unixplatformspec/message/84 I intended to discuss [2] in the Unixplatform Spec Task Group at the online meeting, but obviously people were too busy knowing who the new RISC-V CTO is and what he has done to even follow the agenda.