From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robin Murphy Subject: Re: arm64: tegra186: bpmp: kernel crash while decompressing initrd Date: Mon, 11 May 2020 12:25:00 +0100 Message-ID: References: <20200508084041.23366-1-ykaukab@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20200508084041.23366-1-ykaukab-l3A5Bk7waGM@public.gmane.org> Content-Language: en-GB Sender: linux-tegra-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Mian Yousaf Kaukab , talho-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org, thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, afaerber-l3A5Bk7waGM@public.gmane.org List-Id: linux-tegra@vger.kernel.org On 2020-05-08 9:40 am, Mian Yousaf Kaukab wrote: > I am seeing following kernel crash on Jetson TX2. Board is flashed with > firmware bits from L4T R32.4.2 with upstream u-boot. Crash always > happens while decompressing initrd. Initrd is approximately 80 MiB in > size and compressed with xz (xz --check=crc32 --lzma2=dict=32MiB). > Crash is not observed if the same initrd is compressed with gzip. > [1] was a previous attempt to workaround the same issue. > > [ 0.651168] Trying to unpack rootfs image as initramfs... > [ 2.890171] SError Interrupt on CPU0, code 0xbf40c000 -- SError > [ 2.890174] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G S 5.7.0-rc4-next-20200505 #22 > [ 2.890175] Hardware name: nvidia p2771-0000/p2771-0000, BIOS 2020.04-rc3 03/25/2020 > [ 2.890176] pstate: 20000005 (nzCv daif -PAN -UAO BTYPE=--) > [ 2.890177] pc : lzma_main+0x648/0x908 > [ 2.890178] lr : lzma_main+0x330/0x908 > [ 2.890179] sp : ffff80001003bb70 > [ 2.890180] x29: ffff80001003bb70 x28: 0000000004d794a4 > [ 2.890183] x27: 0000000004769941 x26: ffff0001eb064000 > [ 2.890185] x25: ffff0001eb060028 x24: 0000000000000002 > [ 2.890187] x23: 0000000000000003 x22: 0000000000000007 > [ 2.890189] x21: 0000000000611f4b x20: ffff0001eb060000 > [ 2.890192] x19: ffff80001003bcb8 x18: 0000000000000068 > [ 2.890194] x17: 00000000000000c0 x16: fffffe00076b2108 > [ 2.890196] x15: 0000000000000800 x14: 0000000000ffffff > [ 2.890198] x13: 0000000000000001 x12: ffff0001eb060000 > [ 2.890200] x11: 0000000000000600 x10: ffff0001eb060028 > [ 2.890202] x9 : 00000000ffbb2a08 x8 : 0000000000000ed0 > [ 2.890204] x7 : 00000000011553ec x6 : 0000000000000000 > [ 2.890206] x5 : 0000000000000000 x4 : 0000000000000006 > [ 2.890208] x3 : 00000000015a29e4 x2 : ffff0001eb062d0c > [ 2.890210] x1 : 000000000000000c x0 : 000000000263de44 > > With some debugging aid ported from Nvidia downstream kernel [2] the > actual cause was found: > > [ 0.761525] Trying to unpack rootfs image as initramfs... > [ 2.955499] CPU0: SError: mpidr=0x80000100, esr=0xbf40c000 > [ 2.955502] CPU1: SError: mpidr=0x80000000, esr=0xbe000000 > [ 2.955505] CPU2: SError: mpidr=0x80000001, esr=0xbe000000 > [ 2.955506] CPU3: SError: mpidr=0x80000101, esr=0xbf40c000 > [ 2.955507] ROC:CCE Machine Check Error: > [ 2.955508] ROC:CCE Registers: > [ 2.955509] STAT: 0xb400000000400415 > [ 2.955510] ADDR: 0x400c00e7a00c > [ 2.955511] MSC1: 0x80ffc > [ 2.955512] MSC2: 0x3900000000800 > [ 2.955513] -------------------------------------- > [ 2.955514] Decoded ROC:CCE Machine Check: > [ 2.955515] Uncorrected (this is fatal) > [ 2.955516] Error reporting enabled when error arrived > [ 2.955517] Error Code = 0x415 > [ 2.955518] Poison Error > [ 2.955518] Command = NCRd (0xc) > [ 2.955519] Address Type = Non-Secure DRAM > [ 2.955521] Address = 0x30039e80 -- 30000000.sysram + 0x39e80 > [ 2.955521] TLimit = 0x3ff > [ 2.955522] Poison Error Mask = 0x80 > [ 2.955523] More Info = 0x800 > [ 2.955524] Timeout Info = 0x0 > [ 2.955525] Poison Info = 0x800 > [ 2.955526] Read Request failed GSC checks > [ 2.955527] Source = L2_1 (A57) (0x1) > [ 2.955528] TID = 0xe > > IIUC, there was read request for 0x30039e80 from EL1/2 which failed. > This address falls in the sysram security aperture and hence a read > from normal mode failed. > > sysram is mapped at 0x3000_0000 to 0x3004_ffff and is managed by the > sram driver (drivers/misc/sram.c). There are two reserved pools for > BPMP driver communication at 0x3004_e000 and 0x3004_f000 of 0x1000 > bytes each. > > sram driver maps complete 0x3000_0000 to 0x3004_ffff range as normal > memory. That's your problem. It's not really worth attempting to reason about, the architecture says that anything mapped as Normal memory may be speculatively accessed at any time, so no amount of second-guessing is going to save you in general. Don't make stuff accessible to the kernel that it doesn't need to access, and especially don't make stuff accessible to the kernel if accessing it will kill the system. > However, only the BPMP reserved pools (0x3004_e000 - 0x3004_ffff) > are accessible from the kernel. Address 0x3003_9e80 is inaccessible > from the kernel and a read to it (which I believe is speculative) > causes the SError. Only driver which uses sysram is not initialized at > this point (rootfs_initcall level). As since > commit d70f5e541ab3 ("firmware: tegra: Make BPMP a regular driver") > bpmp driver is initialized at device_initcall level. > > If none of the drivers on the kernel side using 0x3003_9e80 address > range. Why a read to it occurs even speculatively? Could it be that > some EL3 software didn’t cleanup after itself properly? Any > suggestions on debugging this issue further? > > Another solution suggested in [1] was to add no-memory-wc in sysram > node in device-tree so that sysram is mapped as device-memory. Thus > preventing any speculative access. However, it causes another set of > issues with the bpmp driver. That's may be a discussion for another > time. AFAICS the truly correct solution is what Stephen initially suggested there - for the boot process to somehow describe which parts of SRAM have been reserved by Secure software and/or which parts remain Non-Secure, and for the kernel driver to only map and use the latter. Robin. 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=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 0611DC47255 for ; Mon, 11 May 2020 11:25:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DAC612082E for ; Mon, 11 May 2020 11:25:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729594AbgEKLZI (ORCPT ); Mon, 11 May 2020 07:25:08 -0400 Received: from foss.arm.com ([217.140.110.172]:57958 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726068AbgEKLZH (ORCPT ); Mon, 11 May 2020 07:25:07 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D3D7F101E; Mon, 11 May 2020 04:25:06 -0700 (PDT) Received: from [10.57.36.85] (unknown [10.57.36.85]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 823AC3F305; Mon, 11 May 2020 04:25:05 -0700 (PDT) Subject: Re: arm64: tegra186: bpmp: kernel crash while decompressing initrd To: Mian Yousaf Kaukab , talho@nvidia.com, thierry.reding@gmail.com, jonathanh@nvidia.com, linux-tegra@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, afaerber@suse.de References: <20200508084041.23366-1-ykaukab@suse.de> From: Robin Murphy Message-ID: Date: Mon, 11 May 2020 12:25:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200508084041.23366-1-ykaukab@suse.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-05-08 9:40 am, Mian Yousaf Kaukab wrote: > I am seeing following kernel crash on Jetson TX2. Board is flashed with > firmware bits from L4T R32.4.2 with upstream u-boot. Crash always > happens while decompressing initrd. Initrd is approximately 80 MiB in > size and compressed with xz (xz --check=crc32 --lzma2=dict=32MiB). > Crash is not observed if the same initrd is compressed with gzip. > [1] was a previous attempt to workaround the same issue. > > [ 0.651168] Trying to unpack rootfs image as initramfs... > [ 2.890171] SError Interrupt on CPU0, code 0xbf40c000 -- SError > [ 2.890174] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G S 5.7.0-rc4-next-20200505 #22 > [ 2.890175] Hardware name: nvidia p2771-0000/p2771-0000, BIOS 2020.04-rc3 03/25/2020 > [ 2.890176] pstate: 20000005 (nzCv daif -PAN -UAO BTYPE=--) > [ 2.890177] pc : lzma_main+0x648/0x908 > [ 2.890178] lr : lzma_main+0x330/0x908 > [ 2.890179] sp : ffff80001003bb70 > [ 2.890180] x29: ffff80001003bb70 x28: 0000000004d794a4 > [ 2.890183] x27: 0000000004769941 x26: ffff0001eb064000 > [ 2.890185] x25: ffff0001eb060028 x24: 0000000000000002 > [ 2.890187] x23: 0000000000000003 x22: 0000000000000007 > [ 2.890189] x21: 0000000000611f4b x20: ffff0001eb060000 > [ 2.890192] x19: ffff80001003bcb8 x18: 0000000000000068 > [ 2.890194] x17: 00000000000000c0 x16: fffffe00076b2108 > [ 2.890196] x15: 0000000000000800 x14: 0000000000ffffff > [ 2.890198] x13: 0000000000000001 x12: ffff0001eb060000 > [ 2.890200] x11: 0000000000000600 x10: ffff0001eb060028 > [ 2.890202] x9 : 00000000ffbb2a08 x8 : 0000000000000ed0 > [ 2.890204] x7 : 00000000011553ec x6 : 0000000000000000 > [ 2.890206] x5 : 0000000000000000 x4 : 0000000000000006 > [ 2.890208] x3 : 00000000015a29e4 x2 : ffff0001eb062d0c > [ 2.890210] x1 : 000000000000000c x0 : 000000000263de44 > > With some debugging aid ported from Nvidia downstream kernel [2] the > actual cause was found: > > [ 0.761525] Trying to unpack rootfs image as initramfs... > [ 2.955499] CPU0: SError: mpidr=0x80000100, esr=0xbf40c000 > [ 2.955502] CPU1: SError: mpidr=0x80000000, esr=0xbe000000 > [ 2.955505] CPU2: SError: mpidr=0x80000001, esr=0xbe000000 > [ 2.955506] CPU3: SError: mpidr=0x80000101, esr=0xbf40c000 > [ 2.955507] ROC:CCE Machine Check Error: > [ 2.955508] ROC:CCE Registers: > [ 2.955509] STAT: 0xb400000000400415 > [ 2.955510] ADDR: 0x400c00e7a00c > [ 2.955511] MSC1: 0x80ffc > [ 2.955512] MSC2: 0x3900000000800 > [ 2.955513] -------------------------------------- > [ 2.955514] Decoded ROC:CCE Machine Check: > [ 2.955515] Uncorrected (this is fatal) > [ 2.955516] Error reporting enabled when error arrived > [ 2.955517] Error Code = 0x415 > [ 2.955518] Poison Error > [ 2.955518] Command = NCRd (0xc) > [ 2.955519] Address Type = Non-Secure DRAM > [ 2.955521] Address = 0x30039e80 -- 30000000.sysram + 0x39e80 > [ 2.955521] TLimit = 0x3ff > [ 2.955522] Poison Error Mask = 0x80 > [ 2.955523] More Info = 0x800 > [ 2.955524] Timeout Info = 0x0 > [ 2.955525] Poison Info = 0x800 > [ 2.955526] Read Request failed GSC checks > [ 2.955527] Source = L2_1 (A57) (0x1) > [ 2.955528] TID = 0xe > > IIUC, there was read request for 0x30039e80 from EL1/2 which failed. > This address falls in the sysram security aperture and hence a read > from normal mode failed. > > sysram is mapped at 0x3000_0000 to 0x3004_ffff and is managed by the > sram driver (drivers/misc/sram.c). There are two reserved pools for > BPMP driver communication at 0x3004_e000 and 0x3004_f000 of 0x1000 > bytes each. > > sram driver maps complete 0x3000_0000 to 0x3004_ffff range as normal > memory. That's your problem. It's not really worth attempting to reason about, the architecture says that anything mapped as Normal memory may be speculatively accessed at any time, so no amount of second-guessing is going to save you in general. Don't make stuff accessible to the kernel that it doesn't need to access, and especially don't make stuff accessible to the kernel if accessing it will kill the system. > However, only the BPMP reserved pools (0x3004_e000 - 0x3004_ffff) > are accessible from the kernel. Address 0x3003_9e80 is inaccessible > from the kernel and a read to it (which I believe is speculative) > causes the SError. Only driver which uses sysram is not initialized at > this point (rootfs_initcall level). As since > commit d70f5e541ab3 ("firmware: tegra: Make BPMP a regular driver") > bpmp driver is initialized at device_initcall level. > > If none of the drivers on the kernel side using 0x3003_9e80 address > range. Why a read to it occurs even speculatively? Could it be that > some EL3 software didn’t cleanup after itself properly? Any > suggestions on debugging this issue further? > > Another solution suggested in [1] was to add no-memory-wc in sysram > node in device-tree so that sysram is mapped as device-memory. Thus > preventing any speculative access. However, it causes another set of > issues with the bpmp driver. That's may be a discussion for another > time. AFAICS the truly correct solution is what Stephen initially suggested there - for the boot process to somehow describe which parts of SRAM have been reserved by Secure software and/or which parts remain Non-Secure, and for the kernel driver to only map and use the latter. Robin. 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=-2.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 60193C47255 for ; Mon, 11 May 2020 11:26:24 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 3141B20722 for ; Mon, 11 May 2020 11:26:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SRkGZseL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3141B20722 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=skONZw8oom7jW3kti7NoaUvWkB+hUNWVy2Vl8xgV9C0=; b=SRkGZseLs+0HYvU0KppoTsimY WCrVCgL+BA2umJotQSCux+7RNanV7gcnhEYHHhN3/TSWN/46+fMaOcgpzE8O1ZaB5i7LuASk+YmEi l44T6/ErIxUxOJmOSznmizdVonZv0J2XcyVP1w5TxBVkTttx1Lai1RKMGb8P6SzDU0T65Q5nuVedK X+KN/3F/n1l5iNLsoYYGsAKsKPx4w6P/JXCGgLG5MGLdrThOLeuLoi2zipdJGooEqKBCWmY7h03WC 1gZ5I44o4+fsAhm7mh+96SVL5H37keT1IBHGUtcgSELtZLzSyFdxUf9ja8dNt/cyP5bCY7fhUv5Q+ f/uLza0PQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jY6Zi-0006sy-T5; Mon, 11 May 2020 11:26:22 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jY6YX-00040f-Ok for linux-arm-kernel@lists.infradead.org; Mon, 11 May 2020 11:25:21 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D3D7F101E; Mon, 11 May 2020 04:25:06 -0700 (PDT) Received: from [10.57.36.85] (unknown [10.57.36.85]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 823AC3F305; Mon, 11 May 2020 04:25:05 -0700 (PDT) Subject: Re: arm64: tegra186: bpmp: kernel crash while decompressing initrd To: Mian Yousaf Kaukab , talho@nvidia.com, thierry.reding@gmail.com, jonathanh@nvidia.com, linux-tegra@vger.kernel.org References: <20200508084041.23366-1-ykaukab@suse.de> From: Robin Murphy Message-ID: Date: Mon, 11 May 2020 12:25:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200508084041.23366-1-ykaukab@suse.de> Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200511_042509_964504_F2E17F9A X-CRM114-Status: GOOD ( 23.79 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, afaerber@suse.de Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMC0wNS0wOCA5OjQwIGFtLCBNaWFuIFlvdXNhZiBLYXVrYWIgd3JvdGU6Cj4gSSBhbSBz ZWVpbmcgZm9sbG93aW5nIGtlcm5lbCBjcmFzaCBvbiBKZXRzb24gVFgyLiBCb2FyZCBpcyBmbGFz aGVkIHdpdGgKPiBmaXJtd2FyZSBiaXRzIGZyb20gTDRUIFIzMi40LjIgd2l0aCB1cHN0cmVhbSB1 LWJvb3QuIENyYXNoIGFsd2F5cwo+IGhhcHBlbnMgd2hpbGUgZGVjb21wcmVzc2luZyBpbml0cmQu IEluaXRyZCBpcyBhcHByb3hpbWF0ZWx5IDgwIE1pQiBpbgo+IHNpemUgYW5kIGNvbXByZXNzZWQg d2l0aCB4eiAoeHogLS1jaGVjaz1jcmMzMiAtLWx6bWEyPWRpY3Q9MzJNaUIpLgo+IENyYXNoIGlz IG5vdCBvYnNlcnZlZCBpZiB0aGUgc2FtZSBpbml0cmQgaXMgY29tcHJlc3NlZCB3aXRoIGd6aXAu Cj4gWzFdIHdhcyBhIHByZXZpb3VzIGF0dGVtcHQgdG8gd29ya2Fyb3VuZCB0aGUgc2FtZSBpc3N1 ZS4KPiAKPiBbICAgIDAuNjUxMTY4XSBUcnlpbmcgdG8gdW5wYWNrIHJvb3RmcyBpbWFnZSBhcyBp bml0cmFtZnMuLi4KPiBbICAgIDIuODkwMTcxXSBTRXJyb3IgSW50ZXJydXB0IG9uIENQVTAsIGNv ZGUgMHhiZjQwYzAwMCAtLSBTRXJyb3IKPiBbICAgIDIuODkwMTc0XSBDUFU6IDAgUElEOiAxIENv bW06IHN3YXBwZXIvMCBUYWludGVkOiBHIFMgICAgICAgICAgICAgICAgNS43LjAtcmM0LW5leHQt MjAyMDA1MDUgIzIyCj4gWyAgICAyLjg5MDE3NV0gSGFyZHdhcmUgbmFtZTogbnZpZGlhIHAyNzcx LTAwMDAvcDI3NzEtMDAwMCwgQklPUyAyMDIwLjA0LXJjMyAwMy8yNS8yMDIwCj4gWyAgICAyLjg5 MDE3Nl0gcHN0YXRlOiAyMDAwMDAwNSAobnpDdiBkYWlmIC1QQU4gLVVBTyBCVFlQRT0tLSkKPiBb ICAgIDIuODkwMTc3XSBwYyA6IGx6bWFfbWFpbisweDY0OC8weDkwOAo+IFsgICAgMi44OTAxNzhd IGxyIDogbHptYV9tYWluKzB4MzMwLzB4OTA4Cj4gWyAgICAyLjg5MDE3OV0gc3AgOiBmZmZmODAw MDEwMDNiYjcwCj4gWyAgICAyLjg5MDE4MF0geDI5OiBmZmZmODAwMDEwMDNiYjcwIHgyODogMDAw MDAwMDAwNGQ3OTRhNAo+IFsgICAgMi44OTAxODNdIHgyNzogMDAwMDAwMDAwNDc2OTk0MSB4MjY6 IGZmZmYwMDAxZWIwNjQwMDAKPiBbICAgIDIuODkwMTg1XSB4MjU6IGZmZmYwMDAxZWIwNjAwMjgg eDI0OiAwMDAwMDAwMDAwMDAwMDAyCj4gWyAgICAyLjg5MDE4N10geDIzOiAwMDAwMDAwMDAwMDAw MDAzIHgyMjogMDAwMDAwMDAwMDAwMDAwNwo+IFsgICAgMi44OTAxODldIHgyMTogMDAwMDAwMDAw MDYxMWY0YiB4MjA6IGZmZmYwMDAxZWIwNjAwMDAKPiBbICAgIDIuODkwMTkyXSB4MTk6IGZmZmY4 MDAwMTAwM2JjYjggeDE4OiAwMDAwMDAwMDAwMDAwMDY4Cj4gWyAgICAyLjg5MDE5NF0geDE3OiAw MDAwMDAwMDAwMDAwMGMwIHgxNjogZmZmZmZlMDAwNzZiMjEwOAo+IFsgICAgMi44OTAxOTZdIHgx NTogMDAwMDAwMDAwMDAwMDgwMCB4MTQ6IDAwMDAwMDAwMDBmZmZmZmYKPiBbICAgIDIuODkwMTk4 XSB4MTM6IDAwMDAwMDAwMDAwMDAwMDEgeDEyOiBmZmZmMDAwMWViMDYwMDAwCj4gWyAgICAyLjg5 MDIwMF0geDExOiAwMDAwMDAwMDAwMDAwNjAwIHgxMDogZmZmZjAwMDFlYjA2MDAyOAo+IFsgICAg Mi44OTAyMDJdIHg5IDogMDAwMDAwMDBmZmJiMmEwOCB4OCA6IDAwMDAwMDAwMDAwMDBlZDAKPiBb ICAgIDIuODkwMjA0XSB4NyA6IDAwMDAwMDAwMDExNTUzZWMgeDYgOiAwMDAwMDAwMDAwMDAwMDAw Cj4gWyAgICAyLjg5MDIwNl0geDUgOiAwMDAwMDAwMDAwMDAwMDAwIHg0IDogMDAwMDAwMDAwMDAw MDAwNgo+IFsgICAgMi44OTAyMDhdIHgzIDogMDAwMDAwMDAwMTVhMjllNCB4MiA6IGZmZmYwMDAx ZWIwNjJkMGMKPiBbICAgIDIuODkwMjEwXSB4MSA6IDAwMDAwMDAwMDAwMDAwMGMgeDAgOiAwMDAw MDAwMDAyNjNkZTQ0Cj4gCj4gV2l0aCBzb21lIGRlYnVnZ2luZyBhaWQgcG9ydGVkIGZyb20gTnZp ZGlhIGRvd25zdHJlYW0ga2VybmVsIFsyXSB0aGUKPiBhY3R1YWwgY2F1c2Ugd2FzIGZvdW5kOgo+ IAo+IFsgICAgMC43NjE1MjVdIFRyeWluZyB0byB1bnBhY2sgcm9vdGZzIGltYWdlIGFzIGluaXRy YW1mcy4uLgo+IFsgICAgMi45NTU0OTldIENQVTA6IFNFcnJvcjogbXBpZHI9MHg4MDAwMDEwMCwg ZXNyPTB4YmY0MGMwMDAKPiBbICAgIDIuOTU1NTAyXSBDUFUxOiBTRXJyb3I6IG1waWRyPTB4ODAw MDAwMDAsIGVzcj0weGJlMDAwMDAwCj4gWyAgICAyLjk1NTUwNV0gQ1BVMjogU0Vycm9yOiBtcGlk cj0weDgwMDAwMDAxLCBlc3I9MHhiZTAwMDAwMAo+IFsgICAgMi45NTU1MDZdIENQVTM6IFNFcnJv cjogbXBpZHI9MHg4MDAwMDEwMSwgZXNyPTB4YmY0MGMwMDAKPiBbICAgIDIuOTU1NTA3XSBST0M6 Q0NFIE1hY2hpbmUgQ2hlY2sgRXJyb3I6Cj4gWyAgICAyLjk1NTUwOF0gUk9DOkNDRSBSZWdpc3Rl cnM6Cj4gWyAgICAyLjk1NTUwOV0gIFNUQVQ6IDB4YjQwMDAwMDAwMDQwMDQxNQo+IFsgICAgMi45 NTU1MTBdICBBRERSOiAweDQwMGMwMGU3YTAwYwo+IFsgICAgMi45NTU1MTFdICBNU0MxOiAweDgw ZmZjCj4gWyAgICAyLjk1NTUxMl0gIE1TQzI6IDB4MzkwMDAwMDAwMDgwMAo+IFsgICAgMi45NTU1 MTNdIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gWyAgICAyLjk1NTUx NF0gRGVjb2RlZCBST0M6Q0NFIE1hY2hpbmUgQ2hlY2s6Cj4gWyAgICAyLjk1NTUxNV0gIFVuY29y cmVjdGVkICh0aGlzIGlzIGZhdGFsKQo+IFsgICAgMi45NTU1MTZdICBFcnJvciByZXBvcnRpbmcg ZW5hYmxlZCB3aGVuIGVycm9yIGFycml2ZWQKPiBbICAgIDIuOTU1NTE3XSAgRXJyb3IgQ29kZSA9 IDB4NDE1Cj4gWyAgICAyLjk1NTUxOF0gIFBvaXNvbiBFcnJvcgo+IFsgICAgMi45NTU1MThdICBD b21tYW5kID0gTkNSZCAoMHhjKQo+IFsgICAgMi45NTU1MTldICBBZGRyZXNzIFR5cGUgPSBOb24t U2VjdXJlIERSQU0KPiBbICAgIDIuOTU1NTIxXSAgQWRkcmVzcyA9IDB4MzAwMzllODAgLS0gMzAw MDAwMDAuc3lzcmFtICsgMHgzOWU4MAo+IFsgICAgMi45NTU1MjFdICBUTGltaXQgPSAweDNmZgo+ IFsgICAgMi45NTU1MjJdICBQb2lzb24gRXJyb3IgTWFzayA9IDB4ODAKPiBbICAgIDIuOTU1NTIz XSAgTW9yZSBJbmZvID0gMHg4MDAKPiBbICAgIDIuOTU1NTI0XSAgVGltZW91dCBJbmZvID0gMHgw Cj4gWyAgICAyLjk1NTUyNV0gICAgICAgICAgUG9pc29uIEluZm8gPSAweDgwMAo+IFsgICAgMi45 NTU1MjZdICAgICAgICAgIFJlYWQgUmVxdWVzdCBmYWlsZWQgR1NDIGNoZWNrcwo+IFsgICAgMi45 NTU1MjddICBTb3VyY2UgPSBMMl8xIChBNTcpICgweDEpCj4gWyAgICAyLjk1NTUyOF0gIFRJRCA9 IDB4ZQo+IAo+IElJVUMsIHRoZXJlIHdhcyByZWFkIHJlcXVlc3QgZm9yIDB4MzAwMzllODAgZnJv bSBFTDEvMiB3aGljaCBmYWlsZWQuCj4gVGhpcyBhZGRyZXNzIGZhbGxzIGluIHRoZSBzeXNyYW0g c2VjdXJpdHkgYXBlcnR1cmUgYW5kIGhlbmNlIGEgcmVhZAo+IGZyb20gbm9ybWFsIG1vZGUgZmFp bGVkLgo+IAo+IHN5c3JhbSBpcyBtYXBwZWQgYXQgMHgzMDAwXzAwMDAgdG8gMHgzMDA0X2ZmZmYg YW5kIGlzIG1hbmFnZWQgYnkgdGhlCj4gc3JhbSBkcml2ZXIgKGRyaXZlcnMvbWlzYy9zcmFtLmMp LiBUaGVyZSBhcmUgdHdvIHJlc2VydmVkIHBvb2xzIGZvcgo+IEJQTVAgZHJpdmVyIGNvbW11bmlj YXRpb24gYXQgMHgzMDA0X2UwMDAgYW5kIDB4MzAwNF9mMDAwIG9mIDB4MTAwMAo+IGJ5dGVzIGVh Y2guCj4gCj4gc3JhbSBkcml2ZXIgbWFwcyBjb21wbGV0ZSAweDMwMDBfMDAwMCB0byAweDMwMDRf ZmZmZiByYW5nZSBhcyBub3JtYWwKPiBtZW1vcnkuCgpUaGF0J3MgeW91ciBwcm9ibGVtLiBJdCdz IG5vdCByZWFsbHkgd29ydGggYXR0ZW1wdGluZyB0byByZWFzb24gYWJvdXQsIAp0aGUgYXJjaGl0 ZWN0dXJlIHNheXMgdGhhdCBhbnl0aGluZyBtYXBwZWQgYXMgTm9ybWFsIG1lbW9yeSBtYXkgYmUg CnNwZWN1bGF0aXZlbHkgYWNjZXNzZWQgYXQgYW55IHRpbWUsIHNvIG5vIGFtb3VudCBvZiBzZWNv bmQtZ3Vlc3NpbmcgaXMgCmdvaW5nIHRvIHNhdmUgeW91IGluIGdlbmVyYWwuIERvbid0IG1ha2Ug c3R1ZmYgYWNjZXNzaWJsZSB0byB0aGUga2VybmVsIAp0aGF0IGl0IGRvZXNuJ3QgbmVlZCB0byBh Y2Nlc3MsIGFuZCBlc3BlY2lhbGx5IGRvbid0IG1ha2Ugc3R1ZmYgCmFjY2Vzc2libGUgdG8gdGhl IGtlcm5lbCBpZiBhY2Nlc3NpbmcgaXQgd2lsbCBraWxsIHRoZSBzeXN0ZW0uCgo+IEhvd2V2ZXIs IG9ubHkgdGhlIEJQTVAgcmVzZXJ2ZWQgcG9vbHMgKDB4MzAwNF9lMDAwIC0gMHgzMDA0X2ZmZmYp Cj4gYXJlIGFjY2Vzc2libGUgZnJvbSB0aGUga2VybmVsLiBBZGRyZXNzIDB4MzAwM185ZTgwIGlz IGluYWNjZXNzaWJsZQo+IGZyb20gdGhlIGtlcm5lbCBhbmQgYSByZWFkIHRvIGl0ICh3aGljaCBJ IGJlbGlldmUgaXMgc3BlY3VsYXRpdmUpCj4gY2F1c2VzIHRoZSBTRXJyb3IuIE9ubHkgZHJpdmVy IHdoaWNoIHVzZXMgc3lzcmFtIGlzIG5vdCBpbml0aWFsaXplZCBhdAo+IHRoaXMgcG9pbnQgKHJv b3Rmc19pbml0Y2FsbCBsZXZlbCkuIEFzIHNpbmNlCj4gY29tbWl0IGQ3MGY1ZTU0MWFiMyAoImZp cm13YXJlOiB0ZWdyYTogTWFrZSBCUE1QIGEgcmVndWxhciBkcml2ZXIiKQo+IGJwbXAgZHJpdmVy IGlzIGluaXRpYWxpemVkIGF0IGRldmljZV9pbml0Y2FsbCBsZXZlbC4KPiAKPiBJZiBub25lIG9m IHRoZSBkcml2ZXJzIG9uIHRoZSBrZXJuZWwgc2lkZSB1c2luZyAweDMwMDNfOWU4MCBhZGRyZXNz Cj4gcmFuZ2UuIFdoeSBhIHJlYWQgdG8gaXQgb2NjdXJzIGV2ZW4gc3BlY3VsYXRpdmVseT8gQ291 bGQgaXQgYmUgdGhhdAo+IHNvbWUgRUwzIHNvZnR3YXJlIGRpZG7igJl0IGNsZWFudXAgYWZ0ZXIg aXRzZWxmIHByb3Blcmx5PyBBbnkKPiBzdWdnZXN0aW9ucyBvbiBkZWJ1Z2dpbmcgdGhpcyBpc3N1 ZSBmdXJ0aGVyPwo+IAo+IEFub3RoZXIgc29sdXRpb24gc3VnZ2VzdGVkIGluIFsxXSB3YXMgdG8g YWRkIG5vLW1lbW9yeS13YyBpbiBzeXNyYW0KPiBub2RlIGluIGRldmljZS10cmVlIHNvIHRoYXQg c3lzcmFtIGlzIG1hcHBlZCBhcyBkZXZpY2UtbWVtb3J5LiBUaHVzCj4gcHJldmVudGluZyBhbnkg c3BlY3VsYXRpdmUgYWNjZXNzLiBIb3dldmVyLCBpdCBjYXVzZXMgYW5vdGhlciBzZXQgb2YKPiBp c3N1ZXMgd2l0aCB0aGUgYnBtcCBkcml2ZXIuIFRoYXQncyBtYXkgYmUgYSBkaXNjdXNzaW9uIGZv ciBhbm90aGVyCj4gdGltZS4KCkFGQUlDUyB0aGUgdHJ1bHkgY29ycmVjdCBzb2x1dGlvbiBpcyB3 aGF0IFN0ZXBoZW4gaW5pdGlhbGx5IHN1Z2dlc3RlZCAKdGhlcmUgLSBmb3IgdGhlIGJvb3QgcHJv Y2VzcyB0byBzb21laG93IGRlc2NyaWJlIHdoaWNoIHBhcnRzIG9mIFNSQU0gCmhhdmUgYmVlbiBy ZXNlcnZlZCBieSBTZWN1cmUgc29mdHdhcmUgYW5kL29yIHdoaWNoIHBhcnRzIHJlbWFpbiAKTm9u LVNlY3VyZSwgYW5kIGZvciB0aGUga2VybmVsIGRyaXZlciB0byBvbmx5IG1hcCBhbmQgdXNlIHRo ZSBsYXR0ZXIuCgpSb2Jpbi4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK