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 D34C9C021B2 for ; Tue, 25 Feb 2025 05:42:44 +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=iUPbEqQqZTSKM6bEfV8NjqFPnKbX4Wlow5OcKJYOqdk=; b=wsmmf/NtPIDmMuT4YdX0jCzDtp JIsjXBuJo3e6NSQvWUVrLh0BL4dN1zZ+ig4lQljlkAyzdqggDMFCT09LE/ZSk0caK0dPieq6Ft8kU A1FVlSEDVcVGQGy8jBsCIj9NXtjAtSc3AZ58fWg3srMTA8/cDMlp6y/XLdl11M2jLNudskZBsuReT lLUBXo02civply0oGvWlagO4g6+5c16+Omq7AykGcaWIW0V7WEfN7Hk0COT/1TV++osvYEMwCS+xc QeI8zGHnihtFXXPMB/sBpTgQvi6UV/DlE9mym5HAy4dkNW8lLqCNz34lF8jhzKAxr0+74XgqZ4/Lj oqK0hAsg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tmniD-0000000G1mI-1F07; Tue, 25 Feb 2025 05:42:33 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tmngh-0000000G1cF-28pz; Tue, 25 Feb 2025 05:40:59 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 7333361229; Tue, 25 Feb 2025 05:40:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 65032C4CEDD; Tue, 25 Feb 2025 05:40:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740462058; bh=SSqK31Rz9wC9z/NiBzR0z7vokA7mxT8tpUFmqTG6mHM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=njaUaASHhDSzCNPKLjCjSjjjHl6VqFNXKud7jBtpaLJw+Wo1Ubki267KQEakO4MNE y+mfsYpAGHllA3z9Q8bZz5gO/LNtHGoAPK+4HZ9/ypUD8sd3qu6//dhnpOdZ721e0A zEP6OVS5S6ThYE/fEKlQc39Mld250XZxFaZcdhZjjdM/9N8V9XcrmXzM5Mfmb/ImBR T+ehjRhBf16ll3f6uJYhjp2oX0fYxBlBrLAfUxQ6sLtUEezoVvrQp18BmoQ9vh4H9Q fgw48QoAMONdL15eqhCbk2Kj+TZCtx3HYLSDUgQnCsoQoENXoubZf3ab2S/MwQACm9 JUFntl0rumvmA== Date: Mon, 24 Feb 2025 21:40:55 -0800 From: Namhyung Kim To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , guoren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Charlie Jenkins , Bibo Mao , Huacai Chen , Catalin Marinas , Jiri Slaby , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , 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, linux-mips@vger.kernel.org, Arnd Bergmann Subject: Re: [PATCH v3 0/8] perf: Support multiple system call tables in the build Message-ID: References: <20250219185657.280286-1-irogers@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: 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 24, 2025 at 08:37:01PM -0800, Ian Rogers wrote: > On Mon, Feb 24, 2025 at 7:05 PM Namhyung Kim wrote: > > > > On Wed, Feb 19, 2025 at 10:56:49AM -0800, Ian Rogers wrote: > > > This work builds on the clean up of system call tables and removal of > > > libaudit by Charlie Jenkins . > > > > > > The system call table in perf trace is used to map system call numbers > > > to names and vice versa. Prior to these changes, a single table > > > matching the perf binary's build was present. The table would be > > > incorrect if tracing say a 32-bit binary from a 64-bit version of > > > perf, the names and numbers wouldn't match. > > > > > > Change the build so that a single system call file is built and the > > > potentially multiple tables are identifiable from the ELF machine type > > > of the process being examined. To determine the ELF machine type, the > > > executable's header is read from /proc/pid/exe with fallbacks to using > > > the perf's binary type when unknown. > > > > > > Remove some runtime types used by the system call tables and make > > > equivalents generated at build time. > > > > So I tested this with a test program. > > > > $ cat a.c > > #include > > int main(void) > > { > > char buf[4096]; > > FILE *fp = fopen("a.c", "r"); > > size_t len; > > > > len = fread(buf, sizeof(buf), 1, fp); > > fwrite(buf, 1, len, stdout); > > fflush(stdout); > > fclose(fp); > > return 0; > > } > > > > $ gcc -o a64.out a.c > > $ gcc -o a32.out -m32 a.c > > > > $ ./perf version > > perf version 6.14.rc1.ge002a64f6188 > > > > $ git show > > commit e002a64f61882626992dd6513c0db3711c06fea7 (HEAD -> perf-check) > > Author: Ian Rogers > > Date: Wed Feb 19 10:56:57 2025 -0800 > > > > perf syscalltbl: Mask off ABI type for MIPS system calls > > > > Arnd Bergmann described that MIPS system calls don't necessarily start > > from 0 as an ABI prefix is applied: > > https://lore.kernel.org/lkml/8ed7dfb2-1e4d-4aa4-a04b-0397a89365d1@app.fastmail.com/ > > When decoding the "id" (aka system call number) for MIPS ignore values > > greater-than 1000. > > > > Signed-off-by: Ian Rogers > > > > It works well with 64bit. > > > > $ sudo ./perf trace ./a64.out |& tail > > 0.266 ( 0.007 ms): a64.out/858681 munmap(addr: 0x7f392723a000, len: 109058) = 0 > > 0.286 ( 0.002 ms): a64.out/858681 getrandom(ubuf: 0x7f3927232178, len: 8, flags: NONBLOCK) = 8 > > 0.289 ( 0.001 ms): a64.out/858681 brk() = 0x56419ecf7000 > > 0.291 ( 0.002 ms): a64.out/858681 brk(brk: 0x56419ed18000) = 0x56419ed18000 > > 0.299 ( 0.009 ms): a64.out/858681 openat(dfd: CWD, filename: "a.c") = 3 > > 0.312 ( 0.001 ms): a64.out/858681 fstat(fd: 3, statbuf: 0x7ffdfadf1eb0) = 0 > > 0.315 ( 0.002 ms): a64.out/858681 read(fd: 3, buf: 0x7ffdfadf2030, count: 4096) = 211 > > 0.318 ( 0.009 ms): a64.out/858681 read(fd: 3, buf: 0x56419ecf7480, count: 4096) = 0 > > 0.330 ( 0.001 ms): a64.out/858681 close(fd: 3) = 0 > > 0.338 ( ): a64.out/858681 exit_group() = ? > > > > But 32bit is still broken and use 64bit syscall table wrongly. > > > > $ file a32.out > > a32.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, > > BuildID[sha1]=6eea873c939012e6c715e8f030261642bf61cb4e, for GNU/Linux 3.2.0, not stripped > > > > $ sudo ./perf trace ./a32.out |& tail > > 0.296 ( 0.001 ms): a32.out/858699 getxattr(pathname: "", name: "������", value: 0xf7f6ce14, size: 1) = 0 > > 0.305 ( 0.007 ms): a32.out/858699 fchmod(fd: -134774784, mode: IFLNK|ISUID|ISVTX|IWOTH|0x10000) = 0 > > 0.333 ( 0.001 ms): a32.out/858699 recvfrom(size: 4160146964, flags: RST|0x20000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1481879552 > > 0.335 ( 0.004 ms): a32.out/858699 recvfrom(fd: 1482014720, ubuf: 0xf7f71278, size: 4160146964, flags: NOSIGNAL|MORE|WAITFORONE|BATCH|SPLICE_PAGES|CMSG_CLOEXEC|0x10500000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1482014720 > > 0.355 ( 0.002 ms): a32.out/858699 recvfrom(fd: 1482018816, ubuf: 0x5855d000, size: 4160146964, flags: RST|NOSIGNAL|MORE|WAITFORONE|BATCH|SPLICE_PAGES|CMSG_CLOEXEC|0x10500000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1482018816 > > 0.362 ( 0.010 ms): a32.out/858699 preadv(fd: 4294967196, vec: (struct iovec){.iov_base = (void *)0x1b01000000632e62,.iov_len = (__kernel_size_t)1125899909479171,}, pos_h: 4160146964) = 3 > > 0.385 ( 0.002 ms): a32.out/858699 close(fd: 3) = 211 > > 0.388 ( 0.001 ms): a32.out/858699 close(fd: 3) = 0 > > 0.393 ( 0.002 ms): a32.out/858699 lstat(filename: "") = 0 > > 0.396 ( 0.004 ms): a32.out/858699 recvfrom(fd: 1482014720, size: 4160146964, flags: NOSIGNAL|MORE|WAITFORONE|BATCH|SPLICE_PAGES|CMSG_CLOEXEC|0x10500000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1482014720 > > > > The last 5 should be openat, read, read, close and brk(?). > > That's strange as nearly the same test works for me: > ``` > $ git show > commit 7920020237af8138f7be1a21be9a2918a71ddc5e (HEAD -> ptn-syscalltbl) > Author: Ian Rogers > Date: Fri Jan 31 21:34:07 2025 -0800 > > perf syscalltbl: Mask off ABI type for MIPS system calls > > Arnd Bergmann described that MIPS system calls don't necessarily start > from 0 as an ABI prefix is applied: > https://lore.kernel.org/lkml/8ed7dfb2-1e4d-4aa4-a04b-0397a89365d1@app.fastmail.com/ > When decoding the "id" (aka system call number) for MIPS ignore values > greater-than 1000. > > Signed-off-by: Ian Rogers > .. > $ file a.out > a.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), > dynamically linked, interpreter /lib/ld-linux.so.2, > BuildID[sha1]=3fcd28f85a27a3108941661a91dbc675c06868f9, for GNU/Linux > 3.2.0, not stripped > $ sudo /tmp/perf/perf trace ./a.out > ... > ? ( ): a.out/218604 ... [continued]: execve()) > = 0 > 0.067 ( 0.003 ms): a.out/218604 brk() > = 0x5749e000 > 0.154 ( 0.007 ms): a.out/218604 access(filename: 0xf7fc7f28, > mode: R) = -1 ENOENT (No such file or > directory) > 0.168 ( 0.023 ms): a.out/218604 openat(dfd: CWD, filename: > 0xf7fc44c3, flags: RDONLY|CLOEXEC|LARGEFILE) = 3 > 0.193 ( 0.006 ms): a.out/218604 statx(dfd: > 3, filename: 0xf7fc510a, flags: > NO_AUTOMOUNT|EMPTY_PATH, mask: > TYPE|MODE|NLINK|UID|GID|ATIME|MTIME|CTIME|INO|SIZE|BLOCKS, buffer: > 0xffaa6b88) = 0 > 0.212 ( 0.002 ms): a.out/218604 close(fd: 3) > = 0 > 0.233 ( 0.019 ms): a.out/218604 openat(dfd: CWD, filename: > 0xf7f973e0, flags: RDONLY|CLOEXEC|LARGEFILE) = 3 > 0.255 ( 0.004 ms): a.out/218604 read(fd: 3, > buf: 0xffaa6df0, count: 512) = 512 > 0.262 ( 0.003 ms): a.out/218604 statx(dfd: > 3, filename: 0xf7fc510a, flags: > NO_AUTOMOUNT|EMPTY_PATH, mask: > TYPE|MODE|NLINK|UID|GID|ATIME|MTIME|CTIME|INO|SIZE|BLOCKS, buffer: > 0xffaa6b38) = 0 > 0.347 ( 0.002 ms): a.out/218604 close(fd: 3) > = 0 > 0.372 ( 0.002 ms): a.out/218604 set_tid_address(tidptr: > 0xf7f98528) = 218604 (a.out) > 0.376 ( 0.002 ms): a.out/218604 set_robust_list(head: 0xf7f9852c, > len: 12) = > 0.381 ( 0.002 ms): a.out/218604 rseq(rseq: 0xf7f98960, rseq_len: > 32, sig: 1392848979) = > 0.469 ( 0.010 ms): a.out/218604 mprotect(start: 0xf7f6e000, len: > 8192, prot: READ) = 0 > 0.489 ( 0.007 ms): a.out/218604 mprotect(start: 0x5661a000, len: > 4096, prot: READ) = 0 > 0.503 ( 0.007 ms): a.out/218604 mprotect(start: 0xf7fd0000, len: > 8192, prot: READ) = 0 > 0.550 ( 0.015 ms): a.out/218604 munmap(addr: 0xf7f7b000, len: > 111198) = 0 > 0.589 ( 0.035 ms): a.out/218604 openat(dfd: CWD, filename: > 0x56619008) = 3 > 0.627 ( 0.024 ms): a.out/218604 read(fd: 3, > buf: 0xffaa68fc, count: 4096) = 1437 > 0.654 ( 0.090 ms): a.out/218604 write(fd: 1, buf: , > count: 1437) = 1437 > 0.766 (1000.164 ms): a.out/218604 clock_nanosleep(rqtp: > 0xffaa6824, rmtp: 0xffaa681c) = 0 > 1000.942 ( ): a.out/218604 exit_group() > $ file /tmp/perf/perf > /tmp/perf/perf: ELF 64-bit LSB pie executable, x86-64, version 1 > (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, > BuildID[sha1]=60b07f65d2559a7193b2d1d36cfa00054dfbd076, for GNU/Linux > 3.2.0, with debug_info, not stripped > ``` > Perhaps your a.out binary was built as an x32 one? > Looking under the covers with gdb: > ``` > $ sudo gdb --args /tmp/perf/perf trace ./a.out > GNU gdb (Debian 15.1-1) 15.1 > ... > Reading symbols from /tmp/perf/perf... > (gdb) b syscalltbl__name > Breakpoint 1 at 0x23a51b: file util/syscalltbl.c, line 47. > (gdb) r > ... > [Detaching after vfork from child process 218826] > > Breakpoint 1, syscalltbl__name (e_machine=3, id=11) at util/syscalltbl.c:47 > 47 const struct syscalltbl *table = find_table(e_machine); > ``` > So the e_machine is 3 which corresponds to EM_386. > > I've not fixed every use of syscalltbl but I believe this one is working. Strange. I'm seeing 62 (x86_64). $ sudo gdb -q --args ./perf trace ./a32.out Reading symbols from ./perf... (gdb) b syscalltbl__name Breakpoint 1 at 0x27998b: file util/syscalltbl.c, line 46. (gdb) r Starting program: /home/namhyung/tmp/perf trace ./a32.out [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [Detaching after fork from child process 886888] Breakpoint 1, syscalltbl__name (e_machine=62, id=156) at util/syscalltbl.c:46 46 { But the binary is i386. $ file a32.out a32.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=6eea873c939012e6c715e8f030261642bf61cb4e, for GNU/Linux 3.2.0, not stripped $ readelf -h a32.out ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: DYN (Position-Independent Executable file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x10a0 Start of program headers: 52 (bytes into file) Start of section headers: 13932 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 11 Size of section headers: 40 (bytes) Number of section headers: 30 Section header string table index: 29 $ hexdump -C -n 32 a32.out 00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| 00000010 03 00 03 00 01 00 00 00 a0 10 00 00 34 00 00 00 |............4...| 00000020 ----- ----- ^ ^ | | ET_DYN | EM_386 Thanks, Namhyung 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 E97C6C021B2 for ; Tue, 25 Feb 2025 05:42:40 +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=p+/efiu6LB+RfonUpzU/s/1nN5ZxDxMWUVd1su/petE=; b=cAlEGjKRRCTxKN c8gNWHgAKApAEZzwryTQYAU5oegXxqpQH7IqLrPTmzEw0eer7L9ZvklG3gSJYmozrNgFHT+X6ZdM5 9u8VpwiAlBaDVPLEgoLiLY9wM1fEeAbBD5aPRZ2aJKucI9Ece17UiUg9uzEBZlVwEZwLdlAMGusl/ xDrVeoz4XIfh9C2a7Wp0pCm6v3vTDcN3z0W7tYSfVSbpzJNgnqHzuLH8d5ukmA6XysWa4lwMlsx2+ U6SXd/Xcjhjffp4qkUvtKQpqdFEHzmd+pRPMxE6x2Oe0RjS8rZm+BTR+8DpCwtiSa/BaDiyP9EJVD UCfEOmqdiE2WHyIbjvRA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tmniD-0000000G1mM-3RfX; Tue, 25 Feb 2025 05:42:33 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tmngh-0000000G1cF-28pz; Tue, 25 Feb 2025 05:40:59 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 7333361229; Tue, 25 Feb 2025 05:40:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 65032C4CEDD; Tue, 25 Feb 2025 05:40:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740462058; bh=SSqK31Rz9wC9z/NiBzR0z7vokA7mxT8tpUFmqTG6mHM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=njaUaASHhDSzCNPKLjCjSjjjHl6VqFNXKud7jBtpaLJw+Wo1Ubki267KQEakO4MNE y+mfsYpAGHllA3z9Q8bZz5gO/LNtHGoAPK+4HZ9/ypUD8sd3qu6//dhnpOdZ721e0A zEP6OVS5S6ThYE/fEKlQc39Mld250XZxFaZcdhZjjdM/9N8V9XcrmXzM5Mfmb/ImBR T+ehjRhBf16ll3f6uJYhjp2oX0fYxBlBrLAfUxQ6sLtUEezoVvrQp18BmoQ9vh4H9Q fgw48QoAMONdL15eqhCbk2Kj+TZCtx3HYLSDUgQnCsoQoENXoubZf3ab2S/MwQACm9 JUFntl0rumvmA== Date: Mon, 24 Feb 2025 21:40:55 -0800 From: Namhyung Kim To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , guoren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Charlie Jenkins , Bibo Mao , Huacai Chen , Catalin Marinas , Jiri Slaby , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , 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, linux-mips@vger.kernel.org, Arnd Bergmann Subject: Re: [PATCH v3 0/8] perf: Support multiple system call tables in the build Message-ID: References: <20250219185657.280286-1-irogers@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: 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 T24gTW9uLCBGZWIgMjQsIDIwMjUgYXQgMDg6Mzc6MDFQTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90 ZToKPiBPbiBNb24sIEZlYiAyNCwgMjAyNSBhdCA3OjA14oCvUE0gTmFtaHl1bmcgS2ltIDxuYW1o eXVuZ0BrZXJuZWwub3JnPiB3cm90ZToKPiA+Cj4gPiBPbiBXZWQsIEZlYiAxOSwgMjAyNSBhdCAx MDo1Njo0OUFNIC0wODAwLCBJYW4gUm9nZXJzIHdyb3RlOgo+ID4gPiBUaGlzIHdvcmsgYnVpbGRz IG9uIHRoZSBjbGVhbiB1cCBvZiBzeXN0ZW0gY2FsbCB0YWJsZXMgYW5kIHJlbW92YWwgb2YKPiA+ ID4gbGliYXVkaXQgYnkgQ2hhcmxpZSBKZW5raW5zIDxjaGFybGllQHJpdm9zaW5jLmNvbT4uCj4g PiA+Cj4gPiA+IFRoZSBzeXN0ZW0gY2FsbCB0YWJsZSBpbiBwZXJmIHRyYWNlIGlzIHVzZWQgdG8g bWFwIHN5c3RlbSBjYWxsIG51bWJlcnMKPiA+ID4gdG8gbmFtZXMgYW5kIHZpY2UgdmVyc2EuIFBy aW9yIHRvIHRoZXNlIGNoYW5nZXMsIGEgc2luZ2xlIHRhYmxlCj4gPiA+IG1hdGNoaW5nIHRoZSBw ZXJmIGJpbmFyeSdzIGJ1aWxkIHdhcyBwcmVzZW50LiBUaGUgdGFibGUgd291bGQgYmUKPiA+ID4g aW5jb3JyZWN0IGlmIHRyYWNpbmcgc2F5IGEgMzItYml0IGJpbmFyeSBmcm9tIGEgNjQtYml0IHZl cnNpb24gb2YKPiA+ID4gcGVyZiwgdGhlIG5hbWVzIGFuZCBudW1iZXJzIHdvdWxkbid0IG1hdGNo Lgo+ID4gPgo+ID4gPiBDaGFuZ2UgdGhlIGJ1aWxkIHNvIHRoYXQgYSBzaW5nbGUgc3lzdGVtIGNh bGwgZmlsZSBpcyBidWlsdCBhbmQgdGhlCj4gPiA+IHBvdGVudGlhbGx5IG11bHRpcGxlIHRhYmxl cyBhcmUgaWRlbnRpZmlhYmxlIGZyb20gdGhlIEVMRiBtYWNoaW5lIHR5cGUKPiA+ID4gb2YgdGhl IHByb2Nlc3MgYmVpbmcgZXhhbWluZWQuIFRvIGRldGVybWluZSB0aGUgRUxGIG1hY2hpbmUgdHlw ZSwgdGhlCj4gPiA+IGV4ZWN1dGFibGUncyBoZWFkZXIgaXMgcmVhZCBmcm9tIC9wcm9jL3BpZC9l eGUgd2l0aCBmYWxsYmFja3MgdG8gdXNpbmcKPiA+ID4gdGhlIHBlcmYncyBiaW5hcnkgdHlwZSB3 aGVuIHVua25vd24uCj4gPiA+Cj4gPiA+IFJlbW92ZSBzb21lIHJ1bnRpbWUgdHlwZXMgdXNlZCBi eSB0aGUgc3lzdGVtIGNhbGwgdGFibGVzIGFuZCBtYWtlCj4gPiA+IGVxdWl2YWxlbnRzIGdlbmVy YXRlZCBhdCBidWlsZCB0aW1lLgo+ID4KPiA+IFNvIEkgdGVzdGVkIHRoaXMgd2l0aCBhIHRlc3Qg cHJvZ3JhbS4KPiA+Cj4gPiAgICQgY2F0IGEuYwo+ID4gICAjaW5jbHVkZSA8c3RkaW8uaD4KPiA+ ICAgaW50IG1haW4odm9pZCkKPiA+ICAgewo+ID4gICAgICAgICBjaGFyIGJ1Zls0MDk2XTsKPiA+ ICAgICAgICAgRklMRSAqZnAgPSBmb3BlbigiYS5jIiwgInIiKTsKPiA+ICAgICAgICAgc2l6ZV90 IGxlbjsKPiA+Cj4gPiAgICAgICAgIGxlbiA9IGZyZWFkKGJ1Ziwgc2l6ZW9mKGJ1ZiksIDEsIGZw KTsKPiA+ICAgICAgICAgZndyaXRlKGJ1ZiwgMSwgbGVuLCBzdGRvdXQpOwo+ID4gICAgICAgICBm Zmx1c2goc3Rkb3V0KTsKPiA+ICAgICAgICAgZmNsb3NlKGZwKTsKPiA+ICAgICAgICAgcmV0dXJu IDA7Cj4gPiAgIH0KPiA+Cj4gPiAgICQgZ2NjIC1vIGE2NC5vdXQgYS5jCj4gPiAgICQgZ2NjIC1v IGEzMi5vdXQgLW0zMiBhLmMKPiA+Cj4gPiAgICQgLi9wZXJmIHZlcnNpb24KPiA+ICAgcGVyZiB2 ZXJzaW9uIDYuMTQucmMxLmdlMDAyYTY0ZjYxODgKPiA+Cj4gPiAgICQgZ2l0IHNob3cKPiA+ICAg Y29tbWl0IGUwMDJhNjRmNjE4ODI2MjY5OTJkZDY1MTNjMGRiMzcxMWMwNmZlYTcgKEhFQUQgLT4g cGVyZi1jaGVjaykKPiA+ICAgQXV0aG9yOiBJYW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+ Cj4gPiAgIERhdGU6ICAgV2VkIEZlYiAxOSAxMDo1Njo1NyAyMDI1IC0wODAwCj4gPgo+ID4gICAg ICAgcGVyZiBzeXNjYWxsdGJsOiBNYXNrIG9mZiBBQkkgdHlwZSBmb3IgTUlQUyBzeXN0ZW0gY2Fs bHMKPiA+Cj4gPiAgICAgICBBcm5kIEJlcmdtYW5uIGRlc2NyaWJlZCB0aGF0IE1JUFMgc3lzdGVt IGNhbGxzIGRvbid0IG5lY2Vzc2FyaWx5IHN0YXJ0Cj4gPiAgICAgICBmcm9tIDAgYXMgYW4gQUJJ IHByZWZpeCBpcyBhcHBsaWVkOgo+ID4gICAgICAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGtt bC84ZWQ3ZGZiMi0xZTRkLTRhYTQtYTA0Yi0wMzk3YTg5MzY1ZDFAYXBwLmZhc3RtYWlsLmNvbS8K PiA+ICAgICAgIFdoZW4gZGVjb2RpbmcgdGhlICJpZCIgKGFrYSBzeXN0ZW0gY2FsbCBudW1iZXIp IGZvciBNSVBTIGlnbm9yZSB2YWx1ZXMKPiA+ICAgICAgIGdyZWF0ZXItdGhhbiAxMDAwLgo+ID4K PiA+ICAgICAgIFNpZ25lZC1vZmYtYnk6IElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xlLmNvbT4K PiA+Cj4gPiBJdCB3b3JrcyB3ZWxsIHdpdGggNjRiaXQuCj4gPgo+ID4gICAkIHN1ZG8gLi9wZXJm IHRyYWNlIC4vYTY0Lm91dCB8JiB0YWlsCj4gPiAgICAgICAgMC4yNjYgKCAwLjAwNyBtcyk6IGE2 NC5vdXQvODU4NjgxIG11bm1hcChhZGRyOiAweDdmMzkyNzIzYTAwMCwgbGVuOiAxMDkwNTgpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiA+ICAgICAgICAwLjI4NiAoIDAuMDAyIG1z KTogYTY0Lm91dC84NTg2ODEgZ2V0cmFuZG9tKHVidWY6IDB4N2YzOTI3MjMyMTc4LCBsZW46IDgs IGZsYWdzOiBOT05CTE9DSykgICAgICAgICAgICAgID0gOAo+ID4gICAgICAgIDAuMjg5ICggMC4w MDEgbXMpOiBhNjQub3V0Lzg1ODY4MSBicmsoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDU2NDE5ZWNmNzAwMAo+ID4g ICAgICAgIDAuMjkxICggMC4wMDIgbXMpOiBhNjQub3V0Lzg1ODY4MSBicmsoYnJrOiAweDU2NDE5 ZWQxODAwMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAw eDU2NDE5ZWQxODAwMAo+ID4gICAgICAgIDAuMjk5ICggMC4wMDkgbXMpOiBhNjQub3V0Lzg1ODY4 MSBvcGVuYXQoZGZkOiBDV0QsIGZpbGVuYW1lOiAiYS5jIikgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPSAzCj4gPiAgICAgICAgMC4zMTIgKCAwLjAwMSBtcyk6IGE2NC5vdXQv ODU4NjgxIGZzdGF0KGZkOiAzLCBzdGF0YnVmOiAweDdmZmRmYWRmMWViMCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9IDAKPiA+ICAgICAgICAwLjMxNSAoIDAuMDAyIG1zKTogYTY0 Lm91dC84NTg2ODEgcmVhZChmZDogMywgYnVmOiAweDdmZmRmYWRmMjAzMCwgY291bnQ6IDQwOTYp ICAgICAgICAgICAgICAgICAgICAgICAgID0gMjExCj4gPiAgICAgICAgMC4zMTggKCAwLjAwOSBt cyk6IGE2NC5vdXQvODU4NjgxIHJlYWQoZmQ6IDMsIGJ1ZjogMHg1NjQxOWVjZjc0ODAsIGNvdW50 OiA0MDk2KSAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiA+ICAgICAgICAwLjMzMCAoIDAu MDAxIG1zKTogYTY0Lm91dC84NTg2ODEgY2xvc2UoZmQ6IDMpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ID4gICAgICAgIDAuMzM4 ICggICAgICAgICApOiBhNjQub3V0Lzg1ODY4MSBleGl0X2dyb3VwKCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA/Cj4gPgo+ID4gQnV0 IDMyYml0IGlzIHN0aWxsIGJyb2tlbiBhbmQgdXNlIDY0Yml0IHN5c2NhbGwgdGFibGUgd3Jvbmds eS4KPiA+Cj4gPiAgICQgZmlsZSBhMzIub3V0Cj4gPiAgIGEzMi5vdXQ6IEVMRiAzMi1iaXQgTFNC IHBpZSBleGVjdXRhYmxlLCBJbnRlbCA4MDM4NiwgdmVyc2lvbiAxIChTWVNWKSwgZHluYW1pY2Fs bHkgbGlua2VkLCBpbnRlcnByZXRlciAvbGliL2xkLWxpbnV4LnNvLjIsCj4gPiAgIEJ1aWxkSURb c2hhMV09NmVlYTg3M2M5MzkwMTJlNmM3MTVlOGYwMzAyNjE2NDJiZjYxY2I0ZSwgZm9yIEdOVS9M aW51eCAzLjIuMCwgbm90IHN0cmlwcGVkCj4gPgo+ID4gICAkIHN1ZG8gLi9wZXJmIHRyYWNlIC4v YTMyLm91dCB8JiB0YWlsCj4gPiAgICAgICAgMC4yOTYgKCAwLjAwMSBtcyk6IGEzMi5vdXQvODU4 Njk5IGdldHhhdHRyKHBhdGhuYW1lOiAiIiwgbmFtZTogIu+/ve+/ve+/ve+/ve+/ve+/vSIsIHZh bHVlOiAweGY3ZjZjZTE0LCBzaXplOiAxKSAgPSAwCj4gPiAgICAgICAgMC4zMDUgKCAwLjAwNyBt cyk6IGEzMi5vdXQvODU4Njk5IGZjaG1vZChmZDogLTEzNDc3NDc4NCwgbW9kZTogSUZMTkt8SVNV SUR8SVNWVFh8SVdPVEh8MHgxMDAwMCkgICAgICAgICA9IDAKPiA+ICAgICAgICAwLjMzMyAoIDAu MDAxIG1zKTogYTMyLm91dC84NTg2OTkgcmVjdmZyb20oc2l6ZTogNDE2MDE0Njk2NCwgZmxhZ3M6 IFJTVHwweDIwMDAwLCBhZGRyOiAweGY3ZjZjZTE0LCBhZGRyX2xlbjogMHhmN2Y3MTI3OCkgPSAx NDgxODc5NTUyCj4gPiAgICAgICAgMC4zMzUgKCAwLjAwNCBtcyk6IGEzMi5vdXQvODU4Njk5IHJl Y3Zmcm9tKGZkOiAxNDgyMDE0NzIwLCB1YnVmOiAweGY3ZjcxMjc4LCBzaXplOiA0MTYwMTQ2OTY0 LCBmbGFnczogTk9TSUdOQUx8TU9SRXxXQUlURk9ST05FfEJBVENIfFNQTElDRV9QQUdFU3xDTVNH X0NMT0VYRUN8MHgxMDUwMDAwMCwgYWRkcjogMHhmN2Y2Y2UxNCwgYWRkcl9sZW46IDB4ZjdmNzEy NzgpID0gMTQ4MjAxNDcyMAo+ID4gICAgICAgIDAuMzU1ICggMC4wMDIgbXMpOiBhMzIub3V0Lzg1 ODY5OSByZWN2ZnJvbShmZDogMTQ4MjAxODgxNiwgdWJ1ZjogMHg1ODU1ZDAwMCwgc2l6ZTogNDE2 MDE0Njk2NCwgZmxhZ3M6IFJTVHxOT1NJR05BTHxNT1JFfFdBSVRGT1JPTkV8QkFUQ0h8U1BMSUNF X1BBR0VTfENNU0dfQ0xPRVhFQ3wweDEwNTAwMDAwLCBhZGRyOiAweGY3ZjZjZTE0LCBhZGRyX2xl bjogMHhmN2Y3MTI3OCkgPSAxNDgyMDE4ODE2Cj4gPiAgICAgICAgMC4zNjIgKCAwLjAxMCBtcyk6 IGEzMi5vdXQvODU4Njk5IHByZWFkdihmZDogNDI5NDk2NzE5NiwgdmVjOiAoc3RydWN0IGlvdmVj KXsuaW92X2Jhc2UgPSAodm9pZCAqKTB4MWIwMTAwMDAwMDYzMmU2MiwuaW92X2xlbiA9IChfX2tl cm5lbF9zaXplX3QpMTEyNTg5OTkwOTQ3OTE3MSx9LCBwb3NfaDogNDE2MDE0Njk2NCkgPSAzCj4g PiAgICAgICAgMC4zODUgKCAwLjAwMiBtcyk6IGEzMi5vdXQvODU4Njk5IGNsb3NlKGZkOiAzKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9 IDIxMQo+ID4gICAgICAgIDAuMzg4ICggMC4wMDEgbXMpOiBhMzIub3V0Lzg1ODY5OSBjbG9zZShm ZDogMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPSAwCj4gPiAgICAgICAgMC4zOTMgKCAwLjAwMiBtcyk6IGEzMi5vdXQvODU4Njk5IGxz dGF0KGZpbGVuYW1lOiAiIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9IDAKPiA+ICAgICAgICAwLjM5NiAoIDAuMDA0IG1zKTogYTMyLm91dC84NTg2 OTkgcmVjdmZyb20oZmQ6IDE0ODIwMTQ3MjAsIHNpemU6IDQxNjAxNDY5NjQsIGZsYWdzOiBOT1NJ R05BTHxNT1JFfFdBSVRGT1JPTkV8QkFUQ0h8U1BMSUNFX1BBR0VTfENNU0dfQ0xPRVhFQ3wweDEw NTAwMDAwLCBhZGRyOiAweGY3ZjZjZTE0LCBhZGRyX2xlbjogMHhmN2Y3MTI3OCkgPSAxNDgyMDE0 NzIwCj4gPgo+ID4gVGhlIGxhc3QgNSBzaG91bGQgYmUgb3BlbmF0LCByZWFkLCByZWFkLCBjbG9z ZSBhbmQgYnJrKD8pLgo+IAo+IFRoYXQncyBzdHJhbmdlIGFzIG5lYXJseSB0aGUgc2FtZSB0ZXN0 IHdvcmtzIGZvciBtZToKPiBgYGAKPiAkIGdpdCBzaG93Cj4gY29tbWl0IDc5MjAwMjAyMzdhZjgx MzhmN2JlMWEyMWJlOWEyOTE4YTcxZGRjNWUgKEhFQUQgLT4gcHRuLXN5c2NhbGx0YmwpCj4gQXV0 aG9yOiBJYW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+Cj4gRGF0ZTogICBGcmkgSmFuIDMx IDIxOjM0OjA3IDIwMjUgLTA4MDAKPiAKPiAgICBwZXJmIHN5c2NhbGx0Ymw6IE1hc2sgb2ZmIEFC SSB0eXBlIGZvciBNSVBTIHN5c3RlbSBjYWxscwo+IAo+ICAgIEFybmQgQmVyZ21hbm4gZGVzY3Jp YmVkIHRoYXQgTUlQUyBzeXN0ZW0gY2FsbHMgZG9uJ3QgbmVjZXNzYXJpbHkgc3RhcnQKPiAgICBm cm9tIDAgYXMgYW4gQUJJIHByZWZpeCBpcyBhcHBsaWVkOgo+ICAgIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvOGVkN2RmYjItMWU0ZC00YWE0LWEwNGItMDM5N2E4OTM2NWQxQGFwcC5mYXN0 bWFpbC5jb20vCj4gICAgV2hlbiBkZWNvZGluZyB0aGUgImlkIiAoYWthIHN5c3RlbSBjYWxsIG51 bWJlcikgZm9yIE1JUFMgaWdub3JlIHZhbHVlcwo+ICAgIGdyZWF0ZXItdGhhbiAxMDAwLgo+IAo+ ICAgIFNpZ25lZC1vZmYtYnk6IElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xlLmNvbT4KPiAuLgo+ ICQgZmlsZSBhLm91dAo+IGEub3V0OiBFTEYgMzItYml0IExTQiBwaWUgZXhlY3V0YWJsZSwgSW50 ZWwgODAzODYsIHZlcnNpb24gMSAoU1lTViksCj4gZHluYW1pY2FsbHkgbGlua2VkLCBpbnRlcnBy ZXRlciAvbGliL2xkLWxpbnV4LnNvLjIsCj4gQnVpbGRJRFtzaGExXT0zZmNkMjhmODVhMjdhMzEw ODk0MTY2MWE5MWRiYzY3NWMwNjg2OGY5LCBmb3IgR05VL0xpbnV4Cj4gMy4yLjAsIG5vdCBzdHJp cHBlZAo+ICQgc3VkbyAvdG1wL3BlcmYvcGVyZiB0cmFjZSAuL2Eub3V0Cj4gLi4uCj4gICAgICAg ICAgPyAoICAgICAgICAgKTogYS5vdXQvMjE4NjA0ICAuLi4gW2NvbnRpbnVlZF06IGV4ZWN2ZSgp KQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ICAgICAgMC4wNjcg KCAwLjAwMyBtcyk6IGEub3V0LzIxODYwNCBicmsoKQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID0gMHg1NzQ5ZTAwMAo+ICAgICAgMC4xNTQgKCAwLjAwNyBtcyk6IGEub3V0 LzIxODYwNCBhY2Nlc3MoZmlsZW5hbWU6IDB4ZjdmYzdmMjgsCj4gbW9kZTogUikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA9IC0xIEVOT0VOVCAoTm8gc3VjaCBmaWxlIG9yCj4gZGly ZWN0b3J5KQo+ICAgICAgMC4xNjggKCAwLjAyMyBtcyk6IGEub3V0LzIxODYwNCBvcGVuYXQoZGZk OiBDV0QsIGZpbGVuYW1lOgo+IDB4ZjdmYzQ0YzMsIGZsYWdzOiBSRE9OTFl8Q0xPRVhFQ3xMQVJH RUZJTEUpID0gMwo+ICAgICAgMC4xOTMgKCAwLjAwNiBtcyk6IGEub3V0LzIxODYwNCBzdGF0eChk ZmQ6Cj4gMzwvcHJvYy8yMTg2MDQvc3RhdHVzPiwgZmlsZW5hbWU6IDB4ZjdmYzUxMGEsIGZsYWdz Ogo+IE5PX0FVVE9NT1VOVHxFTVBUWV9QQVRILCBtYXNrOgo+IFRZUEV8TU9ERXxOTElOS3xVSUR8 R0lEfEFUSU1FfE1USU1FfENUSU1FfElOT3xTSVpFfEJMT0NLUywgYnVmZmVyOgo+IDB4ZmZhYTZi ODgpID0gMAo+ICAgICAgMC4yMTIgKCAwLjAwMiBtcyk6IGEub3V0LzIxODYwNCBjbG9zZShmZDog MzwvcHJvYy8yMTg2MDQvc3RhdHVzPikKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9IDAKPiAgICAgIDAuMjMzICggMC4wMTkgbXMpOiBhLm91dC8yMTg2MDQgb3BlbmF0KGRm ZDogQ1dELCBmaWxlbmFtZToKPiAweGY3Zjk3M2UwLCBmbGFnczogUkRPTkxZfENMT0VYRUN8TEFS R0VGSUxFKSA9IDMKPiAgICAgIDAuMjU1ICggMC4wMDQgbXMpOiBhLm91dC8yMTg2MDQgcmVhZChm ZDogMzwvcHJvYy8yMTg2MDQvc3RhdHVzPiwKPiBidWY6IDB4ZmZhYTZkZjAsIGNvdW50OiA1MTIp ICAgICAgICAgPSA1MTIKPiAgICAgIDAuMjYyICggMC4wMDMgbXMpOiBhLm91dC8yMTg2MDQgc3Rh dHgoZGZkOgo+IDM8L3Byb2MvMjE4NjA0L3N0YXR1cz4sIGZpbGVuYW1lOiAweGY3ZmM1MTBhLCBm bGFnczoKPiBOT19BVVRPTU9VTlR8RU1QVFlfUEFUSCwgbWFzazoKPiBUWVBFfE1PREV8TkxJTkt8 VUlEfEdJRHxBVElNRXxNVElNRXxDVElNRXxJTk98U0laRXxCTE9DS1MsIGJ1ZmZlcjoKPiAweGZm YWE2YjM4KSA9IDAKPiAgICAgIDAuMzQ3ICggMC4wMDIgbXMpOiBhLm91dC8yMTg2MDQgY2xvc2Uo ZmQ6IDM8L3Byb2MvMjE4NjA0L3N0YXR1cz4pCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSAwCj4gICAgICAwLjM3MiAoIDAuMDAyIG1zKTogYS5vdXQvMjE4NjA0IHNldF90 aWRfYWRkcmVzcyh0aWRwdHI6Cj4gMHhmN2Y5ODUyOCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0gMjE4NjA0IChhLm91dCkKPiAgICAgIDAuMzc2ICggMC4wMDIgbXMpOiBhLm91 dC8yMTg2MDQgc2V0X3JvYnVzdF9saXN0KGhlYWQ6IDB4ZjdmOTg1MmMsCj4gbGVuOiAxMikgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPQo+ICAgICAgMC4zODEgKCAwLjAwMiBtcyk6IGEub3V0 LzIxODYwNCByc2VxKHJzZXE6IDB4ZjdmOTg5NjAsIHJzZXFfbGVuOgo+IDMyLCBzaWc6IDEzOTI4 NDg5NzkpICAgICAgICAgICAgICAgICA9Cj4gICAgICAwLjQ2OSAoIDAuMDEwIG1zKTogYS5vdXQv MjE4NjA0IG1wcm90ZWN0KHN0YXJ0OiAweGY3ZjZlMDAwLCBsZW46Cj4gODE5MiwgcHJvdDogUkVB RCkgICAgICAgICAgICAgICAgICAgID0gMAo+ICAgICAgMC40ODkgKCAwLjAwNyBtcyk6IGEub3V0 LzIxODYwNCBtcHJvdGVjdChzdGFydDogMHg1NjYxYTAwMCwgbGVuOgo+IDQwOTYsIHByb3Q6IFJF QUQpICAgICAgICAgICAgICAgICAgICA9IDAKPiAgICAgIDAuNTAzICggMC4wMDcgbXMpOiBhLm91 dC8yMTg2MDQgbXByb3RlY3Qoc3RhcnQ6IDB4ZjdmZDAwMDAsIGxlbjoKPiA4MTkyLCBwcm90OiBS RUFEKSAgICAgICAgICAgICAgICAgICAgPSAwCj4gICAgICAwLjU1MCAoIDAuMDE1IG1zKTogYS5v dXQvMjE4NjA0IG11bm1hcChhZGRyOiAweGY3ZjdiMDAwLCBsZW46Cj4gMTExMTk4KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ICAgICAgMC41ODkgKCAwLjAzNSBtcyk6IGEu b3V0LzIxODYwNCBvcGVuYXQoZGZkOiBDV0QsIGZpbGVuYW1lOgo+IDB4NTY2MTkwMDgpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDMKPiAgICAgIDAuNjI3ICggMC4wMjQgbXMpOiBh Lm91dC8yMTg2MDQgcmVhZChmZDogMzwvcHJvYy8yMTg2MDQvc3RhdHVzPiwKPiBidWY6IDB4ZmZh YTY4ZmMsIGNvdW50OiA0MDk2KSAgICAgICAgPSAxNDM3Cj4gICAgICAwLjY1NCAoIDAuMDkwIG1z KTogYS5vdXQvMjE4NjA0IHdyaXRlKGZkOiAxPC9kZXYvcHRzLzM+LCBidWY6ICwKPiBjb3VudDog MTQzNykgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTQzNwo+ICAgICAgMC43NjYgKDEwMDAu MTY0IG1zKTogYS5vdXQvMjE4NjA0IGNsb2NrX25hbm9zbGVlcChycXRwOgo+IDB4ZmZhYTY4MjQs IHJtdHA6IDB4ZmZhYTY4MWMpICAgICAgICAgICAgICAgICAgID0gMAo+ICAgMTAwMC45NDIgKCAg ICAgICAgICk6IGEub3V0LzIxODYwNCBleGl0X2dyb3VwKCkKPiAkIGZpbGUgL3RtcC9wZXJmL3Bl cmYKPiAvdG1wL3BlcmYvcGVyZjogRUxGIDY0LWJpdCBMU0IgcGllIGV4ZWN1dGFibGUsIHg4Ni02 NCwgdmVyc2lvbiAxCj4gKFNZU1YpLCBkeW5hbWljYWxseSBsaW5rZWQsIGludGVycHJldGVyIC9s aWI2NC9sZC1saW51eC14ODYtNjQuc28uMiwKPiBCdWlsZElEW3NoYTFdPTYwYjA3ZjY1ZDI1NTlh NzE5M2IyZDFkMzZjZmEwMDA1NGRmYmQwNzYsIGZvciBHTlUvTGludXgKPiAzLjIuMCwgd2l0aCBk ZWJ1Z19pbmZvLCBub3Qgc3RyaXBwZWQKPiBgYGAKPiBQZXJoYXBzIHlvdXIgYS5vdXQgYmluYXJ5 IHdhcyBidWlsdCBhcyBhbiB4MzIgb25lPwo+IExvb2tpbmcgdW5kZXIgdGhlIGNvdmVycyB3aXRo IGdkYjoKPiBgYGAKPiAkIHN1ZG8gZ2RiIC0tYXJncyAvdG1wL3BlcmYvcGVyZiB0cmFjZSAuL2Eu b3V0Cj4gR05VIGdkYiAoRGViaWFuIDE1LjEtMSkgMTUuMQo+IC4uLgo+IFJlYWRpbmcgc3ltYm9s cyBmcm9tIC90bXAvcGVyZi9wZXJmLi4uCj4gKGdkYikgYiBzeXNjYWxsdGJsX19uYW1lCj4gQnJl YWtwb2ludCAxIGF0IDB4MjNhNTFiOiBmaWxlIHV0aWwvc3lzY2FsbHRibC5jLCBsaW5lIDQ3Lgo+ IChnZGIpIHIKPiAuLi4KPiBbRGV0YWNoaW5nIGFmdGVyIHZmb3JrIGZyb20gY2hpbGQgcHJvY2Vz cyAyMTg4MjZdCj4gCj4gQnJlYWtwb2ludCAxLCBzeXNjYWxsdGJsX19uYW1lIChlX21hY2hpbmU9 MywgaWQ9MTEpIGF0IHV0aWwvc3lzY2FsbHRibC5jOjQ3Cj4gNDcgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBzeXNjYWxsdGJsICp0YWJsZSA9IGZpbmRfdGFibGUoZV9tYWNoaW5lKTsKPiBgYGAK PiBTbyB0aGUgZV9tYWNoaW5lIGlzIDMgd2hpY2ggY29ycmVzcG9uZHMgdG8gRU1fMzg2Lgo+IAo+ IEkndmUgbm90IGZpeGVkIGV2ZXJ5IHVzZSBvZiBzeXNjYWxsdGJsIGJ1dCBJIGJlbGlldmUgdGhp cyBvbmUgaXMgd29ya2luZy4KClN0cmFuZ2UuICBJJ20gc2VlaW5nIDYyICh4ODZfNjQpLgoKICAk IHN1ZG8gZ2RiIC1xIC0tYXJncyAuL3BlcmYgdHJhY2UgLi9hMzIub3V0CiAgUmVhZGluZyBzeW1i b2xzIGZyb20gLi9wZXJmLi4uCiAgKGdkYikgYiBzeXNjYWxsdGJsX19uYW1lCiAgQnJlYWtwb2lu dCAxIGF0IDB4Mjc5OThiOiBmaWxlIHV0aWwvc3lzY2FsbHRibC5jLCBsaW5lIDQ2LgogIChnZGIp IHIKICBTdGFydGluZyBwcm9ncmFtOiAvaG9tZS9uYW1oeXVuZy90bXAvcGVyZiB0cmFjZSAuL2Ez Mi5vdXQKICBbVGhyZWFkIGRlYnVnZ2luZyB1c2luZyBsaWJ0aHJlYWRfZGIgZW5hYmxlZF0KICBV c2luZyBob3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5ICIvbGliL3g4Nl82NC1saW51eC1nbnUvbGli dGhyZWFkX2RiLnNvLjEiLgogIFtEZXRhY2hpbmcgYWZ0ZXIgZm9yayBmcm9tIGNoaWxkIHByb2Nl c3MgODg2ODg4XQogIAogIEJyZWFrcG9pbnQgMSwgc3lzY2FsbHRibF9fbmFtZSAoZV9tYWNoaW5l PTYyLCBpZD0xNTYpIGF0IHV0aWwvc3lzY2FsbHRibC5jOjQ2CiAgNDYJewoKQnV0IHRoZSBiaW5h cnkgaXMgaTM4Ni4KCiAgJCBmaWxlIGEzMi5vdXQKICBhMzIub3V0OiBFTEYgMzItYml0IExTQiBw aWUgZXhlY3V0YWJsZSwgSW50ZWwgODAzODYsIHZlcnNpb24gMSAoU1lTViksIGR5bmFtaWNhbGx5 IGxpbmtlZCwgaW50ZXJwcmV0ZXIgL2xpYi9sZC1saW51eC5zby4yLAogIEJ1aWxkSURbc2hhMV09 NmVlYTg3M2M5MzkwMTJlNmM3MTVlOGYwMzAyNjE2NDJiZjYxY2I0ZSwgZm9yIEdOVS9MaW51eCAz LjIuMCwgbm90IHN0cmlwcGVkCiAgCiAgJCByZWFkZWxmIC1oIGEzMi5vdXQKICBFTEYgSGVhZGVy OgogICAgTWFnaWM6ICAgN2YgNDUgNGMgNDYgMDEgMDEgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgCiAgICBDbGFzczogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVMRjMyCiAgICBE YXRhOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIncyBjb21wbGVtZW50LCBsaXR0bGUg ZW5kaWFuCiAgICBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgKGN1cnJlbnQp CiAgICBPUy9BQkk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOSVggLSBTeXN0ZW0gVgog ICAgQUJJIFZlcnNpb246ICAgICAgICAgICAgICAgICAgICAgICAwCiAgICBUeXBlOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERZTiAoUG9zaXRpb24tSW5kZXBlbmRlbnQgRXhlY3V0YWJs ZSBmaWxlKQogICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbCA4MDM4 NgogICAgVmVyc2lvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAweDEKICAgIEVudHJ5IHBv aW50IGFkZHJlc3M6ICAgICAgICAgICAgICAgMHgxMGEwCiAgICBTdGFydCBvZiBwcm9ncmFtIGhl YWRlcnM6ICAgICAgICAgIDUyIChieXRlcyBpbnRvIGZpbGUpCiAgICBTdGFydCBvZiBzZWN0aW9u IGhlYWRlcnM6ICAgICAgICAgIDEzOTMyIChieXRlcyBpbnRvIGZpbGUpCiAgICBGbGFnczogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MAogICAgU2l6ZSBvZiB0aGlzIGhlYWRlcjogICAg ICAgICAgICAgICA1MiAoYnl0ZXMpCiAgICBTaXplIG9mIHByb2dyYW0gaGVhZGVyczogICAgICAg ICAgIDMyIChieXRlcykKICAgIE51bWJlciBvZiBwcm9ncmFtIGhlYWRlcnM6ICAgICAgICAgMTEK ICAgIFNpemUgb2Ygc2VjdGlvbiBoZWFkZXJzOiAgICAgICAgICAgNDAgKGJ5dGVzKQogICAgTnVt YmVyIG9mIHNlY3Rpb24gaGVhZGVyczogICAgICAgICAzMAogICAgU2VjdGlvbiBoZWFkZXIgc3Ry aW5nIHRhYmxlIGluZGV4OiAyOQoKICAkIGhleGR1bXAgLUMgLW4gMzIgYTMyLm91dAogIDAwMDAw MDAwICA3ZiA0NSA0YyA0NiAwMSAwMSAwMSAwMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwu RUxGLi4uLi4uLi4uLi4ufAogIDAwMDAwMDEwICAwMyAwMCAwMyAwMCAwMSAwMCAwMCAwMCAgYTAg MTAgMDAgMDAgMzQgMDAgMDAgMDAgIHwuLi4uLi4uLi4uLi40Li4ufAogIDAwMDAwMDIwICAtLS0t LSAtLS0tLQogICAgICAgICAgICAgIF4gICAgIF4KCSAgICAgIHwgICAgIHwKCSAgIEVUX0RZTiAg IHwKCSAgICAgICAgICBFTV8zODYKClRoYW5rcywKTmFtaHl1bmcKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==