From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E34321FBF75 for ; Tue, 12 Nov 2024 14:12:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731420782; cv=none; b=MUqV9Ufry3WYvbu73f7+LMlSFEAZDAGQTI4yJKYVypak+71gyJXin1zvb7yw2gXV+oiYRslBMD23DPgXO8u7GxhP8s7D0INVUjsgEDH3nlwdK83nWfdS9/8EXNM1BrBgnRVYfNPUuaPUgbJY2+VX08a17yGSRxGU6FlQXl9KZa4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731420782; c=relaxed/simple; bh=r9ulrn9W3iGqmUr28uMK/tpmBF/i8YyPFp6ATPxVgyY=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=drFmYgNs8sGrY4LOHYGupTQCN8L3/yUD4c7yWkcd/A2rFVPRrq4AUTwyQsvNVNA8dmey2WZRIL0AM+PwRHjp9IMALYIB8xeYR474eHzj/F9uM3Wo94o1mczxRLlVUQaBzHGkR88aC5SKwNVgAH+hqM2/fos1IQdDS4oLW8JGI8M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=c/aObiAN; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="c/aObiAN" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5c96b2a10e1so8674388a12.2 for ; Tue, 12 Nov 2024 06:12:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1731420777; x=1732025577; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Kimy/1TnQyXFgX3XhWARxQaAButHmRKH6ok4ewImjsE=; b=c/aObiANj5BbJC1gyLsO7SAm3+3t1qDARAN7MHlmSs3HoleeQXRguF0alnbjFGNOqr 5AKuQzbxyGzIwZTFL3GGZQw926jzyq3hEQeaVqSJjooWNHizdLgeKqwL094f9IQJPw+C 4oR33hfEiuWBbx4yNPqNme1FVZirKV9Sw3X5JM1T/vIl0zHL1TXSz+4TL8nmR2zkrzHS Obk0Bp3Yf/hFyBrNJ8TiQZgSFbG9qkcRQEaGETid6/lGjGNMswJGN9kw58Y71lUgkFnd WxZ28534VwZanMed2WU2Cshh82x6gA4BgOQfOGGhwJkxZ9KS7IAgZR6VbvhmSJRUIsQ/ RD2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731420777; x=1732025577; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Kimy/1TnQyXFgX3XhWARxQaAButHmRKH6ok4ewImjsE=; b=Q4dKNlqvee1dFBJgREVmYuC+qzIUdNAvsMhRhzA3OuB/zN1RkazAgXDOrJwAPhHw++ pGBiJih4AlCSf++7+TFxDeV1wExX1r5QRlXDQ+oluxzb3lfAdUfT9cEFvMjAObs5EWIr mNLq1rUiPR2dSqVacVpbvjk03ooIfWjy+7FhUI2hm8tXnR+hvYMLPSg0ICCM7LUmwXCW tBtNutRL9+gWF0Vege+tuLCmhuqXiEuzqhBzY5cp2fYJMwgIK42CB+oduY9SCrOv+wrA plecmsp3Q3snQLAjAttWMrb1PlaMJlb+/SDALD1uHMtbt/pCrYor1EmvVK2yYqeCo+M8 g7zw== X-Forwarded-Encrypted: i=1; AJvYcCXenoinCYom5C/GNtvjuYvc48K0EcZt+qPaJgJ+CigSwB/WP7BG4XEyiUoM2s0wG9CTuXAQkGkJZbkK/s+WPTC/@vger.kernel.org X-Gm-Message-State: AOJu0YzqIDFrTUDVEP/TF2SrwE+0aDlE+X93AT914l7f5I6eFBMLhF4I GIo7yQ6WC4cYSv7vym0Wx4C2Ox4dw0zoNoioSZwyDLs5qHPZ8MYznUKniNMSlQc= X-Google-Smtp-Source: AGHT+IF8ZzFJGC2+9TmxkXCX8DpTdCc5s5/9wXaiXhqnbIR1gmuegK2IEMW1ZFA9x1EGQeWGSRbTvQ== X-Received: by 2002:a17:907:d13:b0:a99:ffef:aec5 with SMTP id a640c23a62f3a-a9eeff0e434mr1778281966b.23.1731420777187; Tue, 12 Nov 2024 06:12:57 -0800 (PST) Received: from [192.168.68.163] ([145.224.90.214]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a9ee0ad2f76sm717111766b.89.2024.11.12.06.12.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 12 Nov 2024 06:12:56 -0800 (PST) Message-ID: <9bfdc5a0-ed1d-40f6-8a72-6129e1587ca7@linaro.org> Date: Tue, 12 Nov 2024 14:12:52 +0000 Precedence: bulk X-Mailing-List: linux-perf-users@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 3/4] perf record: Skip don't fail for events that don't open To: Ian Rogers , Leo Yan Cc: Atish Patra , Namhyung Kim , Arnaldo Carvalho de Melo , linux-riscv@lists.infradead.org, beeman@rivosinc.com, Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , Ze Gao , Weilin Wang , Ben Gainey , Dominique Martinet , Junhao He , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <20241026121758.143259-1-irogers@google.com> <20241026121758.143259-4-irogers@google.com> <7c1a0bbf-12fd-46ef-9db2-183dfa70a334@linaro.org> Content-Language: en-US From: James Clark In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 11/11/2024 5:00 pm, Ian Rogers wrote: > On Mon, Nov 11, 2024 at 7:49 AM James Clark wrote: >> >> >> >> On 26/10/2024 1:17 pm, Ian Rogers wrote: >>> Whilst for many tools it is an expected behavior that failure to open >>> a perf event is a failure, ARM decided to name PMU events the same as >>> legacy events and then failed to rename such events on a server uncore >>> SLC PMU. As perf's default behavior when no PMU is specified is to >>> open the event on all PMUs that advertise/"have" the event, this >>> yielded failures when trying to make the priority of legacy and >>> sysfs/json events uniform - something requested by RISC-V and ARM. A >>> legacy event user on ARM hardware may find their event opened on an >>> uncore PMU which for perf record will fail. Arnaldo suggested skipping >>> such events which this patch implements. Rather than have the skipping >>> conditional on running on ARM, the skipping is done on all >>> architectures as such a fundamental behavioral difference could lead >>> to problems with tools built/depending on perf. >>> >>> An example of perf record failing to open events on x86 is: >>> ``` >>> $ perf record -e data_read,cycles,LLC-prefetch-read -a sleep 0.1 >>> Error: >>> Failure to open event 'data_read' on PMU 'uncore_imc_free_running_0' which will be removed. >>> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (data_read). >>> "dmesg | grep -i perf" may provide additional information. >>> >>> Error: >>> Failure to open event 'data_read' on PMU 'uncore_imc_free_running_1' which will be removed. >>> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (data_read). >>> "dmesg | grep -i perf" may provide additional information. >>> >> >> This makes me wonder if this message was overly wordy to begin with. >> This line is fine: >> >> Failure to open event 'data_read' on PMU 'uncore_imc_free_running_0' >> which will be removed. >> >> The next bit about the syscall just repeats. The exit code could be >> included on the previous line. And the dmesg bit is general advice that >> could possibly be printed once at the end. > > Thanks for the time spent investigating this! > > I agree on this. I wonder if we should have short and long messages, > or message+help like we do for parse events. One patch series like > this is improving EBUSY: > https://lore.kernel.org/lkml/20241106003007.2112584-1-ctshao@google.com/ > The issue with printing at the end is knowing where/when the end is. > Printing once is easy enough. > >>> Error: >>> Failure to open event 'LLC-prefetch-read' on PMU 'cpu' which will be removed. >>> The LLC-prefetch-read event is not supported. >>> [ perf record: Woken up 1 times to write data ] >>> [ perf record: Captured and wrote 2.188 MB perf.data (87 samples) ] >>> >>> $ perf report --stats >>> Aggregated stats: >>> TOTAL events: 17255 >>> MMAP events: 284 ( 1.6%) >>> COMM events: 1961 (11.4%) >>> EXIT events: 1 ( 0.0%) >>> FORK events: 1960 (11.4%) >>> SAMPLE events: 87 ( 0.5%) >>> MMAP2 events: 12836 (74.4%) >>> KSYMBOL events: 83 ( 0.5%) >>> BPF_EVENT events: 36 ( 0.2%) >>> FINISHED_ROUND events: 2 ( 0.0%) >>> ID_INDEX events: 1 ( 0.0%) >>> THREAD_MAP events: 1 ( 0.0%) >>> CPU_MAP events: 1 ( 0.0%) >>> TIME_CONV events: 1 ( 0.0%) >>> FINISHED_INIT events: 1 ( 0.0%) >>> cycles stats: >>> SAMPLE events: 87 >>> ``` >>> >>> Note, if all events fail to open then the data file will contain no >>> samples. This is deliberate as at the point the events are opened >>> there are other events, such as the dummy event for sideband data, and >>> these events will succeed in opening even if the user specified ones >> >> Is a file with only sideband events useful? Is it possible to fail the >> record command if the event doesn't open anywhere? >> >> I noticed this leads to some different behavior and a libperf warning >> when you have paranoid=3: >> >> $ perf record -e cycles -C 0 -- true >> >> Error: >> Failure to open event 'cpu_atom/cycles/u' on PMU 'cpu_atom' which will >> be removed. >> ... >> Consider adjusting /proc/sys/kernel/perf_event_paranoid setting >> ... >> libperf: Miscounted nr_mmaps 0 vs 28 >> WARNING: No sample_id_all support, falling back to unordered >> processing >> [ perf record: Woken up 1 times to write data ] >> [ perf record: Captured and wrote 0.021 MB perf.data ] > > So paranoid=3 is a Debian extension that Peter Z doesn't agree with > and so isn't enabled in regular kernels. So we're dealing with cycles, > which we'd expect to open or fall-back to a software event like > task-clock. It feels like things could happen better here but that's > not necessarily the fault of this patch. > paranoid=3 is a bit of a red-herring. I actually meant any paranoid value other than -1. The important part is "-C 0" because only root is allowed to open on a CPU. Or "-a" also causes the issue. Previously you got the command failure and the hint about the paranoid value, but now you get the libperf error too and it still makes the file. I still don't think a file with only sideband events is useful, I don't think there's even a commandline that you can run currently that results in that? You always need at least one event to open for it to succeed and I'm thinking we could keep that. It would be nice to fix the libperf warning too because it's warning about something that was already warned about. >>> don't. Having a mix of open and broken events leads to a problem of >>> identifying different sources of events. >> > >> >> In my basic test I saw that the opened event was identified correctly in >> perf report, unless you have an example that you encountered that we >> should fix? > > I didn't find any but we also don't tend to test failing to open > events. I could imagine things failing in `perf test` on neoverse > testing given the l3 advertising the cycles event. > >> One place I saw an issue was with auxtrace events. If there's an event >> name clash then you're likely to not be able to open the file afterwards >> because the auxtrace code can't handle an event that didn't open. But I >> don't know of any name clashes there (I just faked one for testing), and >> maybe that could be fixed up later in the auxtrace code if there is ever >> a real one. >> >> Other than the above it does seem to work ok. > > Cool, can this be taken as a Tested-by? > Yep, although with a caveat that I faked the second cycles PMU that wouldn't open, but I don't think that should make a difference: Tested-by: James Clark I can also test with the real thing if you like but would take a bit longer as I have to borrow it off Leo. > Thanks, > Ian > >>> The issue with legacy events is that on RISC-V they want the driver to >>> not have mappings from legacy to non-legacy config encodings for each >>> vendor/model due to size, complexity and difficulty to update. It was >>> reported that on ARM Apple-M? CPUs the legacy mapping in the driver >>> was broken and the sysfs/json events should always take precedent, >>> however, it isn't clear this is still the case. It is the case that >>> without working around this issue a legacy event like cycles without a >>> PMU can encode differently than when specified with a PMU - the >>> non-PMU version favoring legacy encodings, the PMU one avoiding legacy >>> encodings. >>> >>> The patch removes events and then adjusts the idx value for each >>> evsel. This is done so that the dense xyarrays used for file >>> descriptors, etc. don't contain broken entries. As event opening >>> happens relatively late in the record process, use of the idx value >>> before the open will have become corrupted, so it is expected there >>> are latent bugs hidden behind this change - the change is best >>> effort. As the only vendor that has broken event names is ARM, this >>> will principally effect ARM users. They will also experience warning >>> messages like those above because of the uncore PMU advertising legacy >>> event names. >> >> >> >>> >>> Suggested-by: Arnaldo Carvalho de Melo >>> Signed-off-by: Ian Rogers >>> --- >>> tools/perf/builtin-record.c | 22 +++++++++++++++++----- >>> 1 file changed, 17 insertions(+), 5 deletions(-) >>> >>> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c >>> index f83252472921..7e99743f7e42 100644 >>> --- a/tools/perf/builtin-record.c >>> +++ b/tools/perf/builtin-record.c >>> @@ -1364,6 +1364,7 @@ static int record__open(struct record *rec) >>> struct perf_session *session = rec->session; >>> struct record_opts *opts = &rec->opts; >>> int rc = 0; >>> + bool skipped = false; >>> >>> evlist__for_each_entry(evlist, pos) { >>> try_again: >>> @@ -1379,15 +1380,26 @@ static int record__open(struct record *rec) >>> pos = evlist__reset_weak_group(evlist, pos, true); >>> goto try_again; >>> } >>> - rc = -errno; >>> evsel__open_strerror(pos, &opts->target, errno, msg, sizeof(msg)); >>> - ui__error("%s\n", msg); >>> - goto out; >>> + ui__error("Failure to open event '%s' on PMU '%s' which will be removed.\n%s\n", >>> + evsel__name(pos), evsel__pmu_name(pos), msg); >>> + pos->skippable = true; >>> + skipped = true; >>> + } else { >>> + pos->supported = true; >>> } >>> - >>> - pos->supported = true; >>> } >>> >>> + if (skipped) { >>> + struct evsel *tmp; >>> + int idx = 0; >>> + >>> + evlist__for_each_entry_safe(evlist, tmp, pos) { >>> + if (pos->skippable) >>> + evlist__remove(evlist, pos); >>> + pos->core.idx = idx++; >>> + } >>> + } >>> if (symbol_conf.kptr_restrict && !evlist__exclude_kernel(evlist)) { >>> pr_warning( >>> "WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,\n" >> 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 8BC49D42B85 for ; Tue, 12 Nov 2024 14:13:17 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gdXA4g/bT5U4vG/wLnt44WjDnk4bbLZiicqz2kdHd+U=; b=ge/K2fqS2oduPu hUDFwkIYwJ54ydpJlDH+ICH7gxDyUgWqzbC/Sd3LEhCa1Ltg39u4BY340sA3B1FSjWcJkwcFnG5ZK 9HCuo1Ss7rR58cXLkwJ4ZziyrLRpsJdEHmCiunL8Klx9lz1UuwPno2j6+1OSiEH/pPh5OBmLyYfkg YiEb9yo2N6j+taro1xWkx97LlWQ/t7J+52wJhHeG177/EdBud7vlRj72FZghGjVkIeHoXwTi0m2Kv GUsF0uxBcaGiO1dk2gUuMM0tCZ97gYg3LFa4FSET5pJT+MJKBqzcNaGeeEaUH3zV2PwRl8FcVRZjI AJQPJPNTFJzWYEVy3GHg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tArdk-00000003i78-1v7v; Tue, 12 Nov 2024 14:13:08 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tArdb-00000003i5t-1uje for linux-riscv@lists.infradead.org; Tue, 12 Nov 2024 14:13:05 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-5c9388a00cfso7271126a12.3 for ; Tue, 12 Nov 2024 06:12:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1731420777; x=1732025577; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Kimy/1TnQyXFgX3XhWARxQaAButHmRKH6ok4ewImjsE=; b=WK7hFLOjiGu5qUB7kfeLC9vA/nr6g64ovJI+PvPWm/7Ai6uMFJEMoJPAJc8zjgdEtA VKWfWaIaOvnHuiw+9/yjppxtdT2QYadYm05TGFfekMbpItV3boSUefh2aLveyauJabur Gy0CCu91GEWKUznxfvvBi3GrCeSLHQPFrWoTIz1ByulgSy8uRA6zeHr6Ys6tfEzBTnMb 6oZTAibaIAMi1C5cn8jcbCQDmf/fEd6BK4fHmf27+xqCoGlcw+7piOa5zQCicRK5Q9qj Ncl25Yna242mnpm74rsXmSqCY1aJPwJDBTNSjR51wM+Cns9I2fjktljujnsoT3FUGv+8 lGbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731420777; x=1732025577; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Kimy/1TnQyXFgX3XhWARxQaAButHmRKH6ok4ewImjsE=; b=MdXTmnIdlBQeiVk2USsi1bbRDZHjt56d4LsH6MHBVvVzql8QrEExvaF1Z9U4qqEy/t +jE7S3JQVO2qDcYZNJeRpdDNeNzOX2DX2GgTKiGQlp7zj6QjtiAY538nyakbfBD0IlRM fW90XpU8WRrhESvuPrEpfx/UfFlNrEcuX8DnMSvEeV4YzwGWGCV9hAi+yMQdacmGAKIu ETPcbeyB+/xAZO0s9MpdcgiVSTjHW/pvIzJQ1kD0Omnh/y/TeOdqil73YeyhAea6pqgu qfhouRHtiiP6QgoQBpM0xbg0TFpcFlm/Ajr7NkGlBdmtOWzdPtegM4UVfObyTHVNfg8m CImA== X-Forwarded-Encrypted: i=1; AJvYcCUmVABDMJy6MhycixjlViJzRBh14PITLbvOanNecRgNnxg9+2S9ZM7E687itm+smUF1tHOinoSSOnanxg==@lists.infradead.org X-Gm-Message-State: AOJu0Ywk1UklGvqbHFQhNJihngC/vcYpet3o23XPHxxfUu1PDzcIuM3+ 2GPWvHfmuUeWRgZGPmbhZ4PSS9qGXnlcFLp/OQcB3TDYyhavYmnT80ldvGRCxfk= X-Google-Smtp-Source: AGHT+IF8ZzFJGC2+9TmxkXCX8DpTdCc5s5/9wXaiXhqnbIR1gmuegK2IEMW1ZFA9x1EGQeWGSRbTvQ== X-Received: by 2002:a17:907:d13:b0:a99:ffef:aec5 with SMTP id a640c23a62f3a-a9eeff0e434mr1778281966b.23.1731420777187; Tue, 12 Nov 2024 06:12:57 -0800 (PST) Received: from [192.168.68.163] ([145.224.90.214]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a9ee0ad2f76sm717111766b.89.2024.11.12.06.12.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 12 Nov 2024 06:12:56 -0800 (PST) Message-ID: <9bfdc5a0-ed1d-40f6-8a72-6129e1587ca7@linaro.org> Date: Tue, 12 Nov 2024 14:12:52 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 3/4] perf record: Skip don't fail for events that don't open To: Ian Rogers , Leo Yan Cc: Atish Patra , Namhyung Kim , Arnaldo Carvalho de Melo , linux-riscv@lists.infradead.org, beeman@rivosinc.com, Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , Ze Gao , Weilin Wang , Ben Gainey , Dominique Martinet , Junhao He , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <20241026121758.143259-1-irogers@google.com> <20241026121758.143259-4-irogers@google.com> <7c1a0bbf-12fd-46ef-9db2-183dfa70a334@linaro.org> Content-Language: en-US From: James Clark In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241112_061303_994210_A330AF71 X-CRM114-Status: GOOD ( 54.81 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org CgpPbiAxMS8xMS8yMDI0IDU6MDAgcG0sIElhbiBSb2dlcnMgd3JvdGU6Cj4gT24gTW9uLCBOb3Yg MTEsIDIwMjQgYXQgNzo0OeKAr0FNIEphbWVzIENsYXJrIDxqYW1lcy5jbGFya0BsaW5hcm8ub3Jn PiB3cm90ZToKPj4KPj4KPj4KPj4gT24gMjYvMTAvMjAyNCAxOjE3IHBtLCBJYW4gUm9nZXJzIHdy b3RlOgo+Pj4gV2hpbHN0IGZvciBtYW55IHRvb2xzIGl0IGlzIGFuIGV4cGVjdGVkIGJlaGF2aW9y IHRoYXQgZmFpbHVyZSB0byBvcGVuCj4+PiBhIHBlcmYgZXZlbnQgaXMgYSBmYWlsdXJlLCBBUk0g ZGVjaWRlZCB0byBuYW1lIFBNVSBldmVudHMgdGhlIHNhbWUgYXMKPj4+IGxlZ2FjeSBldmVudHMg YW5kIHRoZW4gZmFpbGVkIHRvIHJlbmFtZSBzdWNoIGV2ZW50cyBvbiBhIHNlcnZlciB1bmNvcmUK Pj4+IFNMQyBQTVUuIEFzIHBlcmYncyBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gbm8gUE1VIGlzIHNw ZWNpZmllZCBpcyB0bwo+Pj4gb3BlbiB0aGUgZXZlbnQgb24gYWxsIFBNVXMgdGhhdCBhZHZlcnRp c2UvImhhdmUiIHRoZSBldmVudCwgdGhpcwo+Pj4geWllbGRlZCBmYWlsdXJlcyB3aGVuIHRyeWlu ZyB0byBtYWtlIHRoZSBwcmlvcml0eSBvZiBsZWdhY3kgYW5kCj4+PiBzeXNmcy9qc29uIGV2ZW50 cyB1bmlmb3JtIC0gc29tZXRoaW5nIHJlcXVlc3RlZCBieSBSSVNDLVYgYW5kIEFSTS4gQQo+Pj4g bGVnYWN5IGV2ZW50IHVzZXIgb24gQVJNIGhhcmR3YXJlIG1heSBmaW5kIHRoZWlyIGV2ZW50IG9w ZW5lZCBvbiBhbgo+Pj4gdW5jb3JlIFBNVSB3aGljaCBmb3IgcGVyZiByZWNvcmQgd2lsbCBmYWls LiBBcm5hbGRvIHN1Z2dlc3RlZCBza2lwcGluZwo+Pj4gc3VjaCBldmVudHMgd2hpY2ggdGhpcyBw YXRjaCBpbXBsZW1lbnRzLiBSYXRoZXIgdGhhbiBoYXZlIHRoZSBza2lwcGluZwo+Pj4gY29uZGl0 aW9uYWwgb24gcnVubmluZyBvbiBBUk0sIHRoZSBza2lwcGluZyBpcyBkb25lIG9uIGFsbAo+Pj4g YXJjaGl0ZWN0dXJlcyBhcyBzdWNoIGEgZnVuZGFtZW50YWwgYmVoYXZpb3JhbCBkaWZmZXJlbmNl IGNvdWxkIGxlYWQKPj4+IHRvIHByb2JsZW1zIHdpdGggdG9vbHMgYnVpbHQvZGVwZW5kaW5nIG9u IHBlcmYuCj4+Pgo+Pj4gQW4gZXhhbXBsZSBvZiBwZXJmIHJlY29yZCBmYWlsaW5nIHRvIG9wZW4g ZXZlbnRzIG9uIHg4NiBpczoKPj4+IGBgYAo+Pj4gJCBwZXJmIHJlY29yZCAtZSBkYXRhX3JlYWQs Y3ljbGVzLExMQy1wcmVmZXRjaC1yZWFkIC1hIHNsZWVwIDAuMQo+Pj4gRXJyb3I6Cj4+PiBGYWls dXJlIHRvIG9wZW4gZXZlbnQgJ2RhdGFfcmVhZCcgb24gUE1VICd1bmNvcmVfaW1jX2ZyZWVfcnVu bmluZ18wJyB3aGljaCB3aWxsIGJlIHJlbW92ZWQuCj4+PiBUaGUgc3lzX3BlcmZfZXZlbnRfb3Bl bigpIHN5c2NhbGwgcmV0dXJuZWQgd2l0aCAyMiAoSW52YWxpZCBhcmd1bWVudCkgZm9yIGV2ZW50 IChkYXRhX3JlYWQpLgo+Pj4gImRtZXNnIHwgZ3JlcCAtaSBwZXJmIiBtYXkgcHJvdmlkZSBhZGRp dGlvbmFsIGluZm9ybWF0aW9uLgo+Pj4KPj4+IEVycm9yOgo+Pj4gRmFpbHVyZSB0byBvcGVuIGV2 ZW50ICdkYXRhX3JlYWQnIG9uIFBNVSAndW5jb3JlX2ltY19mcmVlX3J1bm5pbmdfMScgd2hpY2gg d2lsbCBiZSByZW1vdmVkLgo+Pj4gVGhlIHN5c19wZXJmX2V2ZW50X29wZW4oKSBzeXNjYWxsIHJl dHVybmVkIHdpdGggMjIgKEludmFsaWQgYXJndW1lbnQpIGZvciBldmVudCAoZGF0YV9yZWFkKS4K Pj4+ICJkbWVzZyB8IGdyZXAgLWkgcGVyZiIgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1h dGlvbi4KPj4+Cj4+Cj4+IFRoaXMgbWFrZXMgbWUgd29uZGVyIGlmIHRoaXMgbWVzc2FnZSB3YXMg b3Zlcmx5IHdvcmR5IHRvIGJlZ2luIHdpdGguCj4+IFRoaXMgbGluZSBpcyBmaW5lOgo+Pgo+PiAg ICBGYWlsdXJlIHRvIG9wZW4gZXZlbnQgJ2RhdGFfcmVhZCcgb24gUE1VICd1bmNvcmVfaW1jX2Zy ZWVfcnVubmluZ18wJwo+PiAgICB3aGljaCB3aWxsIGJlIHJlbW92ZWQuCj4+Cj4+IFRoZSBuZXh0 IGJpdCBhYm91dCB0aGUgc3lzY2FsbCBqdXN0IHJlcGVhdHMuIFRoZSBleGl0IGNvZGUgY291bGQg YmUKPj4gaW5jbHVkZWQgb24gdGhlIHByZXZpb3VzIGxpbmUuIEFuZCB0aGUgZG1lc2cgYml0IGlz IGdlbmVyYWwgYWR2aWNlIHRoYXQKPj4gY291bGQgcG9zc2libHkgYmUgcHJpbnRlZCBvbmNlIGF0 IHRoZSBlbmQuCj4gCj4gVGhhbmtzIGZvciB0aGUgdGltZSBzcGVudCBpbnZlc3RpZ2F0aW5nIHRo aXMhCj4gCj4gSSBhZ3JlZSBvbiB0aGlzLiBJIHdvbmRlciBpZiB3ZSBzaG91bGQgaGF2ZSBzaG9y dCBhbmQgbG9uZyBtZXNzYWdlcywKPiBvciBtZXNzYWdlK2hlbHAgbGlrZSB3ZSBkbyBmb3IgcGFy c2UgZXZlbnRzLiBPbmUgcGF0Y2ggc2VyaWVzIGxpa2UKPiB0aGlzIGlzIGltcHJvdmluZyBFQlVT WToKPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjQxMTA2MDAzMDA3LjIxMTI1ODQt MS1jdHNoYW9AZ29vZ2xlLmNvbS8KPiBUaGUgaXNzdWUgd2l0aCBwcmludGluZyBhdCB0aGUgZW5k IGlzIGtub3dpbmcgd2hlcmUvd2hlbiB0aGUgZW5kIGlzLgo+IFByaW50aW5nIG9uY2UgaXMgZWFz eSBlbm91Z2guCj4gCj4+PiBFcnJvcjoKPj4+IEZhaWx1cmUgdG8gb3BlbiBldmVudCAnTExDLXBy ZWZldGNoLXJlYWQnIG9uIFBNVSAnY3B1JyB3aGljaCB3aWxsIGJlIHJlbW92ZWQuCj4+PiBUaGUg TExDLXByZWZldGNoLXJlYWQgZXZlbnQgaXMgbm90IHN1cHBvcnRlZC4KPj4+IFsgcGVyZiByZWNv cmQ6IFdva2VuIHVwIDEgdGltZXMgdG8gd3JpdGUgZGF0YSBdCj4+PiBbIHBlcmYgcmVjb3JkOiBD YXB0dXJlZCBhbmQgd3JvdGUgMi4xODggTUIgcGVyZi5kYXRhICg4NyBzYW1wbGVzKSBdCj4+Pgo+ Pj4gJCBwZXJmIHJlcG9ydCAtLXN0YXRzCj4+PiBBZ2dyZWdhdGVkIHN0YXRzOgo+Pj4gICAgICAg ICAgICAgICAgICBUT1RBTCBldmVudHM6ICAgICAgMTcyNTUKPj4+ICAgICAgICAgICAgICAgICAg IE1NQVAgZXZlbnRzOiAgICAgICAgMjg0ICAoIDEuNiUpCj4+PiAgICAgICAgICAgICAgICAgICBD T01NIGV2ZW50czogICAgICAgMTk2MSAgKDExLjQlKQo+Pj4gICAgICAgICAgICAgICAgICAgRVhJ VCBldmVudHM6ICAgICAgICAgIDEgICggMC4wJSkKPj4+ICAgICAgICAgICAgICAgICAgIEZPUksg ZXZlbnRzOiAgICAgICAxOTYwICAoMTEuNCUpCj4+PiAgICAgICAgICAgICAgICAgU0FNUExFIGV2 ZW50czogICAgICAgICA4NyAgKCAwLjUlKQo+Pj4gICAgICAgICAgICAgICAgICBNTUFQMiBldmVu dHM6ICAgICAgMTI4MzYgICg3NC40JSkKPj4+ICAgICAgICAgICAgICAgIEtTWU1CT0wgZXZlbnRz OiAgICAgICAgIDgzICAoIDAuNSUpCj4+PiAgICAgICAgICAgICAgQlBGX0VWRU5UIGV2ZW50czog ICAgICAgICAzNiAgKCAwLjIlKQo+Pj4gICAgICAgICBGSU5JU0hFRF9ST1VORCBldmVudHM6ICAg ICAgICAgIDIgICggMC4wJSkKPj4+ICAgICAgICAgICAgICAgSURfSU5ERVggZXZlbnRzOiAgICAg ICAgICAxICAoIDAuMCUpCj4+PiAgICAgICAgICAgICBUSFJFQURfTUFQIGV2ZW50czogICAgICAg ICAgMSAgKCAwLjAlKQo+Pj4gICAgICAgICAgICAgICAgQ1BVX01BUCBldmVudHM6ICAgICAgICAg IDEgICggMC4wJSkKPj4+ICAgICAgICAgICAgICBUSU1FX0NPTlYgZXZlbnRzOiAgICAgICAgICAx ICAoIDAuMCUpCj4+PiAgICAgICAgICBGSU5JU0hFRF9JTklUIGV2ZW50czogICAgICAgICAgMSAg KCAwLjAlKQo+Pj4gY3ljbGVzIHN0YXRzOgo+Pj4gICAgICAgICAgICAgICAgIFNBTVBMRSBldmVu dHM6ICAgICAgICAgODcKPj4+IGBgYAo+Pj4KPj4+IE5vdGUsIGlmIGFsbCBldmVudHMgZmFpbCB0 byBvcGVuIHRoZW4gdGhlIGRhdGEgZmlsZSB3aWxsIGNvbnRhaW4gbm8KPj4+IHNhbXBsZXMuIFRo aXMgaXMgZGVsaWJlcmF0ZSBhcyBhdCB0aGUgcG9pbnQgdGhlIGV2ZW50cyBhcmUgb3BlbmVkCj4+ PiB0aGVyZSBhcmUgb3RoZXIgZXZlbnRzLCBzdWNoIGFzIHRoZSBkdW1teSBldmVudCBmb3Igc2lk ZWJhbmQgZGF0YSwgYW5kCj4+PiB0aGVzZSBldmVudHMgd2lsbCBzdWNjZWVkIGluIG9wZW5pbmcg ZXZlbiBpZiB0aGUgdXNlciBzcGVjaWZpZWQgb25lcwo+Pgo+PiBJcyBhIGZpbGUgd2l0aCBvbmx5 IHNpZGViYW5kIGV2ZW50cyB1c2VmdWw/IElzIGl0IHBvc3NpYmxlIHRvIGZhaWwgdGhlCj4+IHJl Y29yZCBjb21tYW5kIGlmIHRoZSBldmVudCBkb2Vzbid0IG9wZW4gYW55d2hlcmU/Cj4+Cj4+IEkg bm90aWNlZCB0aGlzIGxlYWRzIHRvIHNvbWUgZGlmZmVyZW50IGJlaGF2aW9yIGFuZCBhIGxpYnBl cmYgd2FybmluZwo+PiB3aGVuIHlvdSBoYXZlIHBhcmFub2lkPTM6Cj4+Cj4+ICAgICAkIHBlcmYg cmVjb3JkIC1lIGN5Y2xlcyAtQyAwIC0tIHRydWUKPj4KPj4gICAgIEVycm9yOgo+PiAgICAgRmFp bHVyZSB0byBvcGVuIGV2ZW50ICdjcHVfYXRvbS9jeWNsZXMvdScgb24gUE1VICdjcHVfYXRvbScg d2hpY2ggd2lsbAo+PiAgICAgYmUgcmVtb3ZlZC4KPj4gICAgIC4uLgo+PiAgICAgQ29uc2lkZXIg YWRqdXN0aW5nIC9wcm9jL3N5cy9rZXJuZWwvcGVyZl9ldmVudF9wYXJhbm9pZCBzZXR0aW5nCj4+ ICAgICAuLi4KPj4gICAgIGxpYnBlcmY6IE1pc2NvdW50ZWQgbnJfbW1hcHMgMCB2cyAyOAo+PiAg ICAgV0FSTklORzogTm8gc2FtcGxlX2lkX2FsbCBzdXBwb3J0LCBmYWxsaW5nIGJhY2sgdG8gdW5v cmRlcmVkCj4+ICAgICBwcm9jZXNzaW5nCj4+ICAgICBbIHBlcmYgcmVjb3JkOiBXb2tlbiB1cCAx IHRpbWVzIHRvIHdyaXRlIGRhdGEgXQo+PiAgICAgWyBwZXJmIHJlY29yZDogQ2FwdHVyZWQgYW5k IHdyb3RlIDAuMDIxIE1CIHBlcmYuZGF0YSBdCj4gCj4gU28gcGFyYW5vaWQ9MyBpcyBhIERlYmlh biBleHRlbnNpb24gdGhhdCBQZXRlciBaIGRvZXNuJ3QgYWdyZWUgd2l0aAo+IGFuZCBzbyBpc24n dCBlbmFibGVkIGluIHJlZ3VsYXIga2VybmVscy4gU28gd2UncmUgZGVhbGluZyB3aXRoIGN5Y2xl cywKPiB3aGljaCB3ZSdkIGV4cGVjdCB0byBvcGVuIG9yIGZhbGwtYmFjayB0byBhIHNvZnR3YXJl IGV2ZW50IGxpa2UKPiB0YXNrLWNsb2NrLiBJdCBmZWVscyBsaWtlIHRoaW5ncyBjb3VsZCBoYXBw ZW4gYmV0dGVyIGhlcmUgYnV0IHRoYXQncwo+IG5vdCBuZWNlc3NhcmlseSB0aGUgZmF1bHQgb2Yg dGhpcyBwYXRjaC4KPiAKCnBhcmFub2lkPTMgaXMgYSBiaXQgb2YgYSByZWQtaGVycmluZy4gSSBh Y3R1YWxseSBtZWFudCBhbnkgcGFyYW5vaWQgCnZhbHVlIG90aGVyIHRoYW4gLTEuIFRoZSBpbXBv cnRhbnQgcGFydCBpcyAiLUMgMCIgYmVjYXVzZSBvbmx5IHJvb3QgaXMgCmFsbG93ZWQgdG8gb3Bl biBvbiBhIENQVS4gT3IgIi1hIiBhbHNvIGNhdXNlcyB0aGUgaXNzdWUuCgpQcmV2aW91c2x5IHlv dSBnb3QgdGhlIGNvbW1hbmQgZmFpbHVyZSBhbmQgdGhlIGhpbnQgYWJvdXQgdGhlIHBhcmFub2lk IAp2YWx1ZSwgYnV0IG5vdyB5b3UgZ2V0IHRoZSBsaWJwZXJmIGVycm9yIHRvbyBhbmQgaXQgc3Rp bGwgbWFrZXMgdGhlIGZpbGUuCgpJIHN0aWxsIGRvbid0IHRoaW5rIGEgZmlsZSB3aXRoIG9ubHkg c2lkZWJhbmQgZXZlbnRzIGlzIHVzZWZ1bCwgSSBkb24ndCAKdGhpbmsgdGhlcmUncyBldmVuIGEg Y29tbWFuZGxpbmUgdGhhdCB5b3UgY2FuIHJ1biBjdXJyZW50bHkgdGhhdCByZXN1bHRzIAppbiB0 aGF0PyBZb3UgYWx3YXlzIG5lZWQgYXQgbGVhc3Qgb25lIGV2ZW50IHRvIG9wZW4gZm9yIGl0IHRv IHN1Y2NlZWQgCmFuZCBJJ20gdGhpbmtpbmcgd2UgY291bGQga2VlcCB0aGF0LgoKSXQgd291bGQg YmUgbmljZSB0byBmaXggdGhlIGxpYnBlcmYgd2FybmluZyB0b28gYmVjYXVzZSBpdCdzIHdhcm5p bmcgCmFib3V0IHNvbWV0aGluZyB0aGF0IHdhcyBhbHJlYWR5IHdhcm5lZCBhYm91dC4KCj4+PiBk b24ndC4gSGF2aW5nIGEgbWl4IG9mIG9wZW4gYW5kIGJyb2tlbiBldmVudHMgbGVhZHMgdG8gYSBw cm9ibGVtIG9mCj4+PiBpZGVudGlmeWluZyBkaWZmZXJlbnQgc291cmNlcyBvZiBldmVudHMuCj4+ ICAgPgo+Pgo+PiBJbiBteSBiYXNpYyB0ZXN0IEkgc2F3IHRoYXQgdGhlIG9wZW5lZCBldmVudCB3 YXMgaWRlbnRpZmllZCBjb3JyZWN0bHkgaW4KPj4gcGVyZiByZXBvcnQsIHVubGVzcyB5b3UgaGF2 ZSBhbiBleGFtcGxlIHRoYXQgeW91IGVuY291bnRlcmVkIHRoYXQgd2UKPj4gc2hvdWxkIGZpeD8K PiAKPiBJIGRpZG4ndCBmaW5kIGFueSBidXQgd2UgYWxzbyBkb24ndCB0ZW5kIHRvIHRlc3QgZmFp bGluZyB0byBvcGVuCj4gZXZlbnRzLiBJIGNvdWxkIGltYWdpbmUgdGhpbmdzIGZhaWxpbmcgaW4g YHBlcmYgdGVzdGAgb24gbmVvdmVyc2UKPiB0ZXN0aW5nIGdpdmVuIHRoZSBsMyBhZHZlcnRpc2lu ZyB0aGUgY3ljbGVzIGV2ZW50Lgo+IAo+PiBPbmUgcGxhY2UgSSBzYXcgYW4gaXNzdWUgd2FzIHdp dGggYXV4dHJhY2UgZXZlbnRzLiBJZiB0aGVyZSdzIGFuIGV2ZW50Cj4+IG5hbWUgY2xhc2ggdGhl biB5b3UncmUgbGlrZWx5IHRvIG5vdCBiZSBhYmxlIHRvIG9wZW4gdGhlIGZpbGUgYWZ0ZXJ3YXJk cwo+PiBiZWNhdXNlIHRoZSBhdXh0cmFjZSBjb2RlIGNhbid0IGhhbmRsZSBhbiBldmVudCB0aGF0 IGRpZG4ndCBvcGVuLiBCdXQgSQo+PiBkb24ndCBrbm93IG9mIGFueSBuYW1lIGNsYXNoZXMgdGhl cmUgKEkganVzdCBmYWtlZCBvbmUgZm9yIHRlc3RpbmcpLCBhbmQKPj4gbWF5YmUgdGhhdCBjb3Vs ZCBiZSBmaXhlZCB1cCBsYXRlciBpbiB0aGUgYXV4dHJhY2UgY29kZSBpZiB0aGVyZSBpcyBldmVy Cj4+IGEgcmVhbCBvbmUuCj4+Cj4+IE90aGVyIHRoYW4gdGhlIGFib3ZlIGl0IGRvZXMgc2VlbSB0 byB3b3JrIG9rLgo+IAo+IENvb2wsIGNhbiB0aGlzIGJlIHRha2VuIGFzIGEgVGVzdGVkLWJ5Pwo+ IAoKWWVwLCBhbHRob3VnaCB3aXRoIGEgY2F2ZWF0IHRoYXQgSSBmYWtlZCB0aGUgc2Vjb25kIGN5 Y2xlcyBQTVUgdGhhdCAKd291bGRuJ3Qgb3BlbiwgYnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCBzaG91 bGQgbWFrZSBhIGRpZmZlcmVuY2U6CgpUZXN0ZWQtYnk6IEphbWVzIENsYXJrIDxqYW1lcy5jbGFy a0BsaW5hcm8ub3JnPgoKSSBjYW4gYWxzbyB0ZXN0IHdpdGggdGhlIHJlYWwgdGhpbmcgaWYgeW91 IGxpa2UgYnV0IHdvdWxkIHRha2UgYSBiaXQgCmxvbmdlciBhcyBJIGhhdmUgdG8gYm9ycm93IGl0 IG9mZiBMZW8uCgo+IFRoYW5rcywKPiBJYW4KPiAKPj4+IFRoZSBpc3N1ZSB3aXRoIGxlZ2FjeSBl dmVudHMgaXMgdGhhdCBvbiBSSVNDLVYgdGhleSB3YW50IHRoZSBkcml2ZXIgdG8KPj4+IG5vdCBo YXZlIG1hcHBpbmdzIGZyb20gbGVnYWN5IHRvIG5vbi1sZWdhY3kgY29uZmlnIGVuY29kaW5ncyBm b3IgZWFjaAo+Pj4gdmVuZG9yL21vZGVsIGR1ZSB0byBzaXplLCBjb21wbGV4aXR5IGFuZCBkaWZm aWN1bHR5IHRvIHVwZGF0ZS4gSXQgd2FzCj4+PiByZXBvcnRlZCB0aGF0IG9uIEFSTSBBcHBsZS1N PyBDUFVzIHRoZSBsZWdhY3kgbWFwcGluZyBpbiB0aGUgZHJpdmVyCj4+PiB3YXMgYnJva2VuIGFu ZCB0aGUgc3lzZnMvanNvbiBldmVudHMgc2hvdWxkIGFsd2F5cyB0YWtlIHByZWNlZGVudCwKPj4+ IGhvd2V2ZXIsIGl0IGlzbid0IGNsZWFyIHRoaXMgaXMgc3RpbGwgdGhlIGNhc2UuIEl0IGlzIHRo ZSBjYXNlIHRoYXQKPj4+IHdpdGhvdXQgd29ya2luZyBhcm91bmQgdGhpcyBpc3N1ZSBhIGxlZ2Fj eSBldmVudCBsaWtlIGN5Y2xlcyB3aXRob3V0IGEKPj4+IFBNVSBjYW4gZW5jb2RlIGRpZmZlcmVu dGx5IHRoYW4gd2hlbiBzcGVjaWZpZWQgd2l0aCBhIFBNVSAtIHRoZQo+Pj4gbm9uLVBNVSB2ZXJz aW9uIGZhdm9yaW5nIGxlZ2FjeSBlbmNvZGluZ3MsIHRoZSBQTVUgb25lIGF2b2lkaW5nIGxlZ2Fj eQo+Pj4gZW5jb2RpbmdzLgo+Pj4KPj4+IFRoZSBwYXRjaCByZW1vdmVzIGV2ZW50cyBhbmQgdGhl biBhZGp1c3RzIHRoZSBpZHggdmFsdWUgZm9yIGVhY2gKPj4+IGV2c2VsLiBUaGlzIGlzIGRvbmUg c28gdGhhdCB0aGUgZGVuc2UgeHlhcnJheXMgdXNlZCBmb3IgZmlsZQo+Pj4gZGVzY3JpcHRvcnMs IGV0Yy4gZG9uJ3QgY29udGFpbiBicm9rZW4gZW50cmllcy4gQXMgZXZlbnQgb3BlbmluZwo+Pj4g aGFwcGVucyByZWxhdGl2ZWx5IGxhdGUgaW4gdGhlIHJlY29yZCBwcm9jZXNzLCB1c2Ugb2YgdGhl IGlkeCB2YWx1ZQo+Pj4gYmVmb3JlIHRoZSBvcGVuIHdpbGwgaGF2ZSBiZWNvbWUgY29ycnVwdGVk LCBzbyBpdCBpcyBleHBlY3RlZCB0aGVyZQo+Pj4gYXJlIGxhdGVudCBidWdzIGhpZGRlbiBiZWhp bmQgdGhpcyBjaGFuZ2UgLSB0aGUgY2hhbmdlIGlzIGJlc3QKPj4+IGVmZm9ydC4gQXMgdGhlIG9u bHkgdmVuZG9yIHRoYXQgaGFzIGJyb2tlbiBldmVudCBuYW1lcyBpcyBBUk0sIHRoaXMKPj4+IHdp bGwgcHJpbmNpcGFsbHkgZWZmZWN0IEFSTSB1c2Vycy4gVGhleSB3aWxsIGFsc28gZXhwZXJpZW5j ZSB3YXJuaW5nCj4+PiBtZXNzYWdlcyBsaWtlIHRob3NlIGFib3ZlIGJlY2F1c2Ugb2YgdGhlIHVu Y29yZSBQTVUgYWR2ZXJ0aXNpbmcgbGVnYWN5Cj4+PiBldmVudCBuYW1lcy4KPj4KPj4KPj4KPj4+ Cj4+PiBTdWdnZXN0ZWQtYnk6IEFybmFsZG8gQ2FydmFsaG8gZGUgTWVsbyA8YWNtZUBrZXJuZWwu b3JnPgo+Pj4gU2lnbmVkLW9mZi1ieTogSWFuIFJvZ2VycyA8aXJvZ2Vyc0Bnb29nbGUuY29tPgo+ Pj4gLS0tCj4+PiAgICB0b29scy9wZXJmL2J1aWx0aW4tcmVjb3JkLmMgfCAyMiArKysrKysrKysr KysrKysrKy0tLS0tCj4+PiAgICAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLXJlY29y ZC5jIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlY29yZC5jCj4+PiBpbmRleCBmODMyNTI0NzI5MjEu LjdlOTk3NDNmN2U0MiAxMDA2NDQKPj4+IC0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZWNvcmQu Ywo+Pj4gKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlY29yZC5jCj4+PiBAQCAtMTM2NCw2ICsx MzY0LDcgQEAgc3RhdGljIGludCByZWNvcmRfX29wZW4oc3RydWN0IHJlY29yZCAqcmVjKQo+Pj4g ICAgICAgIHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24gPSByZWMtPnNlc3Npb247Cj4+PiAg ICAgICAgc3RydWN0IHJlY29yZF9vcHRzICpvcHRzID0gJnJlYy0+b3B0czsKPj4+ICAgICAgICBp bnQgcmMgPSAwOwo+Pj4gKyAgICAgYm9vbCBza2lwcGVkID0gZmFsc2U7Cj4+Pgo+Pj4gICAgICAg IGV2bGlzdF9fZm9yX2VhY2hfZW50cnkoZXZsaXN0LCBwb3MpIHsKPj4+ICAgIHRyeV9hZ2FpbjoK Pj4+IEBAIC0xMzc5LDE1ICsxMzgwLDI2IEBAIHN0YXRpYyBpbnQgcmVjb3JkX19vcGVuKHN0cnVj dCByZWNvcmQgKnJlYykKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBl dmxpc3RfX3Jlc2V0X3dlYWtfZ3JvdXAoZXZsaXN0LCBwb3MsIHRydWUpOwo+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdHJ5X2FnYWluOwo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICB9Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgcmMgPSAtZXJybm87Cj4+PiAgICAg ICAgICAgICAgICAgICAgICAgIGV2c2VsX19vcGVuX3N0cmVycm9yKHBvcywgJm9wdHMtPnRhcmdl dCwgZXJybm8sIG1zZywgc2l6ZW9mKG1zZykpOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHVp X19lcnJvcigiJXNcbiIsIG1zZyk7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgdWlfX2Vycm9yKCJGYWlsdXJlIHRvIG9wZW4gZXZl bnQgJyVzJyBvbiBQTVUgJyVzJyB3aGljaCB3aWxsIGJlIHJlbW92ZWQuXG4lc1xuIiwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZzZWxfX25hbWUocG9zKSwgZXZzZWxfX3Bt dV9uYW1lKHBvcyksIG1zZyk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgcG9zLT5za2lwcGFi bGUgPSB0cnVlOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNraXBwZWQgPSB0cnVlOwo+Pj4g KyAgICAgICAgICAgICB9IGVsc2Ugewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHBvcy0+c3Vw cG9ydGVkID0gdHJ1ZTsKPj4+ICAgICAgICAgICAgICAgIH0KPj4+IC0KPj4+IC0gICAgICAgICAg ICAgcG9zLT5zdXBwb3J0ZWQgPSB0cnVlOwo+Pj4gICAgICAgIH0KPj4+Cj4+PiArICAgICBpZiAo c2tpcHBlZCkgewo+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZXZzZWwgKnRtcDsKPj4+ICsgICAg ICAgICAgICAgaW50IGlkeCA9IDA7Cj4+PiArCj4+PiArICAgICAgICAgICAgIGV2bGlzdF9fZm9y X2VhY2hfZW50cnlfc2FmZShldmxpc3QsIHRtcCwgcG9zKSB7Cj4+PiArICAgICAgICAgICAgICAg ICAgICAgaWYgKHBvcy0+c2tpcHBhYmxlKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXZsaXN0X19yZW1vdmUoZXZsaXN0LCBwb3MpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IHBvcy0+Y29yZS5pZHggPSBpZHgrKzsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKyAgICAgfQo+ Pj4gICAgICAgIGlmIChzeW1ib2xfY29uZi5rcHRyX3Jlc3RyaWN0ICYmICFldmxpc3RfX2V4Y2x1 ZGVfa2VybmVsKGV2bGlzdCkpIHsKPj4+ICAgICAgICAgICAgICAgIHByX3dhcm5pbmcoCj4+PiAg ICAiV0FSTklORzogS2VybmVsIGFkZHJlc3MgbWFwcyAoL3Byb2Mve2thbGxzeW1zLG1vZHVsZXN9 KSBhcmUgcmVzdHJpY3RlZCxcbiIKPj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LXJpc2N2Cg==