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 X-Spam-Level: X-Spam-Status: No, score=-5.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96063C433DB for ; Wed, 3 Feb 2021 09:48:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3FF8364F60 for ; Wed, 3 Feb 2021 09:48:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233477AbhBCJsi (ORCPT ); Wed, 3 Feb 2021 04:48:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50868 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232967AbhBCJsU (ORCPT ); Wed, 3 Feb 2021 04:48:20 -0500 Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5848AC061573 for ; Wed, 3 Feb 2021 01:47:40 -0800 (PST) Received: by mail-lf1-x12c.google.com with SMTP id f1so32396731lfu.3 for ; Wed, 03 Feb 2021 01:47:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtec.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=0AMrs3JS9ABopxu53Fe4YXqP4fCjBRvXi5TQqbzp9W0=; b=QPYIsTwnlspW+bG26mWcUpY2ycTyNoNCP1QCgGl0vpV/l0fykHWsWaY/LEIRQ23iSp cpyrUPPC51Ayf2WZxSElAx/gPyQTWc8col2KKEWhH1wZUTMrkherZKV4ZjpPWHsqSgBS yHMdw3/N2L6zsv1NgEAZLw6eKqAbyccVRkWWQvvzeFsftiqGB609HbmbBZ8q9yv2esOu yQgi9WMGAA2CV5pQSS6++HnW7EDByF7ysh0B8bOeCfdb6hMRpjKOdHZ7Kmco6tf8EZ7C L3UPT2AGavTMB5sYGOyDTCF0LVM34xaSFgNvuPuE71QrCXHCpSyiB4xbhk4PSU1KNyv+ 6n4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=0AMrs3JS9ABopxu53Fe4YXqP4fCjBRvXi5TQqbzp9W0=; b=R0uvbzMAOxyx5Mm0vspJwysHVbmCFpk41eVdew6fAhlfwGcJuVZj/yX73CeGr8QKhG XEesTK0g+oX3SVLWrh/YZjZd8QopM1tH9YYdTkPjM682UUEvT1MauGRKqnXaCa7qvGwU Gqc2I2zsOR1eZD5jQYUCUP0JNlLrGCyv5jeyRWhBxjD33mrA7j36JqMa1qnzMrHJMZ/d R44+b9hjEuIFreeHk/uAY3Ed8zx+LsYUcGBcZTslZcBm9iaD3wNhEp4EUDSOxGyHK0Aw dVYj9SfNtkGa4DWb3sAToF75he0IIVdW8/LaW/NU/qTY5B97yRnCfkJHNkeZLbC+BLwE wK7g== X-Gm-Message-State: AOAM532e+N4+s0xML83I4zJCpjnwm6IEvJeVCTAHVNkbMjKYXBx6JO5b 40BS0tnswkavKcQx/+FHNet38y7mHNLSqsAvolipJA== X-Google-Smtp-Source: ABdhPJztv0I+QYsdikve3SGTojMXwgToTquGUc4v0DBtcSNNsxTQmHk0jy7ycRIoZeFDI80sw+cXwY6ETR0GQKlogv0= X-Received: by 2002:a05:6512:2356:: with SMTP id p22mr1230693lfu.3.1612345658708; Wed, 03 Feb 2021 01:47:38 -0800 (PST) MIME-Version: 1.0 References: <58e41b62-b8e0-b036-c87d-a84d53f5a26e@amd.com> In-Reply-To: From: Daniel Gomez Date: Wed, 3 Feb 2021 10:47:27 +0100 Message-ID: Subject: Re: [amdgpu] deadlock To: Daniel Vetter Cc: =?UTF-8?Q?Christian_K=C3=B6nig?= , amd-gfx list , dri-devel , Alex Deucher , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 3 Feb 2021 at 10:17, Daniel Vetter wrote: > > On Wed, Feb 3, 2021 at 9:51 AM Christian K=C3=B6nig wrote: > > > > Am 03.02.21 um 09:48 schrieb Daniel Vetter: > > > On Wed, Feb 3, 2021 at 9:36 AM Christian K=C3=B6nig wrote: > > >> Hi Daniel, > > >> > > >> this is not a deadlock, but rather a hardware lockup. > > > Are you sure? Ime getting stuck in dma_fence_wait has generally good > > > chance of being a dma_fence deadlock. GPU hang should never result in > > > a forever stuck dma_fence. > > > > Yes, I'm pretty sure. Otherwise the hardware clocks wouldn't go up like > > this. > > Maybe clarifying, could be both. TDR should notice and get us out of > this, but if there's a dma_fence deadlock and we can't re-emit or > force complete the pending things, then we're stuck for good. > -Daniel > > > Question is rather why we end up in the userptr handling for GFX? Our > > ROCm OpenCL stack shouldn't use this. > > > > > Daniel, can you pls re-hang your machine and then dump backtraces of > > > all tasks into dmesg with sysrq-t, and then attach that? Without all > > > the backtraces it's tricky to construct the full dependency chain of > > > what's going on. Also is this plain -rc6, not some more patches on > > > top? > > > > Yeah, that's still a good idea to have. Here the full backtrace dmesg logs after the hang: https://pastebin.com/raw/kzivm2L3 This is another dmesg log with the backtraces after SIGKILL the matrix proc= ess: (I didn't have the sysrq enable at the time): https://pastebin.com/raw/pRBwGcj1 > > > > Christian. > > > > > -Daniel > > > > > >> Which OpenCl stack are you using? > > >> > > >> Regards, > > >> Christian. > > >> > > >> Am 03.02.21 um 09:33 schrieb Daniel Gomez: > > >>> Hi all, > > >>> > > >>> I have a deadlock with the amdgpu mainline driver when running in p= arallel two > > >>> OpenCL applications. So far, we've been able to replicate it easily= by executing > > >>> clinfo and MatrixMultiplication (from AMD opencl-samples). It's qui= te old the > > >>> opencl-samples so, if you have any other suggestion for testing I'd= be very > > >>> happy to test it as well. > > >>> > > >>> How to replicate the issue: > > >>> > > >>> # while true; do /usr/bin/MatrixMultiplication --device gpu \ > > >>> --deviceId 0 -x 1000 -y 1000 -z 1000 -q -t -i 50; done > > >>> # while true; do clinfo; done > > >>> > > >>> Output: > > >>> > > >>> After a minute or less (sometimes could be more) I can see that > > >>> MatrixMultiplication and clinfo hang. In addition, with radeontop y= ou can see > > >>> how the Graphics pipe goes from ~50% to 100%. Also the shader clock= s > > >>> goes up from ~35% to ~96%. > > >>> > > >>> clinfo keeps printing: > > >>> ioctl(7, DRM_IOCTL_SYNCOBJ_WAIT, 0x7ffe46e5f950) =3D -1 ETIME (Time= r expired) > > >>> > > >>> And MatrixMultiplication prints the following (strace) if you try t= o > > >>> kill the process: > > >>> > > >>> sched_yield() =3D 0 > > >>> futex(0x557e945343b8, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIM= E, 0, > > >>> NULL, FUTEX_BITSET_MATCH_ANYstrace: Process 651 detached > > >>> > > >>> > > >>> After this, the gpu is not functional at all and you'd need a power= cycle reset > > >>> to restore the system. > > >>> > > >>> Hardware info: > > >>> CPU: AMD Ryzen Embedded V1605B with Radeon Vega Gfx (8) @ 2.000GHz > > >>> GPU: AMD ATI Radeon Vega Series / Radeon Vega Mobile Series > > >>> > > >>> 03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. > > >>> [AMD/ATI] Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Seri= es] > > >>> (rev 83) > > >>> DeviceName: Broadcom 5762 > > >>> Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Raven Ridge > > >>> [Radeon Vega Series / Radeon Vega Mobile Series] > > >>> Kernel driver in use: amdgpu > > >>> Kernel modules: amdgpu > > >>> > > >>> Linux kernel info: > > >>> > > >>> root@qt5222:~# uname -a > > >>> Linux qt5222 5.11.0-rc6-qtec-standard #2 SMP Tue Feb 2 09:41:46 UTC > > >>> 2021 x86_64 x86_64 x86_64 GNU/Linux > > >>> > > >>> By enabling the kernel locks stats I could see the MatrixMultiplica= tion is > > >>> hanged in the amdgpu_mn_invalidate_gfx function: > > >>> > > >>> [ 738.359202] 1 lock held by MatrixMultiplic/653: > > >>> [ 738.359206] #0: ffff88810e364fe0 > > >>> (&adev->notifier_lock){+.+.}-{3:3}, at: > > >>> amdgpu_mn_invalidate_gfx+0x34/0xa0 [amdgpu] > > >>> > > >>> I can see in the the amdgpu_mn_invalidate_gfx function: the > > >>> dma_resv_wait_timeout_rcu uses wait_all (fences) and MAX_SCHEDULE_T= IMEOUT so, I > > >>> guess the code gets stuck there waiting forever. According to the > > >>> documentation: "When somebody tries to invalidate the page tables w= e block the > > >>> update until all operations on the pages in question are completed,= then those > > >>> pages are marked as accessed and also dirty if it wasn=E2=80=99t a= read only access." > > >>> Looks like the fences are deadlocked and therefore, it never return= s. Could it > > >>> be possible? any hint to where can I look to fix this? > > >>> > > >>> Thank you in advance. > > >>> > > >>> Here the full dmesg output: > > >>> > > >>> [ 738.337726] INFO: task MatrixMultiplic:653 blocked for more than= 122 seconds. > > >>> [ 738.344937] Not tainted 5.11.0-rc6-qtec-standard #2 > > >>> [ 738.350384] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" > > >>> disables this message. > > >>> [ 738.358240] task:MatrixMultiplic state:D stack: 0 pid: 653 > > >>> ppid: 1 flags:0x00004000 > > >>> [ 738.358254] Call Trace: > > >>> [ 738.358261] ? dma_fence_default_wait+0x1eb/0x230 > > >>> [ 738.358276] __schedule+0x370/0x960 > > >>> [ 738.358291] ? dma_fence_default_wait+0x117/0x230 > > >>> [ 738.358297] ? dma_fence_default_wait+0x1eb/0x230 > > >>> [ 738.358305] schedule+0x51/0xc0 > > >>> [ 738.358312] schedule_timeout+0x275/0x380 > > >>> [ 738.358324] ? dma_fence_default_wait+0x1eb/0x230 > > >>> [ 738.358332] ? mark_held_locks+0x4f/0x70 > > >>> [ 738.358341] ? dma_fence_default_wait+0x117/0x230 > > >>> [ 738.358347] ? lockdep_hardirqs_on_prepare+0xd4/0x180 > > >>> [ 738.358353] ? _raw_spin_unlock_irqrestore+0x39/0x40 > > >>> [ 738.358362] ? dma_fence_default_wait+0x117/0x230 > > >>> [ 738.358370] ? dma_fence_default_wait+0x1eb/0x230 > > >>> [ 738.358375] dma_fence_default_wait+0x214/0x230 > > >>> [ 738.358384] ? dma_fence_release+0x1a0/0x1a0 > > >>> [ 738.358396] dma_fence_wait_timeout+0x105/0x200 > > >>> [ 738.358405] dma_resv_wait_timeout_rcu+0x1aa/0x5e0 > > >>> [ 738.358421] amdgpu_mn_invalidate_gfx+0x55/0xa0 [amdgpu] > > >>> [ 738.358688] __mmu_notifier_release+0x1bb/0x210 > > >>> [ 738.358710] exit_mmap+0x2f/0x1e0 > > >>> [ 738.358723] ? find_held_lock+0x34/0xa0 > > >>> [ 738.358746] mmput+0x39/0xe0 > > >>> [ 738.358756] do_exit+0x5c3/0xc00 > > >>> [ 738.358763] ? find_held_lock+0x34/0xa0 > > >>> [ 738.358780] do_group_exit+0x47/0xb0 > > >>> [ 738.358791] get_signal+0x15b/0xc50 > > >>> [ 738.358807] arch_do_signal_or_restart+0xaf/0x710 > > >>> [ 738.358816] ? lockdep_hardirqs_on_prepare+0xd4/0x180 > > >>> [ 738.358822] ? _raw_spin_unlock_irqrestore+0x39/0x40 > > >>> [ 738.358831] ? ktime_get_mono_fast_ns+0x50/0xa0 > > >>> [ 738.358844] ? amdgpu_drm_ioctl+0x6b/0x80 [amdgpu] > > >>> [ 738.359044] exit_to_user_mode_prepare+0xf2/0x1b0 > > >>> [ 738.359054] syscall_exit_to_user_mode+0x19/0x60 > > >>> [ 738.359062] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > > >>> [ 738.359069] RIP: 0033:0x7f6b89a51887 > > >>> [ 738.359076] RSP: 002b:00007f6b82b54b18 EFLAGS: 00000246 ORIG_RAX= : > > >>> 0000000000000010 > > >>> [ 738.359086] RAX: fffffffffffffe00 RBX: 00007f6b82b54b50 RCX: 000= 07f6b89a51887 > > >>> [ 738.359091] RDX: 00007f6b82b54b50 RSI: 00000000c02064c3 RDI: 000= 0000000000007 > > >>> [ 738.359096] RBP: 00000000c02064c3 R08: 0000000000000003 R09: 000= 07f6b82b54bbc > > >>> [ 738.359101] R10: 0000000000000001 R11: 0000000000000246 R12: 000= 0000165a0bc00 > > >>> [ 738.359106] R13: 0000000000000007 R14: 0000000000000001 R15: 000= 0000000000000 > > >>> [ 738.359129] > > >>> Showing all locks held in the system: > > >>> [ 738.359141] 1 lock held by khungtaskd/54: > > >>> [ 738.359148] #0: ffffffff829f6840 (rcu_read_lock){....}-{1:2}, a= t: > > >>> debug_show_all_locks+0x15/0x183 > > >>> [ 738.359187] 1 lock held by systemd-journal/174: > > >>> [ 738.359202] 1 lock held by MatrixMultiplic/653: > > >>> [ 738.359206] #0: ffff88810e364fe0 > > >>> (&adev->notifier_lock){+.+.}-{3:3}, at: > > >>> amdgpu_mn_invalidate_gfx+0x34/0xa0 [amdgpu] > > >>> > > >>> Daniel > > >> _______________________________________________ > > >> dri-devel mailing list > > >> dri-devel@lists.freedesktop.org > > >> https://nam11.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2F= lists.freedesktop.org%2Fmailman%2Flistinfo%2Fdri-devel&data=3D04%7C01%7= Cchristian.koenig%40amd.com%7C81203e5bac5841b8e5a108d8c82087a9%7C3dd8961fe4= 884e608e11a82d994e183d%7C0%7C0%7C637479389339295622%7CUnknown%7CTWFpbGZsb3d= 8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&= amp;sdata=3DRDSxD6OqD8HaOA2VnNfbJwLnKzhCLgOr5SVLjLF91bA%3D&reserved=3D0 > > > > > > > > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch 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 X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92E29C433DB for ; Wed, 3 Feb 2021 09:47:42 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1095C64F61 for ; Wed, 3 Feb 2021 09:47:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1095C64F61 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=qtec.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 52CB46EA3C; Wed, 3 Feb 2021 09:47:41 +0000 (UTC) Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7CEF26EA3C for ; Wed, 3 Feb 2021 09:47:40 +0000 (UTC) Received: by mail-lf1-x130.google.com with SMTP id v24so32388131lfr.7 for ; Wed, 03 Feb 2021 01:47:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtec.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=0AMrs3JS9ABopxu53Fe4YXqP4fCjBRvXi5TQqbzp9W0=; b=QPYIsTwnlspW+bG26mWcUpY2ycTyNoNCP1QCgGl0vpV/l0fykHWsWaY/LEIRQ23iSp cpyrUPPC51Ayf2WZxSElAx/gPyQTWc8col2KKEWhH1wZUTMrkherZKV4ZjpPWHsqSgBS yHMdw3/N2L6zsv1NgEAZLw6eKqAbyccVRkWWQvvzeFsftiqGB609HbmbBZ8q9yv2esOu yQgi9WMGAA2CV5pQSS6++HnW7EDByF7ysh0B8bOeCfdb6hMRpjKOdHZ7Kmco6tf8EZ7C L3UPT2AGavTMB5sYGOyDTCF0LVM34xaSFgNvuPuE71QrCXHCpSyiB4xbhk4PSU1KNyv+ 6n4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=0AMrs3JS9ABopxu53Fe4YXqP4fCjBRvXi5TQqbzp9W0=; b=WePbG90G6iWFLlq7spIHEM61WUIN0pZFlAY3I61PHa5Xzcwx9c+KHG5R5lv970YCGy esEAbasnQKYOg+FJGp0JI+o9sXXsucKUjOmPp+nUX1qJ6BTCZJXBNQHTmaqbUUqz04kX EJuUETjE2Qpa8IHxI59sLYH0/D/kT0In3IElBN3p1E2mH9G3f1v9CFFlPDnYcqPQXD9W dsFMMXvF2kU4yLAwI+M/lS67LVfjYEMuK+9k6knQVLmYJKU/09Hv5Ou7QzLm7Hhc311z lW7uXN9UrtKQbXfByHqMBC2B7rm1rF+23L0Di71g+oCMLjha797avBzw09WDcwuc4AXq C7pg== X-Gm-Message-State: AOAM532qh/6G/tmVo/Z83uQXMzpz/lqAM9WO+hcY3yyS/+llT7YdX9bY KrYHlq1jxGD2xsxKZi9LvW6D4mTEK1tQnxhwy/mWIQ== X-Google-Smtp-Source: ABdhPJztv0I+QYsdikve3SGTojMXwgToTquGUc4v0DBtcSNNsxTQmHk0jy7ycRIoZeFDI80sw+cXwY6ETR0GQKlogv0= X-Received: by 2002:a05:6512:2356:: with SMTP id p22mr1230693lfu.3.1612345658708; Wed, 03 Feb 2021 01:47:38 -0800 (PST) MIME-Version: 1.0 References: <58e41b62-b8e0-b036-c87d-a84d53f5a26e@amd.com> In-Reply-To: From: Daniel Gomez Date: Wed, 3 Feb 2021 10:47:27 +0100 Message-ID: Subject: Re: [amdgpu] deadlock To: Daniel Vetter X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alex Deucher , dri-devel , =?UTF-8?Q?Christian_K=C3=B6nig?= , amd-gfx list , Linux Kernel Mailing List Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gV2VkLCAzIEZlYiAyMDIxIGF0IDEwOjE3LCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwu Y2g+IHdyb3RlOgo+Cj4gT24gV2VkLCBGZWIgMywgMjAyMSBhdCA5OjUxIEFNIENocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4gd3JvdGU6Cj4gPgo+ID4gQW0gMDMuMDIu MjEgdW0gMDk6NDggc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+ID4gPiBPbiBXZWQsIEZlYiAzLCAy MDIxIGF0IDk6MzYgQU0gQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t PiB3cm90ZToKPiA+ID4+IEhpIERhbmllbCwKPiA+ID4+Cj4gPiA+PiB0aGlzIGlzIG5vdCBhIGRl YWRsb2NrLCBidXQgcmF0aGVyIGEgaGFyZHdhcmUgbG9ja3VwLgo+ID4gPiBBcmUgeW91IHN1cmU/ IEltZSBnZXR0aW5nIHN0dWNrIGluIGRtYV9mZW5jZV93YWl0IGhhcyBnZW5lcmFsbHkgZ29vZAo+ ID4gPiBjaGFuY2Ugb2YgYmVpbmcgYSBkbWFfZmVuY2UgZGVhZGxvY2suIEdQVSBoYW5nIHNob3Vs ZCBuZXZlciByZXN1bHQgaW4KPiA+ID4gYSBmb3JldmVyIHN0dWNrIGRtYV9mZW5jZS4KPiA+Cj4g PiBZZXMsIEknbSBwcmV0dHkgc3VyZS4gT3RoZXJ3aXNlIHRoZSBoYXJkd2FyZSBjbG9ja3Mgd291 bGRuJ3QgZ28gdXAgbGlrZQo+ID4gdGhpcy4KPgo+IE1heWJlIGNsYXJpZnlpbmcsIGNvdWxkIGJl IGJvdGguIFREUiBzaG91bGQgbm90aWNlIGFuZCBnZXQgdXMgb3V0IG9mCj4gdGhpcywgYnV0IGlm IHRoZXJlJ3MgYSBkbWFfZmVuY2UgZGVhZGxvY2sgYW5kIHdlIGNhbid0IHJlLWVtaXQgb3IKPiBm b3JjZSBjb21wbGV0ZSB0aGUgcGVuZGluZyB0aGluZ3MsIHRoZW4gd2UncmUgc3R1Y2sgZm9yIGdv b2QuCj4gLURhbmllbAo+Cj4gPiBRdWVzdGlvbiBpcyByYXRoZXIgd2h5IHdlIGVuZCB1cCBpbiB0 aGUgdXNlcnB0ciBoYW5kbGluZyBmb3IgR0ZYPyBPdXIKPiA+IFJPQ20gT3BlbkNMIHN0YWNrIHNo b3VsZG4ndCB1c2UgdGhpcy4KPiA+Cj4gPiA+IERhbmllbCwgY2FuIHlvdSBwbHMgcmUtaGFuZyB5 b3VyIG1hY2hpbmUgYW5kIHRoZW4gZHVtcCBiYWNrdHJhY2VzIG9mCj4gPiA+IGFsbCB0YXNrcyBp bnRvIGRtZXNnIHdpdGggc3lzcnEtdCwgYW5kIHRoZW4gYXR0YWNoIHRoYXQ/IFdpdGhvdXQgYWxs Cj4gPiA+IHRoZSBiYWNrdHJhY2VzIGl0J3MgdHJpY2t5IHRvIGNvbnN0cnVjdCB0aGUgZnVsbCBk ZXBlbmRlbmN5IGNoYWluIG9mCj4gPiA+IHdoYXQncyBnb2luZyBvbi4gQWxzbyBpcyB0aGlzIHBs YWluIC1yYzYsIG5vdCBzb21lIG1vcmUgcGF0Y2hlcyBvbgo+ID4gPiB0b3A/Cj4gPgo+ID4gWWVh aCwgdGhhdCdzIHN0aWxsIGEgZ29vZCBpZGVhIHRvIGhhdmUuCgpIZXJlIHRoZSBmdWxsIGJhY2t0 cmFjZSBkbWVzZyBsb2dzIGFmdGVyIHRoZSBoYW5nOgpodHRwczovL3Bhc3RlYmluLmNvbS9yYXcv a3ppdm0yTDMKClRoaXMgaXMgYW5vdGhlciBkbWVzZyBsb2cgd2l0aCB0aGUgYmFja3RyYWNlcyBh ZnRlciBTSUdLSUxMIHRoZSBtYXRyaXggcHJvY2VzczoKKEkgZGlkbid0IGhhdmUgdGhlIHN5c3Jx IGVuYWJsZSBhdCB0aGUgdGltZSk6Cmh0dHBzOi8vcGFzdGViaW4uY29tL3Jhdy9wUkJ3R2NqMQoK PiA+Cj4gPiBDaHJpc3RpYW4uCj4gPgo+ID4gPiAtRGFuaWVsCj4gPiA+Cj4gPiA+PiBXaGljaCBP cGVuQ2wgc3RhY2sgYXJlIHlvdSB1c2luZz8KPiA+ID4+Cj4gPiA+PiBSZWdhcmRzLAo+ID4gPj4g Q2hyaXN0aWFuLgo+ID4gPj4KPiA+ID4+IEFtIDAzLjAyLjIxIHVtIDA5OjMzIHNjaHJpZWIgRGFu aWVsIEdvbWV6Ogo+ID4gPj4+IEhpIGFsbCwKPiA+ID4+Pgo+ID4gPj4+IEkgaGF2ZSBhIGRlYWRs b2NrIHdpdGggdGhlIGFtZGdwdSBtYWlubGluZSBkcml2ZXIgd2hlbiBydW5uaW5nIGluIHBhcmFs bGVsIHR3bwo+ID4gPj4+IE9wZW5DTCBhcHBsaWNhdGlvbnMuIFNvIGZhciwgd2UndmUgYmVlbiBh YmxlIHRvIHJlcGxpY2F0ZSBpdCBlYXNpbHkgYnkgZXhlY3V0aW5nCj4gPiA+Pj4gY2xpbmZvIGFu ZCBNYXRyaXhNdWx0aXBsaWNhdGlvbiAoZnJvbSBBTUQgb3BlbmNsLXNhbXBsZXMpLiBJdCdzIHF1 aXRlIG9sZCB0aGUKPiA+ID4+PiBvcGVuY2wtc2FtcGxlcyBzbywgaWYgeW91IGhhdmUgYW55IG90 aGVyIHN1Z2dlc3Rpb24gZm9yIHRlc3RpbmcgSSdkIGJlIHZlcnkKPiA+ID4+PiBoYXBweSB0byB0 ZXN0IGl0IGFzIHdlbGwuCj4gPiA+Pj4KPiA+ID4+PiBIb3cgdG8gcmVwbGljYXRlIHRoZSBpc3N1 ZToKPiA+ID4+Pgo+ID4gPj4+ICMgd2hpbGUgdHJ1ZTsgZG8gL3Vzci9iaW4vTWF0cml4TXVsdGlw bGljYXRpb24gLS1kZXZpY2UgZ3B1IFwKPiA+ID4+PiAgICAgICAtLWRldmljZUlkIDAgLXggMTAw MCAteSAxMDAwIC16IDEwMDAgLXEgLXQgLWkgNTA7IGRvbmUKPiA+ID4+PiAjIHdoaWxlIHRydWU7 IGRvIGNsaW5mbzsgZG9uZQo+ID4gPj4+Cj4gPiA+Pj4gT3V0cHV0Ogo+ID4gPj4+Cj4gPiA+Pj4g QWZ0ZXIgYSBtaW51dGUgb3IgbGVzcyAoc29tZXRpbWVzIGNvdWxkIGJlIG1vcmUpIEkgY2FuIHNl ZSB0aGF0Cj4gPiA+Pj4gTWF0cml4TXVsdGlwbGljYXRpb24gYW5kIGNsaW5mbyBoYW5nLiBJbiBh ZGRpdGlvbiwgd2l0aCByYWRlb250b3AgeW91IGNhbiBzZWUKPiA+ID4+PiBob3cgdGhlIEdyYXBo aWNzIHBpcGUgZ29lcyBmcm9tIH41MCUgdG8gMTAwJS4gQWxzbyB0aGUgc2hhZGVyIGNsb2Nrcwo+ ID4gPj4+IGdvZXMgdXAgZnJvbSB+MzUlIHRvIH45NiUuCj4gPiA+Pj4KPiA+ID4+PiBjbGluZm8g a2VlcHMgcHJpbnRpbmc6Cj4gPiA+Pj4gaW9jdGwoNywgRFJNX0lPQ1RMX1NZTkNPQkpfV0FJVCwg MHg3ZmZlNDZlNWY5NTApID0gLTEgRVRJTUUgKFRpbWVyIGV4cGlyZWQpCj4gPiA+Pj4KPiA+ID4+ PiBBbmQgTWF0cml4TXVsdGlwbGljYXRpb24gcHJpbnRzIHRoZSBmb2xsb3dpbmcgKHN0cmFjZSkg aWYgeW91IHRyeSB0bwo+ID4gPj4+IGtpbGwgdGhlIHByb2Nlc3M6Cj4gPiA+Pj4KPiA+ID4+PiBz Y2hlZF95aWVsZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCj4gPiA+Pj4gZnV0ZXgo MHg1NTdlOTQ1MzQzYjgsIEZVVEVYX1dBSVRfQklUU0VUX1BSSVZBVEV8RlVURVhfQ0xPQ0tfUkVB TFRJTUUsIDAsCj4gPiA+Pj4gTlVMTCwgRlVURVhfQklUU0VUX01BVENIX0FOWXN0cmFjZTogUHJv Y2VzcyA2NTEgZGV0YWNoZWQKPiA+ID4+PiAgICA8ZGV0YWNoZWQgLi4uPgo+ID4gPj4+Cj4gPiA+ Pj4gQWZ0ZXIgdGhpcywgdGhlIGdwdSBpcyBub3QgZnVuY3Rpb25hbCBhdCBhbGwgYW5kIHlvdSdk IG5lZWQgYSBwb3dlciBjeWNsZSByZXNldAo+ID4gPj4+IHRvIHJlc3RvcmUgdGhlIHN5c3RlbS4K PiA+ID4+Pgo+ID4gPj4+IEhhcmR3YXJlIGluZm86Cj4gPiA+Pj4gQ1BVOiBBTUQgUnl6ZW4gRW1i ZWRkZWQgVjE2MDVCIHdpdGggUmFkZW9uIFZlZ2EgR2Z4ICg4KSBAIDIuMDAwR0h6Cj4gPiA+Pj4g R1BVOiBBTUQgQVRJIFJhZGVvbiBWZWdhIFNlcmllcyAvIFJhZGVvbiBWZWdhIE1vYmlsZSBTZXJp ZXMKPiA+ID4+Pgo+ID4gPj4+IDAzOjAwLjAgVkdBIGNvbXBhdGlibGUgY29udHJvbGxlcjogQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+ID4gPj4+IFtBTUQvQVRJXSBSYXZlbiBSaWRnZSBb UmFkZW9uIFZlZ2EgU2VyaWVzIC8gUmFkZW9uIFZlZ2EgTW9iaWxlIFNlcmllc10KPiA+ID4+PiAo cmV2IDgzKQo+ID4gPj4+ICAgICAgIERldmljZU5hbWU6IEJyb2FkY29tIDU3NjIKPiA+ID4+PiAg ICAgICBTdWJzeXN0ZW06IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldIFJh dmVuIFJpZGdlCj4gPiA+Pj4gW1JhZGVvbiBWZWdhIFNlcmllcyAvIFJhZGVvbiBWZWdhIE1vYmls ZSBTZXJpZXNdCj4gPiA+Pj4gICAgICAgS2VybmVsIGRyaXZlciBpbiB1c2U6IGFtZGdwdQo+ID4g Pj4+ICAgICAgIEtlcm5lbCBtb2R1bGVzOiBhbWRncHUKPiA+ID4+Pgo+ID4gPj4+IExpbnV4IGtl cm5lbCBpbmZvOgo+ID4gPj4+Cj4gPiA+Pj4gcm9vdEBxdDUyMjI6fiMgdW5hbWUgLWEKPiA+ID4+ PiBMaW51eCBxdDUyMjIgNS4xMS4wLXJjNi1xdGVjLXN0YW5kYXJkICMyIFNNUCBUdWUgRmViIDIg MDk6NDE6NDYgVVRDCj4gPiA+Pj4gMjAyMSB4ODZfNjQgeDg2XzY0IHg4Nl82NCBHTlUvTGludXgK PiA+ID4+Pgo+ID4gPj4+IEJ5IGVuYWJsaW5nIHRoZSBrZXJuZWwgbG9ja3Mgc3RhdHMgSSBjb3Vs ZCBzZWUgdGhlIE1hdHJpeE11bHRpcGxpY2F0aW9uIGlzCj4gPiA+Pj4gaGFuZ2VkIGluIHRoZSBh bWRncHVfbW5faW52YWxpZGF0ZV9nZnggZnVuY3Rpb246Cj4gPiA+Pj4KPiA+ID4+PiBbICA3Mzgu MzU5MjAyXSAxIGxvY2sgaGVsZCBieSBNYXRyaXhNdWx0aXBsaWMvNjUzOgo+ID4gPj4+IFsgIDcz OC4zNTkyMDZdICAjMDogZmZmZjg4ODEwZTM2NGZlMAo+ID4gPj4+ICgmYWRldi0+bm90aWZpZXJf bG9jayl7Ky4rLn0tezM6M30sIGF0Ogo+ID4gPj4+IGFtZGdwdV9tbl9pbnZhbGlkYXRlX2dmeCsw eDM0LzB4YTAgW2FtZGdwdV0KPiA+ID4+Pgo+ID4gPj4+IEkgY2FuIHNlZSBpbiB0aGUgdGhlIGFt ZGdwdV9tbl9pbnZhbGlkYXRlX2dmeCBmdW5jdGlvbjogdGhlCj4gPiA+Pj4gZG1hX3Jlc3Zfd2Fp dF90aW1lb3V0X3JjdSB1c2VzIHdhaXRfYWxsIChmZW5jZXMpIGFuZCBNQVhfU0NIRURVTEVfVElN RU9VVCBzbywgSQo+ID4gPj4+IGd1ZXNzIHRoZSBjb2RlIGdldHMgc3R1Y2sgdGhlcmUgd2FpdGlu ZyBmb3JldmVyLiBBY2NvcmRpbmcgdG8gdGhlCj4gPiA+Pj4gZG9jdW1lbnRhdGlvbjogIldoZW4g c29tZWJvZHkgdHJpZXMgdG8gaW52YWxpZGF0ZSB0aGUgcGFnZSB0YWJsZXMgd2UgYmxvY2sgdGhl Cj4gPiA+Pj4gdXBkYXRlIHVudGlsIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBwYWdlcyBpbiBxdWVz dGlvbiBhcmUgY29tcGxldGVkLCB0aGVuIHRob3NlCj4gPiA+Pj4gcGFnZXMgYXJlIG1hcmtlZCAg YXMgYWNjZXNzZWQgYW5kIGFsc28gZGlydHkgaWYgaXQgd2FzbuKAmXQgYSByZWFkIG9ubHkgYWNj ZXNzLiIKPiA+ID4+PiBMb29rcyBsaWtlIHRoZSBmZW5jZXMgYXJlIGRlYWRsb2NrZWQgYW5kIHRo ZXJlZm9yZSwgaXQgbmV2ZXIgcmV0dXJucy4gQ291bGQgaXQKPiA+ID4+PiBiZSBwb3NzaWJsZT8g YW55IGhpbnQgdG8gd2hlcmUgY2FuIEkgbG9vayB0byBmaXggdGhpcz8KPiA+ID4+Pgo+ID4gPj4+ IFRoYW5rIHlvdSAgaW4gYWR2YW5jZS4KPiA+ID4+Pgo+ID4gPj4+IEhlcmUgdGhlIGZ1bGwgZG1l c2cgb3V0cHV0Ogo+ID4gPj4+Cj4gPiA+Pj4gWyAgNzM4LjMzNzcyNl0gSU5GTzogdGFzayBNYXRy aXhNdWx0aXBsaWM6NjUzIGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjIgc2Vjb25kcy4KPiA+ID4+ PiBbICA3MzguMzQ0OTM3XSAgICAgICBOb3QgdGFpbnRlZCA1LjExLjAtcmM2LXF0ZWMtc3RhbmRh cmQgIzIKPiA+ID4+PiBbICA3MzguMzUwMzg0XSAiZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC9o dW5nX3Rhc2tfdGltZW91dF9zZWNzIgo+ID4gPj4+IGRpc2FibGVzIHRoaXMgbWVzc2FnZS4KPiA+ ID4+PiBbICA3MzguMzU4MjQwXSB0YXNrOk1hdHJpeE11bHRpcGxpYyBzdGF0ZTpEIHN0YWNrOiAg ICAwIHBpZDogIDY1Mwo+ID4gPj4+IHBwaWQ6ICAgICAxIGZsYWdzOjB4MDAwMDQwMDAKPiA+ID4+ PiBbICA3MzguMzU4MjU0XSBDYWxsIFRyYWNlOgo+ID4gPj4+IFsgIDczOC4zNTgyNjFdICA/IGRt YV9mZW5jZV9kZWZhdWx0X3dhaXQrMHgxZWIvMHgyMzAKPiA+ID4+PiBbICA3MzguMzU4Mjc2XSAg X19zY2hlZHVsZSsweDM3MC8weDk2MAo+ID4gPj4+IFsgIDczOC4zNTgyOTFdICA/IGRtYV9mZW5j ZV9kZWZhdWx0X3dhaXQrMHgxMTcvMHgyMzAKPiA+ID4+PiBbICA3MzguMzU4Mjk3XSAgPyBkbWFf ZmVuY2VfZGVmYXVsdF93YWl0KzB4MWViLzB4MjMwCj4gPiA+Pj4gWyAgNzM4LjM1ODMwNV0gIHNj aGVkdWxlKzB4NTEvMHhjMAo+ID4gPj4+IFsgIDczOC4zNTgzMTJdICBzY2hlZHVsZV90aW1lb3V0 KzB4Mjc1LzB4MzgwCj4gPiA+Pj4gWyAgNzM4LjM1ODMyNF0gID8gZG1hX2ZlbmNlX2RlZmF1bHRf d2FpdCsweDFlYi8weDIzMAo+ID4gPj4+IFsgIDczOC4zNTgzMzJdICA/IG1hcmtfaGVsZF9sb2Nr cysweDRmLzB4NzAKPiA+ID4+PiBbICA3MzguMzU4MzQxXSAgPyBkbWFfZmVuY2VfZGVmYXVsdF93 YWl0KzB4MTE3LzB4MjMwCj4gPiA+Pj4gWyAgNzM4LjM1ODM0N10gID8gbG9ja2RlcF9oYXJkaXJx c19vbl9wcmVwYXJlKzB4ZDQvMHgxODAKPiA+ID4+PiBbICA3MzguMzU4MzUzXSAgPyBfcmF3X3Nw aW5fdW5sb2NrX2lycXJlc3RvcmUrMHgzOS8weDQwCj4gPiA+Pj4gWyAgNzM4LjM1ODM2Ml0gID8g ZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCsweDExNy8weDIzMAo+ID4gPj4+IFsgIDczOC4zNTgzNzBd ICA/IGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQrMHgxZWIvMHgyMzAKPiA+ID4+PiBbICA3MzguMzU4 Mzc1XSAgZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCsweDIxNC8weDIzMAo+ID4gPj4+IFsgIDczOC4z NTgzODRdICA/IGRtYV9mZW5jZV9yZWxlYXNlKzB4MWEwLzB4MWEwCj4gPiA+Pj4gWyAgNzM4LjM1 ODM5Nl0gIGRtYV9mZW5jZV93YWl0X3RpbWVvdXQrMHgxMDUvMHgyMDAKPiA+ID4+PiBbICA3Mzgu MzU4NDA1XSAgZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdSsweDFhYS8weDVlMAo+ID4gPj4+IFsg IDczOC4zNTg0MjFdICBhbWRncHVfbW5faW52YWxpZGF0ZV9nZngrMHg1NS8weGEwIFthbWRncHVd Cj4gPiA+Pj4gWyAgNzM4LjM1ODY4OF0gIF9fbW11X25vdGlmaWVyX3JlbGVhc2UrMHgxYmIvMHgy MTAKPiA+ID4+PiBbICA3MzguMzU4NzEwXSAgZXhpdF9tbWFwKzB4MmYvMHgxZTAKPiA+ID4+PiBb ICA3MzguMzU4NzIzXSAgPyBmaW5kX2hlbGRfbG9jaysweDM0LzB4YTAKPiA+ID4+PiBbICA3Mzgu MzU4NzQ2XSAgbW1wdXQrMHgzOS8weGUwCj4gPiA+Pj4gWyAgNzM4LjM1ODc1Nl0gIGRvX2V4aXQr MHg1YzMvMHhjMDAKPiA+ID4+PiBbICA3MzguMzU4NzYzXSAgPyBmaW5kX2hlbGRfbG9jaysweDM0 LzB4YTAKPiA+ID4+PiBbICA3MzguMzU4NzgwXSAgZG9fZ3JvdXBfZXhpdCsweDQ3LzB4YjAKPiA+ ID4+PiBbICA3MzguMzU4NzkxXSAgZ2V0X3NpZ25hbCsweDE1Yi8weGM1MAo+ID4gPj4+IFsgIDcz OC4zNTg4MDddICBhcmNoX2RvX3NpZ25hbF9vcl9yZXN0YXJ0KzB4YWYvMHg3MTAKPiA+ID4+PiBb ICA3MzguMzU4ODE2XSAgPyBsb2NrZGVwX2hhcmRpcnFzX29uX3ByZXBhcmUrMHhkNC8weDE4MAo+ ID4gPj4+IFsgIDczOC4zNTg4MjJdICA/IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSsweDM5 LzB4NDAKPiA+ID4+PiBbICA3MzguMzU4ODMxXSAgPyBrdGltZV9nZXRfbW9ub19mYXN0X25zKzB4 NTAvMHhhMAo+ID4gPj4+IFsgIDczOC4zNTg4NDRdICA/IGFtZGdwdV9kcm1faW9jdGwrMHg2Yi8w eDgwIFthbWRncHVdCj4gPiA+Pj4gWyAgNzM4LjM1OTA0NF0gIGV4aXRfdG9fdXNlcl9tb2RlX3By ZXBhcmUrMHhmMi8weDFiMAo+ID4gPj4+IFsgIDczOC4zNTkwNTRdICBzeXNjYWxsX2V4aXRfdG9f dXNlcl9tb2RlKzB4MTkvMHg2MAo+ID4gPj4+IFsgIDczOC4zNTkwNjJdICBlbnRyeV9TWVNDQUxM XzY0X2FmdGVyX2h3ZnJhbWUrMHg0NC8weGE5Cj4gPiA+Pj4gWyAgNzM4LjM1OTA2OV0gUklQOiAw MDMzOjB4N2Y2Yjg5YTUxODg3Cj4gPiA+Pj4gWyAgNzM4LjM1OTA3Nl0gUlNQOiAwMDJiOjAwMDA3 ZjZiODJiNTRiMTggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDoKPiA+ID4+PiAwMDAwMDAwMDAw MDAwMDEwCj4gPiA+Pj4gWyAgNzM4LjM1OTA4Nl0gUkFYOiBmZmZmZmZmZmZmZmZmZTAwIFJCWDog MDAwMDdmNmI4MmI1NGI1MCBSQ1g6IDAwMDA3ZjZiODlhNTE4ODcKPiA+ID4+PiBbICA3MzguMzU5 MDkxXSBSRFg6IDAwMDA3ZjZiODJiNTRiNTAgUlNJOiAwMDAwMDAwMGMwMjA2NGMzIFJESTogMDAw MDAwMDAwMDAwMDAwNwo+ID4gPj4+IFsgIDczOC4zNTkwOTZdIFJCUDogMDAwMDAwMDBjMDIwNjRj MyBSMDg6IDAwMDAwMDAwMDAwMDAwMDMgUjA5OiAwMDAwN2Y2YjgyYjU0YmJjCj4gPiA+Pj4gWyAg NzM4LjM1OTEwMV0gUjEwOiAwMDAwMDAwMDAwMDAwMDAxIFIxMTogMDAwMDAwMDAwMDAwMDI0NiBS MTI6IDAwMDAwMDAxNjVhMGJjMDAKPiA+ID4+PiBbICA3MzguMzU5MTA2XSBSMTM6IDAwMDAwMDAw MDAwMDAwMDcgUjE0OiAwMDAwMDAwMDAwMDAwMDAxIFIxNTogMDAwMDAwMDAwMDAwMDAwMAo+ID4g Pj4+IFsgIDczOC4zNTkxMjldCj4gPiA+Pj4gICAgICAgICAgICAgICAgICBTaG93aW5nIGFsbCBs b2NrcyBoZWxkIGluIHRoZSBzeXN0ZW06Cj4gPiA+Pj4gWyAgNzM4LjM1OTE0MV0gMSBsb2NrIGhl bGQgYnkga2h1bmd0YXNrZC81NDoKPiA+ID4+PiBbICA3MzguMzU5MTQ4XSAgIzA6IGZmZmZmZmZm ODI5ZjY4NDAgKHJjdV9yZWFkX2xvY2spey4uLi59LXsxOjJ9LCBhdDoKPiA+ID4+PiBkZWJ1Z19z aG93X2FsbF9sb2NrcysweDE1LzB4MTgzCj4gPiA+Pj4gWyAgNzM4LjM1OTE4N10gMSBsb2NrIGhl bGQgYnkgc3lzdGVtZC1qb3VybmFsLzE3NDoKPiA+ID4+PiBbICA3MzguMzU5MjAyXSAxIGxvY2sg aGVsZCBieSBNYXRyaXhNdWx0aXBsaWMvNjUzOgo+ID4gPj4+IFsgIDczOC4zNTkyMDZdICAjMDog ZmZmZjg4ODEwZTM2NGZlMAo+ID4gPj4+ICgmYWRldi0+bm90aWZpZXJfbG9jayl7Ky4rLn0tezM6 M30sIGF0Ogo+ID4gPj4+IGFtZGdwdV9tbl9pbnZhbGlkYXRlX2dmeCsweDM0LzB4YTAgW2FtZGdw dV0KPiA+ID4+Pgo+ID4gPj4+IERhbmllbAo+ID4gPj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ ID4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4+IGh0dHBzOi8vbmFtMTEu c2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxpc3Rz LmZyZWVkZXNrdG9wLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5mbyUyRmRyaS1kZXZlbCZhbXA7ZGF0 YT0wNCU3QzAxJTdDY2hyaXN0aWFuLmtvZW5pZyU0MGFtZC5jb20lN0M4MTIwM2U1YmFjNTg0MWI4 ZTVhMTA4ZDhjODIwODdhOSU3QzNkZDg5NjFmZTQ4ODRlNjA4ZTExYTgyZDk5NGUxODNkJTdDMCU3 QzAlN0M2Mzc0NzkzODkzMzkyOTU2MjIlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKV0lqb2lN QzR3TGpBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazFoYVd3aUxDSlhWQ0k2TW4wJTNE JTdDMTAwMCZhbXA7c2RhdGE9UkRTeEQ2T3FEOEhhT0EyVm5OZmJKd0xuS3poQ0xnT3I1U1ZMakxG OTFiQSUzRCZhbXA7cmVzZXJ2ZWQ9MAo+ID4gPgo+ID4gPgo+ID4KPgo+Cj4gLS0KPiBEYW5pZWwg VmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg== 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 X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 305ADC433E0 for ; Wed, 3 Feb 2021 09:47:42 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 84A9864E93 for ; Wed, 3 Feb 2021 09:47:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 84A9864E93 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=qtec.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0457E6EA3B; Wed, 3 Feb 2021 09:47:41 +0000 (UTC) Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6783E6EA3B for ; Wed, 3 Feb 2021 09:47:40 +0000 (UTC) Received: by mail-lf1-x12b.google.com with SMTP id a12so32413151lfb.1 for ; Wed, 03 Feb 2021 01:47:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtec.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=0AMrs3JS9ABopxu53Fe4YXqP4fCjBRvXi5TQqbzp9W0=; b=QPYIsTwnlspW+bG26mWcUpY2ycTyNoNCP1QCgGl0vpV/l0fykHWsWaY/LEIRQ23iSp cpyrUPPC51Ayf2WZxSElAx/gPyQTWc8col2KKEWhH1wZUTMrkherZKV4ZjpPWHsqSgBS yHMdw3/N2L6zsv1NgEAZLw6eKqAbyccVRkWWQvvzeFsftiqGB609HbmbBZ8q9yv2esOu yQgi9WMGAA2CV5pQSS6++HnW7EDByF7ysh0B8bOeCfdb6hMRpjKOdHZ7Kmco6tf8EZ7C L3UPT2AGavTMB5sYGOyDTCF0LVM34xaSFgNvuPuE71QrCXHCpSyiB4xbhk4PSU1KNyv+ 6n4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=0AMrs3JS9ABopxu53Fe4YXqP4fCjBRvXi5TQqbzp9W0=; b=OPqaVkiiPIfj4oREkjHeRLfKAhuGBjziPAisfEO50KIkN3eL+XK6sejgTFq762nB0w 3a57jz/nEeVVykLMsI78sMqpHGiW0m8N5T3o5ht0oPZvV2T6l10/NscLN7JN0f9ZdGUT ElkwjWgarnMw36UclPCfZ3PL4XKEHgf6lLL4mI0D1eCRYxNYzudkK9/NcIsLFA3f4Kow xwUQwXJC0ygXr36iw70Yp2LGCb2u7YIwgam969arf3rf1VYFSdzD1T99z908SPakgzFr D3N30STryqc+HEHl4pBm98zh1PKyn9n4tFVvzKvQOl8kJVwk3g2+psmhx9YoU2xPrIW4 y2oQ== X-Gm-Message-State: AOAM533lJzWgColwRLVmaTa8b11MChkhsn7cFeK2+OR0PhOy2oZyjsyE 6WRpWZFhcb2OBWMXBaS62c4hY2KOL7FPpSN+08trNw== X-Google-Smtp-Source: ABdhPJztv0I+QYsdikve3SGTojMXwgToTquGUc4v0DBtcSNNsxTQmHk0jy7ycRIoZeFDI80sw+cXwY6ETR0GQKlogv0= X-Received: by 2002:a05:6512:2356:: with SMTP id p22mr1230693lfu.3.1612345658708; Wed, 03 Feb 2021 01:47:38 -0800 (PST) MIME-Version: 1.0 References: <58e41b62-b8e0-b036-c87d-a84d53f5a26e@amd.com> In-Reply-To: From: Daniel Gomez Date: Wed, 3 Feb 2021 10:47:27 +0100 Message-ID: Subject: Re: [amdgpu] deadlock To: Daniel Vetter X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alex Deucher , dri-devel , =?UTF-8?Q?Christian_K=C3=B6nig?= , amd-gfx list , Linux Kernel Mailing List Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" T24gV2VkLCAzIEZlYiAyMDIxIGF0IDEwOjE3LCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwu Y2g+IHdyb3RlOgo+Cj4gT24gV2VkLCBGZWIgMywgMjAyMSBhdCA5OjUxIEFNIENocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4gd3JvdGU6Cj4gPgo+ID4gQW0gMDMuMDIu MjEgdW0gMDk6NDggc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+ID4gPiBPbiBXZWQsIEZlYiAzLCAy MDIxIGF0IDk6MzYgQU0gQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t PiB3cm90ZToKPiA+ID4+IEhpIERhbmllbCwKPiA+ID4+Cj4gPiA+PiB0aGlzIGlzIG5vdCBhIGRl YWRsb2NrLCBidXQgcmF0aGVyIGEgaGFyZHdhcmUgbG9ja3VwLgo+ID4gPiBBcmUgeW91IHN1cmU/ IEltZSBnZXR0aW5nIHN0dWNrIGluIGRtYV9mZW5jZV93YWl0IGhhcyBnZW5lcmFsbHkgZ29vZAo+ ID4gPiBjaGFuY2Ugb2YgYmVpbmcgYSBkbWFfZmVuY2UgZGVhZGxvY2suIEdQVSBoYW5nIHNob3Vs ZCBuZXZlciByZXN1bHQgaW4KPiA+ID4gYSBmb3JldmVyIHN0dWNrIGRtYV9mZW5jZS4KPiA+Cj4g PiBZZXMsIEknbSBwcmV0dHkgc3VyZS4gT3RoZXJ3aXNlIHRoZSBoYXJkd2FyZSBjbG9ja3Mgd291 bGRuJ3QgZ28gdXAgbGlrZQo+ID4gdGhpcy4KPgo+IE1heWJlIGNsYXJpZnlpbmcsIGNvdWxkIGJl IGJvdGguIFREUiBzaG91bGQgbm90aWNlIGFuZCBnZXQgdXMgb3V0IG9mCj4gdGhpcywgYnV0IGlm IHRoZXJlJ3MgYSBkbWFfZmVuY2UgZGVhZGxvY2sgYW5kIHdlIGNhbid0IHJlLWVtaXQgb3IKPiBm b3JjZSBjb21wbGV0ZSB0aGUgcGVuZGluZyB0aGluZ3MsIHRoZW4gd2UncmUgc3R1Y2sgZm9yIGdv b2QuCj4gLURhbmllbAo+Cj4gPiBRdWVzdGlvbiBpcyByYXRoZXIgd2h5IHdlIGVuZCB1cCBpbiB0 aGUgdXNlcnB0ciBoYW5kbGluZyBmb3IgR0ZYPyBPdXIKPiA+IFJPQ20gT3BlbkNMIHN0YWNrIHNo b3VsZG4ndCB1c2UgdGhpcy4KPiA+Cj4gPiA+IERhbmllbCwgY2FuIHlvdSBwbHMgcmUtaGFuZyB5 b3VyIG1hY2hpbmUgYW5kIHRoZW4gZHVtcCBiYWNrdHJhY2VzIG9mCj4gPiA+IGFsbCB0YXNrcyBp bnRvIGRtZXNnIHdpdGggc3lzcnEtdCwgYW5kIHRoZW4gYXR0YWNoIHRoYXQ/IFdpdGhvdXQgYWxs Cj4gPiA+IHRoZSBiYWNrdHJhY2VzIGl0J3MgdHJpY2t5IHRvIGNvbnN0cnVjdCB0aGUgZnVsbCBk ZXBlbmRlbmN5IGNoYWluIG9mCj4gPiA+IHdoYXQncyBnb2luZyBvbi4gQWxzbyBpcyB0aGlzIHBs YWluIC1yYzYsIG5vdCBzb21lIG1vcmUgcGF0Y2hlcyBvbgo+ID4gPiB0b3A/Cj4gPgo+ID4gWWVh aCwgdGhhdCdzIHN0aWxsIGEgZ29vZCBpZGVhIHRvIGhhdmUuCgpIZXJlIHRoZSBmdWxsIGJhY2t0 cmFjZSBkbWVzZyBsb2dzIGFmdGVyIHRoZSBoYW5nOgpodHRwczovL3Bhc3RlYmluLmNvbS9yYXcv a3ppdm0yTDMKClRoaXMgaXMgYW5vdGhlciBkbWVzZyBsb2cgd2l0aCB0aGUgYmFja3RyYWNlcyBh ZnRlciBTSUdLSUxMIHRoZSBtYXRyaXggcHJvY2VzczoKKEkgZGlkbid0IGhhdmUgdGhlIHN5c3Jx IGVuYWJsZSBhdCB0aGUgdGltZSk6Cmh0dHBzOi8vcGFzdGViaW4uY29tL3Jhdy9wUkJ3R2NqMQoK PiA+Cj4gPiBDaHJpc3RpYW4uCj4gPgo+ID4gPiAtRGFuaWVsCj4gPiA+Cj4gPiA+PiBXaGljaCBP cGVuQ2wgc3RhY2sgYXJlIHlvdSB1c2luZz8KPiA+ID4+Cj4gPiA+PiBSZWdhcmRzLAo+ID4gPj4g Q2hyaXN0aWFuLgo+ID4gPj4KPiA+ID4+IEFtIDAzLjAyLjIxIHVtIDA5OjMzIHNjaHJpZWIgRGFu aWVsIEdvbWV6Ogo+ID4gPj4+IEhpIGFsbCwKPiA+ID4+Pgo+ID4gPj4+IEkgaGF2ZSBhIGRlYWRs b2NrIHdpdGggdGhlIGFtZGdwdSBtYWlubGluZSBkcml2ZXIgd2hlbiBydW5uaW5nIGluIHBhcmFs bGVsIHR3bwo+ID4gPj4+IE9wZW5DTCBhcHBsaWNhdGlvbnMuIFNvIGZhciwgd2UndmUgYmVlbiBh YmxlIHRvIHJlcGxpY2F0ZSBpdCBlYXNpbHkgYnkgZXhlY3V0aW5nCj4gPiA+Pj4gY2xpbmZvIGFu ZCBNYXRyaXhNdWx0aXBsaWNhdGlvbiAoZnJvbSBBTUQgb3BlbmNsLXNhbXBsZXMpLiBJdCdzIHF1 aXRlIG9sZCB0aGUKPiA+ID4+PiBvcGVuY2wtc2FtcGxlcyBzbywgaWYgeW91IGhhdmUgYW55IG90 aGVyIHN1Z2dlc3Rpb24gZm9yIHRlc3RpbmcgSSdkIGJlIHZlcnkKPiA+ID4+PiBoYXBweSB0byB0 ZXN0IGl0IGFzIHdlbGwuCj4gPiA+Pj4KPiA+ID4+PiBIb3cgdG8gcmVwbGljYXRlIHRoZSBpc3N1 ZToKPiA+ID4+Pgo+ID4gPj4+ICMgd2hpbGUgdHJ1ZTsgZG8gL3Vzci9iaW4vTWF0cml4TXVsdGlw bGljYXRpb24gLS1kZXZpY2UgZ3B1IFwKPiA+ID4+PiAgICAgICAtLWRldmljZUlkIDAgLXggMTAw MCAteSAxMDAwIC16IDEwMDAgLXEgLXQgLWkgNTA7IGRvbmUKPiA+ID4+PiAjIHdoaWxlIHRydWU7 IGRvIGNsaW5mbzsgZG9uZQo+ID4gPj4+Cj4gPiA+Pj4gT3V0cHV0Ogo+ID4gPj4+Cj4gPiA+Pj4g QWZ0ZXIgYSBtaW51dGUgb3IgbGVzcyAoc29tZXRpbWVzIGNvdWxkIGJlIG1vcmUpIEkgY2FuIHNl ZSB0aGF0Cj4gPiA+Pj4gTWF0cml4TXVsdGlwbGljYXRpb24gYW5kIGNsaW5mbyBoYW5nLiBJbiBh ZGRpdGlvbiwgd2l0aCByYWRlb250b3AgeW91IGNhbiBzZWUKPiA+ID4+PiBob3cgdGhlIEdyYXBo aWNzIHBpcGUgZ29lcyBmcm9tIH41MCUgdG8gMTAwJS4gQWxzbyB0aGUgc2hhZGVyIGNsb2Nrcwo+ ID4gPj4+IGdvZXMgdXAgZnJvbSB+MzUlIHRvIH45NiUuCj4gPiA+Pj4KPiA+ID4+PiBjbGluZm8g a2VlcHMgcHJpbnRpbmc6Cj4gPiA+Pj4gaW9jdGwoNywgRFJNX0lPQ1RMX1NZTkNPQkpfV0FJVCwg MHg3ZmZlNDZlNWY5NTApID0gLTEgRVRJTUUgKFRpbWVyIGV4cGlyZWQpCj4gPiA+Pj4KPiA+ID4+ PiBBbmQgTWF0cml4TXVsdGlwbGljYXRpb24gcHJpbnRzIHRoZSBmb2xsb3dpbmcgKHN0cmFjZSkg aWYgeW91IHRyeSB0bwo+ID4gPj4+IGtpbGwgdGhlIHByb2Nlc3M6Cj4gPiA+Pj4KPiA+ID4+PiBz Y2hlZF95aWVsZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCj4gPiA+Pj4gZnV0ZXgo MHg1NTdlOTQ1MzQzYjgsIEZVVEVYX1dBSVRfQklUU0VUX1BSSVZBVEV8RlVURVhfQ0xPQ0tfUkVB TFRJTUUsIDAsCj4gPiA+Pj4gTlVMTCwgRlVURVhfQklUU0VUX01BVENIX0FOWXN0cmFjZTogUHJv Y2VzcyA2NTEgZGV0YWNoZWQKPiA+ID4+PiAgICA8ZGV0YWNoZWQgLi4uPgo+ID4gPj4+Cj4gPiA+ Pj4gQWZ0ZXIgdGhpcywgdGhlIGdwdSBpcyBub3QgZnVuY3Rpb25hbCBhdCBhbGwgYW5kIHlvdSdk IG5lZWQgYSBwb3dlciBjeWNsZSByZXNldAo+ID4gPj4+IHRvIHJlc3RvcmUgdGhlIHN5c3RlbS4K PiA+ID4+Pgo+ID4gPj4+IEhhcmR3YXJlIGluZm86Cj4gPiA+Pj4gQ1BVOiBBTUQgUnl6ZW4gRW1i ZWRkZWQgVjE2MDVCIHdpdGggUmFkZW9uIFZlZ2EgR2Z4ICg4KSBAIDIuMDAwR0h6Cj4gPiA+Pj4g R1BVOiBBTUQgQVRJIFJhZGVvbiBWZWdhIFNlcmllcyAvIFJhZGVvbiBWZWdhIE1vYmlsZSBTZXJp ZXMKPiA+ID4+Pgo+ID4gPj4+IDAzOjAwLjAgVkdBIGNvbXBhdGlibGUgY29udHJvbGxlcjogQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+ID4gPj4+IFtBTUQvQVRJXSBSYXZlbiBSaWRnZSBb UmFkZW9uIFZlZ2EgU2VyaWVzIC8gUmFkZW9uIFZlZ2EgTW9iaWxlIFNlcmllc10KPiA+ID4+PiAo cmV2IDgzKQo+ID4gPj4+ICAgICAgIERldmljZU5hbWU6IEJyb2FkY29tIDU3NjIKPiA+ID4+PiAg ICAgICBTdWJzeXN0ZW06IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldIFJh dmVuIFJpZGdlCj4gPiA+Pj4gW1JhZGVvbiBWZWdhIFNlcmllcyAvIFJhZGVvbiBWZWdhIE1vYmls ZSBTZXJpZXNdCj4gPiA+Pj4gICAgICAgS2VybmVsIGRyaXZlciBpbiB1c2U6IGFtZGdwdQo+ID4g Pj4+ICAgICAgIEtlcm5lbCBtb2R1bGVzOiBhbWRncHUKPiA+ID4+Pgo+ID4gPj4+IExpbnV4IGtl cm5lbCBpbmZvOgo+ID4gPj4+Cj4gPiA+Pj4gcm9vdEBxdDUyMjI6fiMgdW5hbWUgLWEKPiA+ID4+ PiBMaW51eCBxdDUyMjIgNS4xMS4wLXJjNi1xdGVjLXN0YW5kYXJkICMyIFNNUCBUdWUgRmViIDIg MDk6NDE6NDYgVVRDCj4gPiA+Pj4gMjAyMSB4ODZfNjQgeDg2XzY0IHg4Nl82NCBHTlUvTGludXgK PiA+ID4+Pgo+ID4gPj4+IEJ5IGVuYWJsaW5nIHRoZSBrZXJuZWwgbG9ja3Mgc3RhdHMgSSBjb3Vs ZCBzZWUgdGhlIE1hdHJpeE11bHRpcGxpY2F0aW9uIGlzCj4gPiA+Pj4gaGFuZ2VkIGluIHRoZSBh bWRncHVfbW5faW52YWxpZGF0ZV9nZnggZnVuY3Rpb246Cj4gPiA+Pj4KPiA+ID4+PiBbICA3Mzgu MzU5MjAyXSAxIGxvY2sgaGVsZCBieSBNYXRyaXhNdWx0aXBsaWMvNjUzOgo+ID4gPj4+IFsgIDcz OC4zNTkyMDZdICAjMDogZmZmZjg4ODEwZTM2NGZlMAo+ID4gPj4+ICgmYWRldi0+bm90aWZpZXJf bG9jayl7Ky4rLn0tezM6M30sIGF0Ogo+ID4gPj4+IGFtZGdwdV9tbl9pbnZhbGlkYXRlX2dmeCsw eDM0LzB4YTAgW2FtZGdwdV0KPiA+ID4+Pgo+ID4gPj4+IEkgY2FuIHNlZSBpbiB0aGUgdGhlIGFt ZGdwdV9tbl9pbnZhbGlkYXRlX2dmeCBmdW5jdGlvbjogdGhlCj4gPiA+Pj4gZG1hX3Jlc3Zfd2Fp dF90aW1lb3V0X3JjdSB1c2VzIHdhaXRfYWxsIChmZW5jZXMpIGFuZCBNQVhfU0NIRURVTEVfVElN RU9VVCBzbywgSQo+ID4gPj4+IGd1ZXNzIHRoZSBjb2RlIGdldHMgc3R1Y2sgdGhlcmUgd2FpdGlu ZyBmb3JldmVyLiBBY2NvcmRpbmcgdG8gdGhlCj4gPiA+Pj4gZG9jdW1lbnRhdGlvbjogIldoZW4g c29tZWJvZHkgdHJpZXMgdG8gaW52YWxpZGF0ZSB0aGUgcGFnZSB0YWJsZXMgd2UgYmxvY2sgdGhl Cj4gPiA+Pj4gdXBkYXRlIHVudGlsIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBwYWdlcyBpbiBxdWVz dGlvbiBhcmUgY29tcGxldGVkLCB0aGVuIHRob3NlCj4gPiA+Pj4gcGFnZXMgYXJlIG1hcmtlZCAg YXMgYWNjZXNzZWQgYW5kIGFsc28gZGlydHkgaWYgaXQgd2FzbuKAmXQgYSByZWFkIG9ubHkgYWNj ZXNzLiIKPiA+ID4+PiBMb29rcyBsaWtlIHRoZSBmZW5jZXMgYXJlIGRlYWRsb2NrZWQgYW5kIHRo ZXJlZm9yZSwgaXQgbmV2ZXIgcmV0dXJucy4gQ291bGQgaXQKPiA+ID4+PiBiZSBwb3NzaWJsZT8g YW55IGhpbnQgdG8gd2hlcmUgY2FuIEkgbG9vayB0byBmaXggdGhpcz8KPiA+ID4+Pgo+ID4gPj4+ IFRoYW5rIHlvdSAgaW4gYWR2YW5jZS4KPiA+ID4+Pgo+ID4gPj4+IEhlcmUgdGhlIGZ1bGwgZG1l c2cgb3V0cHV0Ogo+ID4gPj4+Cj4gPiA+Pj4gWyAgNzM4LjMzNzcyNl0gSU5GTzogdGFzayBNYXRy aXhNdWx0aXBsaWM6NjUzIGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjIgc2Vjb25kcy4KPiA+ID4+ PiBbICA3MzguMzQ0OTM3XSAgICAgICBOb3QgdGFpbnRlZCA1LjExLjAtcmM2LXF0ZWMtc3RhbmRh cmQgIzIKPiA+ID4+PiBbICA3MzguMzUwMzg0XSAiZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC9o dW5nX3Rhc2tfdGltZW91dF9zZWNzIgo+ID4gPj4+IGRpc2FibGVzIHRoaXMgbWVzc2FnZS4KPiA+ ID4+PiBbICA3MzguMzU4MjQwXSB0YXNrOk1hdHJpeE11bHRpcGxpYyBzdGF0ZTpEIHN0YWNrOiAg ICAwIHBpZDogIDY1Mwo+ID4gPj4+IHBwaWQ6ICAgICAxIGZsYWdzOjB4MDAwMDQwMDAKPiA+ID4+ PiBbICA3MzguMzU4MjU0XSBDYWxsIFRyYWNlOgo+ID4gPj4+IFsgIDczOC4zNTgyNjFdICA/IGRt YV9mZW5jZV9kZWZhdWx0X3dhaXQrMHgxZWIvMHgyMzAKPiA+ID4+PiBbICA3MzguMzU4Mjc2XSAg X19zY2hlZHVsZSsweDM3MC8weDk2MAo+ID4gPj4+IFsgIDczOC4zNTgyOTFdICA/IGRtYV9mZW5j ZV9kZWZhdWx0X3dhaXQrMHgxMTcvMHgyMzAKPiA+ID4+PiBbICA3MzguMzU4Mjk3XSAgPyBkbWFf ZmVuY2VfZGVmYXVsdF93YWl0KzB4MWViLzB4MjMwCj4gPiA+Pj4gWyAgNzM4LjM1ODMwNV0gIHNj aGVkdWxlKzB4NTEvMHhjMAo+ID4gPj4+IFsgIDczOC4zNTgzMTJdICBzY2hlZHVsZV90aW1lb3V0 KzB4Mjc1LzB4MzgwCj4gPiA+Pj4gWyAgNzM4LjM1ODMyNF0gID8gZG1hX2ZlbmNlX2RlZmF1bHRf d2FpdCsweDFlYi8weDIzMAo+ID4gPj4+IFsgIDczOC4zNTgzMzJdICA/IG1hcmtfaGVsZF9sb2Nr cysweDRmLzB4NzAKPiA+ID4+PiBbICA3MzguMzU4MzQxXSAgPyBkbWFfZmVuY2VfZGVmYXVsdF93 YWl0KzB4MTE3LzB4MjMwCj4gPiA+Pj4gWyAgNzM4LjM1ODM0N10gID8gbG9ja2RlcF9oYXJkaXJx c19vbl9wcmVwYXJlKzB4ZDQvMHgxODAKPiA+ID4+PiBbICA3MzguMzU4MzUzXSAgPyBfcmF3X3Nw aW5fdW5sb2NrX2lycXJlc3RvcmUrMHgzOS8weDQwCj4gPiA+Pj4gWyAgNzM4LjM1ODM2Ml0gID8g ZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCsweDExNy8weDIzMAo+ID4gPj4+IFsgIDczOC4zNTgzNzBd ICA/IGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQrMHgxZWIvMHgyMzAKPiA+ID4+PiBbICA3MzguMzU4 Mzc1XSAgZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCsweDIxNC8weDIzMAo+ID4gPj4+IFsgIDczOC4z NTgzODRdICA/IGRtYV9mZW5jZV9yZWxlYXNlKzB4MWEwLzB4MWEwCj4gPiA+Pj4gWyAgNzM4LjM1 ODM5Nl0gIGRtYV9mZW5jZV93YWl0X3RpbWVvdXQrMHgxMDUvMHgyMDAKPiA+ID4+PiBbICA3Mzgu MzU4NDA1XSAgZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdSsweDFhYS8weDVlMAo+ID4gPj4+IFsg IDczOC4zNTg0MjFdICBhbWRncHVfbW5faW52YWxpZGF0ZV9nZngrMHg1NS8weGEwIFthbWRncHVd Cj4gPiA+Pj4gWyAgNzM4LjM1ODY4OF0gIF9fbW11X25vdGlmaWVyX3JlbGVhc2UrMHgxYmIvMHgy MTAKPiA+ID4+PiBbICA3MzguMzU4NzEwXSAgZXhpdF9tbWFwKzB4MmYvMHgxZTAKPiA+ID4+PiBb ICA3MzguMzU4NzIzXSAgPyBmaW5kX2hlbGRfbG9jaysweDM0LzB4YTAKPiA+ID4+PiBbICA3Mzgu MzU4NzQ2XSAgbW1wdXQrMHgzOS8weGUwCj4gPiA+Pj4gWyAgNzM4LjM1ODc1Nl0gIGRvX2V4aXQr MHg1YzMvMHhjMDAKPiA+ID4+PiBbICA3MzguMzU4NzYzXSAgPyBmaW5kX2hlbGRfbG9jaysweDM0 LzB4YTAKPiA+ID4+PiBbICA3MzguMzU4NzgwXSAgZG9fZ3JvdXBfZXhpdCsweDQ3LzB4YjAKPiA+ ID4+PiBbICA3MzguMzU4NzkxXSAgZ2V0X3NpZ25hbCsweDE1Yi8weGM1MAo+ID4gPj4+IFsgIDcz OC4zNTg4MDddICBhcmNoX2RvX3NpZ25hbF9vcl9yZXN0YXJ0KzB4YWYvMHg3MTAKPiA+ID4+PiBb ICA3MzguMzU4ODE2XSAgPyBsb2NrZGVwX2hhcmRpcnFzX29uX3ByZXBhcmUrMHhkNC8weDE4MAo+ ID4gPj4+IFsgIDczOC4zNTg4MjJdICA/IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSsweDM5 LzB4NDAKPiA+ID4+PiBbICA3MzguMzU4ODMxXSAgPyBrdGltZV9nZXRfbW9ub19mYXN0X25zKzB4 NTAvMHhhMAo+ID4gPj4+IFsgIDczOC4zNTg4NDRdICA/IGFtZGdwdV9kcm1faW9jdGwrMHg2Yi8w eDgwIFthbWRncHVdCj4gPiA+Pj4gWyAgNzM4LjM1OTA0NF0gIGV4aXRfdG9fdXNlcl9tb2RlX3By ZXBhcmUrMHhmMi8weDFiMAo+ID4gPj4+IFsgIDczOC4zNTkwNTRdICBzeXNjYWxsX2V4aXRfdG9f dXNlcl9tb2RlKzB4MTkvMHg2MAo+ID4gPj4+IFsgIDczOC4zNTkwNjJdICBlbnRyeV9TWVNDQUxM XzY0X2FmdGVyX2h3ZnJhbWUrMHg0NC8weGE5Cj4gPiA+Pj4gWyAgNzM4LjM1OTA2OV0gUklQOiAw MDMzOjB4N2Y2Yjg5YTUxODg3Cj4gPiA+Pj4gWyAgNzM4LjM1OTA3Nl0gUlNQOiAwMDJiOjAwMDA3 ZjZiODJiNTRiMTggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDoKPiA+ID4+PiAwMDAwMDAwMDAw MDAwMDEwCj4gPiA+Pj4gWyAgNzM4LjM1OTA4Nl0gUkFYOiBmZmZmZmZmZmZmZmZmZTAwIFJCWDog MDAwMDdmNmI4MmI1NGI1MCBSQ1g6IDAwMDA3ZjZiODlhNTE4ODcKPiA+ID4+PiBbICA3MzguMzU5 MDkxXSBSRFg6IDAwMDA3ZjZiODJiNTRiNTAgUlNJOiAwMDAwMDAwMGMwMjA2NGMzIFJESTogMDAw MDAwMDAwMDAwMDAwNwo+ID4gPj4+IFsgIDczOC4zNTkwOTZdIFJCUDogMDAwMDAwMDBjMDIwNjRj MyBSMDg6IDAwMDAwMDAwMDAwMDAwMDMgUjA5OiAwMDAwN2Y2YjgyYjU0YmJjCj4gPiA+Pj4gWyAg NzM4LjM1OTEwMV0gUjEwOiAwMDAwMDAwMDAwMDAwMDAxIFIxMTogMDAwMDAwMDAwMDAwMDI0NiBS MTI6IDAwMDAwMDAxNjVhMGJjMDAKPiA+ID4+PiBbICA3MzguMzU5MTA2XSBSMTM6IDAwMDAwMDAw MDAwMDAwMDcgUjE0OiAwMDAwMDAwMDAwMDAwMDAxIFIxNTogMDAwMDAwMDAwMDAwMDAwMAo+ID4g Pj4+IFsgIDczOC4zNTkxMjldCj4gPiA+Pj4gICAgICAgICAgICAgICAgICBTaG93aW5nIGFsbCBs b2NrcyBoZWxkIGluIHRoZSBzeXN0ZW06Cj4gPiA+Pj4gWyAgNzM4LjM1OTE0MV0gMSBsb2NrIGhl bGQgYnkga2h1bmd0YXNrZC81NDoKPiA+ID4+PiBbICA3MzguMzU5MTQ4XSAgIzA6IGZmZmZmZmZm ODI5ZjY4NDAgKHJjdV9yZWFkX2xvY2spey4uLi59LXsxOjJ9LCBhdDoKPiA+ID4+PiBkZWJ1Z19z aG93X2FsbF9sb2NrcysweDE1LzB4MTgzCj4gPiA+Pj4gWyAgNzM4LjM1OTE4N10gMSBsb2NrIGhl bGQgYnkgc3lzdGVtZC1qb3VybmFsLzE3NDoKPiA+ID4+PiBbICA3MzguMzU5MjAyXSAxIGxvY2sg aGVsZCBieSBNYXRyaXhNdWx0aXBsaWMvNjUzOgo+ID4gPj4+IFsgIDczOC4zNTkyMDZdICAjMDog ZmZmZjg4ODEwZTM2NGZlMAo+ID4gPj4+ICgmYWRldi0+bm90aWZpZXJfbG9jayl7Ky4rLn0tezM6 M30sIGF0Ogo+ID4gPj4+IGFtZGdwdV9tbl9pbnZhbGlkYXRlX2dmeCsweDM0LzB4YTAgW2FtZGdw dV0KPiA+ID4+Pgo+ID4gPj4+IERhbmllbAo+ID4gPj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ ID4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4+IGh0dHBzOi8vbmFtMTEu c2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxpc3Rz LmZyZWVkZXNrdG9wLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5mbyUyRmRyaS1kZXZlbCZhbXA7ZGF0 YT0wNCU3QzAxJTdDY2hyaXN0aWFuLmtvZW5pZyU0MGFtZC5jb20lN0M4MTIwM2U1YmFjNTg0MWI4 ZTVhMTA4ZDhjODIwODdhOSU3QzNkZDg5NjFmZTQ4ODRlNjA4ZTExYTgyZDk5NGUxODNkJTdDMCU3 QzAlN0M2Mzc0NzkzODkzMzkyOTU2MjIlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKV0lqb2lN QzR3TGpBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazFoYVd3aUxDSlhWQ0k2TW4wJTNE JTdDMTAwMCZhbXA7c2RhdGE9UkRTeEQ2T3FEOEhhT0EyVm5OZmJKd0xuS3poQ0xnT3I1U1ZMakxG OTFiQSUzRCZhbXA7cmVzZXJ2ZWQ9MAo+ID4gPgo+ID4gPgo+ID4KPgo+Cj4gLS0KPiBEYW5pZWwg VmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==