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 C07E8C021A2 for ; Tue, 11 Feb 2025 00:41:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kXxJ1jFzWbWJEOO3pmkHS53hnSaPSIVREc8BxzJcJIQ=; b=tmhDjYzX39zKwuL3SthNVw7/3N XDnhSNUreukCpSNEG+caHpz/isCSYzKhXvNB2r3wG6mdIiSVWu/hx4K4up5jHdtRVbAkyKlCPFfze qUaKGaC4nfIb2XPycpi/oLtV+3hhx3utsWR2/ziHOgU6nVdzikW5yWArHNDiswZ8M0tTNDZetxpgF v/DWuNUoXNHafGzOi4KbZwZ4FLAyXOsYWozUFKrRZ7xlAh2mBtOzb/2FWaaAP7g/SbeVfsjC3wJfu +5/+AkNk3tKIjuAVG6oL2QfbEt7DdbehHcpzcZVus1yfn05BzSEtlE0faq4xL3y9bBwM4jAUOCNqL vTJ84Ing==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1theKY-000000020qF-2gbh; Tue, 11 Feb 2025 00:40:50 +0000 Received: from mail-yb1-xb44.google.com ([2607:f8b0:4864:20::b44]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thdMv-00000001sNA-3hwD for linux-arm-kernel@lists.infradead.org; Mon, 10 Feb 2025 23:39:15 +0000 Received: by mail-yb1-xb44.google.com with SMTP id 3f1490d57ef6-e3983426f80so3800428276.1 for ; Mon, 10 Feb 2025 15:39:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739230753; x=1739835553; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=kXxJ1jFzWbWJEOO3pmkHS53hnSaPSIVREc8BxzJcJIQ=; b=HBnQGcJYdgMCXBc7raPJv63po0h8gwgY6Lp1h4ZzJC3eKEuExKhykvfw9SPEcBGaJO UoGIK7AQ753QlSIpmc7jfNttjkPRv8b7yAgrm2m0q6SjT4n7q2saxcWKUmZNFRc4nRXj 8lS29ITEj2AfGSmDmeAW5EizwgQsTI7cRV+UTTqalrUbDFMrq0oWtCB2EabKz7+cT4q4 RvI4pw+H5bKkHKn8+7yqTE/5E0JcyZ0v8v5MfWncg1HyMo5+XgL/0KM0b9obJn3JMC2T qpisgVrca3XaKnBZA74WLKPYzRhd0ozz0P5RZy85Oz0HqjB+3aEZBL3qn+Egtm7Rj+O9 Lbew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739230753; x=1739835553; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kXxJ1jFzWbWJEOO3pmkHS53hnSaPSIVREc8BxzJcJIQ=; b=QDdNRUGT7K3v3QMOb1Hasmx23GqsjlXJIsDI6y+NkhQg2ASk9znIDlugl8XKSORhYA 5c3fe5BaaP1QuJ6YU/mA+hA5EXDI5Hw3+AivdNO7qPC2F/Dtb0FgCM3JO6cvY1My1+2P HV48Mc8zI+N/1uIZgbKR3g2WZ99i+LV4hrVjYVh1bkBo1FM9LWIOYPjynyiB3duQZkfC 6pn5RUenOYdcO5lAcoEpO+UMEYY/brXxqvJBNMN3h+FNrSBtExwone59L8svRIyp25yO Gt3ho9R0PUVT1Jm4fnaabTL9/ycz4/0wOuYJw1z1PZb38/UakoU1Eay+6cb4jHQcsOAx 7NDg== X-Forwarded-Encrypted: i=1; AJvYcCWXUFxYjU9DmDo75Ub3vdLimRp/PjWBM/p1sWnZqfQdMTh2GtYn7kM89ja0851VNt//bGdTpJCahlO4zot3AfVa@lists.infradead.org X-Gm-Message-State: AOJu0Yye1D4JdTm0GiNI/8VDDfKKGOLGi80wV6D/t7NzX1V0ReO8Iw1r KaM5WHFYJFkX1dH3qpWg8Az7GPCqybOBLMsMQg5XZ9VJDYDjaOlVmo9D2M/Xgzk= X-Gm-Gg: ASbGnctMF2XkLi7LUItzGLHJ/qptSXjsXFhkmE4RwygfJmUy24ahaTN/SBMHu1Oa4hD OseDNXZgNSQxpveOed19WMR9d8N/hYx4sFGjeQSKK//Sg7PRBDQ/V2jjw5Ul2Wi5CBwE9IZ2HPZ r1qoYYFspWWDxjllSp5oboJlwi/y/s6pYcFvkUZFSWusDJch0O09zCUD3eZYaV+eirYPooB9aqA Ac+K03XuXQRbudeN1jTN3HPdA1jhzTyMOS8JKVKs8/NJ+MzqSIunc0jkg9LCZFCe7SLMZpEDxV3 PKU= X-Google-Smtp-Source: AGHT+IG71jAKEw7FJpT77SS9sjNFLR4JmA/QwoakSSs+2sWovO33XZJsi9MG3conuVTCN8p77CfPYQ== X-Received: by 2002:a05:6902:2683:b0:e57:3e85:60f6 with SMTP id 3f1490d57ef6-e5b461c3296mr14877224276.27.1739230752604; Mon, 10 Feb 2025 15:39:12 -0800 (PST) Received: from ghost ([50.146.0.9]) by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e5b3a45dbfcsm2898666276.38.2025.02.10.15.39.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 15:39:11 -0800 (PST) Date: Mon, 10 Feb 2025 15:39:10 -0800 From: Charlie Jenkins To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Bibo Mao , Arnd Bergmann , Huacai Chen , Catalin Marinas , Jiri Slaby , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , Howard Chu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v2 6/7] perf syscalltbl: Use lookup table containing multiple architectures Message-ID: References: <20250210165108.95894-1-irogers@google.com> <20250210165108.95894-7-irogers@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20250210165108.95894-7-irogers@google.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250210_153914_116133_36EE4EA5 X-CRM114-Status: GOOD ( 31.29 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Feb 10, 2025 at 08:51:07AM -0800, Ian Rogers wrote: > Switch to use the lookup table containing all architectures rather > than tables matching the perf binary. > > This fixes perf trace when executed on a 32-bit i386 binary on an > x86-64 machine. Note in the following the system call names of the > 32-bit i386 binary as seen by an x86-64 perf. > > Before: > ``` > ? ( ): a.out/447296 ... [continued]: munmap()) = 0 > 0.024 ( 0.001 ms): a.out/447296 recvfrom(ubuf: 0x2, size: 4160585708, flags: DONTROUTE|CTRUNC|TRUNC|DONTWAIT|EOR|WAITALL|FIN|SYN|CONFIRM|RST|ERRQUEUE|NOSIGNAL|WAITFORONE|BATCH|SOCK_DEVMEM|ZEROCOPY|FASTOPEN|CMSG_CLOEXEC|0x91f80000, addr: 0xe30, addr_len: 0xffce438c) = 1475198976 > 0.042 ( 0.003 ms): a.out/447296 lgetxattr(name: "", value: 0x3, size: 34) = 4160344064 > 0.054 ( 0.003 ms): a.out/447296 dup2(oldfd: -134422744, newfd: 4) = -1 ENOENT (No such file or directory) > 0.060 ( 0.009 ms): a.out/447296 preadv(fd: 4294967196, vec: (struct iovec){.iov_base = (void *)0x2e646c2f6374652f,.iov_len = (__kernel_size_t)7307199665335594867,}, vlen: 557056, pos_h: 4160585708) = 3 > 0.074 ( 0.004 ms): a.out/447296 lgetxattr(name: "", value: 0x1, size: 2) = 4160237568 > 0.080 ( 0.001 ms): a.out/447296 lstat(filename: "", statbuf: 0x193f6) = 0 > 0.089 ( 0.007 ms): a.out/447296 preadv(fd: 4294967196, vec: (struct iovec){.iov_base = (void *)0x3833692f62696c2f,.iov_len = (__kernel_size_t)3276497845987585334,}, vlen: 557056, pos_h: 4160585708) = 3 > 0.097 ( 0.002 ms): a.out/447296 close(fd: 3) = 512 > 0.103 ( 0.002 ms): a.out/447296 lgetxattr(name: "", value: 0x1, size: 2050) = 4157935616 > 0.107 ( 0.007 ms): a.out/447296 lgetxattr(pathname: "", name: "", value: 0x5, size: 2066) = 4158078976 > 0.116 ( 0.003 ms): a.out/447296 lgetxattr(pathname: "", name: "", value: 0x1, size: 2066) = 4159639552 > 0.121 ( 0.003 ms): a.out/447296 lgetxattr(pathname: "", name: "", value: 0x3, size: 2066) = 4160184320 > 0.129 ( 0.002 ms): a.out/447296 lgetxattr(pathname: "", name: "", value: 0x3, size: 50) = 4160196608 > 0.138 ( 0.001 ms): a.out/447296 lstat(filename: "") = 0 > 0.145 ( 0.002 ms): a.out/447296 mq_timedreceive(mqdes: 4291706800, u_msg_ptr: 0xf7f9ea48, msg_len: 134616640, u_msg_prio: 0xf7fd7fec, u_abs_timeout: (struct __kernel_timespec){.tv_sec = (__kernel_time64_t)-578174027777317696,.tv_nsec = (long long int)4160349376,}) = 0 > 0.148 ( 0.001 ms): a.out/447296 mkdirat(dfd: -134617816, pathname: " ��� ���▒���▒���", mode: IFREG|ISUID|IRUSR|IWGRP|0xf7fd0000) = 447296 > 0.150 ( 0.001 ms): a.out/447296 process_vm_writev(pid: -134617812, lvec: (struct iovec){.iov_base = (void *)0xf7f9e9c8f7f9e4c0,.iov_len = (__kernel_size_t)4160349376,}, liovcnt: 4160588048, rvec: (struct iovec){}, riovcnt: 4160585708, flags: 4291707352) = 0 > 0.197 ( 0.004 ms): a.out/447296 capget(header: 4160184320, dataptr: 8192) = 0 > 0.202 ( 0.002 ms): a.out/447296 capget(header: 1448669184, dataptr: 4096) = 0 > 0.208 ( 0.002 ms): a.out/447296 capget(header: 4160577536, dataptr: 8192) = 0 > 0.220 ( 0.001 ms): a.out/447296 getxattr(pathname: "", name: "c������", value: 0xf7f77e34, size: 1) = 0 > 0.228 ( 0.005 ms): a.out/447296 fchmod(fd: -134729728, mode: IRUGO|IWUGO|IFREG|IFIFO|ISVTX|IXUSR|0x10000) = 0 > 0.240 ( 0.009 ms): a.out/447296 preadv(fd: 4294967196, vec: 0x5658e008, pos_h: 4160192052) = 3 > 0.250 ( 0.008 ms): a.out/447296 close(fd: 3) = 1436 > 0.260 ( 0.018 ms): a.out/447296 stat(filename: "", statbuf: 0xffce32ac) = 1436 > 0.288 (1000.213 ms): a.out/447296 readlinkat(buf: 0xffce31d4, bufsiz: 4291703244) = 0 > ``` > > After: > ``` > ? ( ): a.out/442930 ... [continued]: execve()) = 0 > 0.023 ( 0.002 ms): a.out/442930 brk() = 0x57760000 > 0.052 ( 0.003 ms): a.out/442930 access(filename: 0xf7f5af28, mode: R) = -1 ENOENT (No such file or directory) > 0.059 ( 0.009 ms): a.out/442930 openat(dfd: CWD, filename: "/etc/ld.so.cache", flags: RDONLY|CLOEXEC|LARGEFILE) = 3 > 0.078 ( 0.001 ms): a.out/442930 close(fd: 3) = 0 > 0.087 ( 0.007 ms): a.out/442930 openat(dfd: CWD, filename: "/lib/i386-linux-", flags: RDONLY|CLOEXEC|LARGEFILE) = 3 > 0.095 ( 0.002 ms): a.out/442930 read(fd: 3, buf: 0xffbdbb70, count: 512) = 512 > 0.135 ( 0.001 ms): a.out/442930 close(fd: 3) = 0 > 0.148 ( 0.001 ms): a.out/442930 set_tid_address(tidptr: 0xf7f2b528) = 442930 (a.out) > 0.150 ( 0.001 ms): a.out/442930 set_robust_list(head: 0xf7f2b52c, len: 12) = > 0.196 ( 0.004 ms): a.out/442930 mprotect(start: 0xf7f03000, len: 8192, prot: READ) = 0 > 0.202 ( 0.002 ms): a.out/442930 mprotect(start: 0x5658e000, len: 4096, prot: READ) = 0 > 0.207 ( 0.002 ms): a.out/442930 mprotect(start: 0xf7f63000, len: 8192, prot: READ) = 0 > 0.230 ( 0.005 ms): a.out/442930 munmap(addr: 0xf7f10000, len: 103414) = 0 > 0.244 ( 0.010 ms): a.out/442930 openat(dfd: CWD, filename: 0x5658d008) = 3 > 0.255 ( 0.007 ms): a.out/442930 read(fd: 3, buf: 0xffbdb67c, count: 4096) = 1436 > 0.264 ( 0.018 ms): a.out/442930 write(fd: 1, buf: , count: 1436) = 1436 > 0.292 (1000.173 ms): a.out/442930 clock_nanosleep(rqtp: { .tv_sec: 17866546940376776704, .tv_nsec: 4159878336 }, rmtp: 0xffbdb59c) = 0 > 1000.478 ( ): a.out/442930 exit_group() = ? > ``` > I think I am conflating some things in my mind here. This change doesn't impact perf report does it? perf report reports syscall numbers only, but it could be hooked up into this change to correctly report the correct syscall name from a perf.data generated on any architecture? I believe that question is tangential to this patch but let me know! Reviewed-by: Charlie Jenkins > Signed-off-by: Ian Rogers > Reviewed-by: Howard Chu > --- > tools/perf/util/syscalltbl.c | 89 ++++++++++++++++++++++++++---------- > 1 file changed, 64 insertions(+), 25 deletions(-) > > diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c > index 760ac4d0869f..db0d2b81aed1 100644 > --- a/tools/perf/util/syscalltbl.c > +++ b/tools/perf/util/syscalltbl.c > @@ -15,16 +15,39 @@ > #include > #include "string2.h" > > -#if __BITS_PER_LONG == 64 > - #include > -#else > - #include > -#endif > +#include "trace/beauty/generated/syscalltbl.c" > > -const char *syscalltbl__name(int e_machine __maybe_unused, int id) > +static const struct syscalltbl *find_table(int e_machine) > { > - if (id >= 0 && id <= (int)ARRAY_SIZE(syscall_num_to_name)) > - return syscall_num_to_name[id]; > + static const struct syscalltbl *last_table; > + static int last_table_machine = EM_NONE; > + > + /* Tables only exist for EM_SPARC. */ > + if (e_machine == EM_SPARCV9) > + e_machine = EM_SPARC; > + > + if (last_table_machine == e_machine && last_table != NULL) > + return last_table; > + > + for (size_t i = 0; i < ARRAY_SIZE(syscalltbls); i++) { > + const struct syscalltbl *entry = &syscalltbls[i]; > + > + if (entry->e_machine != e_machine && entry->e_machine != EM_NONE) > + continue; > + > + last_table = entry; > + last_table_machine = e_machine; > + return entry; > + } > + return NULL; > +} > + > +const char *syscalltbl__name(int e_machine, int id) > +{ > + const struct syscalltbl *table = find_table(e_machine); > + > + if (table && id >= 0 && id < table->num_to_name_len) > + return table->num_to_name[id]; > return NULL; > } > > @@ -41,38 +64,54 @@ static int syscallcmpname(const void *vkey, const void *ventry) > return strcmp(key->name, key->tbl[*entry]); > } > > -int syscalltbl__id(int e_machine __maybe_unused, const char *name) > +int syscalltbl__id(int e_machine, const char *name) > { > - struct syscall_cmp_key key = { > - .name = name, > - .tbl = syscall_num_to_name, > - }; > - const int *id = bsearch(&key, syscall_sorted_names, > - ARRAY_SIZE(syscall_sorted_names), > - sizeof(syscall_sorted_names[0]), > - syscallcmpname); > + const struct syscalltbl *table = find_table(e_machine); > + struct syscall_cmp_key key; > + const int *id; > + > + if (!table) > + return -1; > + > + key.name = name; > + key.tbl = table->num_to_name; > + id = bsearch(&key, table->sorted_names, table->sorted_names_len, > + sizeof(table->sorted_names[0]), syscallcmpname); > > return id ? *id : -1; > } > > -int syscalltbl__num_idx(int e_machine __maybe_unused) > +int syscalltbl__num_idx(int e_machine) > { > - return ARRAY_SIZE(syscall_sorted_names); > + const struct syscalltbl *table = find_table(e_machine); > + > + if (!table) > + return 0; > + > + return table->sorted_names_len; > } > > -int syscalltbl__id_at_idx(int e_machine __maybe_unused, int idx) > +int syscalltbl__id_at_idx(int e_machine, int idx) > { > - return syscall_sorted_names[idx]; > + const struct syscalltbl *table = find_table(e_machine); > + > + if (!table) > + return -1; > + > + assert(idx >= 0 && idx < table->sorted_names_len); > + return table->sorted_names[idx]; > } > > -int syscalltbl__strglobmatch_next(int e_machine __maybe_unused, const char *syscall_glob, int *idx) > +int syscalltbl__strglobmatch_next(int e_machine, const char *syscall_glob, int *idx) > { > - for (int i = *idx + 1; i < (int)ARRAY_SIZE(syscall_sorted_names); ++i) { > - const char *name = syscall_num_to_name[syscall_sorted_names[i]]; > + const struct syscalltbl *table = find_table(e_machine); > + > + for (int i = *idx + 1; table && i < table->sorted_names_len; ++i) { > + const char *name = table->num_to_name[table->sorted_names[i]]; > > if (strglobmatch(name, syscall_glob)) { > *idx = i; > - return syscall_sorted_names[i]; > + return table->sorted_names[i]; > } > } > > -- > 2.48.1.502.g6dc24dfdaf-goog > 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 5579BC02198 for ; Tue, 11 Feb 2025 00:40:58 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OqcdKys9d1BGWIp7dBYQYSbmkjqYxVigt2ccuiRgENo=; b=Ij64c7zyrRIl1f XqfU7eWeG7Hyb+N782HA8XHn1IO1BmY1AFL3UEzLuTczf7AQMuIsbODZNBS7tvHWUioUVHY5qUFq2 f77d3Q6cjHFzJC3/C12uj0srLQ2OdpYnTmY/M0gn+ZmaB/dI9GugA3NuRAUqbPXruz59O8mCI++Wm Z80lQcbuNSSVyCn6qkecUhwiacbivTXAawqh9a5ySx7OLPMurRwYH8w70tGN4qYHxxHQpfn02VJ+L mQTGB8MedD2IyAixlfXjTiSWpumN6QbQoYhHhpPojMdrTB94/Ojjz4U0BBSfmDS5BRJPaKAP8L1Da AIfSpPkCbZ9MNTsgj+zw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1theKZ-000000020qJ-1mDe; Tue, 11 Feb 2025 00:40:51 +0000 Received: from mail-yb1-xb41.google.com ([2607:f8b0:4864:20::b41]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thdMv-00000001sNB-3hqE for linux-riscv@lists.infradead.org; Mon, 10 Feb 2025 23:39:16 +0000 Received: by mail-yb1-xb41.google.com with SMTP id 3f1490d57ef6-e5b32f64ffeso4106576276.3 for ; Mon, 10 Feb 2025 15:39:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739230753; x=1739835553; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=kXxJ1jFzWbWJEOO3pmkHS53hnSaPSIVREc8BxzJcJIQ=; b=HBnQGcJYdgMCXBc7raPJv63po0h8gwgY6Lp1h4ZzJC3eKEuExKhykvfw9SPEcBGaJO UoGIK7AQ753QlSIpmc7jfNttjkPRv8b7yAgrm2m0q6SjT4n7q2saxcWKUmZNFRc4nRXj 8lS29ITEj2AfGSmDmeAW5EizwgQsTI7cRV+UTTqalrUbDFMrq0oWtCB2EabKz7+cT4q4 RvI4pw+H5bKkHKn8+7yqTE/5E0JcyZ0v8v5MfWncg1HyMo5+XgL/0KM0b9obJn3JMC2T qpisgVrca3XaKnBZA74WLKPYzRhd0ozz0P5RZy85Oz0HqjB+3aEZBL3qn+Egtm7Rj+O9 Lbew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739230753; x=1739835553; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kXxJ1jFzWbWJEOO3pmkHS53hnSaPSIVREc8BxzJcJIQ=; b=pAzvW+ACGjdu1Dr5SGNRZPFG+7zHT+Vwd4gB5JUmpaJel/5mDh1xBVvgTYM3iUZgP3 KBub1dyyBwfdUi80DpOL00MRYqiuZmKifLkrtieKUolQ0+FF1Oox9vxmaeI2z/ib9LIW Hh8SacyAfnoSkr7uJphW2ILeRTxM0cYkJ08bvPAcATW9zSjMEzOGsgSTYqZBw9sH+QjT 5hrYlbsCNLSF/LE1Bx/c5z9Tyjkmpjl/rJLbQGSaRiv0O0oa7Q4Qnp1Rbwb1RYMGP5Oo fdwx+0G383UDbDl1h++ofpNut39xfCltHyBc3HAalispilBnZVaZMP+vE9Kf8CUWv9RZ shZA== X-Forwarded-Encrypted: i=1; AJvYcCUR1mrV/O3Y2xTm9yAyhbEbborZ/ih56okc5C65f3XlAt0i9g/NJeEzPwgpcAbkkSQivRgjoM5kuqj4oQ==@lists.infradead.org X-Gm-Message-State: AOJu0YxQaX/iJjbyMhn+srQPHUMWeRYyOFIGag4tdPgtsP4T1PDgt9qT qxSOUuFXRaIujCW7AbHm2XUuc4g608diL+sBLNN1nsdupmqTmq3rTH92RNPYZEM= X-Gm-Gg: ASbGncvhRb6H2+9wGAj2+hHTKAZ00dVRp2NV1h4Z6iufe2IC0kzzkqI6h0dPa7ODKEh Xgb6zRu2fucLdeg5ihSWQHjfraYeVpMsYWewMzm7izBQq9V8PChbbfcnhRUeHNJeO5XdnyEIiFC 3Y77ohAwquSL1ltinLzaYM7JDLC4HqUwFRCyOjkaVJJzzmCsBdYwbiUFr/gNgKeieKaenE6QDvo +fo64aKCZAVsHTyC2sHhJiiVvxFNoKKnyhQ+6WQfY649Ei8i1RL2UvMt+5/RfP6nDUZ/0+yQGIG cMk= X-Google-Smtp-Source: AGHT+IG71jAKEw7FJpT77SS9sjNFLR4JmA/QwoakSSs+2sWovO33XZJsi9MG3conuVTCN8p77CfPYQ== X-Received: by 2002:a05:6902:2683:b0:e57:3e85:60f6 with SMTP id 3f1490d57ef6-e5b461c3296mr14877224276.27.1739230752604; Mon, 10 Feb 2025 15:39:12 -0800 (PST) Received: from ghost ([50.146.0.9]) by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e5b3a45dbfcsm2898666276.38.2025.02.10.15.39.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 15:39:11 -0800 (PST) Date: Mon, 10 Feb 2025 15:39:10 -0800 From: Charlie Jenkins To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Bibo Mao , Arnd Bergmann , Huacai Chen , Catalin Marinas , Jiri Slaby , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , Howard Chu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v2 6/7] perf syscalltbl: Use lookup table containing multiple architectures Message-ID: References: <20250210165108.95894-1-irogers@google.com> <20250210165108.95894-7-irogers@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20250210165108.95894-7-irogers@google.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250210_153914_115686_156BE4E4 X-CRM114-Status: GOOD ( 29.65 ) 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 T24gTW9uLCBGZWIgMTAsIDIwMjUgYXQgMDg6NTE6MDdBTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90 ZToKPiBTd2l0Y2ggdG8gdXNlIHRoZSBsb29rdXAgdGFibGUgY29udGFpbmluZyBhbGwgYXJjaGl0 ZWN0dXJlcyByYXRoZXIKPiB0aGFuIHRhYmxlcyBtYXRjaGluZyB0aGUgcGVyZiBiaW5hcnkuCj4g Cj4gVGhpcyBmaXhlcyBwZXJmIHRyYWNlIHdoZW4gZXhlY3V0ZWQgb24gYSAzMi1iaXQgaTM4NiBi aW5hcnkgb24gYW4KPiB4ODYtNjQgbWFjaGluZS4gTm90ZSBpbiB0aGUgZm9sbG93aW5nIHRoZSBz eXN0ZW0gY2FsbCBuYW1lcyBvZiB0aGUKPiAzMi1iaXQgaTM4NiBiaW5hcnkgYXMgc2VlbiBieSBh biB4ODYtNjQgcGVyZi4KPiAKPiBCZWZvcmU6Cj4gYGBgCj4gICAgICAgICAgPyAoICAgICAgICAg KTogYS5vdXQvNDQ3Mjk2ICAuLi4gW2NvbnRpbnVlZF06IG11bm1hcCgpKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiAgICAgIDAuMDI0ICggMC4wMDEgbXMp OiBhLm91dC80NDcyOTYgcmVjdmZyb20odWJ1ZjogMHgyLCBzaXplOiA0MTYwNTg1NzA4LCBmbGFn czogRE9OVFJPVVRFfENUUlVOQ3xUUlVOQ3xET05UV0FJVHxFT1J8V0FJVEFMTHxGSU58U1lOfENP TkZJUk18UlNUfEVSUlFVRVVFfE5PU0lHTkFMfFdBSVRGT1JPTkV8QkFUQ0h8U09DS19ERVZNRU18 WkVST0NPUFl8RkFTVE9QRU58Q01TR19DTE9FWEVDfDB4OTFmODAwMDAsIGFkZHI6IDB4ZTMwLCBh ZGRyX2xlbjogMHhmZmNlNDM4YykgPSAxNDc1MTk4OTc2Cj4gICAgICAwLjA0MiAoIDAuMDAzIG1z KTogYS5vdXQvNDQ3Mjk2IGxnZXR4YXR0cihuYW1lOiAiIiwgdmFsdWU6IDB4Mywgc2l6ZTogMzQp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDQxNjAzNDQwNjQKPiAgICAgIDAuMDU0ICgg MC4wMDMgbXMpOiBhLm91dC80NDcyOTYgZHVwMihvbGRmZDogLTEzNDQyMjc0NCwgbmV3ZmQ6IDQp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gLTEgRU5PRU5UIChObyBzdWNo IGZpbGUgb3IgZGlyZWN0b3J5KQo+ICAgICAgMC4wNjAgKCAwLjAwOSBtcyk6IGEub3V0LzQ0NzI5 NiBwcmVhZHYoZmQ6IDQyOTQ5NjcxOTYsIHZlYzogKHN0cnVjdCBpb3ZlYyl7Lmlvdl9iYXNlID0g KHZvaWQgKikweDJlNjQ2YzJmNjM3NDY1MmYsLmlvdl9sZW4gPSAoX19rZXJuZWxfc2l6ZV90KTcz MDcxOTk2NjUzMzU1OTQ4NjcsfSwgdmxlbjogNTU3MDU2LCBwb3NfaDogNDE2MDU4NTcwOCkgPSAz Cj4gICAgICAwLjA3NCAoIDAuMDA0IG1zKTogYS5vdXQvNDQ3Mjk2IGxnZXR4YXR0cihuYW1lOiAi IiwgdmFsdWU6IDB4MSwgc2l6ZTogMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDQx NjAyMzc1NjgKPiAgICAgIDAuMDgwICggMC4wMDEgbXMpOiBhLm91dC80NDcyOTYgbHN0YXQoZmls ZW5hbWU6ICIiLCBzdGF0YnVmOiAweDE5M2Y2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0gMAo+ICAgICAgMC4wODkgKCAwLjAwNyBtcyk6IGEub3V0LzQ0NzI5NiBwcmVhZHYoZmQ6 IDQyOTQ5NjcxOTYsIHZlYzogKHN0cnVjdCBpb3ZlYyl7Lmlvdl9iYXNlID0gKHZvaWQgKikweDM4 MzM2OTJmNjI2OTZjMmYsLmlvdl9sZW4gPSAoX19rZXJuZWxfc2l6ZV90KTMyNzY0OTc4NDU5ODc1 ODUzMzQsfSwgdmxlbjogNTU3MDU2LCBwb3NfaDogNDE2MDU4NTcwOCkgPSAzCj4gICAgICAwLjA5 NyAoIDAuMDAyIG1zKTogYS5vdXQvNDQ3Mjk2IGNsb3NlKGZkOiAzPC9wcm9jLzQ0NzI5Ni9zdGF0 dXM+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDUxMgo+ICAgICAgMC4x MDMgKCAwLjAwMiBtcyk6IGEub3V0LzQ0NzI5NiBsZ2V0eGF0dHIobmFtZTogIiIsIHZhbHVlOiAw eDEsIHNpemU6IDIwNTApICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA0MTU3OTM1NjE2Cj4g ICAgICAwLjEwNyAoIDAuMDA3IG1zKTogYS5vdXQvNDQ3Mjk2IGxnZXR4YXR0cihwYXRobmFtZTog IiIsIG5hbWU6ICIiLCB2YWx1ZTogMHg1LCBzaXplOiAyMDY2KSAgICAgICAgICAgICA9IDQxNTgw Nzg5NzYKPiAgICAgIDAuMTE2ICggMC4wMDMgbXMpOiBhLm91dC80NDcyOTYgbGdldHhhdHRyKHBh dGhuYW1lOiAiIiwgbmFtZTogIiIsIHZhbHVlOiAweDEsIHNpemU6IDIwNjYpICAgICAgICAgICAg ID0gNDE1OTYzOTU1Mgo+ICAgICAgMC4xMjEgKCAwLjAwMyBtcyk6IGEub3V0LzQ0NzI5NiBsZ2V0 eGF0dHIocGF0aG5hbWU6ICIiLCBuYW1lOiAiIiwgdmFsdWU6IDB4Mywgc2l6ZTogMjA2NikgICAg ICAgICAgICAgPSA0MTYwMTg0MzIwCj4gICAgICAwLjEyOSAoIDAuMDAyIG1zKTogYS5vdXQvNDQ3 Mjk2IGxnZXR4YXR0cihwYXRobmFtZTogIiIsIG5hbWU6ICIiLCB2YWx1ZTogMHgzLCBzaXplOiA1 MCkgICAgICAgICAgICAgICA9IDQxNjAxOTY2MDgKPiAgICAgIDAuMTM4ICggMC4wMDEgbXMpOiBh Lm91dC80NDcyOTYgbHN0YXQoZmlsZW5hbWU6ICIiKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ICAgICAgMC4xNDUgKCAwLjAwMiBtcyk6IGEu b3V0LzQ0NzI5NiBtcV90aW1lZHJlY2VpdmUobXFkZXM6IDQyOTE3MDY4MDAsIHVfbXNnX3B0cjog MHhmN2Y5ZWE0OCwgbXNnX2xlbjogMTM0NjE2NjQwLCB1X21zZ19wcmlvOiAweGY3ZmQ3ZmVjLCB1 X2Fic190aW1lb3V0OiAoc3RydWN0IF9fa2VybmVsX3RpbWVzcGVjKXsudHZfc2VjID0gKF9fa2Vy bmVsX3RpbWU2NF90KS01NzgxNzQwMjc3NzczMTc2OTYsLnR2X25zZWMgPSAobG9uZyBsb25nIGlu dCk0MTYwMzQ5Mzc2LH0pID0gMAo+ICAgICAgMC4xNDggKCAwLjAwMSBtcyk6IGEub3V0LzQ0NzI5 NiBta2RpcmF0KGRmZDogLTEzNDYxNzgxNiwgcGF0aG5hbWU6ICIg77+977+977+9IO+/ve+/ve+/ veKWku+/ve+/ve+/veKWku+/ve+/ve+/vSIsIG1vZGU6IElGUkVHfElTVUlEfElSVVNSfElXR1JQ fDB4ZjdmZDAwMDApID0gNDQ3Mjk2Cj4gICAgICAwLjE1MCAoIDAuMDAxIG1zKTogYS5vdXQvNDQ3 Mjk2IHByb2Nlc3Nfdm1fd3JpdGV2KHBpZDogLTEzNDYxNzgxMiwgbHZlYzogKHN0cnVjdCBpb3Zl Yyl7Lmlvdl9iYXNlID0gKHZvaWQgKikweGY3ZjllOWM4ZjdmOWU0YzAsLmlvdl9sZW4gPSAoX19r ZXJuZWxfc2l6ZV90KTQxNjAzNDkzNzYsfSwgbGlvdmNudDogNDE2MDU4ODA0OCwgcnZlYzogKHN0 cnVjdCBpb3ZlYyl7fSwgcmlvdmNudDogNDE2MDU4NTcwOCwgZmxhZ3M6IDQyOTE3MDczNTIpID0g MAo+ICAgICAgMC4xOTcgKCAwLjAwNCBtcyk6IGEub3V0LzQ0NzI5NiBjYXBnZXQoaGVhZGVyOiA0 MTYwMTg0MzIwLCBkYXRhcHRyOiA4MTkyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAw Cj4gICAgICAwLjIwMiAoIDAuMDAyIG1zKTogYS5vdXQvNDQ3Mjk2IGNhcGdldChoZWFkZXI6IDE0 NDg2NjkxODQsIGRhdGFwdHI6IDQwOTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAK PiAgICAgIDAuMjA4ICggMC4wMDIgbXMpOiBhLm91dC80NDcyOTYgY2FwZ2V0KGhlYWRlcjogNDE2 MDU3NzUzNiwgZGF0YXB0cjogODE5MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ ICAgICAgMC4yMjAgKCAwLjAwMSBtcyk6IGEub3V0LzQ0NzI5NiBnZXR4YXR0cihwYXRobmFtZTog IiIsIG5hbWU6ICJj77+977+977+977+977+977+9IiwgdmFsdWU6IDB4ZjdmNzdlMzQsIHNpemU6 IDEpICA9IDAKPiAgICAgIDAuMjI4ICggMC4wMDUgbXMpOiBhLm91dC80NDcyOTYgZmNobW9kKGZk OiAtMTM0NzI5NzI4LCBtb2RlOiBJUlVHT3xJV1VHT3xJRlJFR3xJRklGT3xJU1ZUWHxJWFVTUnww eDEwMDAwKSA9IDAKPiAgICAgIDAuMjQwICggMC4wMDkgbXMpOiBhLm91dC80NDcyOTYgcHJlYWR2 KGZkOiA0Mjk0OTY3MTk2LCB2ZWM6IDB4NTY1OGUwMDgsIHBvc19oOiA0MTYwMTkyMDUyKSAgICAg ICAgICAgID0gMwo+ICAgICAgMC4yNTAgKCAwLjAwOCBtcyk6IGEub3V0LzQ0NzI5NiBjbG9zZShm ZDogMzwvcHJvYy80NDcyOTYvc3RhdHVzPikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPSAxNDM2Cj4gICAgICAwLjI2MCAoIDAuMDE4IG1zKTogYS5vdXQvNDQ3Mjk2IHN0YXQo ZmlsZW5hbWU6ICIiLCBzdGF0YnVmOiAweGZmY2UzMmFjKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA9IDE0MzYKPiAgICAgIDAuMjg4ICgxMDAwLjIxMyBtcyk6IGEub3V0LzQ0NzI5NiBy ZWFkbGlua2F0KGJ1ZjogMHhmZmNlMzFkNCwgYnVmc2l6OiA0MjkxNzAzMjQ0KSAgICAgICAgICAg ICAgICAgICAgICAgPSAwCj4gYGBgCj4gCj4gQWZ0ZXI6Cj4gYGBgCj4gICAgICAgICAgPyAoICAg ICAgICAgKTogYS5vdXQvNDQyOTMwICAuLi4gW2NvbnRpbnVlZF06IGV4ZWN2ZSgpKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiAgICAgIDAuMDIzICggMC4w MDIgbXMpOiBhLm91dC80NDI5MzAgYnJrKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg1Nzc2MDAwMAo+ICAgICAgMC4w NTIgKCAwLjAwMyBtcyk6IGEub3V0LzQ0MjkzMCBhY2Nlc3MoZmlsZW5hbWU6IDB4ZjdmNWFmMjgs IG1vZGU6IFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAtMSBFTk9FTlQgKE5v IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCj4gICAgICAwLjA1OSAoIDAuMDA5IG1zKTogYS5vdXQv NDQyOTMwIG9wZW5hdChkZmQ6IENXRCwgZmlsZW5hbWU6ICIvZXRjL2xkLnNvLmNhY2hlIiwgZmxh Z3M6IFJET05MWXxDTE9FWEVDfExBUkdFRklMRSkgPSAzCj4gICAgICAwLjA3OCAoIDAuMDAxIG1z KTogYS5vdXQvNDQyOTMwIGNsb3NlKGZkOiAzPC9wcm9jLzQ0MjkzMC9zdGF0dXM+KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiAgICAgIDAuMDg3ICggMC4wMDcgbXMp OiBhLm91dC80NDI5MzAgb3BlbmF0KGRmZDogQ1dELCBmaWxlbmFtZTogIi9saWIvaTM4Ni1saW51 eC0iLCBmbGFnczogUkRPTkxZfENMT0VYRUN8TEFSR0VGSUxFKSA9IDMKPiAgICAgIDAuMDk1ICgg MC4wMDIgbXMpOiBhLm91dC80NDI5MzAgcmVhZChmZDogMzwvcHJvYy80NDI5MzAvc3RhdHVzPiwg YnVmOiAweGZmYmRiYjcwLCBjb3VudDogNTEyKSAgICAgICAgID0gNTEyCj4gICAgICAwLjEzNSAo IDAuMDAxIG1zKTogYS5vdXQvNDQyOTMwIGNsb3NlKGZkOiAzPC9wcm9jLzQ0MjkzMC9zdGF0dXM+ KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiAgICAgIDAuMTQ4ICgg MC4wMDEgbXMpOiBhLm91dC80NDI5MzAgc2V0X3RpZF9hZGRyZXNzKHRpZHB0cjogMHhmN2YyYjUy OCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNDQyOTMwIChhLm91dCkKPiAg ICAgIDAuMTUwICggMC4wMDEgbXMpOiBhLm91dC80NDI5MzAgc2V0X3JvYnVzdF9saXN0KGhlYWQ6 IDB4ZjdmMmI1MmMsIGxlbjogMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KPiAgICAg IDAuMTk2ICggMC4wMDQgbXMpOiBhLm91dC80NDI5MzAgbXByb3RlY3Qoc3RhcnQ6IDB4ZjdmMDMw MDAsIGxlbjogODE5MiwgcHJvdDogUkVBRCkgICAgICAgICAgICAgICAgICAgID0gMAo+ICAgICAg MC4yMDIgKCAwLjAwMiBtcyk6IGEub3V0LzQ0MjkzMCBtcHJvdGVjdChzdGFydDogMHg1NjU4ZTAw MCwgbGVuOiA0MDk2LCBwcm90OiBSRUFEKSAgICAgICAgICAgICAgICAgICAgPSAwCj4gICAgICAw LjIwNyAoIDAuMDAyIG1zKTogYS5vdXQvNDQyOTMwIG1wcm90ZWN0KHN0YXJ0OiAweGY3ZjYzMDAw LCBsZW46IDgxOTIsIHByb3Q6IFJFQUQpICAgICAgICAgICAgICAgICAgICA9IDAKPiAgICAgIDAu MjMwICggMC4wMDUgbXMpOiBhLm91dC80NDI5MzAgbXVubWFwKGFkZHI6IDB4ZjdmMTAwMDAsIGxl bjogMTAzNDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ICAgICAgMC4y NDQgKCAwLjAxMCBtcyk6IGEub3V0LzQ0MjkzMCBvcGVuYXQoZGZkOiBDV0QsIGZpbGVuYW1lOiAw eDU2NThkMDA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAzCj4gICAgICAwLjI1 NSAoIDAuMDA3IG1zKTogYS5vdXQvNDQyOTMwIHJlYWQoZmQ6IDM8L3Byb2MvNDQyOTMwL3N0YXR1 cz4sIGJ1ZjogMHhmZmJkYjY3YywgY291bnQ6IDQwOTYpICAgICAgICA9IDE0MzYKPiAgICAgIDAu MjY0ICggMC4wMTggbXMpOiBhLm91dC80NDI5MzAgd3JpdGUoZmQ6IDE8L2Rldi9wdHMvND4sIGJ1 ZjogLCBjb3VudDogMTQzNikgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTQzNgo+ICAgICAg MC4yOTIgKDEwMDAuMTczIG1zKTogYS5vdXQvNDQyOTMwIGNsb2NrX25hbm9zbGVlcChycXRwOiB7 IC50dl9zZWM6IDE3ODY2NTQ2OTQwMzc2Nzc2NzA0LCAudHZfbnNlYzogNDE1OTg3ODMzNiB9LCBy bXRwOiAweGZmYmRiNTljKSA9IDAKPiAgIDEwMDAuNDc4ICggICAgICAgICApOiBhLm91dC80NDI5 MzAgZXhpdF9ncm91cCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgID0gPwo+IGBgYAo+IAoKSSB0aGluayBJIGFtIGNvbmZsYXRpbmcgc29t ZSB0aGluZ3MgaW4gbXkgbWluZCBoZXJlLiBUaGlzIGNoYW5nZSBkb2Vzbid0CmltcGFjdCBwZXJm IHJlcG9ydCBkb2VzIGl0PyBwZXJmIHJlcG9ydCByZXBvcnRzIHN5c2NhbGwgbnVtYmVycyBvbmx5 LApidXQgaXQgY291bGQgYmUgaG9va2VkIHVwIGludG8gdGhpcyBjaGFuZ2UgdG8gY29ycmVjdGx5 IHJlcG9ydCB0aGUKY29ycmVjdCBzeXNjYWxsIG5hbWUgZnJvbSBhIHBlcmYuZGF0YSBnZW5lcmF0 ZWQgb24gYW55IGFyY2hpdGVjdHVyZT8KCkkgYmVsaWV2ZSB0aGF0IHF1ZXN0aW9uIGlzIHRhbmdl bnRpYWwgdG8gdGhpcyBwYXRjaCBidXQgbGV0IG1lIGtub3chCgpSZXZpZXdlZC1ieTogQ2hhcmxp ZSBKZW5raW5zIDxjaGFybGllQHJpdm9zaW5jLmNvbT4KCj4gU2lnbmVkLW9mZi1ieTogSWFuIFJv Z2VycyA8aXJvZ2Vyc0Bnb29nbGUuY29tPgo+IFJldmlld2VkLWJ5OiBIb3dhcmQgQ2h1IDxob3dh cmRjaHU5NUBnbWFpbC5jb20+Cj4gLS0tCj4gIHRvb2xzL3BlcmYvdXRpbC9zeXNjYWxsdGJsLmMg fCA4OSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5n ZWQsIDY0IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90 b29scy9wZXJmL3V0aWwvc3lzY2FsbHRibC5jIGIvdG9vbHMvcGVyZi91dGlsL3N5c2NhbGx0Ymwu Ywo+IGluZGV4IDc2MGFjNGQwODY5Zi4uZGIwZDJiODFhZWQxIDEwMDY0NAo+IC0tLSBhL3Rvb2xz L3BlcmYvdXRpbC9zeXNjYWxsdGJsLmMKPiArKysgYi90b29scy9wZXJmL3V0aWwvc3lzY2FsbHRi bC5jCj4gQEAgLTE1LDE2ICsxNSwzOSBAQAo+ICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gICNpbmNs dWRlICJzdHJpbmcyLmgiCj4gIAo+IC0jaWYgX19CSVRTX1BFUl9MT05HID09IDY0Cj4gLSAgI2lu Y2x1ZGUgPGFzbS9zeXNjYWxsc182NC5oPgo+IC0jZWxzZQo+IC0gICNpbmNsdWRlIDxhc20vc3lz Y2FsbHNfMzIuaD4KPiAtI2VuZGlmCj4gKyNpbmNsdWRlICJ0cmFjZS9iZWF1dHkvZ2VuZXJhdGVk L3N5c2NhbGx0YmwuYyIKPiAgCj4gLWNvbnN0IGNoYXIgKnN5c2NhbGx0YmxfX25hbWUoaW50IGVf bWFjaGluZSBfX21heWJlX3VudXNlZCwgaW50IGlkKQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHN5 c2NhbGx0YmwgKmZpbmRfdGFibGUoaW50IGVfbWFjaGluZSkKPiAgewo+IC0JaWYgKGlkID49IDAg JiYgaWQgPD0gKGludClBUlJBWV9TSVpFKHN5c2NhbGxfbnVtX3RvX25hbWUpKQo+IC0JCXJldHVy biBzeXNjYWxsX251bV90b19uYW1lW2lkXTsKPiArCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzY2Fs bHRibCAqbGFzdF90YWJsZTsKPiArCXN0YXRpYyBpbnQgbGFzdF90YWJsZV9tYWNoaW5lID0gRU1f Tk9ORTsKPiArCj4gKwkvKiBUYWJsZXMgb25seSBleGlzdCBmb3IgRU1fU1BBUkMuICovCj4gKwlp ZiAoZV9tYWNoaW5lID09IEVNX1NQQVJDVjkpCj4gKwkJZV9tYWNoaW5lID0gRU1fU1BBUkM7Cj4g Kwo+ICsJaWYgKGxhc3RfdGFibGVfbWFjaGluZSA9PSBlX21hY2hpbmUgJiYgbGFzdF90YWJsZSAh PSBOVUxMKQo+ICsJCXJldHVybiBsYXN0X3RhYmxlOwo+ICsKPiArCWZvciAoc2l6ZV90IGkgPSAw OyBpIDwgQVJSQVlfU0laRShzeXNjYWxsdGJscyk7IGkrKykgewo+ICsJCWNvbnN0IHN0cnVjdCBz eXNjYWxsdGJsICplbnRyeSA9ICZzeXNjYWxsdGJsc1tpXTsKPiArCj4gKwkJaWYgKGVudHJ5LT5l X21hY2hpbmUgIT0gZV9tYWNoaW5lICYmIGVudHJ5LT5lX21hY2hpbmUgIT0gRU1fTk9ORSkKPiAr CQkJY29udGludWU7Cj4gKwo+ICsJCWxhc3RfdGFibGUgPSBlbnRyeTsKPiArCQlsYXN0X3RhYmxl X21hY2hpbmUgPSBlX21hY2hpbmU7Cj4gKwkJcmV0dXJuIGVudHJ5Owo+ICsJfQo+ICsJcmV0dXJu IE5VTEw7Cj4gK30KPiArCj4gK2NvbnN0IGNoYXIgKnN5c2NhbGx0YmxfX25hbWUoaW50IGVfbWFj aGluZSwgaW50IGlkKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3Qgc3lzY2FsbHRibCAqdGFibGUgPSBm aW5kX3RhYmxlKGVfbWFjaGluZSk7Cj4gKwo+ICsJaWYgKHRhYmxlICYmIGlkID49IDAgJiYgaWQg PCB0YWJsZS0+bnVtX3RvX25hbWVfbGVuKQo+ICsJCXJldHVybiB0YWJsZS0+bnVtX3RvX25hbWVb aWRdOwo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0KPiAgCj4gQEAgLTQxLDM4ICs2NCw1NCBAQCBzdGF0 aWMgaW50IHN5c2NhbGxjbXBuYW1lKGNvbnN0IHZvaWQgKnZrZXksIGNvbnN0IHZvaWQgKnZlbnRy eSkKPiAgCXJldHVybiBzdHJjbXAoa2V5LT5uYW1lLCBrZXktPnRibFsqZW50cnldKTsKPiAgfQo+ ICAKPiAtaW50IHN5c2NhbGx0YmxfX2lkKGludCBlX21hY2hpbmUgX19tYXliZV91bnVzZWQsIGNv bnN0IGNoYXIgKm5hbWUpCj4gK2ludCBzeXNjYWxsdGJsX19pZChpbnQgZV9tYWNoaW5lLCBjb25z dCBjaGFyICpuYW1lKQo+ICB7Cj4gLQlzdHJ1Y3Qgc3lzY2FsbF9jbXBfa2V5IGtleSA9IHsKPiAt CQkubmFtZSA9IG5hbWUsCj4gLQkJLnRibCA9IHN5c2NhbGxfbnVtX3RvX25hbWUsCj4gLQl9Owo+ IC0JY29uc3QgaW50ICppZCA9IGJzZWFyY2goJmtleSwgc3lzY2FsbF9zb3J0ZWRfbmFtZXMsCj4g LQkJCQlBUlJBWV9TSVpFKHN5c2NhbGxfc29ydGVkX25hbWVzKSwKPiAtCQkJCXNpemVvZihzeXNj YWxsX3NvcnRlZF9uYW1lc1swXSksCj4gLQkJCQlzeXNjYWxsY21wbmFtZSk7Cj4gKwljb25zdCBz dHJ1Y3Qgc3lzY2FsbHRibCAqdGFibGUgPSBmaW5kX3RhYmxlKGVfbWFjaGluZSk7Cj4gKwlzdHJ1 Y3Qgc3lzY2FsbF9jbXBfa2V5IGtleTsKPiArCWNvbnN0IGludCAqaWQ7Cj4gKwo+ICsJaWYgKCF0 YWJsZSkKPiArCQlyZXR1cm4gLTE7Cj4gKwo+ICsJa2V5Lm5hbWUgPSBuYW1lOwo+ICsJa2V5LnRi bCA9IHRhYmxlLT5udW1fdG9fbmFtZTsKPiArCWlkID0gYnNlYXJjaCgma2V5LCB0YWJsZS0+c29y dGVkX25hbWVzLCB0YWJsZS0+c29ydGVkX25hbWVzX2xlbiwKPiArCQkgICAgIHNpemVvZih0YWJs ZS0+c29ydGVkX25hbWVzWzBdKSwgc3lzY2FsbGNtcG5hbWUpOwo+ICAKPiAgCXJldHVybiBpZCA/ ICppZCA6IC0xOwo+ICB9Cj4gIAo+IC1pbnQgc3lzY2FsbHRibF9fbnVtX2lkeChpbnQgZV9tYWNo aW5lIF9fbWF5YmVfdW51c2VkKQo+ICtpbnQgc3lzY2FsbHRibF9fbnVtX2lkeChpbnQgZV9tYWNo aW5lKQo+ICB7Cj4gLQlyZXR1cm4gQVJSQVlfU0laRShzeXNjYWxsX3NvcnRlZF9uYW1lcyk7Cj4g Kwljb25zdCBzdHJ1Y3Qgc3lzY2FsbHRibCAqdGFibGUgPSBmaW5kX3RhYmxlKGVfbWFjaGluZSk7 Cj4gKwo+ICsJaWYgKCF0YWJsZSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyZXR1cm4gdGFibGUt PnNvcnRlZF9uYW1lc19sZW47Cj4gIH0KPiAgCj4gLWludCBzeXNjYWxsdGJsX19pZF9hdF9pZHgo aW50IGVfbWFjaGluZSBfX21heWJlX3VudXNlZCwgaW50IGlkeCkKPiAraW50IHN5c2NhbGx0Ymxf X2lkX2F0X2lkeChpbnQgZV9tYWNoaW5lLCBpbnQgaWR4KQo+ICB7Cj4gLQlyZXR1cm4gc3lzY2Fs bF9zb3J0ZWRfbmFtZXNbaWR4XTsKPiArCWNvbnN0IHN0cnVjdCBzeXNjYWxsdGJsICp0YWJsZSA9 IGZpbmRfdGFibGUoZV9tYWNoaW5lKTsKPiArCj4gKwlpZiAoIXRhYmxlKQo+ICsJCXJldHVybiAt MTsKPiArCj4gKwlhc3NlcnQoaWR4ID49IDAgJiYgaWR4IDwgdGFibGUtPnNvcnRlZF9uYW1lc19s ZW4pOwo+ICsJcmV0dXJuIHRhYmxlLT5zb3J0ZWRfbmFtZXNbaWR4XTsKPiAgfQo+ICAKPiAtaW50 IHN5c2NhbGx0YmxfX3N0cmdsb2JtYXRjaF9uZXh0KGludCBlX21hY2hpbmUgX19tYXliZV91bnVz ZWQsIGNvbnN0IGNoYXIgKnN5c2NhbGxfZ2xvYiwgaW50ICppZHgpCj4gK2ludCBzeXNjYWxsdGJs X19zdHJnbG9ibWF0Y2hfbmV4dChpbnQgZV9tYWNoaW5lLCBjb25zdCBjaGFyICpzeXNjYWxsX2ds b2IsIGludCAqaWR4KQo+ICB7Cj4gLQlmb3IgKGludCBpID0gKmlkeCArIDE7IGkgPCAoaW50KUFS UkFZX1NJWkUoc3lzY2FsbF9zb3J0ZWRfbmFtZXMpOyArK2kpIHsKPiAtCQljb25zdCBjaGFyICpu YW1lID0gc3lzY2FsbF9udW1fdG9fbmFtZVtzeXNjYWxsX3NvcnRlZF9uYW1lc1tpXV07Cj4gKwlj b25zdCBzdHJ1Y3Qgc3lzY2FsbHRibCAqdGFibGUgPSBmaW5kX3RhYmxlKGVfbWFjaGluZSk7Cj4g Kwo+ICsJZm9yIChpbnQgaSA9ICppZHggKyAxOyB0YWJsZSAmJiBpIDwgdGFibGUtPnNvcnRlZF9u YW1lc19sZW47ICsraSkgewo+ICsJCWNvbnN0IGNoYXIgKm5hbWUgPSB0YWJsZS0+bnVtX3RvX25h bWVbdGFibGUtPnNvcnRlZF9uYW1lc1tpXV07Cj4gIAo+ICAJCWlmIChzdHJnbG9ibWF0Y2gobmFt ZSwgc3lzY2FsbF9nbG9iKSkgewo+ICAJCQkqaWR4ID0gaTsKPiAtCQkJcmV0dXJuIHN5c2NhbGxf c29ydGVkX25hbWVzW2ldOwo+ICsJCQlyZXR1cm4gdGFibGUtPnNvcnRlZF9uYW1lc1tpXTsKPiAg CQl9Cj4gIAl9Cj4gIAo+IC0tIAo+IDIuNDguMS41MDIuZzZkYzI0ZGZkYWYtZ29vZwo+IAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3Yg bWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=