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=-7.0 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 7CE39C2BCA1 for ; Fri, 7 Jun 2019 13:53:12 +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 51038208E3 for ; Fri, 7 Jun 2019 13:53:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="KyfLrCpP"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EgbjpWvA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 51038208E3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=HexnPFuWmXhiKhG1yl8yDdlmQctPl5sHj5SkXqW++dI=; b=KyfLrCpP6PMrEJ5pXFm9jZshnL fcfWPgyv64q2jr4p3neF7HrvBlH8ENdot34rf3pytBaUkhHCYyhL6nErUqiaw8tQveAtSlay/sq/k KtNXS7+YQ8FotjG3SVFKsYhV+OfJdzSsRbHehsOxrGQxtRlc8TcdwiW7zz27GjeqdfK5oDbcOEQ+2 bg0TuPmYjGeqj0IB0UshjZdRVtPwYibhWQFbZnle7teW+coUA1oRPlTOsokwCeo4s8xLCyRLMT/y2 8b9fTHk00slzf1/9rnNKfbBCTCeXTJC5b5CQDnUFqxINpqeJUyI0pRY5h9mRXJnBM4/YldNkyObXK StF4tFoA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hZFIs-0002Tt-Q8; Fri, 07 Jun 2019 13:53:10 +0000 Received: from mail-it1-x142.google.com ([2607:f8b0:4864:20::142]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hZFIo-0002Su-P0 for linux-arm-kernel@lists.infradead.org; Fri, 07 Jun 2019 13:53:09 +0000 Received: by mail-it1-x142.google.com with SMTP id h9so2822141itk.3 for ; Fri, 07 Jun 2019 06:53:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=9O3vJ6UFNZgJdpurkZJ1zf0TI7rxpOSfZyofdAeA3ZA=; b=EgbjpWvAYhYXcfOBT3PihpNeG3+zydATGZtm+zKjWl0VVPMQwTQl8tG+ptB12j/oie 9kGPKwh45YwmBmQ2Kg7Pu5j/CQr7IxGLQQZFJym+ixrcFPKPh7EGOW1TK7qxITprosHy wb+GzAHNXnH7E96wcvcL9Iu/4kmhMD8YjE9cpqm5/eNZ741luf0/EVnul0yQLOv/t4LS vuBGrpi5GCNXP7Kw/Nd49wqTSWb3URTXFcgK9+qfxMZBo1gBWpSHc3swHxE1Jj/ypdV3 VycbXBCZJp6M1dtb7KPb/vI0K2WyBQuluato15UdaVDblHTocyOCDKGixkUcu2r+LvI3 mNnQ== 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:content-transfer-encoding; bh=9O3vJ6UFNZgJdpurkZJ1zf0TI7rxpOSfZyofdAeA3ZA=; b=O4nhaiXeLwIF88jQXTmx0iw9hEdobz3PLQc0Lb8b9W7jdJ7ytkUFUnkd4AfnztIVso Wpzc6MlSfHW9a104tPyHGrj0N5lHy2D0JJ/lzlvUU/LA75zxafDyuvqm5u1dWGemPpp5 vinjK1lQu93xW2lnU9s4Prfkn78qJr9L+oY4aBQ9diyYZUtlkVAJ1yahY9ogOewfplWu mj5mPMiw8BiLCZTtSNwQZcvsPAq4AVjaLLMnSURe8i2r0tsHpJ6pR+u1LqXJmPrsxuIo XjZ44D0KNSAdiZWPx/NvsylbjhJhNrF5xT81KS005OIfwEyyxMretXDvacpVvqcVB+t9 hWxQ== X-Gm-Message-State: APjAAAWx8d/hQ9tGQxBlu1xj3xc1acayYqzATlpDlAbyiEaKthtTXhKj jFle1ZK1Tu3SrPCM5dcFsBOnsf2HAEHBoayTbOc= X-Google-Smtp-Source: APXvYqwi1A102ejKg4N8aXDBe7mxMxKCUX0ZtIeJU/DizGEH7wQxBMvamB2rUFyBed/qXV0tqAcv5vNYnRtU49WAlzY= X-Received: by 2002:a24:ee08:: with SMTP id b8mr4490939iti.174.1559915585720; Fri, 07 Jun 2019 06:53:05 -0700 (PDT) MIME-Version: 1.0 References: <20190525181329.18657-1-tiny.windzz@gmail.com> <20190525181329.18657-2-tiny.windzz@gmail.com> <20190527142544.skblqfcz5fqfzxgl@core.my.home> In-Reply-To: From: Frank Lee Date: Fri, 7 Jun 2019 21:52:54 +0800 Message-ID: Subject: Re: [PATCH v3 1/3] thermal: sun8i: add thermal driver for h6 To: Yangtao Li , rui.zhang@intel.com, Eduardo Valentin , Daniel Lezcano , robh+dt@kernel.org, Mark Rutland , Maxime Ripard , Chen-Yu Tsai , David Miller , Mauro Carvalho Chehab , Greg Kroah-Hartman , Linus Walleij , Nicolas Ferre , paulmck@linux.ibm.com, devicetree@vger.kernel.org, Linux Kernel Mailing List , Linux ARM , Linux PM X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190607_065306_833540_EEBC30D2 X-CRM114-Status: GOOD ( 35.35 ) 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: , 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 T24gRnJpLCBKdW4gNywgMjAxOSBhdCA5OjUwIFBNIEZyYW5rIExlZSA8dGlueS53aW5kenpAZ21h aWwuY29tPiB3cm90ZToKPgo+IEhJIE9uZMWZZWosCj4KPgo+IE9uIE1vbiwgTWF5IDI3LCAyMDE5 IGF0IDEwOjI1IFBNIE9uZMWZZWogSmlybWFuIDxtZWdvdXNAbWVnb3VzLmNvbT4gd3JvdGU6Cj4g Pgo+ID4gSGkgWWFuZ3RhbywKPiA+Cj4gPiBPbiBTYXQsIE1heSAyNSwgMjAxOSBhdCAwMjoxMzoy N1BNIC0wNDAwLCBZYW5ndGFvIExpIHdyb3RlOgo+ID4gPiBUaGlzIHBhdGNoIGFkZHMgdGhlIHN1 cHBvcnQgZm9yIGFsbHdpbm5lciB0aGVybWFsIHNlbnNvciwgd2l0aGluCj4gPiA+IGFsbHdpbm5l ciBTb0MuIEl0IHdpbGwgcmVnaXN0ZXIgc2Vuc29ycyBmb3IgdGhlcm1hbCBmcmFtZXdvcmsKPiA+ ID4gYW5kIHVzZSBkZXZpY2UgdHJlZSB0byBiaW5kIGNvb2xpbmcgZGV2aWNlLgo+ID4gPgo+ID4g PiBTaWduZWQtb2ZmLWJ5OiBZYW5ndGFvIExpIDx0aW55LndpbmR6ekBnbWFpbC5jb20+Cj4gPiA+ IC0tLQo+ID4gPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCj4gPiA+ ICBkcml2ZXJzL3RoZXJtYWwvS2NvbmZpZyAgICAgICAgIHwgIDE0ICsKPiA+ID4gIGRyaXZlcnMv dGhlcm1hbC9NYWtlZmlsZSAgICAgICAgfCAgIDEgKwo+ID4gPiAgZHJpdmVycy90aGVybWFsL3N1 bjhpX3RoZXJtYWwuYyB8IDQzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4g PiAgNCBmaWxlcyBjaGFuZ2VkLCA0NTkgaW5zZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdGhlcm1hbC9zdW44aV90aGVybWFsLmMKPiA+ID4KPiA+ID4gZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKPiA+ID4gaW5kZXggMjMzNmRkMjZlY2U0 Li5kMzEyZjllZWNmMGQgMTAwNjQ0Cj4gPiA+IC0tLSBhL01BSU5UQUlORVJTCj4gPiA+ICsrKyBi L01BSU5UQUlORVJTCj4gPiA+IEBAIC02NzQsNiArNjc0LDEzIEBAIEw6ICAgICAgIGxpbnV4LWNy eXB0b0B2Z2VyLmtlcm5lbC5vcmcKPiA+ID4gIFM6ICAgTWFpbnRhaW5lZAo+ID4gPiAgRjogICBk cml2ZXJzL2NyeXB0by9zdW54aS1zcy8KPiA+ID4KPiA+ID4gK0FMTFdJTk5FUiBUSEVSTUFMIERS SVZFUgo+ID4gPiArTTogICBZYW5ndGFvIExpIDx0aW55LndpbmR6ekBnbWFpbC5jb20+Cj4gPiA+ ICtMOiAgIGxpbnV4LXBtQHZnZXIua2VybmVsLm9yZwo+ID4gPiArUzogICBNYWludGFpbmVkCj4g PiA+ICtGOiAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3N1bjhp LXRoZXJtYWwueWFtbAo+ID4gPiArRjogICBkcml2ZXJzL3RoZXJtYWwvc3VuOGlfdGhlcm1hbC5j Cj4gPiA+ICsKPiA+ID4gIEFMTFdJTk5FUiBWUFUgRFJJVkVSCj4gPiA+ICBNOiAgIE1heGltZSBS aXBhcmQgPG1heGltZS5yaXBhcmRAYm9vdGxpbi5jb20+Cj4gPiA+ICBNOiAgIFBhdWwgS29jaWFs a293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4KPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnIGIvZHJpdmVycy90aGVybWFsL0tjb25maWcKPiA+ID4g aW5kZXggOTk2NjM2NGE2ZGViLi5lNTQ2NTA1M2Q2NmYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvdGhlcm1hbC9LY29uZmlnCj4gPiA+ICsrKyBiL2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnCj4g PiA+IEBAIC0yNjIsNiArMjYyLDIwIEBAIGNvbmZpZyBTUEVBUl9USEVSTUFMCj4gPiA+ICAgICAg ICAgRW5hYmxlIHRoaXMgdG8gcGx1ZyB0aGUgU1BFQXIgdGhlcm1hbCBzZW5zb3IgZHJpdmVyIGlu dG8gdGhlIExpbnV4Cj4gPiA+ICAgICAgICAgdGhlcm1hbCBmcmFtZXdvcmsuCj4gPiA+Cj4gPiA+ ICtjb25maWcgU1VOOElfVEhFUk1BTAo+ID4gPiArICAgICB0cmlzdGF0ZSAiQWxsd2lubmVyIHN1 bjhpIHRoZXJtYWwgZHJpdmVyIgo+ID4gPiArICAgICBkZXBlbmRzIG9uIEFSQ0hfU1VOWEkgfHwg Q09NUElMRV9URVNUCj4gPiA+ICsgICAgIGRlcGVuZHMgb24gSEFTX0lPTUVNCj4gPiA+ICsgICAg IGRlcGVuZHMgb24gTlZNRU1fU1VOWElfU0lECj4gPiA+ICsgICAgIGRlcGVuZHMgb24gT0YKPiA+ ID4gKyAgICAgZGVwZW5kcyBvbiBSRVNFVF9DT05UUk9MTEVSCj4gPiA+ICsgICAgIGhlbHAKPiA+ ID4gKyAgICAgICBTdXBwb3J0IGZvciB0aGUgc3VuOGkgdGhlcm1hbCBzZW5zb3IgZHJpdmVyIGlu dG8gdGhlIExpbnV4IHRoZXJtYWwKPiA+ID4gKyAgICAgICBmcmFtZXdvcmsuCj4gPiA+ICsKPiA+ ID4gKyAgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo ZXJlOiB0aGUKPiA+ID4gKyAgICAgICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3VuOGktdGhlcm1h bC4KPiA+ID4gKwo+ID4gPiAgY29uZmlnIFJPQ0tDSElQX1RIRVJNQUwKPiA+ID4gICAgICAgdHJp c3RhdGUgIlJvY2tjaGlwIHRoZXJtYWwgZHJpdmVyIgo+ID4gPiAgICAgICBkZXBlbmRzIG9uIEFS Q0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Ro ZXJtYWwvTWFrZWZpbGUgYi9kcml2ZXJzL3RoZXJtYWwvTWFrZWZpbGUKPiA+ID4gaW5kZXggNzRh MzdjN2Y4NDdhLi5mYTZmOGIyMDYyODEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvdGhlcm1h bC9NYWtlZmlsZQo+ID4gPiArKysgYi9kcml2ZXJzL3RoZXJtYWwvTWFrZWZpbGUKPiA+ID4gQEAg LTMxLDYgKzMxLDcgQEAgdGhlcm1hbF9zeXMtJChDT05GSUdfREVWRlJFUV9USEVSTUFMKSArPSBk ZXZmcmVxX2Nvb2xpbmcubwo+ID4gPiAgb2JqLXkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICs9IGJyb2FkY29tLwo+ID4gPiAgb2JqLSQoQ09ORklHX1RIRVJNQUxfTU1JTykgICAgICAg ICAgICs9IHRoZXJtYWxfbW1pby5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BFQVJfVEhFUk1BTCkg ICs9IHNwZWFyX3RoZXJtYWwubwo+ID4gPiArb2JqLSQoQ09ORklHX1NVTjhJX1RIRVJNQUwpICAg ICArPSBzdW44aV90aGVybWFsLm8KPiA+ID4gIG9iai0kKENPTkZJR19ST0NLQ0hJUF9USEVSTUFM KSAgICAgICArPSByb2NrY2hpcF90aGVybWFsLm8KPiA+ID4gIG9iai0kKENPTkZJR19SQ0FSX1RI RVJNQUwpICAgKz0gcmNhcl90aGVybWFsLm8KPiA+ID4gIG9iai0kKENPTkZJR19SQ0FSX0dFTjNf VEhFUk1BTCkgICAgICArPSByY2FyX2dlbjNfdGhlcm1hbC5vCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3RoZXJtYWwvc3VuOGlfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL3N1bjhpX3Ro ZXJtYWwuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLmE5Y2MyMTk3ZjRjYgo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMv dGhlcm1hbC9zdW44aV90aGVybWFsLmMKPiA+ID4gQEAgLTAsMCArMSw0MzcgQEAKPiA+ID4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPiA+ICsvKgo+ID4gPiArICogVGhl cm1hbCBzZW5zb3IgZHJpdmVyIGZvciBBbGx3aW5uZXIgU09DCj4gPiA+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMTkgWWFuZ3RhbyBMaQo+ID4gPiArICoKPiA+ID4gKyAqIEJhc2VkIG9uIHRoZSB3b3Jr IG9mIEljZW5vd3kgWmhlbmcgPGljZW5vd3lAYW9zYy5pbz4KPiA+ID4gKyAqIEJhc2VkIG9uIHRo ZSB3b3JrIG9mIE9uZHJlaiBKaXJtYW4gPG1lZ291c0BtZWdvdXMuY29tPgo+ID4gPiArICogQmFz ZWQgb24gdGhlIHdvcmsgb2YgSm9zZWYgR2FqZHVzZWsgPGF0eEBhdHgubmFtZT4KPiA+ID4gKyAq Lwo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiA+ICsjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gPiA+ ICsjaW5jbHVkZSA8bGludXgvd2FpdC5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o Pgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L252bWVtLWNvbnN1bWVyLmg+Cj4gPiA+ICsjaW5jbHVk ZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gPiA+ICsjaW5jbHVkZSA8 bGludXgvcmVzZXQuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiA+ICsjaW5j bHVkZSA8bGludXgvdGhlcm1hbC5oPgo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIE1BWF9TRU5TT1Jf TlVNICAgICAgIDQKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBGVF9URU1QX01BU0sgICAgICAgICAg ICAgICAgICAgICAgICAgR0VOTUFTSygxMSwgMCkKPiA+ID4gKyNkZWZpbmUgVEVNUF9DQUxJQl9N QVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VOTUFTSygxMSwgMCkKPiA+ID4gKyNk ZWZpbmUgVEVNUF9UT19SRUcgICAgICAgICAgICAgICAgICAgICAgICAgIDY3Mgo+ID4gPiArI2Rl ZmluZSBDQUxJQlJBVEVfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgMHg4MDAKPiA+ID4gKwo+ ID4gPiArI2RlZmluZSBTVU41MElfVEhTX0NUUkwwICAgICAgICAgICAgICAgICAgICAgMHgwMAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX0VOQUJMRSAgICAgICAgICAgICAgICAgMHgwNAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX1BDICAgICAgICAgICAgICAgICAgICAgMHgwOAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX0RJQyAgICAgICAgICAgICAgICAgICAgMHgxMAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX0RJUyAgICAgICAgICAgICAgICAgICAgMHgyMAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX01GQyAgICAgICAgICAgICAgICAgICAgMHgzMAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX1RFTVBfQ0FMSUIgICAgICAgICAgICAgMHhhMAo+ ID4gPiArI2RlZmluZSBTVU41MElfSDZfVEhTX1RFTVBfREFUQSAgICAgICAgICAgICAgICAgICAg ICAweGMwCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgU1VONTBJX1RIU19DVFJMMF9UX0FDUSh4KSAg ICAgICAgICAgICgoR0VOTUFTSygxNSwgMCkgJiAoeCkpIDw8IDE2KQo+ID4gPiArI2RlZmluZSBT VU41MElfVEhTX0ZJTFRFUl9FTiAgICAgICAgICAgICAgICAgQklUKDIpCj4gPiA+ICsjZGVmaW5l IFNVTjUwSV9USFNfRklMVEVSX1RZUEUoeCkgICAgICAgICAgICAoR0VOTUFTSygxLCAwKSAmICh4 KSkKPiA+ID4gKyNkZWZpbmUgU1VONTBJX0g2X1RIU19QQ19URU1QX1BFUklPRCh4KSAgICAgICAg ICAgICAgKChHRU5NQVNLKDE5LCAwKSAmICh4KSkgPDwgMTIpCj4gPiA+ICsjZGVmaW5lIFNVTjUw SV9INl9USFNfREFUQV9JUlFfU1RTKHgpICAgICAgICAgICAgICAgIEJJVCh4KQo+ID4gPiArCj4g PiA+ICsvKiBtaWxsaWRlZ3JlZSBjZWxzaXVzICovCj4gPiA+ICsjZGVmaW5lIFNVTjUwSV9INl9G VF9ERVZJQVRJT04gICAgICAgICAgICAgICAgICAgICAgIDcwMDAKPiA+ID4gKwo+ID4gPiArc3Ry dWN0IHRoc19kZXZpY2U7Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCB0c2Vuc29yIHsKPiA+ID4gKyAg ICAgc3RydWN0IHRoc19kZXZpY2UgICAgICAgICAgICAgICAqdG1kZXY7Cj4gPiA+ICsgICAgIHN0 cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICAgICAgKnR6ZDsKPiA+ID4gKyAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZDsKPiA+ID4gKyAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg ICAgICAgICAgICAgICB3YWl0X3F1ZXVlOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RydWN0 IHRoc190aGVybWFsX2NoaXAgewo+ID4gPiArICAgICBpbnQgICAgICAgICAgICAgc2Vuc29yX251 bTsKPiA+ID4gKyAgICAgaW50ICAgICAgICAgICAgIG9mZnNldDsKPiA+ID4gKyAgICAgaW50ICAg ICAgICAgICAgIHNjYWxlOwo+ID4gPiArICAgICBpbnQgICAgICAgICAgICAgZnRfZGV2aWF0aW9u Owo+ID4gPiArICAgICBpbnQgICAgICAgICAgICAgdGVtcF9jYWxpYl9iYXNlOwo+ID4gPiArICAg ICBpbnQgICAgICAgICAgICAgdGVtcF9kYXRhX2Jhc2U7Cj4gPiA+ICsgICAgIGludCAgICAgICAg ICAgICAoKmNhbGlicmF0ZSkoc3RydWN0IHRoc19kZXZpY2UgKnRtZGV2KTsKPiA+ID4gKyAgICAg aW50ICAgICAgICAgICAgICgqaW5pdCkoc3RydWN0IHRoc19kZXZpY2UgKnRtZGV2KTsKPiA+ID4g KyAgICAgaXJxcmV0dXJuX3QgICAgICgqaXJxX3RocmVhZCkoaW50IGlycSwgdm9pZCAqZGF0YSk7 Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgdGhzX2RldmljZSB7Cj4gPiA+ICsgICAg IGNvbnN0IHN0cnVjdCB0aHNfdGhlcm1hbF9jaGlwICAgICAgICAgICAqY2hpcDsKPiA+ID4gKyAg ICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXY7Cj4gPiA+ICsg ICAgIHN0cnVjdCByZWdtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnbWFwOwo+ID4g PiArICAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAgICAgICAgICAgICAgICAgICAgKnJlc2V0Owo+ ID4gPiArICAgICBzdHJ1Y3QgY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmJ1c19j bGs7Cj4gPiA+ICsgICAgIHN0cnVjdCB0c2Vuc29yICAgICAgICAgICAgICAgICAgICAgICAgICBz ZW5zb3JbTUFYX1NFTlNPUl9OVU1dOwo+ID4gPiArICAgICBpbnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YV9yZWFkeTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8q IFRlbXAgVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cyAqLwo+ID4gPiArc3RhdGljIGludCBzdW44 aV90aHNfcmVnMnRlbXAoc3RydWN0IHRoc19kZXZpY2UgKnRtZGV2LAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHJlZykKPiA+ID4gK3sKPiA+ID4gKyAgICAgcmV0dXJuIChy ZWcgKyB0bWRldi0+Y2hpcC0+b2Zmc2V0KSAqIHRtZGV2LT5jaGlwLT5zY2FsZTsKPiA+ID4gK30K PiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBzdW44aV90aHNfZ2V0X3RlbXAodm9pZCAqZGF0YSwg aW50ICp0ZW1wKQo+ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3QgdHNlbnNvciAqcyA9IGRhdGE7 Cj4gPiA+ICsgICAgIHN0cnVjdCB0aHNfZGV2aWNlICp0bWRldiA9IHMtPnRtZGV2Owo+ID4gPiAr ICAgICBpbnQgdmFsOwo+ID4gPiArCj4gPiA+ICsgICAgIHdhaXRfZXZlbnQocy0+d2FpdF9xdWV1 ZSwgdG1kZXYtPmRhdGFfcmVhZHkgJiBCSVQocy0+aWQpKTsKPiA+ID4gKyAgICAgdG1kZXYtPmRh dGFfcmVhZHkgJj0gfkJJVChzLT5pZCk7Cj4gPgo+ID4gSSd2ZSBsb29rZWQgYXQgdGhlcm1hbF9j b3JlLmMgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCB0aGUgcHJvcGVyIHdheSB0byBoYW5kbGUKPiA+ IHRoaXMgc2l0dWF0aW9uIGlzIGp1c3QgcmV0dXJuaW5nIC1FQUdBSU4uCj4KPiBXaGF0IHdlIGFy ZSBkb2luZyBub3cgaXMgdG8gdHVybiBpdCBpbnRvIGFuIGludGVycnVwdC1iYXNlZCBwcm9ncmFt Lgo+IEV2ZXJ5IHRpbWUgd2UgdXNlIHRlbXBlcmF0dXJlIGRhdGEsIHdlIG5lZWQgdG8gd2FpdCB1 bnRpbCBuZXcgZGF0YSBpcyBjb2xsZWN0ZWQuCj4KPiA+Cj4gPiBTZWUgdXBkYXRlX3RlbXBlcmF0 dXJlKCkgZnVuY3Rpb24gaW4gdGhlcm1hbF9jb3JlLmMuCj4gPgo+ID4gVGhhdCB3aWxsIHN1cHBy ZXNzIHRoZSB3YXJuaW5nIGFib3V0IGZhaWx1cmUgdG8gcmVhZCB0aGVybWFsIHpvbmUuIEFsc28K PiA+IGl0J3MgbXVjaCBzaW1wbGVyIHRoYW4gdGhpcyB3YWl0X3F1ZXVlIHN0dWZmLiBObyBvdGhl ciB0aGVybWFsIGRyaXZlciB1c2VzIHRoaXMKPiA+IGVpdGhlci4gQWxzbyBnZXRfdGVtcCBpcyBj YWxsZWQgdW5kZXIgdGhlcm1hbF9saXN0X2xvY2sgbXV0ZXggYW5kIHRoYXQgd291bGQKPiA+IGJs b2NrIGNvb2xpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbnMgYW5kIGdvZCBrbm93cyB3aGF0IGVsc2Uu Cj4KPiBTaW5jZSB0aGVyZSBpcyBubyB2YWxpZCB0ZW1wZXJhdHVyZSBkYXRhLCBpdCBjYW5ub3Qg YmUgYmxvY2tlZC4KClNpbmNlIHRoZXJlIGlzIG5vIHZhbGlkIHRlbXBlcmF0dXJlIGRhdGEsIHdo eSBjYW4ndCBpdCBiZSBibG9ja2VkPwoKPgo+IE1CUiwKPiBZYW5ndGFvCj4KPiA+Cj4gPiBPdGhl ciB0aGFuIHRoYXQsIGFuZCB3aGF0IE1heGltZSBzYWlkLCBJIGRvbid0IHNlZSBhbnkgbW9yZSBp c3N1ZXMuCj4gPgo+ID4gdGhhbmsgeW91LAo+ID4gICAgICAgICBvLgo+ID4KPiA+ID4gKyAgICAg cmVnbWFwX3JlYWQodG1kZXYtPnJlZ21hcCwgdG1kZXYtPmNoaXAtPnRlbXBfZGF0YV9iYXNlICsK PiA+ID4gKyAgICAgICAgICAgICAgICAgMHg0ICogcy0+aWQsICZ2YWwpOwo+ID4gPiArCj4gPiA+ ICsgICAgICp0ZW1wID0gc3VuOGlfdGhzX3JlZzJ0ZW1wKHRtZGV2LCB2YWwpOwo+ID4gPiArICAg ICAvKgo+ID4gPiArICAgICAgKiBYWCAtIEFjY29yZGluZyB0byB0aGUgb3JpZ2luYWwgc2RrLCB0 aGVyZSBhcmUgc29tZSBwbGF0Zm9ybXMocmFyZWx5KQo+ID4gPiArICAgICAgKiB0aGF0IGFkZCBh IGZpeGVkIG9mZnNldCB2YWx1ZSBhZnRlciBjYWxjdWxhdGluZyB0aGUgdGVtcGVyYXR1cmUKPiA+ ID4gKyAgICAgICogdmFsdWUuIFdlIGNhbid0IHNpbXBseSBwdXQgaXQgb24gdGhlIGZvcm11bGEg Zm9yIGNhbGN1bGF0aW5nIHRoZQo+ID4gPiArICAgICAgKiB0ZW1wZXJhdHVyZSBhYm92ZSwgYmVj YXVzZSB0aGUgZm9ybXVsYSBmb3IgY2FsY3VsYXRpbmcgdGhlCj4gPiA+ICsgICAgICAqIHRlbXBl cmF0dXJlIGFib3ZlIGlzIGFsc28gdXNlZCB3aGVuIHRoZSBzZW5zb3IgaXMgY2FsaWJyYXRlZC4g SWYKPiA+ID4gKyAgICAgICogZG8gdGhpcywgdGhlIGNvcnJlY3QgY2FsaWJyYXRpb24gZm9ybXVs YSBpcyBoYXJkIHRvIGtub3cuCj4gPiA+ICsgICAgICAqLwo+ID4gPiArICAgICBpZiAodG1kZXYt PmNoaXAtPmZ0X2RldmlhdGlvbikKPiA+ID4gKyAgICAgICAgICAgICAqdGVtcCArPSB0bWRldi0+ Y2hpcC0+ZnRfZGV2aWF0aW9uOwo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiAr fQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRoZXJtYWxfem9uZV9vZl9kZXZp Y2Vfb3BzIHRoc19vcHMgPSB7Cj4gPiA+ICsgICAgIC5nZXRfdGVtcCA9IHN1bjhpX3Roc19nZXRf dGVtcCwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFw X2NvbmZpZyBjb25maWcgPSB7Cj4gPiA+ICsgICAgIC5yZWdfYml0cyA9IDMyLAo+ID4gPiArICAg ICAudmFsX2JpdHMgPSAzMiwKPiA+ID4gKyAgICAgLnJlZ19zdHJpZGUgPSA0LAo+ID4gPiArICAg ICAuZmFzdF9pbyA9IHRydWUsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaXJxcmV0 dXJuX3Qgc3VuNTBpX2g2X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSkKPiA+ID4gK3sK PiA+ID4gKyAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgKmRhdGFfd2FpdDsKPiA+ID4gKyAgICAgc3Ry dWN0IHRoc19kZXZpY2UgKnRtZGV2ID0gZGF0YTsKPiA+ID4gKyAgICAgaW50IGksIHN0YXRlOwo+ ID4gPiArCj4gPiA+ICsgICAgIHJlZ21hcF9yZWFkKHRtZGV2LT5yZWdtYXAsIFNVTjUwSV9INl9U SFNfRElTLCAmc3RhdGUpOwo+ID4gPiArCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCB0bWRl di0+Y2hpcC0+c2Vuc29yX251bTsgaSsrKSB7Cj4gPiA+ICsgICAgICAgICAgICAgZGF0YV93YWl0 ID0gJnRtZGV2LT5zZW5zb3JbaV0ud2FpdF9xdWV1ZTsKPiA+ID4gKwo+ID4gPiArICAgICAgICAg ICAgIGlmIChzdGF0ZSAmIFNVTjUwSV9INl9USFNfREFUQV9JUlFfU1RTKGkpKSB7Cj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciBkYXRhIGlycSBwZW5kaW5nICovCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICByZWdtYXBfd3JpdGUodG1kZXYtPnJlZ21hcCwgU1VONTBJX0g2 X1RIU19ESVMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJ X0g2X1RIU19EQVRBX0lSUV9TVFMoaSkpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICB0bWRldi0+ZGF0YV9yZWFkeSB8PSBCSVQoaSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICB3YWtlX3VwKGRhdGFfd2FpdCk7Cj4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiArICAg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgaW50IHN1bjhpX3Roc19yZXNvdXJjZV9pbml0KHN0cnVjdCB0aHNf ZGV2aWNlICp0bWRldikKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2ID0g dG1kZXYtPmRldjsKPiA+ID4gKyAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRv X3BsYXRmb3JtX2RldmljZShkZXYpOwo+ID4gPiArICAgICBzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsK PiA+ID4gKyAgICAgdm9pZCBfX2lvbWVtICpiYXNlOwo+ID4gPiArICAgICBpbnQgcmV0LCBpcnE7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAwKTsKPiA+ID4gKyAgICAgYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIG1lbSk7Cj4gPiA+ICsgICAgIGlmIChJU19FUlIoYmFzZSkpCj4gPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIFBUUl9FUlIoYmFzZSk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgdG1kZXYtPnJl Z21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhkZXYsIGJhc2UsICZjb25maWcpOwo+ID4gPiAr ICAgICBpZiAoSVNfRVJSKHRtZGV2LT5yZWdtYXApKQo+ID4gPiArICAgICAgICAgICAgIHJldHVy biBQVFJfRVJSKHRtZGV2LT5yZWdtYXApOwo+ID4gPiArCj4gPiA+ICsgICAgIHRtZGV2LT5yZXNl dCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXQoZGV2LCAwKTsKPiA+ID4gKyAgICAgaWYgKElTX0VS Uih0bWRldi0+cmVzZXQpKQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHRtZGV2 LT5yZXNldCk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgdG1kZXYtPmJ1c19jbGsgPSBkZXZtX2Nsa19n ZXQoJnBkZXYtPmRldiwgImJ1cyIpOwo+ID4gPiArICAgICBpZiAoSVNfRVJSKHRtZGV2LT5idXNf Y2xrKSkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUih0bWRldi0+YnVzX2Nsayk7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKPiA+ ID4gKyAgICAgaWYgKGlycSA8IDApCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGlycTsKPiA+ ID4gKwo+ID4gPiArICAgICByZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgaXJx LCBOVUxMLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtZGV2 LT5jaGlwLT5pcnFfdGhyZWFkLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElSUUZfT05FU0hPVCwgInRocyIsIHRtZGV2KTsKPiA+ID4gKyAgICAgaWYgKHJldCkK PiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiArCj4gPiA+ICsgICAgIHJldCA9 IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQodG1kZXYtPnJlc2V0KTsKPiA+ID4gKyAgICAgaWYgKHJl dCkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiArCj4gPiA+ICsgICAgIHJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZSh0bWRldi0+YnVzX2Nsayk7Cj4gPiA+ICsgICAgIGlmIChy ZXQpCj4gPiA+ICsgICAgICAgICAgICAgZ290byBhc3NlcnRfcmVzZXQ7Cj4gPiA+ICsKPiA+ID4g KyAgICAgcmV0ID0gdG1kZXYtPmNoaXAtPmNhbGlicmF0ZSh0bWRldik7Cj4gPiA+ICsgICAgIGlm IChyZXQpCj4gPiA+ICsgICAgICAgICAgICAgZ290byBidXNfZGlzYWJsZTsKPiA+ID4gKwo+ID4g PiArICAgICByZXR1cm4gMDsKPiA+ID4gKwo+ID4gPiArYnVzX2Rpc2FibGU6Cj4gPiA+ICsgICAg IGNsa19kaXNhYmxlX3VucHJlcGFyZSh0bWRldi0+YnVzX2Nsayk7Cj4gPiA+ICthc3NlcnRfcmVz ZXQ6Cj4gPiA+ICsgICAgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHRtZGV2LT5yZXNldCk7Cj4gPiA+ ICsKPiA+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IGludCBzdW41MGlfdGhzX2NhbGlicmF0ZShzdHJ1Y3QgdGhzX2RldmljZSAqdG1kZXYpCj4gPiA+ ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBudm1lbV9jZWxsICpjYWxjZWxsOwo+ID4gPiArICAgICBz dHJ1Y3QgZGV2aWNlICpkZXYgPSB0bWRldi0+ZGV2Owo+ID4gPiArICAgICB1MTYgKmNhbGRhdGE7 Cj4gPiA+ICsgICAgIHNpemVfdCBjYWxsZW47Cj4gPiA+ICsgICAgIGludCBmdF90ZW1wOwo+ID4g PiArICAgICBpbnQgaSwgcmV0ID0gMDsKPiA+ID4gKwo+ID4gPiArICAgICBjYWxjZWxsID0gZGV2 bV9udm1lbV9jZWxsX2dldChkZXYsICJjYWxpYiIpOwo+ID4gPiArICAgICBpZiAoSVNfRVJSKGNh bGNlbGwpKSB7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKFBUUl9FUlIoY2FsY2VsbCkgPT0gLUVQ Uk9CRV9ERUZFUikKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBST0JFX0RF RkVSOwo+ID4gPiArICAgICAgICAgICAgIC8qCj4gPiA+ICsgICAgICAgICAgICAgICogRXZlbiBp ZiB0aGUgZXh0ZXJuYWwgY2FsaWJyYXRpb24gZGF0YSBzdG9yZWQgaW4gc2lkIGlzCj4gPiA+ICsg ICAgICAgICAgICAgICogbm90IGFjY2Vzc2libGUsIHRoZSBUSFMgaGFyZHdhcmUgY2FuIHN0aWxs IHdvcmssIGFsdGhvdWdoCj4gPiA+ICsgICAgICAgICAgICAgICogdGhlIGRhdGEgd29uJ3QgYmUg c28gYWNjdXJhdGUuCj4gPiA+ICsgICAgICAgICAgICAgICoKPiA+ID4gKyAgICAgICAgICAgICAg KiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjYWxpYnJhdGlvbiByZWdpc3RlciBpcyAweDgwMCBmb3IK PiA+ID4gKyAgICAgICAgICAgICAgKiBldmVyeSBzZW5zb3IsIGFuZCB0aGUgY2FsaWJyYXRpb24g dmFsdWUgaXMgdXN1YWxseSAweDd4eAo+ID4gPiArICAgICAgICAgICAgICAqIG9yIDB4OHh4LCBz byB0aGV5IHdvbid0IGJlIGF3YXkgZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZQo+ID4gPiArICAgICAg ICAgICAgICAqIGZvciBhIGxvdC4KPiA+ID4gKyAgICAgICAgICAgICAgKgo+ID4gPiArICAgICAg ICAgICAgICAqIFNvIGhlcmUgd2UgZG8gbm90IHJldHVybiBlcnJvciBpZiB0aGUgY2FsaWJhcnRp b24gZGF0YSBpcwo+ID4gPiArICAgICAgICAgICAgICAqIG5vdCBhdmFpbGFibGUsIGV4Y2VwdCB0 aGUgcHJvYmUgbmVlZHMgZGVmZXJyaW5nLgo+ID4gPiArICAgICAgICAgICAgICAqLwo+ID4gPiAr ICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAg Y2FsZGF0YSA9IG52bWVtX2NlbGxfcmVhZChjYWxjZWxsLCAmY2FsbGVuKTsKPiA+ID4gKyAgICAg aWYgKElTX0VSUihjYWxkYXRhKSkgewo+ID4gPiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIo Y2FsZGF0YSk7Cj4gPiA+ICsgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiA+ICsgICAgIH0KPiA+ ID4gKwo+ID4gPiArICAgICBpZiAoIWNhbGRhdGFbMF0gfHwgY2FsbGVuIDwgMiArIDIgKiB0bWRl di0+Y2hpcC0+c2Vuc29yX251bSkgewo+ID4gPiArICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7 Cj4gPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfZnJlZTsKPiA+ID4gKyAgICAgfQo+ID4gPiAr Cj4gPiA+ICsgICAgIC8qCj4gPiA+ICsgICAgICAqIGVmdXNlIGxheW91dDoKPiA+ID4gKyAgICAg ICoKPiA+ID4gKyAgICAgICogICAgICAwICAgMTEgIDE2ICAgICAgIDMyCj4gPiA+ICsgICAgICAq ICAgICAgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKwo+ID4gPiArICAgICAgKiAgICAgIHx0ZW1w fCAgfHNlbnNvcjB8c2Vuc29yMXwKPiA+ID4gKyAgICAgICogICAgICArLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0rCj4gPiA+ICsgICAgICAqCj4gPiA+ICsgICAgICAqIFRoZSBjYWxpYnJhdGlvbiBk YXRhIG9uIHRoZSBINiBpcyB0aGUgYW1iaWVudCB0ZW1wZXJhdHVyZSBhbmQKPiA+ID4gKyAgICAg ICogc2Vuc29yIHZhbHVlcyB0aGF0IGFyZSBmaWxsZWQgZHVyaW5nIHRoZSBmYWN0b3J5IHRlc3Qg c3RhZ2UuCj4gPiA+ICsgICAgICAqCj4gPiA+ICsgICAgICAqIFRoZSB1bml0IG9mIHN0b3JlZCBG VCB0ZW1wZXJhdHVyZSBpcyAwLjEgZGVncmVlZSBjZWx1c2lzLgo+ID4gPiArICAgICAgKiBUaHJv dWdoIHRoZSBzdG9yZWQgYW1iaWVudCB0ZW1wZXJhdHVyZSBhbmQgdGhlIGRhdGEgcmVhZAo+ID4g PiArICAgICAgKiBieSB0aGUgc2Vuc29yLCBhZnRlciBhIGNlcnRhaW4gY2FsY3VsYXRpb24sIHRo ZSBjYWxpYnJhdGlvbgo+ID4gPiArICAgICAgKiB2YWx1ZSB0byBiZSBjb21wZW5zYXRlZCBjYW4g YmUgb2J0YWluZWQuCj4gPiA+ICsgICAgICAqLwo+ID4gPiArICAgICBmdF90ZW1wID0gY2FsZGF0 YVswXSAmIEZUX1RFTVBfTUFTSzsKPiA+ID4gKwo+ID4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwg dG1kZXYtPmNoaXAtPnNlbnNvcl9udW07IGkrKykgewo+ID4gPiArICAgICAgICAgICAgIGludCBy ZWcgPSAoaW50KWNhbGRhdGFbaSArIDFdOwo+ID4gPiArICAgICAgICAgICAgIGludCBzZW5zb3Jf dGVtcCA9IHN1bjhpX3Roc19yZWcydGVtcCh0bWRldiwgcmVnKTsKPiA+ID4gKyAgICAgICAgICAg ICBpbnQgZGVsdGEsIGNkYXRhLCBjYWxpYl9vZmZlc3Q7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAg ICAgICAvKgo+ID4gPiArICAgICAgICAgICAgICAqIFRvIGNhbGN1bGF0ZSB0aGUgY2FsaWJyYXRp b24gdmFsdWU6Cj4gPiA+ICsgICAgICAgICAgICAgICoKPiA+ID4gKyAgICAgICAgICAgICAgKiBY KGluIENlbHNpdXMpID0gVHMgLSBmdF90ZW1wCj4gPiA+ICsgICAgICAgICAgICAgICogZGVsdGEg PSBYICogMTAwMDAgLyBURU1QX1RPX1JFRwo+ID4gPiArICAgICAgICAgICAgICAqIGNkYXRhID0g Q0FMSUJSQVRFX0RFRkFVTFQgLSBkZWx0YQo+ID4gPiArICAgICAgICAgICAgICAqCj4gPiA+ICsg ICAgICAgICAgICAgICogY2RhdGE6IGNhbGlicmF0aW9uIHZhbHVlCj4gPiA+ICsgICAgICAgICAg ICAgICovCj4gPiA+ICsgICAgICAgICAgICAgZGVsdGEgPSAoc2Vuc29yX3RlbXAgLSBmdF90ZW1w ICogMTAwKSAqIDEwIC8gVEVNUF9UT19SRUc7Cj4gPiA+ICsgICAgICAgICAgICAgY2RhdGEgPSBD QUxJQlJBVEVfREVGQVVMVCAtIGRlbHRhOwo+ID4gPiArICAgICAgICAgICAgIGlmIChjZGF0YSAm IH5URU1QX0NBTElCX01BU0spIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC8qCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgKiBDYWxpYnJhdGlvbiB2YWx1ZSBtb3JlIHRoYW4gMTIt Yml0LCBidXQgY2FsaWJyYXRpb24KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqIHJlZ2lz dGVyIGlzIDEyLWJpdC4gSW4gdGhpcyBjYXNlLCB0aHMgaGFyZHdhcmUgY2FuCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgKiBzdGlsbCB3b3JrIHdpdGhvdXQgY2FsaWJyYXRpb24sIGFsdGhv dWdoIHRoZSBkYXRhCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKiB3b24ndCBiZSBzbyBh Y2N1cmF0ZS4KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgZGV2X3dhcm4oZGV2LCAic2Vuc29yJWQgaXMgbm90IGNhbGlicmF0ZWQuXG4i LCBpKTsKPiA+ID4gKwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ ICsgICAgICAgICAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgY2FsaWJfb2ZmZXN0 ID0gdG1kZXYtPmNoaXAtPnRlbXBfY2FsaWJfYmFzZSArIChpIC8gMikgKiAweDQ7Cj4gPiA+ICsK PiA+ID4gKyAgICAgICAgICAgICBpZiAoaSAlIDIpIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGludCB2YWw7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJlZ21hcF9y ZWFkKHRtZGV2LT5yZWdtYXAsIGNhbGliX29mZmVzdCwgJnZhbCk7Cj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICB2YWwgPSAodmFsICYgVEVNUF9DQUxJQl9NQVNLKSB8IChjZGF0YSA8PCAxNik7 Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZWdtYXBfd3JpdGUodG1kZXYtPnJlZ21hcCwg Y2FsaWJfb2ZmZXN0LCB2YWwpOwo+ID4gPiArICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICByZWdtYXBfd3JpdGUodG1kZXYtPnJlZ21hcCwgY2FsaWJfb2Zm ZXN0LCBjZGF0YSk7Cj4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiArICAgICB9Cj4gPiA+ICsK PiA+ID4gK291dF9mcmVlOgo+ID4gPiArICAgICBrZnJlZShjYWxkYXRhKTsKPiA+ID4gK291dDoK PiA+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGlu dCBzdW44aV90aHNfcmVnaXN0ZXIoc3RydWN0IHRoc19kZXZpY2UgKnRtZGV2KQo+ID4gPiArewo+ ID4gPiArICAgICBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHpkOwo+ID4gPiArICAgICBp bnQgaTsKPiA+ID4gKwo+ID4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwgdG1kZXYtPmNoaXAtPnNl bnNvcl9udW07IGkrKykgewo+ID4gPiArICAgICAgICAgICAgIHRtZGV2LT5zZW5zb3JbaV0udG1k ZXYgPSB0bWRldjsKPiA+ID4gKyAgICAgICAgICAgICB0bWRldi0+c2Vuc29yW2ldLmlkID0gaTsK PiA+ID4gKyAgICAgICAgICAgICB0bWRldi0+c2Vuc29yW2ldLnR6ZCA9Cj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICBkZXZtX3RoZXJtYWxfem9uZV9vZl9zZW5zb3JfcmVnaXN0ZXIodG1kZXYt PmRldiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZ0bWRldi0+c2Vuc29yW2ldLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHNf b3BzKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoSVNfRVJSKHRtZGV2LT5zZW5zb3JbaV0udHpk KSkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHR6ZCk7Cj4gPiA+ ICsgICAgIH0KPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCBzdW44aV90aHNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHRoc19kZXZpY2UgKnRtZGV2Owo+ID4g PiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ID4gPiArICAgICBpbnQg aSwgcmV0Owo+ID4gPiArCj4gPiA+ICsgICAgIHRtZGV2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCp0bWRldiksIEdGUF9LRVJORUwpOwo+ID4gPiArICAgICBpZiAoIXRtZGV2KQo+ID4gPiAr ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsgICAgIHRtZGV2LT5k ZXYgPSBkZXY7Cj4gPiA+ICsgICAgIHRtZGV2LT5jaGlwID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9k YXRhKCZwZGV2LT5kZXYpOwo+ID4gPiArICAgICBpZiAoIXRtZGV2LT5jaGlwKQo+ID4gPiArICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsgICAgIC8qCj4gPiA+ICsg ICAgICAqIEluaXRpYWxpemUgd2FpdF9xdWV1ZSBpbiBhZHZhbmNlLCB0byBhdm9pZCBjYWxsaW5n IHdha2VfdXAKPiA+ID4gKyAgICAgICogYmVmb3JlIHRocyBpcyByZWdpc3RlcmVkIGluIGlzci4K PiA+ID4gKyAgICAgICovCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCB0bWRldi0+Y2hpcC0+ c2Vuc29yX251bTsgaSsrKQo+ID4gPiArICAgICAgICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQo JnRtZGV2LT5zZW5zb3JbaV0ud2FpdF9xdWV1ZSk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgdG1kZXYpOwo+ID4gPiArCj4gPiA+ICsgICAgIHJldCA9IHN1 bjhpX3Roc19yZXNvdXJjZV9pbml0KHRtZGV2KTsKPiA+ID4gKyAgICAgaWYgKHJldCkKPiA+ID4g KyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiArCj4gPiA+ICsgICAgIHJldCA9IHRtZGV2 LT5jaGlwLT5pbml0KHRtZGV2KTsKPiA+ID4gKyAgICAgaWYgKHJldCkKPiA+ID4gKyAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+ID4gPiArCj4gPiA+ICsgICAgIHJldCA9IHN1bjhpX3Roc19yZWdp c3Rlcih0bWRldik7Cj4gPiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgaW50IHN1bjhpX3Roc19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHRoc19kZXZpY2UgKnRtZGV2ID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPiA+ICsKPiA+ID4gKyAgICAgY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKHRtZGV2LT5idXNfY2xrKTsKPiA+ID4gKyAgICAgcmVzZXRfY29udHJvbF9h c3NlcnQodG1kZXYtPnJlc2V0KTsKPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gMDsKPiA+ID4g K30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBzdW41MGlfdGhlcm1hbF9pbml0KHN0cnVjdCB0 aHNfZGV2aWNlICp0bWRldikKPiA+ID4gK3sKPiA+ID4gKyAgICAgaW50IHZhbDsKPiA+ID4gKwo+ ID4gPiArICAgICAvKgo+ID4gPiArICAgICAgKiBjbGtpbiA9IDI0TUh6Cj4gPiA+ICsgICAgICAq IFQgYWNxdWlyZSA9IGNsa2luIC8gKHggKyAxKQo+ID4gPiArICAgICAgKiAgICAgICAgICAgPSAy MHVzCj4gPiA+ICsgICAgICAqLwo+ID4gPiArICAgICByZWdtYXBfd3JpdGUodG1kZXYtPnJlZ21h cCwgU1VONTBJX1RIU19DVFJMMCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgIFNVTjUwSV9USFNf Q1RSTDBfVF9BQ1EoNDc5KSk7Cj4gPiA+ICsgICAgIC8qIGF2ZXJhZ2Ugb3ZlciA0IHNhbXBsZXMg Ki8KPiA+ID4gKyAgICAgcmVnbWFwX3dyaXRlKHRtZGV2LT5yZWdtYXAsIFNVTjUwSV9INl9USFNf TUZDLAo+ID4gPiArICAgICAgICAgICAgICAgICAgU1VONTBJX1RIU19GSUxURVJfRU4gfAo+ID4g PiArICAgICAgICAgICAgICAgICAgU1VONTBJX1RIU19GSUxURVJfVFlQRSgxKSk7Cj4gPiA+ICsg ICAgIC8qIHBlcmlvZCA9ICh4ICsgMSkgKiA0MDk2IC8gY2xraW47IH4xMG1zICovCj4gPiA+ICsg ICAgIHJlZ21hcF93cml0ZSh0bWRldi0+cmVnbWFwLCBTVU41MElfSDZfVEhTX1BDLAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgU1VONTBJX0g2X1RIU19QQ19URU1QX1BFUklPRCg1OCkpOwo+ID4g PiArICAgICAvKiBlbmFibGUgc2Vuc29yICovCj4gPiA+ICsgICAgIHZhbCA9IEdFTk1BU0sodG1k ZXYtPmNoaXAtPnNlbnNvcl9udW0gLSAxLCAwKTsKPiA+ID4gKyAgICAgcmVnbWFwX3dyaXRlKHRt ZGV2LT5yZWdtYXAsIFNVTjUwSV9INl9USFNfRU5BQkxFLCB2YWwpOwo+ID4gPiArICAgICAvKiB0 aGVybWFsIGRhdGEgaW50ZXJydXB0IGVuYWJsZSAqLwo+ID4gPiArICAgICB2YWwgPSBHRU5NQVNL KHRtZGV2LT5jaGlwLT5zZW5zb3JfbnVtIC0gMSwgMCk7Cj4gPiA+ICsgICAgIHJlZ21hcF93cml0 ZSh0bWRldi0+cmVnbWFwLCBTVU41MElfSDZfVEhTX0RJQywgdmFsKTsKPiA+ID4gKwo+ID4gPiAr ICAgICByZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCB0aHNfdGhlcm1hbF9jaGlwIHN1bjUwaV9oNl90aHMgPSB7Cj4gPiA+ICsgICAgIC5zZW5zb3Jf bnVtID0gMiwKPiA+ID4gKyAgICAgLm9mZnNldCA9IC0yNzk0LAo+ID4gPiArICAgICAuc2NhbGUg PSAtNjcsCj4gPiA+ICsgICAgIC5mdF9kZXZpYXRpb24gPSBTVU41MElfSDZfRlRfREVWSUFUSU9O LAo+ID4gPiArICAgICAudGVtcF9jYWxpYl9iYXNlID0gU1VONTBJX0g2X1RIU19URU1QX0NBTElC LAo+ID4gPiArICAgICAudGVtcF9kYXRhX2Jhc2UgPSBTVU41MElfSDZfVEhTX1RFTVBfREFUQSwK PiA+ID4gKyAgICAgLmNhbGlicmF0ZSA9IHN1bjUwaV90aHNfY2FsaWJyYXRlLAo+ID4gPiArICAg ICAuaW5pdCA9IHN1bjUwaV90aGVybWFsX2luaXQsCj4gPiA+ICsgICAgIC5pcnFfdGhyZWFkID0g c3VuNTBpX2g2X2lycV90aHJlYWQsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl90aHNfbWF0Y2hbXSA9IHsKPiA+ID4gKyAgICAgeyAu Y29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2LXRocyIsIC5kYXRhID0gJnN1bjUwaV9o Nl90aHMgfSwKPiA+ID4gKyAgICAgeyAvKiBzZW50aW5lbCAqLyB9LAo+ID4gPiArfTsKPiA+ID4g K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3Roc19tYXRjaCk7Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRoc19kcml2ZXIgPSB7Cj4gPiA+ICsgICAgIC5w cm9iZSA9IHN1bjhpX3Roc19wcm9iZSwKPiA+ID4gKyAgICAgLnJlbW92ZSA9IHN1bjhpX3Roc19y ZW1vdmUsCj4gPiA+ICsgICAgIC5kcml2ZXIgPSB7Cj4gPiA+ICsgICAgICAgICAgICAgLm5hbWUg PSAic3VuOGktdGhlcm1hbCIsCj4gPiA+ICsgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0g b2ZfdGhzX21hdGNoLAo+ID4gPiArICAgICB9LAo+ID4gPiArfTsKPiA+ID4gK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIodGhzX2RyaXZlcik7Cj4gPiA+ICsKPiA+ID4gK01PRFVMRV9ERVNDUklQVElP TigiVGhlcm1hbCBzZW5zb3IgZHJpdmVyIGZvciBBbGx3aW5uZXIgU09DIik7Cj4gPiA+ICtNT0RV TEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gPiA+IC0tCj4gPiA+IDIuMTcuMAo+ID4gPgo+ID4gPgo+ ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4g PiBsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAo+ID4gPiBsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKPiA+ID4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==