From mboxrd@z Thu Jan 1 00:00:00 1970 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC192C77B7C for ; Thu, 20 Apr 2023 00:32:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231950AbjDTAcQ (ORCPT ); Wed, 19 Apr 2023 20:32:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39836 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231892AbjDTAcL (ORCPT ); Wed, 19 Apr 2023 20:32:11 -0400 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 936C35FF7 for ; Wed, 19 Apr 2023 17:32:08 -0700 (PDT) Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-3f048b144eeso171385e9.1 for ; Wed, 19 Apr 2023 17:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1681950727; x=1684542727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=cpHsbQZOI2szya5getePPbZFizdtNLAvh8GmFlwAN1M=; b=ysPLUsQMbedXCyQYZr6Zc+fSt8NWoLdVDcqcVZDHhCrCDaB2sk6rhO14ftB7Jzggai cVizcqRRor6XZZATBcC+Q5hAviYJW6j84oNJYMS9tlWqa54/Pl+veZlWD37xLZk3abmk gpO4AFFVZuCznXvk946oY0x/ygmv4NsGux2cbs+vd0xuZ8EljM6IzQUd37HOvFZcJ2i0 5S3EnekxS0JmeXrrTdh0WIw/79II6znLakNv9k9n/OvrhR9O18k2UGFvYZ4gT9wZDVhW StRsYpOeMeYj+Yv0Th1ngB3fz+qDAknM0kw1O7NtNRq99eyDTfj4vP12sDUbhJl+foEI ep0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681950727; x=1684542727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cpHsbQZOI2szya5getePPbZFizdtNLAvh8GmFlwAN1M=; b=klnaLU3bV1t5RgH4Q16oOFrLeuKWSyyU/qDa1thrLTvFsnZiNPJRIyaf4j3XQD57xH McxzHVUX7zVWpw7+5Nb7nFJinOLdXxtBwhXXq8VqkUN2PTn8OwPSpvoKWdlHBomKSR1W 07jbT9eGUJywylIntEC3mfFztV5RvZAIHmnDIdMjx4GBJMQbXh2H4qpbYZk3oCgBfuHJ 3twSc3nM6hzLK22UUU9jiwPW8IoSP3KlCOhTtEHIBTHvON0XhcwbM0HHf2arN63+CedE cXIRvrScljV9K0wLAySCzrgcqiWQcfssZzy3qBC3MtDZnYxSIXJnon6pSwkoJpAn31dl B2mw== X-Gm-Message-State: AAQBX9fpRjXtC9bzvxq5LCA18ZfYM2Fmj6LkkURyLb0YY5yTeyppzI2a wKRO/pHuGM8fAQzP0qeYe41Gc9NiRDZl0bQXyvs3Jg== X-Google-Smtp-Source: AKy350aBel/7MtmlYCMSjJPTLJNrhcBDWM1l1EErpsirii/9U3cgHvYfQURMqtj3yNFdf/eUjBr+4QIODnFlFBR70+I= X-Received: by 2002:a05:600c:314c:b0:3f1:7490:e5a4 with SMTP id h12-20020a05600c314c00b003f17490e5a4mr90071wmo.6.1681950726866; Wed, 19 Apr 2023 17:32:06 -0700 (PDT) MIME-Version: 1.0 References: <20230413161725.195417-1-alexghiti@rivosinc.com> In-Reply-To: From: Ian Rogers Date: Wed, 19 Apr 2023 17:31:50 -0700 Message-ID: Subject: Re: [PATCH 0/4] riscv: Allow userspace to directly access perf counters To: Atish Patra Cc: Alexandre Ghiti , paranlee , David Laight , Jonathan Corbet , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Will Deacon , Rob Herring , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-perf-users@vger.kernel.org" , "linux-riscv@lists.infradead.org" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 19, 2023 at 4:22=E2=80=AFPM Atish Patra = wrote: > > On Wed, Apr 19, 2023 at 11:13=E2=80=AFPM Ian Rogers = wrote: > > > > On Wed, Apr 19, 2023 at 2:21=E2=80=AFAM Alexandre Ghiti wrote: > > > > > > Hi Ian, > > > > > > On Tue, Apr 18, 2023 at 10:30=E2=80=AFPM Atish Patra wrote: > > > > > > > > On Tue, Apr 18, 2023 at 11:46=E2=80=AFPM Ian Rogers wrote: > > > > > > > > > > On Tue, Apr 18, 2023 at 9:43=E2=80=AFAM Atish Patra wrote: > > > > > > > > > > > > On Fri, Apr 14, 2023 at 2:40=E2=80=AFAM David Laight wrote: > > > > > > > > > > > > > > From: Atish Patra > > > > > > > > Sent: 13 April 2023 20:18 > > > > > > > > > > > > > > > > On Thu, Apr 13, 2023 at 9:47=E2=80=AFPM Alexandre Ghiti wrote: > > > > > > > > > > > > > > > > > > riscv used to allow direct access to cycle/time/instret c= ounters, > > > > > > > > > bypassing the perf framework, this patchset intends to al= low the user to > > > > > > > > > mmap any counter when accessed through perf. But we can't= break the > > > > > > > > > existing behaviour so we introduce a sysctl perf_user_acc= ess like arm64 > > > > > > > > > does, which defaults to the legacy mode described above. > > > > > > > > > > > > > > > > > > > > > > > > > It would be good provide additional direction for user spac= e packages: > > > > > > > > > > > > > > > > The legacy behavior is supported for now in order to avoid = breaking > > > > > > > > existing software. > > > > > > > > However, reading counters directly without perf interaction= may > > > > > > > > provide incorrect values which > > > > > > > > the userspace software must avoid. We are hoping that the u= ser space > > > > > > > > packages which > > > > > > > > read the cycle/instret directly, will move to the proper in= terface > > > > > > > > eventually if they actually need it. > > > > > > > > Most of the users are supposed to read "time" instead of "c= ycle" if > > > > > > > > they intend to read timestamps. > > > > > > > > > > > > > > If you are trying to measure the performance of short code > > > > > > > fragments then you need pretty much raw access directly to > > > > > > > the cycle/clock count register. > > > > > > > > > > > > > > I've done this on x86 to compare the actual cycle times > > > > > > > of different implementations of the IP checksum loop > > > > > > > (and compare them to the theoretical limit). > > > > > > > The perf framework just added far too much latency, > > > > > > > only directly reading the cpu registers gave anything > > > > > > > like reliable (and consistent) answers. > > > > > > > > > > > > > > > > > > > This series allows direct access to the counters once configure= d > > > > > > through the perf. > > > > > > Earlier the cycle/instret counters are directly exposed to the > > > > > > userspace without kernel/perf frameworking knowing > > > > > > when/which user space application is reading it. That has secur= ity implications. > > > > > > > > > > > > With this series applied, the user space application just needs= to > > > > > > configure the event (cycle/instret) through perf syscall. > > > > > > Once configured, the userspace application can find out the cou= nter > > > > > > information from the mmap & directly > > > > > > read the counter. There is no latency while reading the counter= s. > > > > > > > > > > > > This mechanism allows stop/clear the counters when the requesti= ng task > > > > > > is not running. It also takes care of context switching > > > > > > which may result in invalid values as you mentioned below. This= is > > > > > > nothing new and all other arch (x86, ARM64) allow user space > > > > > > counter read through the same mechanism. > > > > > > > > > > > > Here is the relevant upstream discussion: > > > > > > https://lore.kernel.org/lkml/Y7wLa7I2hlz3rKw%2F@hirez.programmi= ng.kicks-ass.net/T/ > > > > > > > > > > > > ARM64: > > > > > > https://docs.kernel.org/arm64/perf.html?highlight=3Dperf_user_a= ccess#perf-userspace-pmu-hardware-counter-access > > > > > > > > > > > > example usage in x86: > > > > > > https://github.com/andikleen/pmu-tools/blob/master/jevents/rdpm= c.c > > > > > > > > > > The canonical implementation of this should be: > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi= t/tree/tools/lib/perf/mmap.c#n400 > > > > > > > > Thanks for sharing the libperf implementation. > > > > > > > > > which is updated in these patches but the tests are not: > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi= t/tree/tools/perf/tests/mmap-basic.c#n287 > > > > > Which appears to be an oversight. The tests display some differen= ces > > > > > > > > Yes. It's an oversight. We should make sure that perf mmap tests pa= ss > > > > for RISC-V as well. > > > > > > Yes, that's an oversight, I had a local test adapted from this one bu= t > > > forgot to update it afterwards, I'll do that in the next version. > > > > > > Thanks for your quick feedbacks and sorry for being late, > > > > > > Alex > > > > Thanks Alex, there was an equally likely chance that I wasn't > > understanding things :-) Is there any information on RISC-V PMU > > testing? I know ParanLee is interested. It'd be awesome to have > > Are you looking for something specific to RISC-V general or perf on RISC-= V? > All the RISC-V PMU patches have been upstream for a while (both in the > Qemu & Linux kernel). > Perf should work out-of-the box when you boot the latest kernel in the > latest version of the Qemu. > > Initial KVM[1] patches support got merged during the last merge > window. It doesn't support > event sampling yet. We are working on that. > > [1] https://lore.kernel.org/lkml/20230207095529.1787260-1-atishp@rivosinc= .com/ Cool, it'd be nice to have a recipe for this from x86 Linux :-) > > something say on: > > https://perf.wiki.kernel.org/index.php/Main_Page > > on how to run tests, perhaps on QEMU or known to work boards. We can > > also just drop a link on there if there is information. We can also > > add the RISC-V PMU information to the links here: > > https://perf.wiki.kernel.org/index.php/Useful_Links > > > > I did not see any arch specific information there. Let us know what > would be good to > add there and we would be happy to add. I was specifically thinking under Manuals where the Intel, AMD and ARM manuals are, links to the RISC-V documentation could be added. Thanks, Ian > > Thanks, > > Ian > > > > > > > > > > > > > > > > > > between x86 and aarch64 that have assumed userspace hardware coun= ter > > > > > access, and everything else that it is assumed don't. > > > > > > > > > > Thanks, > > > > > Ian > > > > > > > > > > > > Clearly process switches (especially cpu migrations) cause > > > > > > > problems, but they are obviously invalid values and can > > > > > > > be ignored. > > > > > > > > > > > > > > So while a lot of uses may be 'happy' with the values the > > > > > > > perf framework gives, sometimes you do need to directly > > > > > > > read the relevant registers. > > > > > > > > > > > > > > David > > > > > > > > > > > > > > - > > > > > > > Registered Address Lakeside, Bramley Road, Mount Farm, Milton= Keynes, MK1 1PT, UK > > > > > > > Registration No: 1397386 (Wales) > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Regards, > > > > > > Atish > > > > > > > > > > > > > > > > -- > > > > Regards, > > > > Atish > > > > -- > Regards, > Atish From mboxrd@z Thu Jan 1 00:00:00 1970 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 EF35CC77B73 for ; Thu, 20 Apr 2023 00:32:28 +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:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1Er7Pjzfxd36L9iMHtMaOa7Z4v6NAHzCuCEjSR50GBc=; b=1BINndqAs9zKTv zoXFBMq+NGH+DEBneBTo2n1qRr3i/hgwwU1iSVcKiGYn5OWFUlRRpllxAlJWNpHoyue5egJ6iNuHM 69f4k/AzkyALRGc6fCxRXcS1Mz8dxcZW34RlhBSsRGY2G6L0IapZtgu7i3eruryYOPBSUvpaa1DOu CMVVwtzKILC8UQHwpyflWcz2/XpciwuGMU5mzVp3HqQQglUSGNCJTTpoWhtViZsZ1ub1RRCHLHQvK KxTGVAR+K/TbUR1erPiJsh7n66+h53+irmOUwdlADVJja+Cvpa7OU2IkTmdXGv1g8nVVFZ0RXxCWU 06Op3OLNECZ61HpIB5OQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1ppIDf-006jTJ-2d; Thu, 20 Apr 2023 00:32:15 +0000 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1ppIDb-006jQu-1q for linux-riscv@lists.infradead.org; Thu, 20 Apr 2023 00:32:14 +0000 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-3f048b144eeso171405e9.1 for ; Wed, 19 Apr 2023 17:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1681950727; x=1684542727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=cpHsbQZOI2szya5getePPbZFizdtNLAvh8GmFlwAN1M=; b=ysPLUsQMbedXCyQYZr6Zc+fSt8NWoLdVDcqcVZDHhCrCDaB2sk6rhO14ftB7Jzggai cVizcqRRor6XZZATBcC+Q5hAviYJW6j84oNJYMS9tlWqa54/Pl+veZlWD37xLZk3abmk gpO4AFFVZuCznXvk946oY0x/ygmv4NsGux2cbs+vd0xuZ8EljM6IzQUd37HOvFZcJ2i0 5S3EnekxS0JmeXrrTdh0WIw/79II6znLakNv9k9n/OvrhR9O18k2UGFvYZ4gT9wZDVhW StRsYpOeMeYj+Yv0Th1ngB3fz+qDAknM0kw1O7NtNRq99eyDTfj4vP12sDUbhJl+foEI ep0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681950727; x=1684542727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cpHsbQZOI2szya5getePPbZFizdtNLAvh8GmFlwAN1M=; b=b8soeKOvI4gqEIxIGfrc4GasYKMsjFN1Er0x877PCMcGaBaPMrMsBbu+a4kE7ocRy1 3/vncoLVVUfOjRe2dWOlMZQcbGLTLiCMaQ0GPolzVYH4afXjGtxEEH6lk9HXIA1sKe12 BSgRqELr6JB161wuDMbi+ERHmYwCSKcVJNeKkEV++ARDG8/xNSr/aDw7R6K1CjTxsqSk +hbIn2PUm72rZlLNcqnOlXQpcX3TgTuQvBI2DGduzjDY+j54btPBGLpVZqD6P4deLMxH s5wMX8tJlJDgXlWS3OtPughJTBVW1uXymeYnsPn2x55AyqG/W0gqOV5kSqbyYsbUxqF4 geDg== X-Gm-Message-State: AAQBX9dt8/GGZzf067zM9Mskjx8RdmFiFEzsEY8oZWfhfWwp69Cg523o CZkSWoJ5UYXMKaWB6Na+Tcxq4Gf4iES2SlESCRAwkA== X-Google-Smtp-Source: AKy350aBel/7MtmlYCMSjJPTLJNrhcBDWM1l1EErpsirii/9U3cgHvYfQURMqtj3yNFdf/eUjBr+4QIODnFlFBR70+I= X-Received: by 2002:a05:600c:314c:b0:3f1:7490:e5a4 with SMTP id h12-20020a05600c314c00b003f17490e5a4mr90071wmo.6.1681950726866; Wed, 19 Apr 2023 17:32:06 -0700 (PDT) MIME-Version: 1.0 References: <20230413161725.195417-1-alexghiti@rivosinc.com> In-Reply-To: From: Ian Rogers Date: Wed, 19 Apr 2023 17:31:50 -0700 Message-ID: Subject: Re: [PATCH 0/4] riscv: Allow userspace to directly access perf counters To: Atish Patra Cc: Alexandre Ghiti , paranlee , David Laight , Jonathan Corbet , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Will Deacon , Rob Herring , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-perf-users@vger.kernel.org" , "linux-riscv@lists.infradead.org" , "linux-arm-kernel@lists.infradead.org" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_173211_618411_CE77A974 X-CRM114-Status: GOOD ( 59.16 ) 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBBcHIgMTksIDIwMjMgYXQgNDoyMuKAr1BNIEF0aXNoIFBhdHJhIDxhdGlzaHBAYXRp c2hwYXRyYS5vcmc+IHdyb3RlOgo+Cj4gT24gV2VkLCBBcHIgMTksIDIwMjMgYXQgMTE6MTPigK9Q TSBJYW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIFdlZCwg QXByIDE5LCAyMDIzIGF0IDI6MjHigK9BTSBBbGV4YW5kcmUgR2hpdGkgPGFsZXhnaGl0aUByaXZv c2luYy5jb20+IHdyb3RlOgo+ID4gPgo+ID4gPiBIaSBJYW4sCj4gPiA+Cj4gPiA+IE9uIFR1ZSwg QXByIDE4LCAyMDIzIGF0IDEwOjMw4oCvUE0gQXRpc2ggUGF0cmEgPGF0aXNocEBhdGlzaHBhdHJh Lm9yZz4gd3JvdGU6Cj4gPiA+ID4KPiA+ID4gPiBPbiBUdWUsIEFwciAxOCwgMjAyMyBhdCAxMTo0 NuKAr1BNIElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xlLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gT24gVHVlLCBBcHIgMTgsIDIwMjMgYXQgOTo0M+KAr0FNIEF0aXNoIFBhdHJhIDxh dGlzaHBAYXRpc2hwYXRyYS5vcmc+IHdyb3RlOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBG cmksIEFwciAxNCwgMjAyMyBhdCAyOjQw4oCvQU0gRGF2aWQgTGFpZ2h0IDxEYXZpZC5MYWlnaHRA YWN1bGFiLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBGcm9tOiBBdGlz aCBQYXRyYQo+ID4gPiA+ID4gPiA+ID4gU2VudDogMTMgQXByaWwgMjAyMyAyMDoxOAo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IE9uIFRodSwgQXByIDEzLCAyMDIzIGF0IDk6NDfigK9Q TSBBbGV4YW5kcmUgR2hpdGkgPGFsZXhnaGl0aUByaXZvc2luYy5jb20+IHdyb3RlOgo+ID4gPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiByaXNjdiB1c2VkIHRvIGFsbG93IGRpcmVjdCBh Y2Nlc3MgdG8gY3ljbGUvdGltZS9pbnN0cmV0IGNvdW50ZXJzLAo+ID4gPiA+ID4gPiA+ID4gPiBi eXBhc3NpbmcgdGhlIHBlcmYgZnJhbWV3b3JrLCB0aGlzIHBhdGNoc2V0IGludGVuZHMgdG8gYWxs b3cgdGhlIHVzZXIgdG8KPiA+ID4gPiA+ID4gPiA+ID4gbW1hcCBhbnkgY291bnRlciB3aGVuIGFj Y2Vzc2VkIHRocm91Z2ggcGVyZi4gQnV0IHdlIGNhbid0IGJyZWFrIHRoZQo+ID4gPiA+ID4gPiA+ ID4gPiBleGlzdGluZyBiZWhhdmlvdXIgc28gd2UgaW50cm9kdWNlIGEgc3lzY3RsIHBlcmZfdXNl cl9hY2Nlc3MgbGlrZSBhcm02NAo+ID4gPiA+ID4gPiA+ID4gPiBkb2VzLCB3aGljaCBkZWZhdWx0 cyB0byB0aGUgbGVnYWN5IG1vZGUgZGVzY3JpYmVkIGFib3ZlLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEl0IHdvdWxkIGJlIGdvb2QgcHJvdmlkZSBh ZGRpdGlvbmFsIGRpcmVjdGlvbiBmb3IgdXNlciBzcGFjZSBwYWNrYWdlczoKPiA+ID4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGUgbGVnYWN5IGJlaGF2aW9yIGlzIHN1cHBvcnRlZCBmb3Ig bm93IGluIG9yZGVyIHRvIGF2b2lkIGJyZWFraW5nCj4gPiA+ID4gPiA+ID4gPiBleGlzdGluZyBz b2Z0d2FyZS4KPiA+ID4gPiA+ID4gPiA+IEhvd2V2ZXIsIHJlYWRpbmcgY291bnRlcnMgZGlyZWN0 bHkgd2l0aG91dCBwZXJmIGludGVyYWN0aW9uIG1heQo+ID4gPiA+ID4gPiA+ID4gcHJvdmlkZSBp bmNvcnJlY3QgdmFsdWVzIHdoaWNoCj4gPiA+ID4gPiA+ID4gPiB0aGUgdXNlcnNwYWNlIHNvZnR3 YXJlIG11c3QgYXZvaWQuIFdlIGFyZSBob3BpbmcgdGhhdCB0aGUgdXNlciBzcGFjZQo+ID4gPiA+ ID4gPiA+ID4gcGFja2FnZXMgd2hpY2gKPiA+ID4gPiA+ID4gPiA+IHJlYWQgdGhlIGN5Y2xlL2lu c3RyZXQgZGlyZWN0bHksIHdpbGwgbW92ZSB0byB0aGUgcHJvcGVyIGludGVyZmFjZQo+ID4gPiA+ ID4gPiA+ID4gZXZlbnR1YWxseSBpZiB0aGV5IGFjdHVhbGx5IG5lZWQgaXQuCj4gPiA+ID4gPiA+ ID4gPiBNb3N0IG9mIHRoZSB1c2VycyBhcmUgc3VwcG9zZWQgdG8gcmVhZCAidGltZSIgaW5zdGVh ZCBvZiAiY3ljbGUiIGlmCj4gPiA+ID4gPiA+ID4gPiB0aGV5IGludGVuZCB0byByZWFkIHRpbWVz dGFtcHMuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBJZiB5b3UgYXJlIHRyeWluZyB0byBt ZWFzdXJlIHRoZSBwZXJmb3JtYW5jZSBvZiBzaG9ydCBjb2RlCj4gPiA+ID4gPiA+ID4gZnJhZ21l bnRzIHRoZW4geW91IG5lZWQgcHJldHR5IG11Y2ggcmF3IGFjY2VzcyBkaXJlY3RseSB0bwo+ID4g PiA+ID4gPiA+IHRoZSBjeWNsZS9jbG9jayBjb3VudCByZWdpc3Rlci4KPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+IEkndmUgZG9uZSB0aGlzIG9uIHg4NiB0byBjb21wYXJlIHRoZSBhY3R1YWwg Y3ljbGUgdGltZXMKPiA+ID4gPiA+ID4gPiBvZiBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9m IHRoZSBJUCBjaGVja3N1bSBsb29wCj4gPiA+ID4gPiA+ID4gKGFuZCBjb21wYXJlIHRoZW0gdG8g dGhlIHRoZW9yZXRpY2FsIGxpbWl0KS4KPiA+ID4gPiA+ID4gPiBUaGUgcGVyZiBmcmFtZXdvcmsg anVzdCBhZGRlZCBmYXIgdG9vIG11Y2ggbGF0ZW5jeSwKPiA+ID4gPiA+ID4gPiBvbmx5IGRpcmVj dGx5IHJlYWRpbmcgdGhlIGNwdSByZWdpc3RlcnMgZ2F2ZSBhbnl0aGluZwo+ID4gPiA+ID4gPiA+ IGxpa2UgcmVsaWFibGUgKGFuZCBjb25zaXN0ZW50KSBhbnN3ZXJzLgo+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFRoaXMgc2VyaWVzIGFsbG93cyBkaXJlY3QgYWNjZXNzIHRv IHRoZSBjb3VudGVycyBvbmNlIGNvbmZpZ3VyZWQKPiA+ID4gPiA+ID4gdGhyb3VnaCB0aGUgcGVy Zi4KPiA+ID4gPiA+ID4gRWFybGllciB0aGUgY3ljbGUvaW5zdHJldCBjb3VudGVycyBhcmUgZGly ZWN0bHkgZXhwb3NlZCB0byB0aGUKPiA+ID4gPiA+ID4gdXNlcnNwYWNlIHdpdGhvdXQga2VybmVs L3BlcmYgZnJhbWV3b3JraW5nIGtub3dpbmcKPiA+ID4gPiA+ID4gd2hlbi93aGljaCB1c2VyIHNw YWNlIGFwcGxpY2F0aW9uIGlzIHJlYWRpbmcgaXQuIFRoYXQgaGFzIHNlY3VyaXR5IGltcGxpY2F0 aW9ucy4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gV2l0aCB0aGlzIHNlcmllcyBhcHBsaWVkLCB0 aGUgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiBqdXN0IG5lZWRzIHRvCj4gPiA+ID4gPiA+IGNvbmZp Z3VyZSB0aGUgZXZlbnQgKGN5Y2xlL2luc3RyZXQpIHRocm91Z2ggcGVyZiBzeXNjYWxsLgo+ID4g PiA+ID4gPiBPbmNlIGNvbmZpZ3VyZWQsIHRoZSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gY2FuIGZp bmQgb3V0IHRoZSBjb3VudGVyCj4gPiA+ID4gPiA+IGluZm9ybWF0aW9uIGZyb20gdGhlIG1tYXAg JiBkaXJlY3RseQo+ID4gPiA+ID4gPiByZWFkIHRoZSBjb3VudGVyLiBUaGVyZSBpcyBubyBsYXRl bmN5IHdoaWxlIHJlYWRpbmcgdGhlIGNvdW50ZXJzLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBU aGlzIG1lY2hhbmlzbSBhbGxvd3Mgc3RvcC9jbGVhciB0aGUgY291bnRlcnMgd2hlbiB0aGUgcmVx dWVzdGluZyB0YXNrCj4gPiA+ID4gPiA+IGlzIG5vdCBydW5uaW5nLiBJdCBhbHNvIHRha2VzIGNh cmUgb2YgY29udGV4dCBzd2l0Y2hpbmcKPiA+ID4gPiA+ID4gd2hpY2ggbWF5IHJlc3VsdCBpbiBp bnZhbGlkIHZhbHVlcyBhcyB5b3UgbWVudGlvbmVkIGJlbG93LiBUaGlzIGlzCj4gPiA+ID4gPiA+ IG5vdGhpbmcgbmV3IGFuZCBhbGwgb3RoZXIgYXJjaCAoeDg2LCBBUk02NCkgYWxsb3cgdXNlciBz cGFjZQo+ID4gPiA+ID4gPiBjb3VudGVyIHJlYWQgdGhyb3VnaCB0aGUgc2FtZSBtZWNoYW5pc20u Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEhlcmUgaXMgdGhlIHJlbGV2YW50IHVwc3RyZWFtIGRp c2N1c3Npb246Cj4gPiA+ID4gPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvWTd3TGE3 STJobHozckt3JTJGQGhpcmV6LnByb2dyYW1taW5nLmtpY2tzLWFzcy5uZXQvVC8KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gQVJNNjQ6Cj4gPiA+ID4gPiA+IGh0dHBzOi8vZG9jcy5rZXJuZWwub3Jn L2FybTY0L3BlcmYuaHRtbD9oaWdobGlnaHQ9cGVyZl91c2VyX2FjY2VzcyNwZXJmLXVzZXJzcGFj ZS1wbXUtaGFyZHdhcmUtY291bnRlci1hY2Nlc3MKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gZXhh bXBsZSB1c2FnZSBpbiB4ODY6Cj4gPiA+ID4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRpa2xl ZW4vcG11LXRvb2xzL2Jsb2IvbWFzdGVyL2pldmVudHMvcmRwbWMuYwo+ID4gPiA+ID4KPiA+ID4g PiA+IFRoZSBjYW5vbmljYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBzaG91bGQgYmU6Cj4gPiA+ ID4gPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2 YWxkcy9saW51eC5naXQvdHJlZS90b29scy9saWIvcGVyZi9tbWFwLmMjbjQwMAo+ID4gPiA+Cj4g PiA+ID4gVGhhbmtzIGZvciBzaGFyaW5nIHRoZSBsaWJwZXJmIGltcGxlbWVudGF0aW9uLgo+ID4g PiA+Cj4gPiA+ID4gPiB3aGljaCBpcyB1cGRhdGVkIGluIHRoZXNlIHBhdGNoZXMgYnV0IHRoZSB0 ZXN0cyBhcmUgbm90Ogo+ID4gPiA+ID4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp bnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvdG9vbHMvcGVyZi90ZXN0cy9t bWFwLWJhc2ljLmMjbjI4Nwo+ID4gPiA+ID4gV2hpY2ggYXBwZWFycyB0byBiZSBhbiBvdmVyc2ln aHQuIFRoZSB0ZXN0cyBkaXNwbGF5IHNvbWUgZGlmZmVyZW5jZXMKPiA+ID4gPgo+ID4gPiA+IFll cy4gSXQncyBhbiBvdmVyc2lnaHQuIFdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBwZXJmIG1tYXAg dGVzdHMgcGFzcwo+ID4gPiA+IGZvciBSSVNDLVYgYXMgd2VsbC4KPiA+ID4KPiA+ID4gWWVzLCB0 aGF0J3MgYW4gb3ZlcnNpZ2h0LCBJIGhhZCBhIGxvY2FsIHRlc3QgYWRhcHRlZCBmcm9tIHRoaXMg b25lIGJ1dAo+ID4gPiBmb3Jnb3QgdG8gdXBkYXRlIGl0IGFmdGVyd2FyZHMsIEknbGwgZG8gdGhh dCBpbiB0aGUgbmV4dCB2ZXJzaW9uLgo+ID4gPgo+ID4gPiBUaGFua3MgZm9yIHlvdXIgcXVpY2sg ZmVlZGJhY2tzIGFuZCBzb3JyeSBmb3IgYmVpbmcgbGF0ZSwKPiA+ID4KPiA+ID4gQWxleAo+ID4K PiA+IFRoYW5rcyBBbGV4LCB0aGVyZSB3YXMgYW4gZXF1YWxseSBsaWtlbHkgY2hhbmNlIHRoYXQg SSB3YXNuJ3QKPiA+IHVuZGVyc3RhbmRpbmcgdGhpbmdzIDotKSBJcyB0aGVyZSBhbnkgaW5mb3Jt YXRpb24gb24gUklTQy1WIFBNVQo+ID4gdGVzdGluZz8gSSBrbm93IFBhcmFuTGVlIGlzIGludGVy ZXN0ZWQuIEl0J2QgYmUgYXdlc29tZSB0byBoYXZlCj4KPiBBcmUgeW91IGxvb2tpbmcgZm9yIHNv bWV0aGluZyBzcGVjaWZpYyB0byBSSVNDLVYgZ2VuZXJhbCBvciBwZXJmIG9uIFJJU0MtVj8KPiBB bGwgdGhlIFJJU0MtViBQTVUgcGF0Y2hlcyBoYXZlIGJlZW4gdXBzdHJlYW0gZm9yIGEgd2hpbGUg KGJvdGggaW4gdGhlCj4gUWVtdSAmIExpbnV4IGtlcm5lbCkuCj4gUGVyZiBzaG91bGQgd29yayBv dXQtb2YtdGhlIGJveCB3aGVuIHlvdSBib290IHRoZSBsYXRlc3Qga2VybmVsIGluIHRoZQo+IGxh dGVzdCB2ZXJzaW9uIG9mIHRoZSBRZW11Lgo+Cj4gSW5pdGlhbCBLVk1bMV0gcGF0Y2hlcyBzdXBw b3J0IGdvdCBtZXJnZWQgZHVyaW5nIHRoZSBsYXN0IG1lcmdlCj4gd2luZG93LiBJdCBkb2Vzbid0 IHN1cHBvcnQKPiBldmVudCBzYW1wbGluZyB5ZXQuIFdlIGFyZSB3b3JraW5nIG9uIHRoYXQuCj4K PiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIzMDIwNzA5NTUyOS4xNzg3MjYw LTEtYXRpc2hwQHJpdm9zaW5jLmNvbS8KCkNvb2wsIGl0J2QgYmUgbmljZSB0byBoYXZlIGEgcmVj aXBlIGZvciB0aGlzIGZyb20geDg2IExpbnV4IDotKQoKPiA+IHNvbWV0aGluZyBzYXkgb246Cj4g PiBodHRwczovL3BlcmYud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9NYWluX1BhZ2UKPiA+IG9u IGhvdyB0byBydW4gdGVzdHMsIHBlcmhhcHMgb24gUUVNVSBvciBrbm93biB0byB3b3JrIGJvYXJk cy4gV2UgY2FuCj4gPiBhbHNvIGp1c3QgZHJvcCBhIGxpbmsgb24gdGhlcmUgaWYgdGhlcmUgaXMg aW5mb3JtYXRpb24uIFdlIGNhbiBhbHNvCj4gPiBhZGQgdGhlIFJJU0MtViBQTVUgaW5mb3JtYXRp b24gdG8gdGhlIGxpbmtzIGhlcmU6Cj4gPiBodHRwczovL3BlcmYud2lraS5rZXJuZWwub3JnL2lu ZGV4LnBocC9Vc2VmdWxfTGlua3MKPiA+Cj4KPiBJIGRpZCBub3Qgc2VlIGFueSBhcmNoIHNwZWNp ZmljIGluZm9ybWF0aW9uIHRoZXJlLiBMZXQgdXMga25vdyB3aGF0Cj4gd291bGQgYmUgZ29vZCB0 bwo+IGFkZCB0aGVyZSBhbmQgd2Ugd291bGQgYmUgaGFwcHkgdG8gYWRkLgoKSSB3YXMgc3BlY2lm aWNhbGx5IHRoaW5raW5nIHVuZGVyIE1hbnVhbHMgd2hlcmUgdGhlIEludGVsLCBBTUQgYW5kIEFS TQptYW51YWxzIGFyZSwgbGlua3MgdG8gdGhlIFJJU0MtViBkb2N1bWVudGF0aW9uIGNvdWxkIGJl IGFkZGVkLgoKVGhhbmtzLApJYW4KCj4gPiBUaGFua3MsCj4gPiBJYW4KPiA+Cj4gPiA+Cj4gPiA+ ID4KPiA+ID4gPgo+ID4gPiA+ID4gYmV0d2VlbiB4ODYgYW5kIGFhcmNoNjQgdGhhdCBoYXZlIGFz c3VtZWQgdXNlcnNwYWNlIGhhcmR3YXJlIGNvdW50ZXIKPiA+ID4gPiA+IGFjY2VzcywgYW5kIGV2 ZXJ5dGhpbmcgZWxzZSB0aGF0IGl0IGlzIGFzc3VtZWQgZG9uJ3QuCj4gPiA+ID4gPgo+ID4gPiA+ ID4gVGhhbmtzLAo+ID4gPiA+ID4gSWFuCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IENsZWFybHkg cHJvY2VzcyBzd2l0Y2hlcyAoZXNwZWNpYWxseSBjcHUgbWlncmF0aW9ucykgY2F1c2UKPiA+ID4g PiA+ID4gPiBwcm9ibGVtcywgYnV0IHRoZXkgYXJlIG9idmlvdXNseSBpbnZhbGlkIHZhbHVlcyBh bmQgY2FuCj4gPiA+ID4gPiA+ID4gYmUgaWdub3JlZC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+IFNvIHdoaWxlIGEgbG90IG9mIHVzZXMgbWF5IGJlICdoYXBweScgd2l0aCB0aGUgdmFsdWVz IHRoZQo+ID4gPiA+ID4gPiA+IHBlcmYgZnJhbWV3b3JrIGdpdmVzLCBzb21ldGltZXMgeW91IGRv IG5lZWQgdG8gZGlyZWN0bHkKPiA+ID4gPiA+ID4gPiByZWFkIHRoZSByZWxldmFudCByZWdpc3Rl cnMuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAgICAgICAgIERhdmlkCj4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gUmVnaXN0ZXJlZCBBZGRyZXNzIExha2Vz aWRlLCBCcmFtbGV5IFJvYWQsIE1vdW50IEZhcm0sIE1pbHRvbiBLZXluZXMsIE1LMSAxUFQsIFVL Cj4gPiA+ID4gPiA+ID4gUmVnaXN0cmF0aW9uIE5vOiAxMzk3Mzg2IChXYWxlcykKPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4gUmVn YXJkcywKPiA+ID4gPiA+ID4gQXRpc2gKPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiAt LQo+ID4gPiA+IFJlZ2FyZHMsCj4gPiA+ID4gQXRpc2gKPgo+Cj4KPiAtLQo+IFJlZ2FyZHMsCj4g QXRpc2gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 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 9FB25C6FD18 for ; Thu, 20 Apr 2023 00:33:20 +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:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=39gWuD5PyrrN/d0u62+wmsu98dYqWakHSez/CrxDlmI=; b=2rLsbYPuh09sck b7FVxlIk9xwN2KXa6xt67h7O3P4yc7tWiBFz/JDpAQAA+NJkk4P94bcO+mLql9vgLku/NLs9VUIXL wa0h3ssJQiSeBiXaC2g/enCobiOHUztpkUVKb3gn9RTajZmyo9GUh2JYrJajPehgYePStcckKpsnS TsUVgPu58HvZLiOZOX3ASjkAG8x6LH4BKH9nN7ZwlRjwuz4jwdZ/IxMn606+f48DjsnKOpg4Nw/Hp KYSYPR70f1np0BzEaMcDnRz7RrDdSPWEwS6d7T7JfdIAxeR90XlBdbEd7iykwyqvaqkfLFGviyzQ9 AbbArZqwCQbVWZYu7hdw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1ppIDe-006jTA-34; Thu, 20 Apr 2023 00:32:14 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1ppIDb-006jQt-1q for linux-arm-kernel@lists.infradead.org; Thu, 20 Apr 2023 00:32:13 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-3ee6c339cceso172595e9.0 for ; Wed, 19 Apr 2023 17:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1681950727; x=1684542727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=cpHsbQZOI2szya5getePPbZFizdtNLAvh8GmFlwAN1M=; b=ysPLUsQMbedXCyQYZr6Zc+fSt8NWoLdVDcqcVZDHhCrCDaB2sk6rhO14ftB7Jzggai cVizcqRRor6XZZATBcC+Q5hAviYJW6j84oNJYMS9tlWqa54/Pl+veZlWD37xLZk3abmk gpO4AFFVZuCznXvk946oY0x/ygmv4NsGux2cbs+vd0xuZ8EljM6IzQUd37HOvFZcJ2i0 5S3EnekxS0JmeXrrTdh0WIw/79II6znLakNv9k9n/OvrhR9O18k2UGFvYZ4gT9wZDVhW StRsYpOeMeYj+Yv0Th1ngB3fz+qDAknM0kw1O7NtNRq99eyDTfj4vP12sDUbhJl+foEI ep0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681950727; x=1684542727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cpHsbQZOI2szya5getePPbZFizdtNLAvh8GmFlwAN1M=; b=KqBJamsUm/fYIah8nF6cyl2I0ldgI8nXUOsnQsXfUKdgEHv66ODAjaI3YlBZHrWSEW /aBQp7nqW1h2LC8B6TxKl5XWmnbMEOkKMw7lcXRY2e7C03hLnYV5n1KEm2dJwb5dHl5J XEtf6ndMCKgc/jo0JS4KszEsgGWRj8jkJ+IZXtpNbSk+2BMrmaAxy/DtFV4L55gzVvXX xkVAn6vyPxQStKlCAQSqY0+rpJHM2hVRxXvjZXw2luhK+JFUi9shvV+qlNG47houRzCL 9552HrBHP9wKJ42N8OP1OAiUMZBpSLvrijI9ooyQ5UuCeHFSF2+LqzIq+A8/62vDH9t3 fWKw== X-Gm-Message-State: AAQBX9cKhEacPqZGwaZV16NhFgH4fxataBysbwRThPsC0mLGY5HEqSUP Om8yj9Pud3tqftxG8ADCwkrAWCa1veJSa7ZOFvRzaA== X-Google-Smtp-Source: AKy350aBel/7MtmlYCMSjJPTLJNrhcBDWM1l1EErpsirii/9U3cgHvYfQURMqtj3yNFdf/eUjBr+4QIODnFlFBR70+I= X-Received: by 2002:a05:600c:314c:b0:3f1:7490:e5a4 with SMTP id h12-20020a05600c314c00b003f17490e5a4mr90071wmo.6.1681950726866; Wed, 19 Apr 2023 17:32:06 -0700 (PDT) MIME-Version: 1.0 References: <20230413161725.195417-1-alexghiti@rivosinc.com> In-Reply-To: From: Ian Rogers Date: Wed, 19 Apr 2023 17:31:50 -0700 Message-ID: Subject: Re: [PATCH 0/4] riscv: Allow userspace to directly access perf counters To: Atish Patra Cc: Alexandre Ghiti , paranlee , David Laight , Jonathan Corbet , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Will Deacon , Rob Herring , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-perf-users@vger.kernel.org" , "linux-riscv@lists.infradead.org" , "linux-arm-kernel@lists.infradead.org" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_173211_614052_FD791FBD X-CRM114-Status: GOOD ( 60.59 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCBBcHIgMTksIDIwMjMgYXQgNDoyMuKAr1BNIEF0aXNoIFBhdHJhIDxhdGlzaHBAYXRp c2hwYXRyYS5vcmc+IHdyb3RlOgo+Cj4gT24gV2VkLCBBcHIgMTksIDIwMjMgYXQgMTE6MTPigK9Q TSBJYW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIFdlZCwg QXByIDE5LCAyMDIzIGF0IDI6MjHigK9BTSBBbGV4YW5kcmUgR2hpdGkgPGFsZXhnaGl0aUByaXZv c2luYy5jb20+IHdyb3RlOgo+ID4gPgo+ID4gPiBIaSBJYW4sCj4gPiA+Cj4gPiA+IE9uIFR1ZSwg QXByIDE4LCAyMDIzIGF0IDEwOjMw4oCvUE0gQXRpc2ggUGF0cmEgPGF0aXNocEBhdGlzaHBhdHJh Lm9yZz4gd3JvdGU6Cj4gPiA+ID4KPiA+ID4gPiBPbiBUdWUsIEFwciAxOCwgMjAyMyBhdCAxMTo0 NuKAr1BNIElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xlLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gT24gVHVlLCBBcHIgMTgsIDIwMjMgYXQgOTo0M+KAr0FNIEF0aXNoIFBhdHJhIDxh dGlzaHBAYXRpc2hwYXRyYS5vcmc+IHdyb3RlOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBG cmksIEFwciAxNCwgMjAyMyBhdCAyOjQw4oCvQU0gRGF2aWQgTGFpZ2h0IDxEYXZpZC5MYWlnaHRA YWN1bGFiLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBGcm9tOiBBdGlz aCBQYXRyYQo+ID4gPiA+ID4gPiA+ID4gU2VudDogMTMgQXByaWwgMjAyMyAyMDoxOAo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IE9uIFRodSwgQXByIDEzLCAyMDIzIGF0IDk6NDfigK9Q TSBBbGV4YW5kcmUgR2hpdGkgPGFsZXhnaGl0aUByaXZvc2luYy5jb20+IHdyb3RlOgo+ID4gPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiByaXNjdiB1c2VkIHRvIGFsbG93IGRpcmVjdCBh Y2Nlc3MgdG8gY3ljbGUvdGltZS9pbnN0cmV0IGNvdW50ZXJzLAo+ID4gPiA+ID4gPiA+ID4gPiBi eXBhc3NpbmcgdGhlIHBlcmYgZnJhbWV3b3JrLCB0aGlzIHBhdGNoc2V0IGludGVuZHMgdG8gYWxs b3cgdGhlIHVzZXIgdG8KPiA+ID4gPiA+ID4gPiA+ID4gbW1hcCBhbnkgY291bnRlciB3aGVuIGFj Y2Vzc2VkIHRocm91Z2ggcGVyZi4gQnV0IHdlIGNhbid0IGJyZWFrIHRoZQo+ID4gPiA+ID4gPiA+ ID4gPiBleGlzdGluZyBiZWhhdmlvdXIgc28gd2UgaW50cm9kdWNlIGEgc3lzY3RsIHBlcmZfdXNl cl9hY2Nlc3MgbGlrZSBhcm02NAo+ID4gPiA+ID4gPiA+ID4gPiBkb2VzLCB3aGljaCBkZWZhdWx0 cyB0byB0aGUgbGVnYWN5IG1vZGUgZGVzY3JpYmVkIGFib3ZlLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEl0IHdvdWxkIGJlIGdvb2QgcHJvdmlkZSBh ZGRpdGlvbmFsIGRpcmVjdGlvbiBmb3IgdXNlciBzcGFjZSBwYWNrYWdlczoKPiA+ID4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGUgbGVnYWN5IGJlaGF2aW9yIGlzIHN1cHBvcnRlZCBmb3Ig bm93IGluIG9yZGVyIHRvIGF2b2lkIGJyZWFraW5nCj4gPiA+ID4gPiA+ID4gPiBleGlzdGluZyBz b2Z0d2FyZS4KPiA+ID4gPiA+ID4gPiA+IEhvd2V2ZXIsIHJlYWRpbmcgY291bnRlcnMgZGlyZWN0 bHkgd2l0aG91dCBwZXJmIGludGVyYWN0aW9uIG1heQo+ID4gPiA+ID4gPiA+ID4gcHJvdmlkZSBp bmNvcnJlY3QgdmFsdWVzIHdoaWNoCj4gPiA+ID4gPiA+ID4gPiB0aGUgdXNlcnNwYWNlIHNvZnR3 YXJlIG11c3QgYXZvaWQuIFdlIGFyZSBob3BpbmcgdGhhdCB0aGUgdXNlciBzcGFjZQo+ID4gPiA+ ID4gPiA+ID4gcGFja2FnZXMgd2hpY2gKPiA+ID4gPiA+ID4gPiA+IHJlYWQgdGhlIGN5Y2xlL2lu c3RyZXQgZGlyZWN0bHksIHdpbGwgbW92ZSB0byB0aGUgcHJvcGVyIGludGVyZmFjZQo+ID4gPiA+ ID4gPiA+ID4gZXZlbnR1YWxseSBpZiB0aGV5IGFjdHVhbGx5IG5lZWQgaXQuCj4gPiA+ID4gPiA+ ID4gPiBNb3N0IG9mIHRoZSB1c2VycyBhcmUgc3VwcG9zZWQgdG8gcmVhZCAidGltZSIgaW5zdGVh ZCBvZiAiY3ljbGUiIGlmCj4gPiA+ID4gPiA+ID4gPiB0aGV5IGludGVuZCB0byByZWFkIHRpbWVz dGFtcHMuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBJZiB5b3UgYXJlIHRyeWluZyB0byBt ZWFzdXJlIHRoZSBwZXJmb3JtYW5jZSBvZiBzaG9ydCBjb2RlCj4gPiA+ID4gPiA+ID4gZnJhZ21l bnRzIHRoZW4geW91IG5lZWQgcHJldHR5IG11Y2ggcmF3IGFjY2VzcyBkaXJlY3RseSB0bwo+ID4g PiA+ID4gPiA+IHRoZSBjeWNsZS9jbG9jayBjb3VudCByZWdpc3Rlci4KPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+IEkndmUgZG9uZSB0aGlzIG9uIHg4NiB0byBjb21wYXJlIHRoZSBhY3R1YWwg Y3ljbGUgdGltZXMKPiA+ID4gPiA+ID4gPiBvZiBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9m IHRoZSBJUCBjaGVja3N1bSBsb29wCj4gPiA+ID4gPiA+ID4gKGFuZCBjb21wYXJlIHRoZW0gdG8g dGhlIHRoZW9yZXRpY2FsIGxpbWl0KS4KPiA+ID4gPiA+ID4gPiBUaGUgcGVyZiBmcmFtZXdvcmsg anVzdCBhZGRlZCBmYXIgdG9vIG11Y2ggbGF0ZW5jeSwKPiA+ID4gPiA+ID4gPiBvbmx5IGRpcmVj dGx5IHJlYWRpbmcgdGhlIGNwdSByZWdpc3RlcnMgZ2F2ZSBhbnl0aGluZwo+ID4gPiA+ID4gPiA+ IGxpa2UgcmVsaWFibGUgKGFuZCBjb25zaXN0ZW50KSBhbnN3ZXJzLgo+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFRoaXMgc2VyaWVzIGFsbG93cyBkaXJlY3QgYWNjZXNzIHRv IHRoZSBjb3VudGVycyBvbmNlIGNvbmZpZ3VyZWQKPiA+ID4gPiA+ID4gdGhyb3VnaCB0aGUgcGVy Zi4KPiA+ID4gPiA+ID4gRWFybGllciB0aGUgY3ljbGUvaW5zdHJldCBjb3VudGVycyBhcmUgZGly ZWN0bHkgZXhwb3NlZCB0byB0aGUKPiA+ID4gPiA+ID4gdXNlcnNwYWNlIHdpdGhvdXQga2VybmVs L3BlcmYgZnJhbWV3b3JraW5nIGtub3dpbmcKPiA+ID4gPiA+ID4gd2hlbi93aGljaCB1c2VyIHNw YWNlIGFwcGxpY2F0aW9uIGlzIHJlYWRpbmcgaXQuIFRoYXQgaGFzIHNlY3VyaXR5IGltcGxpY2F0 aW9ucy4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gV2l0aCB0aGlzIHNlcmllcyBhcHBsaWVkLCB0 aGUgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiBqdXN0IG5lZWRzIHRvCj4gPiA+ID4gPiA+IGNvbmZp Z3VyZSB0aGUgZXZlbnQgKGN5Y2xlL2luc3RyZXQpIHRocm91Z2ggcGVyZiBzeXNjYWxsLgo+ID4g PiA+ID4gPiBPbmNlIGNvbmZpZ3VyZWQsIHRoZSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gY2FuIGZp bmQgb3V0IHRoZSBjb3VudGVyCj4gPiA+ID4gPiA+IGluZm9ybWF0aW9uIGZyb20gdGhlIG1tYXAg JiBkaXJlY3RseQo+ID4gPiA+ID4gPiByZWFkIHRoZSBjb3VudGVyLiBUaGVyZSBpcyBubyBsYXRl bmN5IHdoaWxlIHJlYWRpbmcgdGhlIGNvdW50ZXJzLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBU aGlzIG1lY2hhbmlzbSBhbGxvd3Mgc3RvcC9jbGVhciB0aGUgY291bnRlcnMgd2hlbiB0aGUgcmVx dWVzdGluZyB0YXNrCj4gPiA+ID4gPiA+IGlzIG5vdCBydW5uaW5nLiBJdCBhbHNvIHRha2VzIGNh cmUgb2YgY29udGV4dCBzd2l0Y2hpbmcKPiA+ID4gPiA+ID4gd2hpY2ggbWF5IHJlc3VsdCBpbiBp bnZhbGlkIHZhbHVlcyBhcyB5b3UgbWVudGlvbmVkIGJlbG93LiBUaGlzIGlzCj4gPiA+ID4gPiA+ IG5vdGhpbmcgbmV3IGFuZCBhbGwgb3RoZXIgYXJjaCAoeDg2LCBBUk02NCkgYWxsb3cgdXNlciBz cGFjZQo+ID4gPiA+ID4gPiBjb3VudGVyIHJlYWQgdGhyb3VnaCB0aGUgc2FtZSBtZWNoYW5pc20u Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEhlcmUgaXMgdGhlIHJlbGV2YW50IHVwc3RyZWFtIGRp c2N1c3Npb246Cj4gPiA+ID4gPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvWTd3TGE3 STJobHozckt3JTJGQGhpcmV6LnByb2dyYW1taW5nLmtpY2tzLWFzcy5uZXQvVC8KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gQVJNNjQ6Cj4gPiA+ID4gPiA+IGh0dHBzOi8vZG9jcy5rZXJuZWwub3Jn L2FybTY0L3BlcmYuaHRtbD9oaWdobGlnaHQ9cGVyZl91c2VyX2FjY2VzcyNwZXJmLXVzZXJzcGFj ZS1wbXUtaGFyZHdhcmUtY291bnRlci1hY2Nlc3MKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gZXhh bXBsZSB1c2FnZSBpbiB4ODY6Cj4gPiA+ID4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRpa2xl ZW4vcG11LXRvb2xzL2Jsb2IvbWFzdGVyL2pldmVudHMvcmRwbWMuYwo+ID4gPiA+ID4KPiA+ID4g PiA+IFRoZSBjYW5vbmljYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBzaG91bGQgYmU6Cj4gPiA+ ID4gPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2 YWxkcy9saW51eC5naXQvdHJlZS90b29scy9saWIvcGVyZi9tbWFwLmMjbjQwMAo+ID4gPiA+Cj4g PiA+ID4gVGhhbmtzIGZvciBzaGFyaW5nIHRoZSBsaWJwZXJmIGltcGxlbWVudGF0aW9uLgo+ID4g PiA+Cj4gPiA+ID4gPiB3aGljaCBpcyB1cGRhdGVkIGluIHRoZXNlIHBhdGNoZXMgYnV0IHRoZSB0 ZXN0cyBhcmUgbm90Ogo+ID4gPiA+ID4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp bnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvdG9vbHMvcGVyZi90ZXN0cy9t bWFwLWJhc2ljLmMjbjI4Nwo+ID4gPiA+ID4gV2hpY2ggYXBwZWFycyB0byBiZSBhbiBvdmVyc2ln aHQuIFRoZSB0ZXN0cyBkaXNwbGF5IHNvbWUgZGlmZmVyZW5jZXMKPiA+ID4gPgo+ID4gPiA+IFll cy4gSXQncyBhbiBvdmVyc2lnaHQuIFdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBwZXJmIG1tYXAg dGVzdHMgcGFzcwo+ID4gPiA+IGZvciBSSVNDLVYgYXMgd2VsbC4KPiA+ID4KPiA+ID4gWWVzLCB0 aGF0J3MgYW4gb3ZlcnNpZ2h0LCBJIGhhZCBhIGxvY2FsIHRlc3QgYWRhcHRlZCBmcm9tIHRoaXMg b25lIGJ1dAo+ID4gPiBmb3Jnb3QgdG8gdXBkYXRlIGl0IGFmdGVyd2FyZHMsIEknbGwgZG8gdGhh dCBpbiB0aGUgbmV4dCB2ZXJzaW9uLgo+ID4gPgo+ID4gPiBUaGFua3MgZm9yIHlvdXIgcXVpY2sg ZmVlZGJhY2tzIGFuZCBzb3JyeSBmb3IgYmVpbmcgbGF0ZSwKPiA+ID4KPiA+ID4gQWxleAo+ID4K PiA+IFRoYW5rcyBBbGV4LCB0aGVyZSB3YXMgYW4gZXF1YWxseSBsaWtlbHkgY2hhbmNlIHRoYXQg SSB3YXNuJ3QKPiA+IHVuZGVyc3RhbmRpbmcgdGhpbmdzIDotKSBJcyB0aGVyZSBhbnkgaW5mb3Jt YXRpb24gb24gUklTQy1WIFBNVQo+ID4gdGVzdGluZz8gSSBrbm93IFBhcmFuTGVlIGlzIGludGVy ZXN0ZWQuIEl0J2QgYmUgYXdlc29tZSB0byBoYXZlCj4KPiBBcmUgeW91IGxvb2tpbmcgZm9yIHNv bWV0aGluZyBzcGVjaWZpYyB0byBSSVNDLVYgZ2VuZXJhbCBvciBwZXJmIG9uIFJJU0MtVj8KPiBB bGwgdGhlIFJJU0MtViBQTVUgcGF0Y2hlcyBoYXZlIGJlZW4gdXBzdHJlYW0gZm9yIGEgd2hpbGUg KGJvdGggaW4gdGhlCj4gUWVtdSAmIExpbnV4IGtlcm5lbCkuCj4gUGVyZiBzaG91bGQgd29yayBv dXQtb2YtdGhlIGJveCB3aGVuIHlvdSBib290IHRoZSBsYXRlc3Qga2VybmVsIGluIHRoZQo+IGxh dGVzdCB2ZXJzaW9uIG9mIHRoZSBRZW11Lgo+Cj4gSW5pdGlhbCBLVk1bMV0gcGF0Y2hlcyBzdXBw b3J0IGdvdCBtZXJnZWQgZHVyaW5nIHRoZSBsYXN0IG1lcmdlCj4gd2luZG93LiBJdCBkb2Vzbid0 IHN1cHBvcnQKPiBldmVudCBzYW1wbGluZyB5ZXQuIFdlIGFyZSB3b3JraW5nIG9uIHRoYXQuCj4K PiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIzMDIwNzA5NTUyOS4xNzg3MjYw LTEtYXRpc2hwQHJpdm9zaW5jLmNvbS8KCkNvb2wsIGl0J2QgYmUgbmljZSB0byBoYXZlIGEgcmVj aXBlIGZvciB0aGlzIGZyb20geDg2IExpbnV4IDotKQoKPiA+IHNvbWV0aGluZyBzYXkgb246Cj4g PiBodHRwczovL3BlcmYud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9NYWluX1BhZ2UKPiA+IG9u IGhvdyB0byBydW4gdGVzdHMsIHBlcmhhcHMgb24gUUVNVSBvciBrbm93biB0byB3b3JrIGJvYXJk cy4gV2UgY2FuCj4gPiBhbHNvIGp1c3QgZHJvcCBhIGxpbmsgb24gdGhlcmUgaWYgdGhlcmUgaXMg aW5mb3JtYXRpb24uIFdlIGNhbiBhbHNvCj4gPiBhZGQgdGhlIFJJU0MtViBQTVUgaW5mb3JtYXRp b24gdG8gdGhlIGxpbmtzIGhlcmU6Cj4gPiBodHRwczovL3BlcmYud2lraS5rZXJuZWwub3JnL2lu ZGV4LnBocC9Vc2VmdWxfTGlua3MKPiA+Cj4KPiBJIGRpZCBub3Qgc2VlIGFueSBhcmNoIHNwZWNp ZmljIGluZm9ybWF0aW9uIHRoZXJlLiBMZXQgdXMga25vdyB3aGF0Cj4gd291bGQgYmUgZ29vZCB0 bwo+IGFkZCB0aGVyZSBhbmQgd2Ugd291bGQgYmUgaGFwcHkgdG8gYWRkLgoKSSB3YXMgc3BlY2lm aWNhbGx5IHRoaW5raW5nIHVuZGVyIE1hbnVhbHMgd2hlcmUgdGhlIEludGVsLCBBTUQgYW5kIEFS TQptYW51YWxzIGFyZSwgbGlua3MgdG8gdGhlIFJJU0MtViBkb2N1bWVudGF0aW9uIGNvdWxkIGJl IGFkZGVkLgoKVGhhbmtzLApJYW4KCj4gPiBUaGFua3MsCj4gPiBJYW4KPiA+Cj4gPiA+Cj4gPiA+ ID4KPiA+ID4gPgo+ID4gPiA+ID4gYmV0d2VlbiB4ODYgYW5kIGFhcmNoNjQgdGhhdCBoYXZlIGFz c3VtZWQgdXNlcnNwYWNlIGhhcmR3YXJlIGNvdW50ZXIKPiA+ID4gPiA+IGFjY2VzcywgYW5kIGV2 ZXJ5dGhpbmcgZWxzZSB0aGF0IGl0IGlzIGFzc3VtZWQgZG9uJ3QuCj4gPiA+ID4gPgo+ID4gPiA+ ID4gVGhhbmtzLAo+ID4gPiA+ID4gSWFuCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IENsZWFybHkg cHJvY2VzcyBzd2l0Y2hlcyAoZXNwZWNpYWxseSBjcHUgbWlncmF0aW9ucykgY2F1c2UKPiA+ID4g PiA+ID4gPiBwcm9ibGVtcywgYnV0IHRoZXkgYXJlIG9idmlvdXNseSBpbnZhbGlkIHZhbHVlcyBh bmQgY2FuCj4gPiA+ID4gPiA+ID4gYmUgaWdub3JlZC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+IFNvIHdoaWxlIGEgbG90IG9mIHVzZXMgbWF5IGJlICdoYXBweScgd2l0aCB0aGUgdmFsdWVz IHRoZQo+ID4gPiA+ID4gPiA+IHBlcmYgZnJhbWV3b3JrIGdpdmVzLCBzb21ldGltZXMgeW91IGRv IG5lZWQgdG8gZGlyZWN0bHkKPiA+ID4gPiA+ID4gPiByZWFkIHRoZSByZWxldmFudCByZWdpc3Rl cnMuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAgICAgICAgIERhdmlkCj4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gUmVnaXN0ZXJlZCBBZGRyZXNzIExha2Vz aWRlLCBCcmFtbGV5IFJvYWQsIE1vdW50IEZhcm0sIE1pbHRvbiBLZXluZXMsIE1LMSAxUFQsIFVL Cj4gPiA+ID4gPiA+ID4gUmVnaXN0cmF0aW9uIE5vOiAxMzk3Mzg2IChXYWxlcykKPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4gUmVn YXJkcywKPiA+ID4gPiA+ID4gQXRpc2gKPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiAt LQo+ID4gPiA+IFJlZ2FyZHMsCj4gPiA+ID4gQXRpc2gKPgo+Cj4KPiAtLQo+IFJlZ2FyZHMsCj4g QXRpc2gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK