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.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable 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 018EDC433E0 for ; Tue, 19 May 2020 09:47:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CB609207D3 for ; Tue, 19 May 2020 09:47:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=armlinux.org.uk header.i=@armlinux.org.uk header.b="ZbKd9sCs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726333AbgESJrI (ORCPT ); Tue, 19 May 2020 05:47:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726055AbgESJrI (ORCPT ); Tue, 19 May 2020 05:47:08 -0400 Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4DFF6C061A0C; Tue, 19 May 2020 02:47:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender: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-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=o2TB3YkBO2n8jSgZ++cw+OOgCnt3BO5Cd6TIeUugGeY=; b=ZbKd9sCs1la1/dUxbXFbkXutj yKD9rIsdCGkW/MuPK682/DAxhmfreODAKXW1+kDFW6zTV1vYM0mkEdkpF499o2MayW/L+xa4X9pzl V4lmOanBNCkJmJnNMFkryl5DhkQLzUHQ1gymyF5MCOLJ3yZsJJCEBLQHhLnaqq3dHo4vsCzjKKTKo MnWH7iPxnBpTPCeHHzTuhdiwU3ufnixsyqF23Z/rYxiokgA0ofFu1BJrPgwYqoqaToNL0bWFdszej +qwm6r5mg/CcU21n05yVJnFPnkVLZL8u0jntQfWVF2ThU4W/qN/pIgfCvmQT8aCGo3jcWlKaMupKp hWN3hTIsQ==; Received: from shell.armlinux.org.uk ([2001:4d48:ad52:3201:5054:ff:fe00:4ec]:42184) by pandora.armlinux.org.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jaypd-0004sK-7e; Tue, 19 May 2020 10:46:41 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1jaypZ-0005cD-Lx; Tue, 19 May 2020 10:46:37 +0100 Date: Tue, 19 May 2020 10:46:37 +0100 From: Russell King - ARM Linux admin To: Geert Uytterhoeven Cc: Lukasz Stelmach , Dmitry Osipenko , Nicolas Pitre , Arnd Bergmann , Eric Miao , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Masahiro Yamada , Ard Biesheuvel , Marek Szyprowski , Chris Brandt , Linux ARM , Linux-Renesas , Linux Kernel Mailing List , Bartlomiej Zolnierkiewicz Subject: Re: [PATCH v6] ARM: boot: Obtain start of physical memory from DTB Message-ID: <20200519094637.GZ1551@shell.armlinux.org.uk> References: <20200429082120.16259-1-geert+renesas@glider.be> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org On Tue, May 19, 2020 at 11:44:17AM +0200, Geert Uytterhoeven wrote: > Hi Łukasz > > Thanks for your report! > > On Tue, May 19, 2020 at 10:54 AM Lukasz Stelmach wrote: > > It was <2020-04-29 śro 10:21>, when Geert Uytterhoeven wrote: > > > Currently, the start address of physical memory is obtained by masking > > > the program counter with a fixed mask of 0xf8000000. This mask value > > > was chosen as a balance between the requirements of different platforms. > > > However, this does require that the start address of physical memory is > > > a multiple of 128 MiB, precluding booting Linux on platforms where this > > > requirement is not fulfilled. > > > > > > Fix this limitation by obtaining the start address from the DTB instead, > > > if available (either explicitly passed, or appended to the kernel). > > > Fall back to the traditional method when needed. > > > > > > This allows to boot Linux on r7s9210/rza2mevb using the 64 MiB of SDRAM > > > on the RZA2MEVB sub board, which is located at 0x0C000000 (CS3 space), > > > i.e. not at a multiple of 128 MiB. > > > > > > Suggested-by: Nicolas Pitre > > > Signed-off-by: Geert Uytterhoeven > > > Reviewed-by: Nicolas Pitre > > > Reviewed-by: Ard Biesheuvel > > > Tested-by: Marek Szyprowski > > > Tested-by: Dmitry Osipenko > > > --- > > > > [...] > > > > Apparently reading physical memory layout from DTB breaks crashdump > > kernels. A crashdump kernel is loaded into a region of memory, that is > > reserved in the original (i.e. to be crashed) kernel. The reserved > > region is large enough for the crashdump kernel to run completely inside > > it and don't modify anything outside it, just read and dump the remains > > of the crashed kernel. Using the information from DTB makes the > > decompressor place the kernel outside of the dedicated region. > > > > The log below shows that a zImage and DTB are loaded at 0x18eb8000 and > > 0x193f6000 (physical). The kernel is expected to run at 0x18008000, but > > it is decompressed to 0x00008000 (see r4 reported before jumping from > > within __enter_kernel). If I were to suggest something, there need to be > > one more bit of information passed in the DTB telling the decompressor > > to use the old masking technique to determain kernel address. It would > > be set in the DTB loaded along with the crashdump kernel. > > Shouldn't the DTB passed to the crashkernel describe which region of > memory is to be used instead? Definitely not. The crashkernel needs to know where the RAM in the machine is, so that it can create a coredump of the crashed kernel. > Describing "to use the old masking technique" sounds a bit hackish to me. > I guess it cannot just restrict the /memory node to the reserved region, > as the crashkernel needs to be able to dump the remains of the crashed > kernel, which lie outside this region. Correct. > However, something under /chosen should work. Yet another sticky plaster... -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC for 0.8m (est. 1762m) line in suburbia: sync at 13.1Mbps down 424kbps up 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.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham 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 29D8EC433DF for ; Tue, 19 May 2020 09:48:20 +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 E51BB20756 for ; Tue, 19 May 2020 09:48:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="u2pe22RB"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=armlinux.org.uk header.i=@armlinux.org.uk header.b="ZbKd9sCs" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E51BB20756 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=armlinux.org.uk 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-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject: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=CbNjJgJzWwBy9YjnApldsgOY3u6i8zkGzqd9dJKwuoM=; b=u2pe22RBJx3mKi 4vf+nSdtFI1YZtoVvTFjvvr6KcTlfv03e3iMhRpCUuC9R0I6mj0sbQXDDVhL5Afb8O2m20aQMwPOQ 2egr94HsEW3gF+TbPArCIqsfx/yrJRBXgEXiWaz4tgLcnxaNSzozmds/Y9zD29xwrKLC4gqM9TLuz GFwAUlzw2b3rhEYF1CSEJR+icS7d5vaBa5zdyIM1pP8KJPrF6IKXpZMjz/b5ArfRNNe5zke5lla/s LkZ6Ple8P7cLSrCoBz41fXlLJuzSHgCydoNwoQIHwDAzjh/hncHiJrP7gWQas6MQyFTeE2prOoBVz Cp006C38tc6//0CRacwA==; 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 1jayrA-0004HX-04; Tue, 19 May 2020 09:48:16 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jayq1-0003M9-Nr for linux-arm-kernel@lists.infradead.org; Tue, 19 May 2020 09:47:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender: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-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=o2TB3YkBO2n8jSgZ++cw+OOgCnt3BO5Cd6TIeUugGeY=; b=ZbKd9sCs1la1/dUxbXFbkXutj yKD9rIsdCGkW/MuPK682/DAxhmfreODAKXW1+kDFW6zTV1vYM0mkEdkpF499o2MayW/L+xa4X9pzl V4lmOanBNCkJmJnNMFkryl5DhkQLzUHQ1gymyF5MCOLJ3yZsJJCEBLQHhLnaqq3dHo4vsCzjKKTKo MnWH7iPxnBpTPCeHHzTuhdiwU3ufnixsyqF23Z/rYxiokgA0ofFu1BJrPgwYqoqaToNL0bWFdszej +qwm6r5mg/CcU21n05yVJnFPnkVLZL8u0jntQfWVF2ThU4W/qN/pIgfCvmQT8aCGo3jcWlKaMupKp hWN3hTIsQ==; Received: from shell.armlinux.org.uk ([2001:4d48:ad52:3201:5054:ff:fe00:4ec]:42184) by pandora.armlinux.org.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jaypd-0004sK-7e; Tue, 19 May 2020 10:46:41 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1jaypZ-0005cD-Lx; Tue, 19 May 2020 10:46:37 +0100 Date: Tue, 19 May 2020 10:46:37 +0100 From: Russell King - ARM Linux admin To: Geert Uytterhoeven Subject: Re: [PATCH v6] ARM: boot: Obtain start of physical memory from DTB Message-ID: <20200519094637.GZ1551@shell.armlinux.org.uk> References: <20200429082120.16259-1-geert+renesas@glider.be> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200519_024705_812765_A76B73CD X-CRM114-Status: GOOD ( 26.45 ) 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: Arnd Bergmann , Nicolas Pitre , Masahiro Yamada , Bartlomiej Zolnierkiewicz , Lukasz Stelmach , Linux Kernel Mailing List , Linux-Renesas , Chris Brandt , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Eric Miao , Dmitry Osipenko , Ard Biesheuvel , Linux ARM , Marek Szyprowski Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBNYXkgMTksIDIwMjAgYXQgMTE6NDQ6MTdBTSArMDIwMCwgR2VlcnQgVXl0dGVyaG9l dmVuIHdyb3RlOgo+IEhpIMWBdWthc3oKPiAKPiBUaGFua3MgZm9yIHlvdXIgcmVwb3J0IQo+IAo+ IE9uIFR1ZSwgTWF5IDE5LCAyMDIwIGF0IDEwOjU0IEFNIEx1a2FzeiBTdGVsbWFjaCA8bC5zdGVs bWFjaEBzYW1zdW5nLmNvbT4gd3JvdGU6Cj4gPiBJdCB3YXMgPDIwMjAtMDQtMjkgxZtybyAxMDoy MT4sIHdoZW4gR2VlcnQgVXl0dGVyaG9ldmVuIHdyb3RlOgo+ID4gPiBDdXJyZW50bHksIHRoZSBz dGFydCBhZGRyZXNzIG9mIHBoeXNpY2FsIG1lbW9yeSBpcyBvYnRhaW5lZCBieSBtYXNraW5nCj4g PiA+IHRoZSBwcm9ncmFtIGNvdW50ZXIgd2l0aCBhIGZpeGVkIG1hc2sgb2YgMHhmODAwMDAwMC4g IFRoaXMgbWFzayB2YWx1ZQo+ID4gPiB3YXMgY2hvc2VuIGFzIGEgYmFsYW5jZSBiZXR3ZWVuIHRo ZSByZXF1aXJlbWVudHMgb2YgZGlmZmVyZW50IHBsYXRmb3Jtcy4KPiA+ID4gSG93ZXZlciwgdGhp cyBkb2VzIHJlcXVpcmUgdGhhdCB0aGUgc3RhcnQgYWRkcmVzcyBvZiBwaHlzaWNhbCBtZW1vcnkg aXMKPiA+ID4gYSBtdWx0aXBsZSBvZiAxMjggTWlCLCBwcmVjbHVkaW5nIGJvb3RpbmcgTGludXgg b24gcGxhdGZvcm1zIHdoZXJlIHRoaXMKPiA+ID4gcmVxdWlyZW1lbnQgaXMgbm90IGZ1bGZpbGxl ZC4KPiA+ID4KPiA+ID4gRml4IHRoaXMgbGltaXRhdGlvbiBieSBvYnRhaW5pbmcgdGhlIHN0YXJ0 IGFkZHJlc3MgZnJvbSB0aGUgRFRCIGluc3RlYWQsCj4gPiA+IGlmIGF2YWlsYWJsZSAoZWl0aGVy IGV4cGxpY2l0bHkgcGFzc2VkLCBvciBhcHBlbmRlZCB0byB0aGUga2VybmVsKS4KPiA+ID4gRmFs bCBiYWNrIHRvIHRoZSB0cmFkaXRpb25hbCBtZXRob2Qgd2hlbiBuZWVkZWQuCj4gPiA+Cj4gPiA+ IFRoaXMgYWxsb3dzIHRvIGJvb3QgTGludXggb24gcjdzOTIxMC9yemEybWV2YiB1c2luZyB0aGUg NjQgTWlCIG9mIFNEUkFNCj4gPiA+IG9uIHRoZSBSWkEyTUVWQiBzdWIgYm9hcmQsIHdoaWNoIGlz IGxvY2F0ZWQgYXQgMHgwQzAwMDAwMCAoQ1MzIHNwYWNlKSwKPiA+ID4gaS5lLiBub3QgYXQgYSBt dWx0aXBsZSBvZiAxMjggTWlCLgo+ID4gPgo+ID4gPiBTdWdnZXN0ZWQtYnk6IE5pY29sYXMgUGl0 cmUgPG5pY29AZmx1eG5pYy5uZXQ+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEdlZXJ0IFV5dHRlcmhv ZXZlbiA8Z2VlcnQrcmVuZXNhc0BnbGlkZXIuYmU+Cj4gPiA+IFJldmlld2VkLWJ5OiBOaWNvbGFz IFBpdHJlIDxuaWNvQGZsdXhuaWMubmV0Pgo+ID4gPiBSZXZpZXdlZC1ieTogQXJkIEJpZXNoZXV2 ZWwgPGFyZGJAa2VybmVsLm9yZz4KPiA+ID4gVGVzdGVkLWJ5OiBNYXJlayBTenlwcm93c2tpIDxt LnN6eXByb3dza2lAc2Ftc3VuZy5jb20+Cj4gPiA+IFRlc3RlZC1ieTogRG1pdHJ5IE9zaXBlbmtv IDxkaWdldHhAZ21haWwuY29tPgo+ID4gPiAtLS0KPiA+Cj4gPiBbLi4uXQo+ID4KPiA+IEFwcGFy ZW50bHkgcmVhZGluZyBwaHlzaWNhbCBtZW1vcnkgbGF5b3V0IGZyb20gRFRCIGJyZWFrcyBjcmFz aGR1bXAKPiA+IGtlcm5lbHMuIEEgY3Jhc2hkdW1wIGtlcm5lbCBpcyBsb2FkZWQgaW50byBhIHJl Z2lvbiBvZiBtZW1vcnksIHRoYXQgaXMKPiA+IHJlc2VydmVkIGluIHRoZSBvcmlnaW5hbCAoaS5l LiB0byBiZSBjcmFzaGVkKSBrZXJuZWwuIFRoZSByZXNlcnZlZAo+ID4gcmVnaW9uIGlzIGxhcmdl IGVub3VnaCBmb3IgdGhlIGNyYXNoZHVtcCBrZXJuZWwgdG8gcnVuIGNvbXBsZXRlbHkgaW5zaWRl Cj4gPiBpdCBhbmQgZG9uJ3QgbW9kaWZ5IGFueXRoaW5nIG91dHNpZGUgaXQsIGp1c3QgcmVhZCBh bmQgZHVtcCB0aGUgcmVtYWlucwo+ID4gb2YgdGhlIGNyYXNoZWQga2VybmVsLiBVc2luZyB0aGUg aW5mb3JtYXRpb24gZnJvbSBEVEIgbWFrZXMgdGhlCj4gPiBkZWNvbXByZXNzb3IgcGxhY2UgdGhl IGtlcm5lbCBvdXRzaWRlIG9mIHRoZSBkZWRpY2F0ZWQgcmVnaW9uLgo+ID4KPiA+IFRoZSBsb2cg YmVsb3cgc2hvd3MgdGhhdCBhIHpJbWFnZSBhbmQgRFRCIGFyZSBsb2FkZWQgYXQgMHgxOGViODAw MCBhbmQKPiA+IDB4MTkzZjYwMDAgKHBoeXNpY2FsKS4gVGhlIGtlcm5lbCBpcyBleHBlY3RlZCB0 byBydW4gYXQgMHgxODAwODAwMCwgYnV0Cj4gPiBpdCBpcyBkZWNvbXByZXNzZWQgdG8gMHgwMDAw ODAwMCAoc2VlIHI0IHJlcG9ydGVkIGJlZm9yZSBqdW1waW5nIGZyb20KPiA+IHdpdGhpbiBfX2Vu dGVyX2tlcm5lbCkuIElmIEkgd2VyZSB0byBzdWdnZXN0IHNvbWV0aGluZywgdGhlcmUgbmVlZCB0 byBiZQo+ID4gb25lIG1vcmUgYml0IG9mIGluZm9ybWF0aW9uIHBhc3NlZCBpbiB0aGUgRFRCIHRl bGxpbmcgdGhlIGRlY29tcHJlc3Nvcgo+ID4gdG8gdXNlIHRoZSBvbGQgbWFza2luZyB0ZWNobmlx dWUgdG8gZGV0ZXJtYWluIGtlcm5lbCBhZGRyZXNzLiBJdCB3b3VsZAo+ID4gYmUgc2V0IGluIHRo ZSBEVEIgbG9hZGVkIGFsb25nIHdpdGggdGhlIGNyYXNoZHVtcCBrZXJuZWwuCj4gCj4gU2hvdWxk bid0IHRoZSBEVEIgcGFzc2VkIHRvIHRoZSBjcmFzaGtlcm5lbCBkZXNjcmliZSB3aGljaCByZWdp b24gb2YKPiBtZW1vcnkgaXMgdG8gYmUgdXNlZCBpbnN0ZWFkPwoKRGVmaW5pdGVseSBub3QuICBU aGUgY3Jhc2hrZXJuZWwgbmVlZHMgdG8ga25vdyB3aGVyZSB0aGUgUkFNIGluIHRoZQptYWNoaW5l IGlzLCBzbyB0aGF0IGl0IGNhbiBjcmVhdGUgYSBjb3JlZHVtcCBvZiB0aGUgY3Jhc2hlZCBrZXJu ZWwuCgo+IERlc2NyaWJpbmcgInRvIHVzZSB0aGUgb2xkIG1hc2tpbmcgdGVjaG5pcXVlIiBzb3Vu ZHMgYSBiaXQgaGFja2lzaCB0byBtZS4KPiBJIGd1ZXNzIGl0IGNhbm5vdCBqdXN0IHJlc3RyaWN0 IHRoZSAvbWVtb3J5IG5vZGUgdG8gdGhlIHJlc2VydmVkIHJlZ2lvbiwKPiBhcyB0aGUgY3Jhc2hr ZXJuZWwgbmVlZHMgdG8gYmUgYWJsZSB0byBkdW1wIHRoZSByZW1haW5zIG9mIHRoZSBjcmFzaGVk Cj4ga2VybmVsLCB3aGljaCBsaWUgb3V0c2lkZSB0aGlzIHJlZ2lvbi4KCkNvcnJlY3QuCgo+IEhv d2V2ZXIsIHNvbWV0aGluZyB1bmRlciAvY2hvc2VuIHNob3VsZCB3b3JrLgoKWWV0IGFub3RoZXIg c3RpY2t5IHBsYXN0ZXIuLi4KCi0tIApSTUsncyBQYXRjaCBzeXN0ZW06IGh0dHBzOi8vd3d3LmFy bWxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvcGF0Y2hlcy8KRlRUQyBmb3IgMC44bSAoZXN0LiAxNzYy bSkgbGluZSBpbiBzdWJ1cmJpYTogc3luYyBhdCAxMy4xTWJwcyBkb3duIDQyNGticHMgdXAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK