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=-10.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 0000EC433B4 for ; Wed, 28 Apr 2021 20:54:01 +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 9C4C96144C for ; Wed, 28 Apr 2021 20:54:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C4C96144C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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 041B56E182; Wed, 28 Apr 2021 20:54:01 +0000 (UTC) Received: from mail-ot1-x331.google.com (mail-ot1-x331.google.com [IPv6:2607:f8b0:4864:20::331]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18C916E182 for ; Wed, 28 Apr 2021 20:54:00 +0000 (UTC) Received: by mail-ot1-x331.google.com with SMTP id u21-20020a0568301195b02902a2119f7613so12698069otq.10 for ; Wed, 28 Apr 2021 13:54:00 -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 :cc:content-transfer-encoding; bh=wubMbAaGoQ60Wpgen/iCFblopchcr2AbCcWaqyzDAk0=; b=MoamDIxjEVnpFNbifQonzlGdjW3+7BU1sdGSVLXCv8r+Fg0d4XNpQ4Fepi7STSRh0l R4M8JDlmFvMvPc1ujpgMa8RPUiFQs8VaHvroYUN8qVzuiJp+gxy6hvzawmWIx7VxewNU vpj6yyiL260W0VjmXkBYO0C+wuMCv+2fFSWHC8EpOD4wtqEaCJQ9fQmO74J3cYkXMWoz u8qWIc/z38Nrn9yk0iJazWuEbneLmFfqciB+xnYBlbQUOzvUn7Vuj2nyyjw3Eanw2CFS +GE2adYZZvaBdd6ocDIzxUfdnRX7dZ2m1z3nEsHO1XHmg49Xskur9lXnPiaJhiWgF3IR 7M4A== 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=wubMbAaGoQ60Wpgen/iCFblopchcr2AbCcWaqyzDAk0=; b=BNEKsqHXsU1iowDn02a89VLGBmu0LaAGTI8/XoB0tKI5lF/xgznmtJs5y56nS0Iy75 MDp/5DzmhoAFHZHvV9zK7GC89w+A2+evPMrw3AdT8cdcmtSMY3aLqKPhKt6rJ6Q8AbRO KgrVus1k7ApfIcCkpocE85DRmvK+BvRkUqVeHX5gCn7+TAgtiq9ZuWGxl265iqMmcOfF Aiv/M/W8F5WYuJS8WZSiF5G72PujJRNG41ckEwgxtsRa9Fg5PcjJ6nMDDszfoafYAIoH Q8SjgLnoeoEZ03D4qzXbi3lo4/v01mDLrl1TCn8xsb3iyev1V+s4LFoLWI7zoQueE/oy 097w== X-Gm-Message-State: AOAM530zQy+0Yq22Z+NaOR3iDOHe4BskLipjGRve9WRXyyh0jeabQMxh 09vqwzjfkb3LuvMXGx79SagEWRUR6E5868uvLqM= X-Google-Smtp-Source: ABdhPJyiYtDGSNKG8FYDrJ5F47Nksf8t/phN93OlTHapTCVQBgEZ+Q0Qq079bxIzSb2byOUmGHJJBB9G00fgQffXKWc= X-Received: by 2002:a05:6830:18d0:: with SMTP id v16mr11745878ote.311.1619643239367; Wed, 28 Apr 2021 13:53:59 -0700 (PDT) MIME-Version: 1.0 References: <20210422023448.24689-1-Jiawei.Gu@amd.com> <84a7de3b-b6a1-2acf-247a-0c93e84db09b@gmail.com> <0C1CB3BD-37DD-4F05-9E6E-2DED8A6CD44B@amd.com> <27103289-b51a-8e4b-ad09-0169829efeb0@gmail.com> <15f3858a-fe68-9e21-37f0-2984c465051d@gmail.com> In-Reply-To: From: Alex Deucher Date: Wed, 28 Apr 2021 16:53:48 -0400 Message-ID: Subject: Re: [PATCH] drm/amdgpu: Add vbios info ioctl interface To: "StDenis, Tom" 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: "Deucher, Alexander" , =?UTF-8?Q?Christian_K=C3=B6nig?= , "Gu, JiaWei \(Will\)" , "amd-gfx@lists.freedesktop.org" , "Nieto, David M" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" UGxlYXNlIHJldmVydCB0aGUgcGF0Y2ggaW4gdW1yIHVudGlsIHRoZSBrZXJuZWwgc2lkZSBsYW5k cyBpbiB1cHN0cmVhbSBkcm0tbmV4dC4KCkFsZXgKCk9uIFdlZCwgQXByIDI4LCAyMDIxIGF0IDc6 MzAgQU0gU3REZW5pcywgVG9tIDxUb20uU3REZW5pc0BhbWQuY29tPiB3cm90ZToKPgo+IFtBTUQg T2ZmaWNpYWwgVXNlIE9ubHkgLSBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0KPgo+IEhpIFdp bGwsCj4KPiBJJ3ZlIG1lcmdlZCBpbiB5b3VyIHYyIHBhdGNoIGxhc3Qgd2Vlay4gIElmIHRoYXQn cyBzdGlsbCB0aGUgbGF0ZXN0IHlvdSBzaG91bGQgYmUgZ29vZCB0byBnby4KPgo+IFRvbQo+Cj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEZyb206IEd1LCBKaWFX ZWkgKFdpbGwpIDxKaWFXZWkuR3VAYW1kLmNvbT4KPiBTZW50OiBXZWRuZXNkYXksIEFwcmlsIDI4 LCAyMDIxIDA2OjM4Cj4gVG86IENocmlzdGlhbiBLw7ZuaWc7IE5pZXRvLCBEYXZpZCBNOyBhbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgU3REZW5pcywgVG9tCj4gQ2M6IERldWNoZXIsIEFs ZXhhbmRlcgo+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdIGRybS9hbWRncHU6IEFkZCB2YmlvcyBpbmZv IGlvY3RsIGludGVyZmFjZQo+Cj4gW0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEludGVybmFsIERp c3RyaWJ1dGlvbiBPbmx5XQo+Cj4gSGkgQFN0RGVuaXMsIFRvbTxtYWlsdG86VG9tLlN0RGVuaXNA YW1kLmNvbT4sCj4KPiBXZSBoYXZlIG1lcmdlZCB2YmlvcyBpbmZvIGlvY3RsIHBhdGNoLgo+IENv dWxkIHlvdSBoZWxwIHJlLW1lcmdlIHRoZSBVTVIgc2lkZSBvbmUgYWdhaW4gaWYgaXQgd2FzIHJl dmVydGVkIGJlZm9yZT8KPgo+IFRoYW5rcyBpbiBhZHZhbmNlIQo+IEppYXdlaQo+Cj4gRnJvbTog R3UsIEppYVdlaSAoV2lsbCkKPiBTZW50OiBXZWRuZXNkYXksIEFwcmlsIDI4LCAyMDIxIDQ6MjEg UE0KPiBUbzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5j b20+OyBOaWV0bywgRGF2aWQgTSA8RGF2aWQuTmlldG9AYW1kLmNvbT47IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gQ2M6IERldWNoZXIsIEFsZXhhbmRlciA8QWxleGFuZGVyLkRldWNo ZXJAYW1kLmNvbT47IFN0RGVuaXMsIFRvbSA8VG9tLlN0RGVuaXNAYW1kLmNvbT4KPiBTdWJqZWN0 OiBSRTogW1BBVENIXSBkcm0vYW1kZ3B1OiBBZGQgdmJpb3MgaW5mbyBpb2N0bCBpbnRlcmZhY2UK Pgo+Cj4gW0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEludGVybmFsIERpc3RyaWJ1dGlvbiBPbmx5 XQo+Cj4gVGhhbmtzIENocmlzdGlhbiwKPgo+IEkgYW1lbmRlZCB0aGUgY29tbWl0IG1lc3NhZ2Ug YW5kIHJlc2VuZCB0aGUgcGF0Y2ggb3V0Lgo+IFBsZWFzZSBmZWVsIGZyZWUgdG8gbGV0IG1lIGtu b3cgaWYgbWVzc2FnZSBpcyBub3QgY2xlYXIgZW5vdWdoLgo+Cj4gQmVzdCByZWdhcmRzLAo+IEpp YXdlaQo+Cj4gRnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBn bWFpbC5jb208bWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPj4KPiBTZW50 OiBXZWRuZXNkYXksIEFwcmlsIDI4LCAyMDIxIDM6NDMgUE0KPiBUbzogTmlldG8sIERhdmlkIE0g PERhdmlkLk5pZXRvQGFtZC5jb208bWFpbHRvOkRhdmlkLk5pZXRvQGFtZC5jb20+PjsgR3UsIEpp YVdlaSAoV2lsbCkgPEppYVdlaS5HdUBhbWQuY29tPG1haWx0bzpKaWFXZWkuR3VAYW1kLmNvbT4+ OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzxtYWlsdG86YW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmc+Cj4gQ2M6IERldWNoZXIsIEFsZXhhbmRlciA8QWxleGFuZGVyLkRldWNoZXJA YW1kLmNvbTxtYWlsdG86QWxleGFuZGVyLkRldWNoZXJAYW1kLmNvbT4+OyBTdERlbmlzLCBUb20g PFRvbS5TdERlbmlzQGFtZC5jb208bWFpbHRvOlRvbS5TdERlbmlzQGFtZC5jb20+Pgo+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0hdIGRybS9hbWRncHU6IEFkZCB2YmlvcyBpbmZvIGlvY3RsIGludGVyZmFj ZQo+Cj4gWWVhaCwgbWFrZXMgc2Vuc2UuIFBsZWFzZSBub3RlIHRoYXQgaW4gdGhlIGNvbW1pdCBt ZXNzYWdlLgo+Cj4gV2l0aCB0aGF0IGZlZWwgZnJlZSB0byBwdXQgYW4gQWNrZWQtYnk6IENocmlz dGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT48bWFpbHRvOmNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4gb24gaXQuCj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPiBBbSAyOC4w NC4yMSB1bSAwOToyNSBzY2hyaWViIE5pZXRvLCBEYXZpZCBNOgo+IEkgdGhpbmsgdGhpcyBjaGFu Z2UgbWF5IGJlIG9ydGhvZ29uYWwgdG8gdGhhdC4gSGVyZSB3ZSB3YW50IHRvIHByb3ZpZGUgYSB3 YXkgZm9yIHRoZSB1c2VyIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgVkJJT1MgaW5mb3JtYXRpb24g d2l0aG91dCBoYXZpbmcgdG8gcGFyc2UgdGhlIGJpbmFyeeKApgo+Cj4gQW5kIEkgYWdyZWUgdGhh dCB3ZSBzaG91bGQgbm90IGhhdmUgc3Ryb25nIGRlcGVuZGVuY2llcyB1bmxlc3MgdGhlIGVuY291 bnRlciBidWdneSBWQklPUyBvbiB0aGUgZmllbGQsIGJ1dCBJIHN0aWxsIHRoaW5rIGl0IGlzIHVz ZWZ1bCBmb3IgdGhlIHVzZXIgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGluIGEgc2ltcGxlIHdheSB0 aGUgVkJJT1MgdmVyc2lvbiBpbiB0aGVpciBzeXN0ZW0gaWYgdGhleSBoYXBwZW4gdG8gZW5jb3Vu dGVyIGFuIGlzc3VlLgo+Cj4gUmVnYXJkcywKPiBEYXZpZAo+Cj4gRnJvbTogQ2hyaXN0aWFuIEvD tm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+PG1haWx0bzpja29lbmlnLmxl aWNodHp1bWVya2VuQGdtYWlsLmNvbT4KPiBEYXRlOiBXZWRuZXNkYXksIEFwcmlsIDI4LCAyMDIx IGF0IDEyOjE1IEFNCj4gVG86ICJOaWV0bywgRGF2aWQgTSIgPERhdmlkLk5pZXRvQGFtZC5jb20+ PG1haWx0bzpEYXZpZC5OaWV0b0BhbWQuY29tPiwgIkd1LCBKaWFXZWkgKFdpbGwpIiA8SmlhV2Vp Lkd1QGFtZC5jb20+PG1haWx0bzpKaWFXZWkuR3VAYW1kLmNvbT4sICJhbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZyI8bWFpbHRvOmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPiA8YW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc+PG1haWx0bzphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZz4KPiBDYzogIkRldWNoZXIsIEFsZXhhbmRlciIgPEFsZXhhbmRlci5EZXVjaGVyQGFt ZC5jb20+PG1haWx0bzpBbGV4YW5kZXIuRGV1Y2hlckBhbWQuY29tPiwgIlN0RGVuaXMsIFRvbSIg PFRvbS5TdERlbmlzQGFtZC5jb20+PG1haWx0bzpUb20uU3REZW5pc0BhbWQuY29tPgo+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0hdIGRybS9hbWRncHU6IEFkZCB2YmlvcyBpbmZvIGlvY3RsIGludGVyZmFj ZQo+Cj4gV2VsbCBkaXNwbGF5aW5nIHRoZSBWQklPUyBpbmZvcm1hdGlvbiBhbG9uZyB3aXRoIHRo ZSBvdGhlciBmaXJtd2FyZSBpbiB1c2Vyc3BhY2UgaXMgY2VydGFpbmx5IHVzZWZ1bC4KPgo+IFdl IHNob3VsZCBqdXN0IGF2b2lkIG1ha2luZyBzdHJvbmcgZGVwZW5kZW5jaWVzIG9uIHRoYXQuCj4K PiBGaXJtd2FyZSBhbmQgVkJJT1MgbXVzdCBhbHdheXMgYmUgYmFja3dhcmQgY29tcGF0aWJsZSBh bmQgdGhlIGRyaXZlciBtdXN0IGFsd2F5cyB3b3JrIHdpdGggYW55IHJlbGVhc2VkIGZpcm13YXJl IGFuZCBWQklPUyBjb21iaW5hdGlvbi4KPgo+IFdoYXQgd2UgY2FuIGRvIGlzIHRvIGRpc3BsYXkg YSB3YXJuaW5nIHdoZW4gd2UgZGV0ZWN0IGFuZC9vciBvbGQvYnVnZ3kgZmlybXdhcmUuCj4KPiBS ZWdhcmRzLAo+IENocmlzdGlhbi4KPiBBbSAyOC4wNC4yMSB1bSAwODo0NyBzY2hyaWViIE5pZXRv LCBEYXZpZCBNOgo+IEJlc2lkZXMgc3lzdGVtIG1hbmFnZW1lbnQsIGl0IHByb3ZpZGVzIHBhcnNl YWJsZSBkZXRhaWxzIG9uIHRoZSBWQklPUyB2ZXJzaW9uIGFuZCBpbmZvcm1hdGlvbi4gVGhpcyBp cyB1c2VmdWwgcmVuZGVyZXIgaW5mb3JtYXRpb24gYXMgdGhlIEdQVSBiZWhhdmlvciBkZXBlbmRz IG5vdCBvbmx5IG9uIHRoZSBkcml2ZXIgdmVyc2lvbiBidXQgYWxzbyBvbiB0aGUgZmlybXdhcmVz IHJ1bm5pbmcgb24gdGhlIEdQVS4KPgo+IFRoZSBBTURHUFVfSU5GTyBpb2N0bCBjb250YWlucyBh IG1ldGhvZCB0byBnZXQgdGhlIHZlcnNpb25zIG9mIHRoZSB1Y29kZSBmb3IgYWxsIHRoZSBJUHMs IGJ1dCBmb3IgVkJJT1MsIG9ubHkgYSB3YXkgdG8gZHVtcCB0aGUgZW50aXJlIGltYWdlIGlzIHBy b3ZpZGVkLiBXaGlsZSBpdCBJcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhlIHdob2xlIGxvZ2lj IG9mIFZCSU9TIHBhcnNpbmcgb24gdXNlcnNwYWNlLCBpdCByZXF1aXJlcyB0aGUgYXBwbGljYXRp b24gdG8gaGF2ZSBkZXRhaWxzIG9uIHRoZSBoZWFkZXIgYW5kIHRhYmxlIGZvcm1hdHMgdG8gcGFy c2UgdGhlIGRhdGEuIE1vcmVvdmVyIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBmb3Jt YXQgYW5kIGhlYWRlciBsb2NhdGlvbnMgd2lsbCByZW1haW4gY29uc3RhbnQgYWNyb3NzIEFTSUMg Z2VuZXJhdGlvbnMsIHNvIHRoZSBtYWludGFpbmFuY2UgY29zdCBhbmQgY29tcGxleGl0eSBzZWVt cyB1bnJlYXNvbmFibGUuCj4KPiBQcm92aWRpbmcgYSBzaW1wbGUsIGFuZCBzdGFibGUgaW50ZXJm YWNlIHRvIHRoZSBhcHBsaWNhdGlvbiBzZWVtcyB0byB1cyBsaWtlIGEgc2Vuc2libGUgY2hvaWNl Lgo+Cj4gVGhhbmtzLAo+IERhdmlkCj4KPiBGcm9tOiBhbWQtZ2Z4IDxhbWQtZ2Z4LWJvdW5jZXNA bGlzdHMuZnJlZWRlc2t0b3Aub3JnPjxtYWlsdG86YW1kLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZz4gb24gYmVoYWxmIG9mICJHdSwgSmlhV2VpIChXaWxsKSIgPEppYVdlaS5HdUBh bWQuY29tPjxtYWlsdG86SmlhV2VpLkd1QGFtZC5jb20+Cj4gRGF0ZTogVGh1cnNkYXksIEFwcmls IDIyLCAyMDIxIGF0IDg6MjUgUE0KPiBUbzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWlj aHR6dW1lcmtlbkBnbWFpbC5jb20+PG1haWx0bzpja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWls LmNvbT4sICJhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZyI8bWFpbHRvOmFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnPiA8YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc+PG1haWx0 bzphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4KPiBDYzogIkRldWNoZXIsIEFsZXhhbmRl ciIgPEFsZXhhbmRlci5EZXVjaGVyQGFtZC5jb20+PG1haWx0bzpBbGV4YW5kZXIuRGV1Y2hlckBh bWQuY29tPiwgIlN0RGVuaXMsIFRvbSIgPFRvbS5TdERlbmlzQGFtZC5jb20+PG1haWx0bzpUb20u U3REZW5pc0BhbWQuY29tPiwgIk5pZXRvLCBEYXZpZCBNIiA8RGF2aWQuTmlldG9AYW1kLmNvbT48 bWFpbHRvOkRhdmlkLk5pZXRvQGFtZC5jb20+Cj4gU3ViamVjdDogUkU6IFtQQVRDSF0gZHJtL2Ft ZGdwdTogQWRkIHZiaW9zIGluZm8gaW9jdGwgaW50ZXJmYWNlCj4KPgo+IFtBTUQgT2ZmaWNpYWwg VXNlIE9ubHkgLSBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0KPgo+IEhpIENocmlzdGlhbiwK PiBJdCB3aWxsIGJlIHVzZWQgYnkgYSB1c2VyIHNwYWNlIFNNSS1saWIgZm9yIEdQVSBzdGF0dXMg cXVlcnkuCj4KPiBIaSBEYXZpZCwgcGxlYXNlIGZlZWwgZnJlZSB0byBjb3JyZWN0IG15IHN0YXRl bWVudCBzaW5jZSBJ4oCZbSBub3Qgc3VyZSBJIGhhdmUgYSB2aWV3IG9mIHdob2xlIHBpY3R1cmUu Cj4KPiBUaGFua3MsCj4gSmlhd2VpCj4KPiBGcm9tOiBDaHJpc3RpYW4gS8O2bmlnIDxja29lbmln LmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT48bWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5A Z21haWwuY29tPgo+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCAyMiwgMjAyMSA5OjI3IFBNCj4gVG86 IEd1LCBKaWFXZWkgKFdpbGwpIDxKaWFXZWkuR3VAYW1kLmNvbT48bWFpbHRvOkppYVdlaS5HdUBh bWQuY29tPjsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc8bWFpbHRvOmFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnPgo+IENjOiBEZXVjaGVyLCBBbGV4YW5kZXIgPEFsZXhhbmRlci5E ZXVjaGVyQGFtZC5jb20+PG1haWx0bzpBbGV4YW5kZXIuRGV1Y2hlckBhbWQuY29tPjsgU3REZW5p cywgVG9tIDxUb20uU3REZW5pc0BhbWQuY29tPjxtYWlsdG86VG9tLlN0RGVuaXNAYW1kLmNvbT4K PiBTdWJqZWN0OiBSZTogW1BBVENIXSBkcm0vYW1kZ3B1OiBBZGQgdmJpb3MgaW5mbyBpb2N0bCBp bnRlcmZhY2UKPgo+IElzIHRoYXQgdXNlZnVsIHRvIFZ1bGthbi9PcGVuR0wvb3RoZXIgY2xpZW50 cyBpbiBhbnkgd2F5Pwo+Cj4gQ2hyaXN0aWFuLgo+IEFtIDIyLjA0LjIxIHVtIDE1OjE4IHNjaHJp ZWIgR3UsIEppYVdlaSAoV2lsbCk6Cj4KPgo+Cj4gQ0MgVG9tLgo+Cj4KPgo+IE9uIEFwciAyMiwg MjAyMSwgYXQgMjE6MDksIEd1LCBKaWFXZWkgKFdpbGwpIDxKaWFXZWkuR3VAYW1kLmNvbT48bWFp bHRvOkppYVdlaS5HdUBhbWQuY29tPiB3cm90ZToKPgo+Cj4KPiA8W3YyXVt1bXJdYWRkLXZiaW9z LWluZm8tcXVlcnkucGF0Y2g+Cj4KPiBVTVIgcGF0Y2ggd2hpY2ggY2FsbHMgdGhpcyBuZXcgSU9D VEwgYXR0YWNoZWQuCj4KPgo+Cj4gQmVzdCByZWdhcmRzLAo+Cj4gSmlhd2VpCj4KPgo+Cj4gT24g QXByIDIyLCAyMDIxLCBhdCAxMDozNCwgSmlhd2VpIEd1IDxKaWFXZWkuR3VAYW1kLmNvbT48bWFp bHRvOkppYVdlaS5HdUBhbWQuY29tPiB3cm90ZToKPgo+Cj4KPiBBZGQgQU1ER1BVX0lORk9fVkJJ T1NfSU5GTyBzdWJxdWVyeSBpZCBmb3IgZGV0YWlsZWQgdmJpb3MgaW5mby4KPgo+Cj4KPiBTaWdu ZWQtb2ZmLWJ5OiBKaWF3ZWkgR3UgPEppYXdlaS5HdUBhbWQuY29tPjxtYWlsdG86Smlhd2VpLkd1 QGFtZC5jb20+Cj4KPiAtLS0KPgo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9r bXMuYyAgICB8ICAxOSArKysKPgo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2F0b20uYyAg ICAgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysKPgo+IGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2F0b20uaCAgICAgICAgICB8ICAxMSArKwo+Cj4gZHJpdmVycy9ncHUvZHJtL2Ft ZC9pbmNsdWRlL2F0b21maXJtd2FyZS5oIHwgIDE2ICsrLQo+Cj4gaW5jbHVkZS91YXBpL2RybS9h bWRncHVfZHJtLmggICAgICAgICAgICAgIHwgIDE1ICsrCj4KPiA1IGZpbGVzIGNoYW5nZWQsIDIx MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+Cj4KPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfa21zLmMKPgo+IGluZGV4IDM5ZWU4OGQyOWNjYS4uYTIwYjAxNmIwNWFi IDEwMDY0NAo+Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5j Cj4KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKPgo+IEBA IC04NjEsNiArODYxLDI1IEBAIGludCBhbWRncHVfaW5mb19pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4oKHNpemVfdClzaXplLCAoc2l6ZV90KShi aW9zX3NpemUgLSBiaW9zX29mZnNldCkpKQo+Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA/IC1FRkFVTFQgOiAwOwo+Cj4gICAgICAgICAgICAgIH0KPgo+ICsgICAgICAgICAg ICBjYXNlIEFNREdQVV9JTkZPX1ZCSU9TX0lORk86IHsKPgo+ICsgICAgICAgICAgICAgICAgICAg c3RydWN0IGRybV9hbWRncHVfaW5mb192YmlvcyB2Ymlvc19pbmZvID0ge307Cj4KPiArICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBhdG9tX2NvbnRleHQgKmF0b21fY29udGV4dDsKPgo+ICsKPgo+ ICsgICAgICAgICAgICAgICAgICAgYXRvbV9jb250ZXh0ID0gYWRldi0+bW9kZV9pbmZvLmF0b21f Y29udGV4dDsKPgo+ICsgICAgICAgICAgICAgICAgIG1lbWNweSh2Ymlvc19pbmZvLm5hbWUsIGF0 b21fY29udGV4dC0+bmFtZSwgc2l6ZW9mKGF0b21fY29udGV4dC0+bmFtZSkpOwo+Cj4gKyAgICAg ICAgICAgICAgICAgdmJpb3NfaW5mby5kYmRmID0gUENJX0RFVklEKGFkZXYtPnBkZXYtPmJ1cy0+ bnVtYmVyLCBhZGV2LT5wZGV2LT5kZXZmbik7Cj4KPiArICAgICAgICAgICAgICAgICBtZW1jcHko dmJpb3NfaW5mby52Ymlvc19wbiwgYXRvbV9jb250ZXh0LT52Ymlvc19wbiwgc2l6ZW9mKGF0b21f Y29udGV4dC0+dmJpb3NfcG4pKTsKPgo+ICsgICAgICAgICAgICAgICAgIHZiaW9zX2luZm8udmVy c2lvbiA9IGF0b21fY29udGV4dC0+dmVyc2lvbjsKPgo+ICsgICAgICAgICAgICAgICAgIG1lbWNw eSh2Ymlvc19pbmZvLmRhdGUsIGF0b21fY29udGV4dC0+ZGF0ZSwgc2l6ZW9mKGF0b21fY29udGV4 dC0+ZGF0ZSkpOwo+Cj4gKyAgICAgICAgICAgICAgICAgbWVtY3B5KHZiaW9zX2luZm8uc2VyaWFs LCBhZGV2LT5zZXJpYWwsIHNpemVvZihhZGV2LT5zZXJpYWwpKTsKPgo+ICsgICAgICAgICAgICAg ICAgIHZiaW9zX2luZm8uZGV2X2lkID0gYWRldi0+cGRldi0+ZGV2aWNlOwo+Cj4gKyAgICAgICAg ICAgICAgICAgdmJpb3NfaW5mby5yZXZfaWQgPSBhZGV2LT5wZGV2LT5yZXZpc2lvbjsKPgo+ICsg ICAgICAgICAgICAgICAgIHZiaW9zX2luZm8uc3ViX2Rldl9pZCA9IGF0b21fY29udGV4dC0+c3Vi X2Rldl9pZDsKPgo+ICsgICAgICAgICAgICAgICAgIHZiaW9zX2luZm8uc3ViX3ZlZF9pZCA9IGF0 b21fY29udGV4dC0+c3ViX3ZlZF9pZDsKPgo+ICsKPgo+ICsgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGNvcHlfdG9fdXNlcihvdXQsICZ2Ymlvc19pbmZvLAo+Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtaW4oKHNpemVfdClzaXplLCBzaXplb2YodmJpb3NfaW5mbykpKSA/ IC1FRkFVTFQgOiAwOwo+Cj4gKyAgICAgICAgICAgIH0KPgo+ICAgICAgICAgICAgICBkZWZhdWx0 Ogo+Cj4gICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiSW52YWxpZCByZXF1ZXN0ICVk XG4iLAo+Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnZiaW9zX2luZm8udHlw ZSk7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbS5jCj4KPiBpbmRleCAzZGNiOGIzMmY0OGIu LjBlMmYwZWExM2I0MCAxMDA2NDQKPgo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2F0b20uYwo+Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbS5jCj4KPiBA QCAtMzEsNiArMzEsNyBAQAo+Cj4KPgo+ICNkZWZpbmUgQVRPTV9ERUJVRwo+Cj4KPgo+ICsjaW5j bHVkZSAiYXRvbWZpcm13YXJlLmgiCj4KPiAjaW5jbHVkZSAiYXRvbS5oIgo+Cj4gI2luY2x1ZGUg ImF0b20tbmFtZXMuaCIKPgo+ICNpbmNsdWRlICJhdG9tLWJpdHMuaCIKPgo+IEBAIC0xMjk5LDEy ICsxMzAwLDE1MyBAQCBzdGF0aWMgdm9pZCBhdG9tX2luZGV4X2lpbyhzdHJ1Y3QgYXRvbV9jb250 ZXh0ICpjdHgsIGludCBiYXNlKQo+Cj4gICAgICB9Cj4KPiB9Cj4KPgo+Cj4gK3N0YXRpYyB2b2lk IGF0b21fZ2V0X3ZiaW9zX25hbWUoc3RydWN0IGF0b21fY29udGV4dCAqY3R4KQo+Cj4gK3sKPgo+ ICsgICAgdW5zaWduZWQgY2hhciAqcF9yb207Cj4KPiArICAgIHVuc2lnbmVkIGNoYXIgc3RyX251 bTsKPgo+ICsgICAgdW5zaWduZWQgc2hvcnQgb2ZmX3RvX3ZiaW9zX3N0cjsKPgo+ICsgICAgdW5z aWduZWQgY2hhciAqY19wdHI7Cj4KPiArICAgIGludCBuYW1lX3NpemU7Cj4KPiArICAgIGludCBp Owo+Cj4gKwo+Cj4gKyAgICBjb25zdCBjaGFyICpuYSA9ICItLU4vQS0tIjsKPgo+ICsgICAgY2hh ciAqYmFjazsKPgo+ICsKPgo+ICsgICAgcF9yb20gPSBjdHgtPmJpb3M7Cj4KPiArCj4KPiArICAg IHN0cl9udW0gPSAqKHBfcm9tICsgT0ZGU0VUX1RPX0dFVF9BVE9NQklPU19OVU1CRVJfT0ZfU1RS SU5HUyk7Cj4KPiArICAgIGlmIChzdHJfbnVtICE9IDApIHsKPgo+ICsgICAgICAgICAgICBvZmZf dG9fdmJpb3Nfc3RyID0KPgo+ICsgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAq KShwX3JvbSArIE9GRlNFVF9UT19HRVRfQVRPTUJJT1NfU1RSSU5HX1NUQVJUKTsKPgo+ICsKPgo+ ICsgICAgICAgICAgICBjX3B0ciA9ICh1bnNpZ25lZCBjaGFyICopKHBfcm9tICsgb2ZmX3RvX3Zi aW9zX3N0cik7Cj4KPiArICAgIH0gZWxzZSB7Cj4KPiArICAgICAgICAgICAgLyogZG8gbm90IGtu b3cgd2hlcmUgdG8gZmluZCBuYW1lICovCj4KPiArICAgICAgICAgICAgbWVtY3B5KGN0eC0+bmFt ZSwgbmEsIDcpOwo+Cj4gKyAgICAgICAgICAgIGN0eC0+bmFtZVs3XSA9IDA7Cj4KPiArICAgICAg ICAgICAgcmV0dXJuOwo+Cj4gKyAgICB9Cj4KPiArCj4KPiArICAgIC8qCj4KPiArICAgICAqIHNr aXAgdGhlIGF0b21iaW9zIHN0cmluZ3MsIHVzdWFsbHkgNAo+Cj4gKyAgICAgKiAxc3QgaXMgUC9O LCAybmQgaXMgQVNJQywgM3JkIGlzIFBDSSB0eXBlLCA0dGggaXMgTWVtb3J5IHR5cGUKPgo+ICsg ICAgICovCj4KPiArICAgIGZvciAoaSA9IDA7IGkgPCBzdHJfbnVtOyBpKyspIHsKPgo+ICsgICAg ICAgICAgICB3aGlsZSAoKmNfcHRyICE9IDApCj4KPiArICAgICAgICAgICAgICAgICAgIGNfcHRy Kys7Cj4KPiArICAgICAgICAgICAgY19wdHIrKzsKPgo+ICsgICAgfQo+Cj4gKwo+Cj4gKyAgICAv KiBza2lwIHRoZSBmb2xsb3dpbmcgMiBjaGFyczogMHgwRCAweDBBICovCj4KPiArICAgIGNfcHRy ICs9IDI7Cj4KPiArCj4KPiArICAgIG5hbWVfc2l6ZSA9IHN0cm5sZW4oY19wdHIsIFNUUkxFTl9M T05HIC0gMSk7Cj4KPiArICAgIG1lbWNweShjdHgtPm5hbWUsIGNfcHRyLCBuYW1lX3NpemUpOwo+ Cj4gKyAgICBiYWNrID0gY3R4LT5uYW1lICsgbmFtZV9zaXplOwo+Cj4gKyAgICB3aGlsZSAoKCot LWJhY2spID09ICcgJykKPgo+ICsgICAgICAgICAgICA7Cj4KPiArICAgICooYmFjayArIDEpID0g J1wwJzsKPgo+ICt9Cj4KPiArCj4KPiArc3RhdGljIHZvaWQgYXRvbV9nZXRfdmJpb3NfZGF0ZShz dHJ1Y3QgYXRvbV9jb250ZXh0ICpjdHgpCj4KPiArewo+Cj4gKyAgICB1bnNpZ25lZCBjaGFyICpw X3JvbTsKPgo+ICsgICAgdW5zaWduZWQgY2hhciAqZGF0ZV9pbl9yb207Cj4KPiArCj4KPiArICAg IHBfcm9tID0gY3R4LT5iaW9zOwo+Cj4gKwo+Cj4gKyAgICBkYXRlX2luX3JvbSA9IHBfcm9tICsg T0ZGU0VUX1RPX1ZCSU9TX0RBVEU7Cj4KPiArCj4KPiArICAgIGN0eC0+ZGF0ZVswXSA9ICcyJzsK Pgo+ICsgICAgY3R4LT5kYXRlWzFdID0gJzAnOwo+Cj4gKyAgICBjdHgtPmRhdGVbMl0gPSBkYXRl X2luX3JvbVs2XTsKPgo+ICsgICAgY3R4LT5kYXRlWzNdID0gZGF0ZV9pbl9yb21bN107Cj4KPiAr ICAgIGN0eC0+ZGF0ZVs0XSA9ICcvJzsKPgo+ICsgICAgY3R4LT5kYXRlWzVdID0gZGF0ZV9pbl9y b21bMF07Cj4KPiArICAgIGN0eC0+ZGF0ZVs2XSA9IGRhdGVfaW5fcm9tWzFdOwo+Cj4gKyAgICBj dHgtPmRhdGVbN10gPSAnLyc7Cj4KPiArICAgIGN0eC0+ZGF0ZVs4XSA9IGRhdGVfaW5fcm9tWzNd Owo+Cj4gKyAgICBjdHgtPmRhdGVbOV0gPSBkYXRlX2luX3JvbVs0XTsKPgo+ICsgICAgY3R4LT5k YXRlWzEwXSA9ICcgJzsKPgo+ICsgICAgY3R4LT5kYXRlWzExXSA9IGRhdGVfaW5fcm9tWzldOwo+ Cj4gKyAgICBjdHgtPmRhdGVbMTJdID0gZGF0ZV9pbl9yb21bMTBdOwo+Cj4gKyAgICBjdHgtPmRh dGVbMTNdID0gZGF0ZV9pbl9yb21bMTFdOwo+Cj4gKyAgICBjdHgtPmRhdGVbMTRdID0gZGF0ZV9p bl9yb21bMTJdOwo+Cj4gKyAgICBjdHgtPmRhdGVbMTVdID0gZGF0ZV9pbl9yb21bMTNdOwo+Cj4g KyAgICBjdHgtPmRhdGVbMTZdID0gJ1wwJzsKPgo+ICt9Cj4KPiArCj4KPiArc3RhdGljIHVuc2ln bmVkIGNoYXIgKmF0b21fZmluZF9zdHJfaW5fcm9tKHN0cnVjdCBhdG9tX2NvbnRleHQgKmN0eCwg Y2hhciAqc3RyLCBpbnQgc3RhcnQsCj4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBlbmQsIGludCBtYXhsZW4pCj4KPiArewo+Cj4gKyAgICB1bnNpZ25lZCBsb25n IHN0cl9vZmY7Cj4KPiArICAgIHVuc2lnbmVkIGNoYXIgKnBfcm9tOwo+Cj4gKyAgICB1bnNpZ25l ZCBzaG9ydCBzdHJfbGVuOwo+Cj4gKwo+Cj4gKyAgICBzdHJfb2ZmID0gMDsKPgo+ICsgICAgc3Ry X2xlbiA9IHN0cm5sZW4oc3RyLCBtYXhsZW4pOwo+Cj4gKyAgICBwX3JvbSA9IGN0eC0+YmlvczsK Pgo+ICsKPgo+ICsgICAgZm9yICg7IHN0YXJ0IDw9IGVuZDsgKytzdGFydCkgewo+Cj4gKyAgICAg ICAgICAgIGZvciAoc3RyX29mZiA9IDA7IHN0cl9vZmYgPCBzdHJfbGVuOyArK3N0cl9vZmYpIHsK Pgo+ICsgICAgICAgICAgICAgICAgICAgaWYgKHN0cltzdHJfb2ZmXSAhPSAqKHBfcm9tICsgc3Rh cnQgKyBzdHJfb2ZmKSkKPgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPgo+ICsg ICAgICAgICAgICB9Cj4KPiArCj4KPiArICAgICAgICAgICAgaWYgKHN0cl9vZmYgPT0gc3RyX2xl biB8fCBzdHJbc3RyX29mZl0gPT0gMCkKPgo+ICsgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBf cm9tICsgc3RhcnQ7Cj4KPiArICAgIH0KPgo+ICsgICAgcmV0dXJuIE5VTEw7Cj4KPiArfQo+Cj4g Kwo+Cj4gK3N0YXRpYyB2b2lkIGF0b21fZ2V0X3ZiaW9zX3BuKHN0cnVjdCBhdG9tX2NvbnRleHQg KmN0eCkKPgo+ICt7Cj4KPiArICAgIHVuc2lnbmVkIGNoYXIgKnBfcm9tOwo+Cj4gKyAgICB1bnNp Z25lZCBzaG9ydCBvZmZfdG9fdmJpb3Nfc3RyOwo+Cj4gKyAgICB1bnNpZ25lZCBjaGFyICp2Ymlv c19zdHI7Cj4KPiArICAgIGludCBjb3VudDsKPgo+ICsKPgo+ICsgICAgb2ZmX3RvX3ZiaW9zX3N0 ciA9IDA7Cj4KPiArICAgIHBfcm9tID0gY3R4LT5iaW9zOwo+Cj4gKwo+Cj4gKyAgICBpZiAoKihw X3JvbSArIE9GRlNFVF9UT19HRVRfQVRPTUJJT1NfTlVNQkVSX09GX1NUUklOR1MpICE9IDApIHsK Pgo+ICsgICAgICAgICAgICBvZmZfdG9fdmJpb3Nfc3RyID0KPgo+ICsgICAgICAgICAgICAgICAg ICAgKih1bnNpZ25lZCBzaG9ydCAqKShwX3JvbSArIE9GRlNFVF9UT19HRVRfQVRPTUJJT1NfU1RS SU5HX1NUQVJUKTsKPgo+ICsKPgo+ICsgICAgICAgICAgICB2Ymlvc19zdHIgPSAodW5zaWduZWQg Y2hhciAqKShwX3JvbSArIG9mZl90b192Ymlvc19zdHIpOwo+Cj4gKyAgICB9IGVsc2Ugewo+Cj4g KyAgICAgICAgICAgIHZiaW9zX3N0ciA9IHBfcm9tICsgT0ZGU0VUX1RPX1ZCSU9TX1BBUlRfTlVN QkVSOwo+Cj4gKyAgICB9Cj4KPiArCj4KPiArICAgIGlmICgqdmJpb3Nfc3RyID09IDApIHsKPgo+ ICsgICAgICAgICAgICB2Ymlvc19zdHIgPSBhdG9tX2ZpbmRfc3RyX2luX3JvbShjdHgsIEJJT1Nf QVRPTV9QUkVGSVgsIDMsIDEwMjQsIDY0KTsKPgo+ICsgICAgICAgICAgICBpZiAodmJpb3Nfc3Ry ID09IE5VTEwpCj4KPiArICAgICAgICAgICAgICAgICAgIHZiaW9zX3N0ciArPSBzaXplb2YoQklP U19BVE9NX1BSRUZJWCkgLSAxOwo+Cj4gKyAgICB9Cj4KPiArICAgIGlmICh2Ymlvc19zdHIgIT0g TlVMTCAmJiAqdmJpb3Nfc3RyID09IDApCj4KPiArICAgICAgICAgICAgdmJpb3Nfc3RyKys7Cj4K PiArCj4KPiArICAgIGlmICh2Ymlvc19zdHIgIT0gTlVMTCkgewo+Cj4gKyAgICAgICAgICAgIGNv dW50ID0gMDsKPgo+ICsgICAgICAgICAgICB3aGlsZSAoKGNvdW50IDwgQklPU19TVFJJTkdfTEVO R1RIKSAmJiB2Ymlvc19zdHJbY291bnRdID49ICcgJyAmJgo+Cj4gKyAgICAgICAgICAgICAgICAg ICB2Ymlvc19zdHJbY291bnRdIDw9ICd6Jykgewo+Cj4gKyAgICAgICAgICAgICAgICAgY3R4LT52 Ymlvc19wbltjb3VudF0gPSB2Ymlvc19zdHJbY291bnRdOwo+Cj4gKyAgICAgICAgICAgICAgICAg ICBjb3VudCsrOwo+Cj4gKyAgICAgICAgICAgIH0KPgo+ICsKPgo+ICsgICAgICAgICAgICBjdHgt PnZiaW9zX3BuW2NvdW50XSA9IDA7Cj4KPiArICAgIH0KPgo+ICt9Cj4KPiArCj4KPiBzdHJ1Y3Qg YXRvbV9jb250ZXh0ICphbWRncHVfYXRvbV9wYXJzZShzdHJ1Y3QgY2FyZF9pbmZvICpjYXJkLCB2 b2lkICpiaW9zKQo+Cj4gewo+Cj4gICAgICBpbnQgYmFzZTsKPgo+ICAgICAgc3RydWN0IGF0b21f Y29udGV4dCAqY3R4ID0KPgo+ICAgICAgICAgIGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhdG9tX2Nv bnRleHQpLCBHRlBfS0VSTkVMKTsKPgo+ICAgICAgY2hhciAqc3RyOwo+Cj4gKyAgICBzdHJ1Y3Qg X0FUT01fUk9NX0hFQURFUiAqYXRvbV9yb21faGVhZGVyOwo+Cj4gKyAgICBzdHJ1Y3QgX0FUT01f TUFTVEVSX0RBVEFfVEFCTEUgKm1hc3Rlcl90YWJsZTsKPgo+ICsgICAgc3RydWN0IF9BVE9NX0ZJ Uk1XQVJFX0lORk8gKmF0b21fZndfaW5mbzsKPgo+ICAgICAgdTE2IGlkeDsKPgo+Cj4KPiAgICAg IGlmICghY3R4KQo+Cj4gQEAgLTEzNTMsNiArMTQ5NSwyMiBAQCBzdHJ1Y3QgYXRvbV9jb250ZXh0 ICphbWRncHVfYXRvbV9wYXJzZShzdHJ1Y3QgY2FyZF9pbmZvICpjYXJkLCB2b2lkICpiaW9zKQo+ Cj4gICAgICAgICAgIHN0cmxjcHkoY3R4LT52Ymlvc192ZXJzaW9uLCBzdHIsIHNpemVvZihjdHgt PnZiaW9zX3ZlcnNpb24pKTsKPgo+ICAgICAgfQo+Cj4KPgo+ICsgICAgYXRvbV9yb21faGVhZGVy ID0gKHN0cnVjdCBfQVRPTV9ST01fSEVBREVSICopQ1NUUihiYXNlKTsKPgo+ICsgICAgY3R4LT5z dWJfZGV2X2lkID0gYXRvbV9yb21faGVhZGVyLT51c1N1YnN5c3RlbVZlbmRvcklEOwo+Cj4gKyAg ICBjdHgtPnN1Yl92ZWRfaWQgPSBhdG9tX3JvbV9oZWFkZXItPnVzU3Vic3lzdGVtSUQ7Cj4KPiAr ICAgIGlmIChhdG9tX3JvbV9oZWFkZXItPnVzTWFzdGVyRGF0YVRhYmxlT2Zmc2V0ICE9IDApIHsK Pgo+ICsgICAgICAgICAgICBtYXN0ZXJfdGFibGUgPSAoc3RydWN0IF9BVE9NX01BU1RFUl9EQVRB X1RBQkxFICopCj4KPiArICAgICAgICAgICAgICAgICAgICBDU1RSKGF0b21fcm9tX2hlYWRlci0+ dXNNYXN0ZXJEYXRhVGFibGVPZmZzZXQpOwo+Cj4gKyAgICAgICAgICAgIGlmIChtYXN0ZXJfdGFi bGUtPkxpc3RPZkRhdGFUYWJsZXMuRmlybXdhcmVJbmZvICE9IDApIHsKPgo+ICsgICAgICAgICAg ICAgICAgICAgYXRvbV9md19pbmZvID0gKHN0cnVjdCBfQVRPTV9GSVJNV0FSRV9JTkZPICopCj4K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NUUihtYXN0ZXJfdGFibGUtPkxpc3RPZkRh dGFUYWJsZXMuRmlybXdhcmVJbmZvKTsKPgo+ICsgICAgICAgICAgICAgICAgICAgY3R4LT52ZXJz aW9uID0gYXRvbV9md19pbmZvLT51bEZpcm13YXJlUmV2aXNpb247Cj4KPiArICAgICAgICAgICAg fQo+Cj4gKyAgICB9Cj4KPiArCj4KPiArICAgIGF0b21fZ2V0X3ZiaW9zX25hbWUoY3R4KTsKPgo+ ICsgICAgYXRvbV9nZXRfdmJpb3NfcG4oY3R4KTsKPgo+ICsgICAgYXRvbV9nZXRfdmJpb3NfZGF0 ZShjdHgpOwo+Cj4KPgo+ICAgICAgcmV0dXJuIGN0eDsKPgo+IH0KPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hdG9tLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hdG9tLmgKPgo+IGluZGV4IGQyNzk3NTljYWI0Ny4uYzcyOWY3Y2ViYTRmIDEwMDY0NAo+ Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbS5oCj4KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hdG9tLmgKPgo+IEBAIC0xMTIsNiArMTEyLDEwIEBAIHN0 cnVjdCBkcm1fZGV2aWNlOwo+Cj4gI2RlZmluZSBBVE9NX0lPX1NZU0lPICAgICAgICAgICAgICAy Cj4KPiAjZGVmaW5lIEFUT01fSU9fSUlPICAgICAgICAgMHg4MAo+Cj4KPgo+ICsjZGVmaW5lIFNU UkxFTl9OT1JNQUwgICAgICAgICAgICAgMzIKPgo+ICsjZGVmaW5lIFNUUkxFTl9MT05HICAgICAg ICA2NAo+Cj4gKyNkZWZpbmUgU1RSTEVOX1ZFUllMT05HICAgICAgICAgICAyNTQKPgo+ICsKPgo+ IHN0cnVjdCBjYXJkX2luZm8gewo+Cj4gICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+Cj4g ICAgICB2b2lkICgqIHJlZ193cml0ZSkoc3RydWN0IGNhcmRfaW5mbyAqLCB1aW50MzJfdCwgdWlu dDMyX3QpOyAgIC8qICBmaWxsZWQgYnkgZHJpdmVyICovCj4KPiBAQCAtMTQwLDYgKzE0NCwxMyBA QCBzdHJ1Y3QgYXRvbV9jb250ZXh0IHsKPgo+ICAgICAgdWludDMyX3QgKnNjcmF0Y2g7Cj4KPiAg ICAgIGludCBzY3JhdGNoX3NpemVfYnl0ZXM7Cj4KPiAgICAgIGNoYXIgdmJpb3NfdmVyc2lvblsy MF07Cj4KPiArCj4KPiArICAgIHVpbnQ4X3QgbmFtZVtTVFJMRU5fTE9OR107Cj4KPiArICAgIHVp bnQ4X3QgdmJpb3NfcG5bU1RSTEVOX0xPTkddOwo+Cj4gKyAgICB1aW50MzJfdCB2ZXJzaW9uOwo+ Cj4gKyAgICB1aW50OF90IGRhdGVbU1RSTEVOX05PUk1BTF07Cj4KPiArICAgIHVpbnQzMl90IHN1 Yl9kZXZfaWQ7Cj4KPiArICAgIHVpbnQzMl90IHN1Yl92ZWRfaWQ7Cj4KPiB9Owo+Cj4KPgo+IGV4 dGVybiBpbnQgYW1kZ3B1X2F0b21fZGVidWc7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9pbmNsdWRlL2F0b21maXJtd2FyZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNs dWRlL2F0b21maXJtd2FyZS5oCj4KPiBpbmRleCBjNzdlZDM4YzIwZmIuLjNhOGU0MDQwOTliMCAx MDA2NDQKPgo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9hdG9tZmlybXdhcmUu aAo+Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2F0b21maXJtd2FyZS5oCj4K PiBAQCAtMTk3LDYgKzE5Nyw4IEBAIGVudW0gYXRvbV9kcF92c19wcmVlbXBoX2RlZnsKPgo+ICBE UF9WU19MRVZFTDBfUFJFRU1QSF9MRVZFTDMgPSAweDE4LAo+Cj4gfTsKPgo+Cj4KPiArI2RlZmlu ZSBCSU9TX0FUT01fUFJFRklYICAgIkFUT01CSU9TIgo+Cj4gKyNkZWZpbmUgQklPU19TVFJJTkdf TEVOR1RIIDQzCj4KPgo+Cj4gLyoKPgo+IGVudW0gYXRvbV9zdHJpbmdfZGVmewo+Cj4gQEAgLTIw OSwxMiArMjExLDE0IEBAIGF0b21fYmlvc19zdHJpbmcgICAgICAgICAgPSAiQVRPTSIKPgo+ICNw cmFnbWEgcGFjaygxKSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQklPUyBkYXRhIG11c3Qg dXNlIGJ5dGUgYWxpZ21lbnQqLwo+Cj4KPgo+IGVudW0gYXRvbWJpb3NfaW1hZ2Vfb2Zmc2V0ewo+ Cj4gLU9GRlNFVF9UT19BVE9NX1JPTV9IRUFERVJfUE9JTlRFUiAgICAgICAgICA9MHgwMDAwMDA0 OCwKPgo+IC1PRkZTRVRfVE9fQVRPTV9ST01fSU1BR0VfU0laRSAgICAgICAgICAgICAgPTB4MDAw MDAwMDIsCj4KPiAtT0ZGU0VUX1RPX0FUT01CSU9TX0FTSUNfQlVTX01FTV9UWVBFICAgICAgID0w eDk0LAo+Cj4gLU1BWFNJWkVfT0ZfQVRPTUJJT1NfQVNJQ19CVVNfTUVNX1RZUEUgICAgICA9MjAs ICAvKmluY2x1ZGluZyB0aGUgdGVybWluYXRvciAweDAhKi8KPgo+IC1PRkZTRVRfVE9fR0VUX0FU T01CSU9TX05VTUJFUl9PRl9TVFJJTkdTICAgPTB4MmYsCj4KPiAtT0ZGU0VUX1RPX0dFVF9BVE9N QklPU19TVFJJTkdfU1RBUlQgICAgICAgID0weDZlLAo+Cj4gKyAgT0ZGU0VUX1RPX0FUT01fUk9N X0hFQURFUl9QT0lOVEVSICAgICAgICAgID0gMHgwMDAwMDA0OCwKPgo+ICsgIE9GRlNFVF9UT19B VE9NX1JPTV9JTUFHRV9TSVpFICAgICAgICAgICAgICA9IDB4MDAwMDAwMDIsCj4KPiArICBPRkZT RVRfVE9fQVRPTUJJT1NfQVNJQ19CVVNfTUVNX1RZUEUgICAgICAgPSAweDk0LAo+Cj4gKyAgTUFY U0laRV9PRl9BVE9NQklPU19BU0lDX0JVU19NRU1fVFlQRSAgICAgID0gMjAsICAvKmluY2x1ZGlu ZyB0aGUgdGVybWluYXRvciAweDAhKi8KPgo+ICsgIE9GRlNFVF9UT19HRVRfQVRPTUJJT1NfTlVN QkVSX09GX1NUUklOR1MgICA9IDB4MmYsCj4KPiArICBPRkZTRVRfVE9fR0VUX0FUT01CSU9TX1NU UklOR19TVEFSVCAgICAgICAgPSAweDZlLAo+Cj4gKyAgT0ZGU0VUX1RPX1ZCSU9TX1BBUlRfTlVN QkVSICAgICAgICAgICAgICAgID0gMHg4MCwKPgo+ICsgIE9GRlNFVF9UT19WQklPU19EQVRFICAg ICAgICAgICAgICAgICAgICAgICA9IDB4NTAsCj4KPiB9Owo+Cj4KPgo+IC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCj4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmggYi9p bmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAo+Cj4gaW5kZXggOGI4MzJmNzQ1OGYyLi43Nzk4 MDQ0NWQ0ODYgMTAwNjQ0Cj4KPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAo+ Cj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmgKPgo+IEBAIC03NTgsNiArNzU4 LDggQEAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZGF0YSB7Cj4KPiAgICAgICNkZWZpbmUg QU1ER1BVX0lORk9fVkJJT1NfU0laRSAgICAgICAgICAgICAweDEKPgo+ICAgICAgLyogU3VicXVl cnkgaWQ6IFF1ZXJ5IHZiaW9zIGltYWdlICovCj4KPiAgICAgICNkZWZpbmUgQU1ER1BVX0lORk9f VkJJT1NfSU1BR0UgICAgICAgICAgICAweDIKPgo+ICsgICAgLyogU3VicXVlcnkgaWQ6IFF1ZXJ5 IHZiaW9zIGluZm8gKi8KPgo+ICsgICAgI2RlZmluZSBBTURHUFVfSU5GT19WQklPU19JTkZPICAg ICAgICAgICAgIDB4Mwo+Cj4gLyogUXVlcnkgVVZEIGhhbmRsZXMgKi8KPgo+ICNkZWZpbmUgQU1E R1BVX0lORk9fTlVNX0hBTkRMRVMgICAgICAgICAgICAgICAgICAgIDB4MUMKPgo+IC8qIFF1ZXJ5 IHNlbnNvciByZWxhdGVkIGluZm9ybWF0aW9uICovCj4KPiBAQCAtOTUxLDYgKzk1MywxOSBAQCBz dHJ1Y3QgZHJtX2FtZGdwdV9pbmZvX2Zpcm13YXJlIHsKPgo+ICAgICAgX191MzIgZmVhdHVyZTsK Pgo+IH07Cj4KPgo+Cj4gK3N0cnVjdCBkcm1fYW1kZ3B1X2luZm9fdmJpb3Mgewo+Cj4gKyAgICBf X3U4IG5hbWVbNjRdOwo+Cj4gKyAgICBfX3UzMiBkYmRmOwo+Cj4gKyAgICBfX3U4IHZiaW9zX3Bu WzY0XTsKPgo+ICsgICAgX191MzIgdmVyc2lvbjsKPgo+ICsgICAgX191OCBkYXRlWzMyXTsKPgo+ ICsgICAgX191OCBzZXJpYWxbMTZdOwo+Cj4gKyAgICBfX3UzMiBkZXZfaWQ7Cj4KPiArICAgIF9f dTMyIHJldl9pZDsKPgo+ICsgICAgX191MzIgc3ViX2Rldl9pZDsKPgo+ICsgICAgX191MzIgc3Vi X3ZlZF9pZDsKPgo+ICt9Owo+Cj4gKwo+Cj4gI2RlZmluZSBBTURHUFVfVlJBTV9UWVBFX1VOS05P V04gMAo+Cj4gI2RlZmluZSBBTURHUFVfVlJBTV9UWVBFX0dERFIxIDEKPgo+ICNkZWZpbmUgQU1E R1BVX1ZSQU1fVFlQRV9ERFIyICAyCj4KPiAtLQo+Cj4gMi4xNy4xCj4KPgo+Cj4KPgo+Cj4KPgo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4KPiBhbWQt Z2Z4IG1haWxpbmcgbGlzdAo+Cj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc8bWFpbHRv OmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPgo+Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4PGh0dHBzOi8vbmFtMTEuc2FmZWxpbmtz LnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxpc3RzLmZyZWVkZXNr dG9wLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5mbyUyRmFtZC1nZngmZGF0YT0wNCU3QzAxJTdDSmlh V2VpLkd1JTQwYW1kLmNvbSU3Q2ZjOGQzNDIwZDg4NzQ1YzI1N2JmMDhkOTBhMTkzNGQ2JTdDM2Rk ODk2MWZlNDg4NGU2MDhlMTFhODJkOTk0ZTE4M2QlN0MwJTdDMCU3QzYzNzU1MTkyNTY1NDE4NjI4 NyU3Q1Vua25vd24lN0NUV0ZwYkdac2IzZDhleUpXSWpvaU1DNHdMakF3TURBaUxDSlFJam9pVjJs dU16SWlMQ0pCVGlJNklrMWhhV3dpTENKWFZDSTZNbjAlM0QlN0MxMDAwJnNkYXRhPVk5JTJCNFdD Z1ZTcjBwUyUyQmRmNVB6VENkZEdoaml0RmFDc05ocCUyRnUlMkYlMkZubUlJJTNEJnJlc2VydmVk PTA+Cj4KPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=