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 B3D14C0218A for ; Sat, 1 Feb 2025 07:24:45 +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:Content-Transfer-Encoding: Content-Type:To:From:Subject:References:Mime-Version:Message-Id:In-Reply-To: Date:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=n2p4BgBlwJg7VuXE9RH9vyknGo38+Elq2Bwl6+1TcLc=; b=ATzJChdl13+NMwzamLQXQU2vAB j3Q/yJPbHE24QqboI6zKxZhl+qLlTX5DT0Aj2OEvQsljFLIG8xzlhKzwV+o/EMMTJJIlLid945uYs cCf4HEQkcOfT+CDAnzYlk6sS04966NWVN/ieOYdLD7LIlLXN+0XNX3SFvRG1Vy8uvD4bvw7FeyDCC Kngzq2Ezd4b+I8rh4b6jT0jd/lpGjWWVmlGUPfmvzS5NDoz5Ea3KEf/v1+5jKwpy8S1j7iPE2Huw0 kPkB9R7Z346dR6uTwbHIP6BGeqnxzong/BIOaKJCpfwZvkhPxjvjlrTJEZNqeybmlW16q3oYodLbw 1T0pPw6Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1te7rl-0000000BzS3-1rZP; Sat, 01 Feb 2025 07:24:33 +0000 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1te7it-0000000BxwW-2DrH for linux-arm-kernel@lists.infradead.org; Sat, 01 Feb 2025 07:15:24 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-6f79c1cf49dso19877967b3.2 for ; Fri, 31 Jan 2025 23:15:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738394122; x=1738998922; darn=lists.infradead.org; h=content-transfer-encoding:to:from:subject:references:mime-version :message-id:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=n2p4BgBlwJg7VuXE9RH9vyknGo38+Elq2Bwl6+1TcLc=; b=CqxpLAtcSIVYMKJituDf2kqsahNBcUIhYvPg5XxauCdjzq5S9cJxU7LelIj5mo4E/r +G65lS0q89ZHZUVz+C9C/OnG4X7DW71ERq3VoZ0uAQoQ5xcPLN3OGsh8t7W1pM+tXY+I xna4jMb/M1M0g/3zu4NdPPzaV60DtuhqDKpjZPVzV15VZnqM2tWTNoNRk2RXDocQv427 EKfSeAdHKqZryX/ZbMPlxMNpy3qWYSeaexzWx+vGUgiOKnB6eof7i95TDokl4psOXuVv 12ANZA9CRJAj+wH4r6wmOaJ0mdVmCeTr2z9KdjJvlicbVmzWMorrmp5AiDV/3Uwstq2A WlPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738394122; x=1738998922; h=content-transfer-encoding:to:from:subject:references:mime-version :message-id:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=n2p4BgBlwJg7VuXE9RH9vyknGo38+Elq2Bwl6+1TcLc=; b=Zl49vWD7dXw1Vksr5BZALmZ2JxE6UO7XV09E9LowNJR3/TGy47m8TRbpYY9cpdU3qd cvtidHaNc+yrSUC3F4pTQklB0jm6jOEwXUFC70dZ6eZWasEhP+4UlmvwkomNyvWgfkaW CWA4pVvrNwBDEk6wXgzw7NyF39rqbodp96s5qJli5hKAEzA7YcrWIxDUEvPvwbdGTv3g /MpQPzK1zvBsHGuayObjgtk2hhlemAwYmCDsHFd+kc98od7zxg0sp5v4D5T6dhfedzWA Sl4zqaNf0jxa4OSf7PW90bikjAsUY+g1fGD7C3Ueq7ojVMRZ4CjD2A6XXAYq4tzIUYox Gugw== X-Forwarded-Encrypted: i=1; AJvYcCXP6Nw0KkVfpYG+HmZk42G0eTwhA8TlLarDBKO7H91SETM7TQhsu4Kg8jjSvCtWmgYzxtIi8FsTYAG8pdenlZv8@lists.infradead.org X-Gm-Message-State: AOJu0Ywv3V55nbL/VWu/kn0jbufQCwFe87frDelUUR6oAytINDzV5UqC QbIcqRvH/RWlsv5Q3c6ePRajPviKqbwcrsD0O8gvEiZW6f0XUE7G+Zh2IoAMH0afhkO2x11BEVo QaGyJrg== X-Google-Smtp-Source: AGHT+IEK39TIsn0m3MP/5oNb4U2nd1MWIlCQZVSl/E90OW64f8W0hXi4MQLMdrwvLzordeaL0lFrwurIdZ/O X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:de26:87db:e4d0:62b6]) (user=irogers job=sendgmr) by 2002:a05:690c:b82:b0:6ef:94b3:730b with SMTP id 00721157ae682-6f7a845d709mr396727b3.7.1738394122344; Fri, 31 Jan 2025 23:15:22 -0800 (PST) Date: Fri, 31 Jan 2025 23:14:54 -0800 In-Reply-To: <20250201071455.718247-1-irogers@google.com> Message-Id: <20250201071455.718247-7-irogers@google.com> Mime-Version: 1.0 References: <20250201071455.718247-1-irogers@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Subject: [PATCH v1 6/7] perf syscalltbl: Use lookup table containing multiple architectures From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Charlie Jenkins , Bibo Mao , Arnd Bergmann , Huacai Chen , Catalin Marinas , Jiri Slaby , "=?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?=" , 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_231523_575692_C30D5C75 X-CRM114-Status: GOOD ( 18.69 ) 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 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()) = =3D 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|ERRQ= UEUE|NOSIGNAL|WAITFORONE|BATCH|SOCK_DEVMEM|ZEROCOPY|FASTOPEN|CMSG_CLOEXEC|0= x91f80000, addr: 0xe30, addr_len: 0xffce438c) =3D 1475198976 0.042 ( 0.003 ms): a.out/447296 lgetxattr(name: "", value: 0x3, size: = 34) =3D 4160344064 0.054 ( 0.003 ms): a.out/447296 dup2(oldfd: -134422744, newfd: 4) = =3D -1 ENOENT (No such file or directory) 0.060 ( 0.009 ms): a.out/447296 preadv(fd: 4294967196, vec: (struct io= vec){.iov_base =3D (void *)0x2e646c2f6374652f,.iov_len =3D (__kernel_size_t= )7307199665335594867,}, vlen: 557056, pos_h: 4160585708) =3D 3 0.074 ( 0.004 ms): a.out/447296 lgetxattr(name: "", value: 0x1, size: = 2) =3D 4160237568 0.080 ( 0.001 ms): a.out/447296 lstat(filename: "", statbuf: 0x193f6) = =3D 0 0.089 ( 0.007 ms): a.out/447296 preadv(fd: 4294967196, vec: (struct io= vec){.iov_base =3D (void *)0x3833692f62696c2f,.iov_len =3D (__kernel_size_t= )3276497845987585334,}, vlen: 557056, pos_h: 4160585708) =3D 3 0.097 ( 0.002 ms): a.out/447296 close(fd: 3) = =3D 512 0.103 ( 0.002 ms): a.out/447296 lgetxattr(name: "", value: 0x1, size: = 2050) =3D 4157935616 0.107 ( 0.007 ms): a.out/447296 lgetxattr(pathname: "", name: "", valu= e: 0x5, size: 2066) =3D 4158078976 0.116 ( 0.003 ms): a.out/447296 lgetxattr(pathname: "", name: "", valu= e: 0x1, size: 2066) =3D 4159639552 0.121 ( 0.003 ms): a.out/447296 lgetxattr(pathname: "", name: "", valu= e: 0x3, size: 2066) =3D 4160184320 0.129 ( 0.002 ms): a.out/447296 lgetxattr(pathname: "", name: "", valu= e: 0x3, size: 50) =3D 4160196608 0.138 ( 0.001 ms): a.out/447296 lstat(filename: "") = =3D 0 0.145 ( 0.002 ms): a.out/447296 mq_timedreceive(mqdes: 4291706800, u_m= sg_ptr: 0xf7f9ea48, msg_len: 134616640, u_msg_prio: 0xf7fd7fec, u_abs_timeo= ut: (struct __kernel_timespec){.tv_sec =3D (__kernel_time64_t)-578174027777= 317696,.tv_nsec =3D (long long int)4160349376,}) =3D 0 0.148 ( 0.001 ms): a.out/447296 mkdirat(dfd: -134617816, pathname: " = =EF=BF=BD=EF=BF=BD=EF=BF=BD =EF=BF=BD=EF=BF=BD=EF=BF=BD=E2=96=92=EF=BF=BD= =EF=BF=BD=EF=BF=BD=E2=96=92=EF=BF=BD=EF=BF=BD=EF=BF=BD", mode: IFREG|ISUID|= IRUSR|IWGRP|0xf7fd0000) =3D 447296 0.150 ( 0.001 ms): a.out/447296 process_vm_writev(pid: -134617812, lve= c: (struct iovec){.iov_base =3D (void *)0xf7f9e9c8f7f9e4c0,.iov_len =3D (__= kernel_size_t)4160349376,}, liovcnt: 4160588048, rvec: (struct iovec){}, ri= ovcnt: 4160585708, flags: 4291707352) =3D 0 0.197 ( 0.004 ms): a.out/447296 capget(header: 4160184320, dataptr: 81= 92) =3D 0 0.202 ( 0.002 ms): a.out/447296 capget(header: 1448669184, dataptr: 40= 96) =3D 0 0.208 ( 0.002 ms): a.out/447296 capget(header: 4160577536, dataptr: 81= 92) =3D 0 0.220 ( 0.001 ms): a.out/447296 getxattr(pathname: "", name: "c=EF=BF= =BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD", value: 0xf7f77e34, size:= 1) =3D 0 0.228 ( 0.005 ms): a.out/447296 fchmod(fd: -134729728, mode: IRUGO|IWU= GO|IFREG|IFIFO|ISVTX|IXUSR|0x10000) =3D 0 0.240 ( 0.009 ms): a.out/447296 preadv(fd: 4294967196, vec: 0x5658e008= , pos_h: 4160192052) =3D 3 0.250 ( 0.008 ms): a.out/447296 close(fd: 3) = =3D 1436 0.260 ( 0.018 ms): a.out/447296 stat(filename: "", statbuf: 0xffce32ac= ) =3D 1436 0.288 (1000.213 ms): a.out/447296 readlinkat(buf: 0xffce31d4, bufsiz: = 4291703244) =3D 0 ``` After: ``` ? ( ): a.out/442930 ... [continued]: execve()) = =3D 0 0.023 ( 0.002 ms): a.out/442930 brk() = =3D 0x57760000 0.052 ( 0.003 ms): a.out/442930 access(filename: 0xf7f5af28, mode: R) = =3D -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) =3D 3 0.078 ( 0.001 ms): a.out/442930 close(fd: 3) = =3D 0 0.087 ( 0.007 ms): a.out/442930 openat(dfd: CWD, filename: "/lib/i386-= linux-", flags: RDONLY|CLOEXEC|LARGEFILE) =3D 3 0.095 ( 0.002 ms): a.out/442930 read(fd: 3, buf: = 0xffbdbb70, count: 512) =3D 512 0.135 ( 0.001 ms): a.out/442930 close(fd: 3) = =3D 0 0.148 ( 0.001 ms): a.out/442930 set_tid_address(tidptr: 0xf7f2b528) = =3D 442930 (a.out) 0.150 ( 0.001 ms): a.out/442930 set_robust_list(head: 0xf7f2b52c, len:= 12) =3D 0.196 ( 0.004 ms): a.out/442930 mprotect(start: 0xf7f03000, len: 8192,= prot: READ) =3D 0 0.202 ( 0.002 ms): a.out/442930 mprotect(start: 0x5658e000, len: 4096,= prot: READ) =3D 0 0.207 ( 0.002 ms): a.out/442930 mprotect(start: 0xf7f63000, len: 8192,= prot: READ) =3D 0 0.230 ( 0.005 ms): a.out/442930 munmap(addr: 0xf7f10000, len: 103414) = =3D 0 0.244 ( 0.010 ms): a.out/442930 openat(dfd: CWD, filename: 0x5658d008)= =3D 3 0.255 ( 0.007 ms): a.out/442930 read(fd: 3, buf: = 0xffbdb67c, count: 4096) =3D 1436 0.264 ( 0.018 ms): a.out/442930 write(fd: 1, buf: , count:= 1436) =3D 1436 0.292 (1000.173 ms): a.out/442930 clock_nanosleep(rqtp: { .tv_sec: 178= 66546940376776704, .tv_nsec: 4159878336 }, rmtp: 0xffbdb59c) =3D 0 1000.478 ( ): a.out/442930 exit_group() = =3D ? ``` Signed-off-by: Ian Rogers --- 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..572083ba1efe 100644 --- a/tools/perf/util/syscalltbl.c +++ b/tools/perf/util/syscalltbl.c @@ -15,16 +15,39 @@ #include #include "string2.h" =20 -#if __BITS_PER_LONG =3D=3D 64 - #include -#else - #include -#endif +#include "trace/beauty/generated/syscalltbl.c" =20 -const char *syscalltbl__name(int e_machine __maybe_unused, int id) +static const struct syscalltbl *find_table(int e_machine) { - if (id >=3D 0 && id <=3D (int)ARRAY_SIZE(syscall_num_to_name)) - return syscall_num_to_name[id]; + static const struct syscalltbl *last_table; + static int last_table_machine =3D EM_NONE; + + /* Tables only exist for EM_SPARC. */ + if (e_machine =3D=3D EM_SPARCV9) + e_machine =3D EM_SPARC; + + if (last_table_machine =3D=3D e_machine && e_machine !=3D EM_NONE) + return last_table; + + for (size_t i =3D 0; i < ARRAY_SIZE(syscalltbls); i++) { + const struct syscalltbl *entry =3D &syscalltbls[i]; + + if (entry->e_machine !=3D e_machine && entry->e_machine !=3D EM_NONE) + continue; + + last_table =3D entry; + last_table_machine =3D e_machine; + return entry; + } + return NULL; +} + +const char *syscalltbl__name(int e_machine, int id) +{ + const struct syscalltbl *table =3D find_table(e_machine); + + if (table && id >=3D 0 && id < table->num_to_name_len) + return table->num_to_name[id]; return NULL; } =20 @@ -41,38 +64,54 @@ static int syscallcmpname(const void *vkey, const void = *ventry) return strcmp(key->name, key->tbl[*entry]); } =20 -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 =3D { - .name =3D name, - .tbl =3D syscall_num_to_name, - }; - const int *id =3D bsearch(&key, syscall_sorted_names, - ARRAY_SIZE(syscall_sorted_names), - sizeof(syscall_sorted_names[0]), - syscallcmpname); + const struct syscalltbl *table =3D find_table(e_machine); + struct syscall_cmp_key key; + const int *id; + + if (!table) + return -1; + + key.name =3D name; + key.tbl =3D table->num_to_name; + id =3D bsearch(&key, table->sorted_names, table->sorted_names_len, + sizeof(table->sorted_names[0]), syscallcmpname); =20 return id ? *id : -1; } =20 -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 =3D find_table(e_machine); + + if (!table) + return 0; + + return table->sorted_names_len; } =20 -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 =3D find_table(e_machine); + + if (!table) + return -1; + + assert(idx >=3D 0 && idx < table->sorted_names_len); + return table->sorted_names[idx]; } =20 -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 =3D *idx + 1; i < (int)ARRAY_SIZE(syscall_sorted_names); ++i) = { - const char *name =3D syscall_num_to_name[syscall_sorted_names[i]]; + const struct syscalltbl *table =3D find_table(e_machine); + + for (int i =3D *idx + 1; table && i < table->sorted_names_len; ++i) { + const char *name =3D table->num_to_name[table->sorted_names[i]]; =20 if (strglobmatch(name, syscall_glob)) { *idx =3D i; - return syscall_sorted_names[i]; + return table->sorted_names[i]; } } =20 --=20 2.48.1.362.g079036d154-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 2E4ABC0218A for ; Sat, 1 Feb 2025 07:24:39 +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:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Lg+CeXuzgitmJV8dc6ZjAtdmb8dd0h3AXaIDQbrlb3A=; b=cUqDv+UhEyscib ik47jTWlqvYjscS2U7BOyInXrvPHc6GhGU9a1tjS5X80w1ktyS81g9l4L89zKJVHA80Iq9jH85eZl xIn48jzdSC+btbDLKgmE6iXiVk5Ze0O/IUUc5NG0GWtJD6QG9jgIW/v6wkVmnSCG93vI5pqMjgXo7 TCeouQTLMJtYOBEz66nvHg9OsYsrbBOjfZyWHbRtTNUDwNmRtHkyFN72N+TdrtvhVMwLr5XkF/AEU 2D9mlAB2Fvyuwc9BZx30g2jPJSBxUeP38gnouXE/wimaf0u8YTkx+Amnn0G2ayjJpzfgEY7SSl7hy hsTuJ3CLzQEaI7cXSO/Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1te7rl-0000000BzSJ-47IO; Sat, 01 Feb 2025 07:24:33 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1te7it-0000000BxwV-2FcQ for linux-riscv@lists.infradead.org; Sat, 01 Feb 2025 07:15:24 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-6f46ad8a390so25340677b3.1 for ; Fri, 31 Jan 2025 23:15:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738394122; x=1738998922; darn=lists.infradead.org; h=content-transfer-encoding:to:from:subject:references:mime-version :message-id:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=n2p4BgBlwJg7VuXE9RH9vyknGo38+Elq2Bwl6+1TcLc=; b=CqxpLAtcSIVYMKJituDf2kqsahNBcUIhYvPg5XxauCdjzq5S9cJxU7LelIj5mo4E/r +G65lS0q89ZHZUVz+C9C/OnG4X7DW71ERq3VoZ0uAQoQ5xcPLN3OGsh8t7W1pM+tXY+I xna4jMb/M1M0g/3zu4NdPPzaV60DtuhqDKpjZPVzV15VZnqM2tWTNoNRk2RXDocQv427 EKfSeAdHKqZryX/ZbMPlxMNpy3qWYSeaexzWx+vGUgiOKnB6eof7i95TDokl4psOXuVv 12ANZA9CRJAj+wH4r6wmOaJ0mdVmCeTr2z9KdjJvlicbVmzWMorrmp5AiDV/3Uwstq2A WlPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738394122; x=1738998922; h=content-transfer-encoding:to:from:subject:references:mime-version :message-id:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=n2p4BgBlwJg7VuXE9RH9vyknGo38+Elq2Bwl6+1TcLc=; b=py6RemWkWbV/DS3pvHJtlG6Fhp5VyRiJT1EAypnigM+kmGFz8HFEEmzOqCkIRhaqU7 /cQT35CIQywmSX0okpAmVyrmnJPF3Gov7k92yAuFg0BfTwXWDT+AdLfFe+SNupLF3gA2 uyuc457jxTyzvdJ3PExTF8qUXt8Ke0IjvzOPMKs2A8N1vDEDE4saL5KLdLV/uOLr+puc iwBUtND3xzOl/kSYnMtRMnVA2/QDoQSfvMCvb0t0WxlAMHVZ0HTAM2U8aVtnBUQntwWC /wIXZdUgt3cpSBSIxuEU5MYDO9QS/m5YQkoNwZcXf2t42SkErOM6o/maUBYFcSXJU5Kp Rk4w== X-Forwarded-Encrypted: i=1; AJvYcCVk+5lxw1vVTMAU9tGq/GXpfUoKlysIb88TLd+VIA8VS1XSc+CsH+oUkJqb7nZZB0Pm2Uyeh52PS9SNfw==@lists.infradead.org X-Gm-Message-State: AOJu0YyZ4tr02PmnO0q+D1e429J90S6bOOp0G0mQz/OTLTKbi5vW82+m FJ6xcYXAkx9qRTs8tvql8WgcgnzlyvSYXJJ0o6TUgQNXLcaJHs6HpYIp6SFtgrq5Z3D6WF1cIIB v+Wp8rQ== X-Google-Smtp-Source: AGHT+IEK39TIsn0m3MP/5oNb4U2nd1MWIlCQZVSl/E90OW64f8W0hXi4MQLMdrwvLzordeaL0lFrwurIdZ/O X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:de26:87db:e4d0:62b6]) (user=irogers job=sendgmr) by 2002:a05:690c:b82:b0:6ef:94b3:730b with SMTP id 00721157ae682-6f7a845d709mr396727b3.7.1738394122344; Fri, 31 Jan 2025 23:15:22 -0800 (PST) Date: Fri, 31 Jan 2025 23:14:54 -0800 In-Reply-To: <20250201071455.718247-1-irogers@google.com> Message-Id: <20250201071455.718247-7-irogers@google.com> Mime-Version: 1.0 References: <20250201071455.718247-1-irogers@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Subject: [PATCH v1 6/7] perf syscalltbl: Use lookup table containing multiple architectures From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Charlie Jenkins , Bibo Mao , Arnd Bergmann , Huacai Chen , Catalin Marinas , Jiri Slaby , "=?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?=" , 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_231523_578265_0F268BB4 X-CRM114-Status: GOOD ( 17.20 ) 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 U3dpdGNoIHRvIHVzZSB0aGUgbG9va3VwIHRhYmxlIGNvbnRhaW5pbmcgYWxsIGFyY2hpdGVjdHVy ZXMgcmF0aGVyCnRoYW4gdGFibGVzIG1hdGNoaW5nIHRoZSBwZXJmIGJpbmFyeS4KClRoaXMgZml4 ZXMgcGVyZiB0cmFjZSB3aGVuIGV4ZWN1dGVkIG9uIGEgMzItYml0IGkzODYgYmluYXJ5IG9uIGFu Cng4Ni02NCBtYWNoaW5lLiBOb3RlIGluIHRoZSBmb2xsb3dpbmcgdGhlIHN5c3RlbSBjYWxsIG5h bWVzIG9mIHRoZQozMi1iaXQgaTM4NiBiaW5hcnkgYXMgc2VlbiBieSBhbiB4ODYtNjQgcGVyZi4K CkJlZm9yZToKYGBgCiAgICAgICAgID8gKCAgICAgICAgICk6IGEub3V0LzQ0NzI5NiAgLi4uIFtj b250aW51ZWRdOiBtdW5tYXAoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPSAwCiAgICAgMC4wMjQgKCAwLjAwMSBtcyk6IGEub3V0LzQ0NzI5NiByZWN2ZnJvbSh1 YnVmOiAweDIsIHNpemU6IDQxNjA1ODU3MDgsIGZsYWdzOiBET05UUk9VVEV8Q1RSVU5DfFRSVU5D fERPTlRXQUlUfEVPUnxXQUlUQUxMfEZJTnxTWU58Q09ORklSTXxSU1R8RVJSUVVFVUV8Tk9TSUdO QUx8V0FJVEZPUk9ORXxCQVRDSHxTT0NLX0RFVk1FTXxaRVJPQ09QWXxGQVNUT1BFTnxDTVNHX0NM T0VYRUN8MHg5MWY4MDAwMCwgYWRkcjogMHhlMzAsIGFkZHJfbGVuOiAweGZmY2U0MzhjKSA9IDE0 NzUxOTg5NzYKICAgICAwLjA0MiAoIDAuMDAzIG1zKTogYS5vdXQvNDQ3Mjk2IGxnZXR4YXR0cihu YW1lOiAiIiwgdmFsdWU6IDB4Mywgc2l6ZTogMzQpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA9IDQxNjAzNDQwNjQKICAgICAwLjA1NCAoIDAuMDAzIG1zKTogYS5vdXQvNDQ3Mjk2IGR1cDIo b2xkZmQ6IC0xMzQ0MjI3NDQsIG5ld2ZkOiA0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA9IC0xIEVOT0VOVCAoTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKICAgICAwLjA2 MCAoIDAuMDA5IG1zKTogYS5vdXQvNDQ3Mjk2IHByZWFkdihmZDogNDI5NDk2NzE5NiwgdmVjOiAo c3RydWN0IGlvdmVjKXsuaW92X2Jhc2UgPSAodm9pZCAqKTB4MmU2NDZjMmY2Mzc0NjUyZiwuaW92 X2xlbiA9IChfX2tlcm5lbF9zaXplX3QpNzMwNzE5OTY2NTMzNTU5NDg2Nyx9LCB2bGVuOiA1NTcw NTYsIHBvc19oOiA0MTYwNTg1NzA4KSA9IDMKICAgICAwLjA3NCAoIDAuMDA0IG1zKTogYS5vdXQv NDQ3Mjk2IGxnZXR4YXR0cihuYW1lOiAiIiwgdmFsdWU6IDB4MSwgc2l6ZTogMikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9IDQxNjAyMzc1NjgKICAgICAwLjA4MCAoIDAuMDAxIG1zKTog YS5vdXQvNDQ3Mjk2IGxzdGF0KGZpbGVuYW1lOiAiIiwgc3RhdGJ1ZjogMHgxOTNmNikgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKICAgICAwLjA4OSAoIDAuMDA3IG1zKTogYS5v dXQvNDQ3Mjk2IHByZWFkdihmZDogNDI5NDk2NzE5NiwgdmVjOiAoc3RydWN0IGlvdmVjKXsuaW92 X2Jhc2UgPSAodm9pZCAqKTB4MzgzMzY5MmY2MjY5NmMyZiwuaW92X2xlbiA9IChfX2tlcm5lbF9z aXplX3QpMzI3NjQ5Nzg0NTk4NzU4NTMzNCx9LCB2bGVuOiA1NTcwNTYsIHBvc19oOiA0MTYwNTg1 NzA4KSA9IDMKICAgICAwLjA5NyAoIDAuMDAyIG1zKTogYS5vdXQvNDQ3Mjk2IGNsb3NlKGZkOiAz PC9wcm9jLzQ0NzI5Ni9zdGF0dXM+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA9IDUxMgogICAgIDAuMTAzICggMC4wMDIgbXMpOiBhLm91dC80NDcyOTYgbGdldHhhdHRyKG5h bWU6ICIiLCB2YWx1ZTogMHgxLCBzaXplOiAyMDUwKSAgICAgICAgICAgICAgICAgICAgICAgICAg ID0gNDE1NzkzNTYxNgogICAgIDAuMTA3ICggMC4wMDcgbXMpOiBhLm91dC80NDcyOTYgbGdldHhh dHRyKHBhdGhuYW1lOiAiIiwgbmFtZTogIiIsIHZhbHVlOiAweDUsIHNpemU6IDIwNjYpICAgICAg ICAgICAgID0gNDE1ODA3ODk3NgogICAgIDAuMTE2ICggMC4wMDMgbXMpOiBhLm91dC80NDcyOTYg bGdldHhhdHRyKHBhdGhuYW1lOiAiIiwgbmFtZTogIiIsIHZhbHVlOiAweDEsIHNpemU6IDIwNjYp ICAgICAgICAgICAgID0gNDE1OTYzOTU1MgogICAgIDAuMTIxICggMC4wMDMgbXMpOiBhLm91dC80 NDcyOTYgbGdldHhhdHRyKHBhdGhuYW1lOiAiIiwgbmFtZTogIiIsIHZhbHVlOiAweDMsIHNpemU6 IDIwNjYpICAgICAgICAgICAgID0gNDE2MDE4NDMyMAogICAgIDAuMTI5ICggMC4wMDIgbXMpOiBh Lm91dC80NDcyOTYgbGdldHhhdHRyKHBhdGhuYW1lOiAiIiwgbmFtZTogIiIsIHZhbHVlOiAweDMs IHNpemU6IDUwKSAgICAgICAgICAgICAgID0gNDE2MDE5NjYwOAogICAgIDAuMTM4ICggMC4wMDEg bXMpOiBhLm91dC80NDcyOTYgbHN0YXQoZmlsZW5hbWU6ICIiKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAogICAgIDAuMTQ1ICggMC4wMDIgbXMp OiBhLm91dC80NDcyOTYgbXFfdGltZWRyZWNlaXZlKG1xZGVzOiA0MjkxNzA2ODAwLCB1X21zZ19w dHI6IDB4ZjdmOWVhNDgsIG1zZ19sZW46IDEzNDYxNjY0MCwgdV9tc2dfcHJpbzogMHhmN2ZkN2Zl YywgdV9hYnNfdGltZW91dDogKHN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyl7LnR2X3NlYyA9IChf X2tlcm5lbF90aW1lNjRfdCktNTc4MTc0MDI3Nzc3MzE3Njk2LC50dl9uc2VjID0gKGxvbmcgbG9u ZyBpbnQpNDE2MDM0OTM3Nix9KSA9IDAKICAgICAwLjE0OCAoIDAuMDAxIG1zKTogYS5vdXQvNDQ3 Mjk2IG1rZGlyYXQoZGZkOiAtMTM0NjE3ODE2LCBwYXRobmFtZTogIiDvv73vv73vv70g77+977+9 77+94paS77+977+977+94paS77+977+977+9IiwgbW9kZTogSUZSRUd8SVNVSUR8SVJVU1J8SVdH UlB8MHhmN2ZkMDAwMCkgPSA0NDcyOTYKICAgICAwLjE1MCAoIDAuMDAxIG1zKTogYS5vdXQvNDQ3 Mjk2IHByb2Nlc3Nfdm1fd3JpdGV2KHBpZDogLTEzNDYxNzgxMiwgbHZlYzogKHN0cnVjdCBpb3Zl Yyl7Lmlvdl9iYXNlID0gKHZvaWQgKikweGY3ZjllOWM4ZjdmOWU0YzAsLmlvdl9sZW4gPSAoX19r ZXJuZWxfc2l6ZV90KTQxNjAzNDkzNzYsfSwgbGlvdmNudDogNDE2MDU4ODA0OCwgcnZlYzogKHN0 cnVjdCBpb3ZlYyl7fSwgcmlvdmNudDogNDE2MDU4NTcwOCwgZmxhZ3M6IDQyOTE3MDczNTIpID0g MAogICAgIDAuMTk3ICggMC4wMDQgbXMpOiBhLm91dC80NDcyOTYgY2FwZ2V0KGhlYWRlcjogNDE2 MDE4NDMyMCwgZGF0YXB0cjogODE5MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAog ICAgIDAuMjAyICggMC4wMDIgbXMpOiBhLm91dC80NDcyOTYgY2FwZ2V0KGhlYWRlcjogMTQ0ODY2 OTE4NCwgZGF0YXB0cjogNDA5NikgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAogICAg IDAuMjA4ICggMC4wMDIgbXMpOiBhLm91dC80NDcyOTYgY2FwZ2V0KGhlYWRlcjogNDE2MDU3NzUz NiwgZGF0YXB0cjogODE5MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAogICAgIDAu MjIwICggMC4wMDEgbXMpOiBhLm91dC80NDcyOTYgZ2V0eGF0dHIocGF0aG5hbWU6ICIiLCBuYW1l OiAiY++/ve+/ve+/ve+/ve+/ve+/vSIsIHZhbHVlOiAweGY3Zjc3ZTM0LCBzaXplOiAxKSAgPSAw CiAgICAgMC4yMjggKCAwLjAwNSBtcyk6IGEub3V0LzQ0NzI5NiBmY2htb2QoZmQ6IC0xMzQ3Mjk3 MjgsIG1vZGU6IElSVUdPfElXVUdPfElGUkVHfElGSUZPfElTVlRYfElYVVNSfDB4MTAwMDApID0g MAogICAgIDAuMjQwICggMC4wMDkgbXMpOiBhLm91dC80NDcyOTYgcHJlYWR2KGZkOiA0Mjk0OTY3 MTk2LCB2ZWM6IDB4NTY1OGUwMDgsIHBvc19oOiA0MTYwMTkyMDUyKSAgICAgICAgICAgID0gMwog ICAgIDAuMjUwICggMC4wMDggbXMpOiBhLm91dC80NDcyOTYgY2xvc2UoZmQ6IDM8L3Byb2MvNDQ3 Mjk2L3N0YXR1cz4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTQzNgog ICAgIDAuMjYwICggMC4wMTggbXMpOiBhLm91dC80NDcyOTYgc3RhdChmaWxlbmFtZTogIiIsIHN0 YXRidWY6IDB4ZmZjZTMyYWMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTQzNgog ICAgIDAuMjg4ICgxMDAwLjIxMyBtcyk6IGEub3V0LzQ0NzI5NiByZWFkbGlua2F0KGJ1ZjogMHhm ZmNlMzFkNCwgYnVmc2l6OiA0MjkxNzAzMjQ0KSAgICAgICAgICAgICAgICAgICAgICAgPSAwCmBg YAoKQWZ0ZXI6CmBgYAogICAgICAgICA/ICggICAgICAgICApOiBhLm91dC80NDI5MzAgIC4uLiBb Y29udGludWVkXTogZXhlY3ZlKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID0gMAogICAgIDAuMDIzICggMC4wMDIgbXMpOiBhLm91dC80NDI5MzAgYnJrKCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0gMHg1Nzc2MDAwMAogICAgIDAuMDUyICggMC4wMDMgbXMpOiBhLm91dC80NDI5MzAgYWNj ZXNzKGZpbGVuYW1lOiAweGY3ZjVhZjI4LCBtb2RlOiBSKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQogICAgIDAu MDU5ICggMC4wMDkgbXMpOiBhLm91dC80NDI5MzAgb3BlbmF0KGRmZDogQ1dELCBmaWxlbmFtZTog Ii9ldGMvbGQuc28uY2FjaGUiLCBmbGFnczogUkRPTkxZfENMT0VYRUN8TEFSR0VGSUxFKSA9IDMK ICAgICAwLjA3OCAoIDAuMDAxIG1zKTogYS5vdXQvNDQyOTMwIGNsb3NlKGZkOiAzPC9wcm9jLzQ0 MjkzMC9zdGF0dXM+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKICAg ICAwLjA4NyAoIDAuMDA3IG1zKTogYS5vdXQvNDQyOTMwIG9wZW5hdChkZmQ6IENXRCwgZmlsZW5h bWU6ICIvbGliL2kzODYtbGludXgtIiwgZmxhZ3M6IFJET05MWXxDTE9FWEVDfExBUkdFRklMRSkg PSAzCiAgICAgMC4wOTUgKCAwLjAwMiBtcyk6IGEub3V0LzQ0MjkzMCByZWFkKGZkOiAzPC9wcm9j LzQ0MjkzMC9zdGF0dXM+LCBidWY6IDB4ZmZiZGJiNzAsIGNvdW50OiA1MTIpICAgICAgICAgPSA1 MTIKICAgICAwLjEzNSAoIDAuMDAxIG1zKTogYS5vdXQvNDQyOTMwIGNsb3NlKGZkOiAzPC9wcm9j LzQ0MjkzMC9zdGF0dXM+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAK ICAgICAwLjE0OCAoIDAuMDAxIG1zKTogYS5vdXQvNDQyOTMwIHNldF90aWRfYWRkcmVzcyh0aWRw dHI6IDB4ZjdmMmI1MjgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDQ0Mjkz MCAoYS5vdXQpCiAgICAgMC4xNTAgKCAwLjAwMSBtcyk6IGEub3V0LzQ0MjkzMCBzZXRfcm9idXN0 X2xpc3QoaGVhZDogMHhmN2YyYjUyYywgbGVuOiAxMikgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPQogICAgIDAuMTk2ICggMC4wMDQgbXMpOiBhLm91dC80NDI5MzAgbXByb3RlY3Qoc3RhcnQ6 IDB4ZjdmMDMwMDAsIGxlbjogODE5MiwgcHJvdDogUkVBRCkgICAgICAgICAgICAgICAgICAgID0g MAogICAgIDAuMjAyICggMC4wMDIgbXMpOiBhLm91dC80NDI5MzAgbXByb3RlY3Qoc3RhcnQ6IDB4 NTY1OGUwMDAsIGxlbjogNDA5NiwgcHJvdDogUkVBRCkgICAgICAgICAgICAgICAgICAgID0gMAog ICAgIDAuMjA3ICggMC4wMDIgbXMpOiBhLm91dC80NDI5MzAgbXByb3RlY3Qoc3RhcnQ6IDB4Zjdm NjMwMDAsIGxlbjogODE5MiwgcHJvdDogUkVBRCkgICAgICAgICAgICAgICAgICAgID0gMAogICAg IDAuMjMwICggMC4wMDUgbXMpOiBhLm91dC80NDI5MzAgbXVubWFwKGFkZHI6IDB4ZjdmMTAwMDAs IGxlbjogMTAzNDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAogICAgIDAu MjQ0ICggMC4wMTAgbXMpOiBhLm91dC80NDI5MzAgb3BlbmF0KGRmZDogQ1dELCBmaWxlbmFtZTog MHg1NjU4ZDAwOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMwogICAgIDAuMjU1 ICggMC4wMDcgbXMpOiBhLm91dC80NDI5MzAgcmVhZChmZDogMzwvcHJvYy80NDI5MzAvc3RhdHVz PiwgYnVmOiAweGZmYmRiNjdjLCBjb3VudDogNDA5NikgICAgICAgID0gMTQzNgogICAgIDAuMjY0 ICggMC4wMTggbXMpOiBhLm91dC80NDI5MzAgd3JpdGUoZmQ6IDE8L2Rldi9wdHMvND4sIGJ1Zjog LCBjb3VudDogMTQzNikgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTQzNgogICAgIDAuMjky ICgxMDAwLjE3MyBtcyk6IGEub3V0LzQ0MjkzMCBjbG9ja19uYW5vc2xlZXAocnF0cDogeyAudHZf c2VjOiAxNzg2NjU0Njk0MDM3Njc3NjcwNCwgLnR2X25zZWM6IDQxNTk4NzgzMzYgfSwgcm10cDog MHhmZmJkYjU5YykgPSAwCiAgMTAwMC40NzggKCAgICAgICAgICk6IGEub3V0LzQ0MjkzMCBleGl0 X2dyb3VwKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSA/CmBgYAoKU2lnbmVkLW9mZi1ieTogSWFuIFJvZ2VycyA8aXJvZ2Vyc0Bnb29n bGUuY29tPgotLS0KIHRvb2xzL3BlcmYvdXRpbC9zeXNjYWxsdGJsLmMgfCA4OSArKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2NCBpbnNlcnRpb25z KCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3lzY2Fs bHRibC5jIGIvdG9vbHMvcGVyZi91dGlsL3N5c2NhbGx0YmwuYwppbmRleCA3NjBhYzRkMDg2OWYu LjU3MjA4M2JhMWVmZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3N5c2NhbGx0YmwuYwor KysgYi90b29scy9wZXJmL3V0aWwvc3lzY2FsbHRibC5jCkBAIC0xNSwxNiArMTUsMzkgQEAKICNp bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlICJzdHJpbmcyLmgiCiAKLSNpZiBfX0JJVFNfUEVS X0xPTkcgPT0gNjQKLSAgI2luY2x1ZGUgPGFzbS9zeXNjYWxsc182NC5oPgotI2Vsc2UKLSAgI2lu Y2x1ZGUgPGFzbS9zeXNjYWxsc18zMi5oPgotI2VuZGlmCisjaW5jbHVkZSAidHJhY2UvYmVhdXR5 L2dlbmVyYXRlZC9zeXNjYWxsdGJsLmMiCiAKLWNvbnN0IGNoYXIgKnN5c2NhbGx0YmxfX25hbWUo aW50IGVfbWFjaGluZSBfX21heWJlX3VudXNlZCwgaW50IGlkKQorc3RhdGljIGNvbnN0IHN0cnVj dCBzeXNjYWxsdGJsICpmaW5kX3RhYmxlKGludCBlX21hY2hpbmUpCiB7Ci0JaWYgKGlkID49IDAg JiYgaWQgPD0gKGludClBUlJBWV9TSVpFKHN5c2NhbGxfbnVtX3RvX25hbWUpKQotCQlyZXR1cm4g c3lzY2FsbF9udW1fdG9fbmFtZVtpZF07CisJc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNjYWxsdGJs ICpsYXN0X3RhYmxlOworCXN0YXRpYyBpbnQgbGFzdF90YWJsZV9tYWNoaW5lID0gRU1fTk9ORTsK KworCS8qIFRhYmxlcyBvbmx5IGV4aXN0IGZvciBFTV9TUEFSQy4gKi8KKwlpZiAoZV9tYWNoaW5l ID09IEVNX1NQQVJDVjkpCisJCWVfbWFjaGluZSA9IEVNX1NQQVJDOworCisJaWYgKGxhc3RfdGFi bGVfbWFjaGluZSA9PSBlX21hY2hpbmUgJiYgZV9tYWNoaW5lICE9IEVNX05PTkUpCisJCXJldHVy biBsYXN0X3RhYmxlOworCisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN5c2Nh bGx0YmxzKTsgaSsrKSB7CisJCWNvbnN0IHN0cnVjdCBzeXNjYWxsdGJsICplbnRyeSA9ICZzeXNj YWxsdGJsc1tpXTsKKworCQlpZiAoZW50cnktPmVfbWFjaGluZSAhPSBlX21hY2hpbmUgJiYgZW50 cnktPmVfbWFjaGluZSAhPSBFTV9OT05FKQorCQkJY29udGludWU7CisKKwkJbGFzdF90YWJsZSA9 IGVudHJ5OworCQlsYXN0X3RhYmxlX21hY2hpbmUgPSBlX21hY2hpbmU7CisJCXJldHVybiBlbnRy eTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IGNoYXIgKnN5c2NhbGx0YmxfX25hbWUo aW50IGVfbWFjaGluZSwgaW50IGlkKQoreworCWNvbnN0IHN0cnVjdCBzeXNjYWxsdGJsICp0YWJs ZSA9IGZpbmRfdGFibGUoZV9tYWNoaW5lKTsKKworCWlmICh0YWJsZSAmJiBpZCA+PSAwICYmIGlk IDwgdGFibGUtPm51bV90b19uYW1lX2xlbikKKwkJcmV0dXJuIHRhYmxlLT5udW1fdG9fbmFtZVtp ZF07CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQxLDM4ICs2NCw1NCBAQCBzdGF0aWMgaW50IHN5 c2NhbGxjbXBuYW1lKGNvbnN0IHZvaWQgKnZrZXksIGNvbnN0IHZvaWQgKnZlbnRyeSkKIAlyZXR1 cm4gc3RyY21wKGtleS0+bmFtZSwga2V5LT50YmxbKmVudHJ5XSk7CiB9CiAKLWludCBzeXNjYWxs dGJsX19pZChpbnQgZV9tYWNoaW5lIF9fbWF5YmVfdW51c2VkLCBjb25zdCBjaGFyICpuYW1lKQor aW50IHN5c2NhbGx0YmxfX2lkKGludCBlX21hY2hpbmUsIGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0J c3RydWN0IHN5c2NhbGxfY21wX2tleSBrZXkgPSB7Ci0JCS5uYW1lID0gbmFtZSwKLQkJLnRibCA9 IHN5c2NhbGxfbnVtX3RvX25hbWUsCi0JfTsKLQljb25zdCBpbnQgKmlkID0gYnNlYXJjaCgma2V5 LCBzeXNjYWxsX3NvcnRlZF9uYW1lcywKLQkJCQlBUlJBWV9TSVpFKHN5c2NhbGxfc29ydGVkX25h bWVzKSwKLQkJCQlzaXplb2Yoc3lzY2FsbF9zb3J0ZWRfbmFtZXNbMF0pLAotCQkJCXN5c2NhbGxj bXBuYW1lKTsKKwljb25zdCBzdHJ1Y3Qgc3lzY2FsbHRibCAqdGFibGUgPSBmaW5kX3RhYmxlKGVf bWFjaGluZSk7CisJc3RydWN0IHN5c2NhbGxfY21wX2tleSBrZXk7CisJY29uc3QgaW50ICppZDsK KworCWlmICghdGFibGUpCisJCXJldHVybiAtMTsKKworCWtleS5uYW1lID0gbmFtZTsKKwlrZXku dGJsID0gdGFibGUtPm51bV90b19uYW1lOworCWlkID0gYnNlYXJjaCgma2V5LCB0YWJsZS0+c29y dGVkX25hbWVzLCB0YWJsZS0+c29ydGVkX25hbWVzX2xlbiwKKwkJICAgICBzaXplb2YodGFibGUt PnNvcnRlZF9uYW1lc1swXSksIHN5c2NhbGxjbXBuYW1lKTsKIAogCXJldHVybiBpZCA/ICppZCA6 IC0xOwogfQogCi1pbnQgc3lzY2FsbHRibF9fbnVtX2lkeChpbnQgZV9tYWNoaW5lIF9fbWF5YmVf dW51c2VkKQoraW50IHN5c2NhbGx0YmxfX251bV9pZHgoaW50IGVfbWFjaGluZSkKIHsKLQlyZXR1 cm4gQVJSQVlfU0laRShzeXNjYWxsX3NvcnRlZF9uYW1lcyk7CisJY29uc3Qgc3RydWN0IHN5c2Nh bGx0YmwgKnRhYmxlID0gZmluZF90YWJsZShlX21hY2hpbmUpOworCisJaWYgKCF0YWJsZSkKKwkJ cmV0dXJuIDA7CisKKwlyZXR1cm4gdGFibGUtPnNvcnRlZF9uYW1lc19sZW47CiB9CiAKLWludCBz eXNjYWxsdGJsX19pZF9hdF9pZHgoaW50IGVfbWFjaGluZSBfX21heWJlX3VudXNlZCwgaW50IGlk eCkKK2ludCBzeXNjYWxsdGJsX19pZF9hdF9pZHgoaW50IGVfbWFjaGluZSwgaW50IGlkeCkKIHsK LQlyZXR1cm4gc3lzY2FsbF9zb3J0ZWRfbmFtZXNbaWR4XTsKKwljb25zdCBzdHJ1Y3Qgc3lzY2Fs bHRibCAqdGFibGUgPSBmaW5kX3RhYmxlKGVfbWFjaGluZSk7CisKKwlpZiAoIXRhYmxlKQorCQly ZXR1cm4gLTE7CisKKwlhc3NlcnQoaWR4ID49IDAgJiYgaWR4IDwgdGFibGUtPnNvcnRlZF9uYW1l c19sZW4pOworCXJldHVybiB0YWJsZS0+c29ydGVkX25hbWVzW2lkeF07CiB9CiAKLWludCBzeXNj YWxsdGJsX19zdHJnbG9ibWF0Y2hfbmV4dChpbnQgZV9tYWNoaW5lIF9fbWF5YmVfdW51c2VkLCBj b25zdCBjaGFyICpzeXNjYWxsX2dsb2IsIGludCAqaWR4KQoraW50IHN5c2NhbGx0YmxfX3N0cmds b2JtYXRjaF9uZXh0KGludCBlX21hY2hpbmUsIGNvbnN0IGNoYXIgKnN5c2NhbGxfZ2xvYiwgaW50 ICppZHgpCiB7Ci0JZm9yIChpbnQgaSA9ICppZHggKyAxOyBpIDwgKGludClBUlJBWV9TSVpFKHN5 c2NhbGxfc29ydGVkX25hbWVzKTsgKytpKSB7Ci0JCWNvbnN0IGNoYXIgKm5hbWUgPSBzeXNjYWxs X251bV90b19uYW1lW3N5c2NhbGxfc29ydGVkX25hbWVzW2ldXTsKKwljb25zdCBzdHJ1Y3Qgc3lz Y2FsbHRibCAqdGFibGUgPSBmaW5kX3RhYmxlKGVfbWFjaGluZSk7CisKKwlmb3IgKGludCBpID0g KmlkeCArIDE7IHRhYmxlICYmIGkgPCB0YWJsZS0+c29ydGVkX25hbWVzX2xlbjsgKytpKSB7CisJ CWNvbnN0IGNoYXIgKm5hbWUgPSB0YWJsZS0+bnVtX3RvX25hbWVbdGFibGUtPnNvcnRlZF9uYW1l c1tpXV07CiAKIAkJaWYgKHN0cmdsb2JtYXRjaChuYW1lLCBzeXNjYWxsX2dsb2IpKSB7CiAJCQkq aWR4ID0gaTsKLQkJCXJldHVybiBzeXNjYWxsX3NvcnRlZF9uYW1lc1tpXTsKKwkJCXJldHVybiB0 YWJsZS0+c29ydGVkX25hbWVzW2ldOwogCQl9CiAJfQogCi0tIAoyLjQ4LjEuMzYyLmcwNzkwMzZk MTU0LWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2 Cg==