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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 557CBC369DC for ; Wed, 30 Apr 2025 02:13:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=UW5/RLCVPA6Bl90kvlDN4CHZaQwNFmc12gQyu9geObE=; b=QNM/hXUs3NmzSq nLAF6LKxf3fGXCk/TvhENvyrveBSNJwbHpsJ6mBQu5TogXdiZQD3luqEjCMgCSeN1SxIpQlDA6bGa 9AG18G3HialbzFKpZrgmvuCvwffy/K+Z4UYoI20ZhtmpQNiCeP6221aHU/zqei0K7I8Rjd6OJgWhe i/8YbN1I0hKWs9D3/9aGdoCWHUOTKRju7N7UCF/AMiGpdPZzyn2uYHmedZgJFNqT36Hmnh19Oof8o xzNRykSPqmW4UxzNNHnF73eaTbHxY5JiR0DbQ1vJKN3RE0Kx0Y4oQd7YvS9Z8eCTxdONuSw3g+wu2 K88ufnyT6e191vqke2Gg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u9wx3-0000000BVEX-3aLf; Wed, 30 Apr 2025 02:13:33 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u9wx1-0000000BVDm-04kN for linux-amlogic@lists.infradead.org; Wed, 30 Apr 2025 02:13:32 +0000 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-301e05b90caso7388112a91.2 for ; Tue, 29 Apr 2025 19:13:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lessconfused.com; s=lessconfused; t=1745979210; x=1746584010; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=hxQSNWJIpgLL0K345+9EHCJtfozXJ2Yu+qkzD2t1E54=; b=UjuHxI8kgOR0dQMQeNICLsWHi5VF7+o3CiIYIQcLUqX7mcFkfv3N+VD/UnCbW2erO1 2lTXjMCxN5TjXKMY57nsNnUE1wjTRP2Nknw9T0cr4NboPc6hM0KkGIXoWcXBouEF49iV 2qq0btdFjA2d++J5ORGJkE9/mcXB6Ob9YaOvY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745979210; x=1746584010; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hxQSNWJIpgLL0K345+9EHCJtfozXJ2Yu+qkzD2t1E54=; b=WEUXsPxmXFTGKL8lgcSb1CGWDrkkzZP59BKMCykZnSAi7KNlaXQof25G+NOvd4SdZ0 cA0utF4q06nvrEirtS0mqkgV1SaYXNwXZQbB35m3Q97Y9L+MLSakXY4I1jAYTWo5oEcG 6fLerAT4eHvP2s37R4wYUxv3PD0M2pu4LEXNsdZ5Pta7DObuf6yoX6LwaeM1Mv8JcHeF s5806Ed9zgSYUYeslEbcj5rxT8dqDtWMhJ4mdaiLFqMGwXtW2/6tn6Kp3yaLwrxMKZWB vzZkW/XjHQ/d6n0vTxgQapFlqoDnUqjRn+YeoeSXXMBZthybNT6k01IEeA0vsDS2NmS8 kU5w== X-Forwarded-Encrypted: i=1; AJvYcCU1Pe4UjQWpra7n9Ochs2Lh5bPVd00aynQkTHKpLNU0nD9+7JLe4pQ0doKjdLc2iGhoU6soCnYS1pxAxki2@lists.infradead.org X-Gm-Message-State: AOJu0Yxvincm4HiXuaDplunXLSwWJyFO86g+lHHbtq3SMuc+hEMMRdqy jfFhnzdVLQFDcozFi48s/4yflrIKH32B6vxibY8Wrb+OXSpTZOcUd/kMY0uEoCSZB3+svFWsrAU 2h2OqjbG+JgiQZ2eUnb+PtKuDSk5VXwo2PZW8Mw== X-Gm-Gg: ASbGnct93MjuPQ8egIUwfWon+3mfbIpu846sm1YYS2EOBoVmCR1z36i80GL6jCxg5Z8 tubKfkg8/kbadf9YIChU4VtH0Rw9zmYYHzLPbBLW4g5UFTXP9L4qZTxicdO6tyMCtbExELmHTJC ueEoi3MkFcU7DN2PObs7BoZ/Eu0+DAbzOyQ/dObOPuv2TKgbN2FAXhzVU= X-Google-Smtp-Source: AGHT+IFWh6po6oeHM9w2N/xbVzQ8pllPfaIp/ocjh5/n+lZ05a6r7QzsR9e8d0QT+TpFdsiXtNRkoEQTcLTUuUwJQ44= X-Received: by 2002:a17:90a:bd97:b0:2ff:6167:e92d with SMTP id 98e67ed59e1d1-30a34489514mr915586a91.32.1745979209448; Tue, 29 Apr 2025 19:13:29 -0700 (PDT) MIME-Version: 1.0 References: <20250414-spi-dma-v2-1-84bbd92fa469@amlogic.com> In-Reply-To: <20250414-spi-dma-v2-1-84bbd92fa469@amlogic.com> From: Da Xue Date: Tue, 29 Apr 2025 22:13:18 -0400 X-Gm-Features: ATxdqUF1uePmGqw_DHzosv8XmIVsTIOhJnSFRlSHFpTZiilbCy-M7TFAp_71R8M Message-ID: Subject: Re: [PATCH v2] spi: meson-spicc: add DMA support To: xianwei.zhao@amlogic.com Cc: Mark Brown , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Sunny Luo X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250429_191331_062495_EEA32ABE X-CRM114-Status: GOOD ( 41.81 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gTW9uLCBBcHIgMTQsIDIwMjUgYXQgMjozMOKAr0FNIFhpYW53ZWkgWmhhbyB2aWEgQjQgUmVs YXkKPGRldm51bGwreGlhbndlaS56aGFvLmFtbG9naWMuY29tQGtlcm5lbC5vcmc+IHdyb3RlOgo+ Cj4gRnJvbTogWGlhbndlaSBaaGFvIDx4aWFud2VpLnpoYW9AYW1sb2dpYy5jb20+Cj4KPiBBZGQg RE1BIHN1cHBvcnQgZm9yIHNwaWNjIGRyaXZlci4KPgo+IERNQSB3b3JrcyBpZiB0aGUgdHJhbnNm ZXIgbWVldHMgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+IDEuIDY0IGJpdHMgcGVyIHdvcmQ7 Cj4gMi4gVGhlIHRyYW5zZmVyIGxlbmd0aCBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgZG1hX2J1 cnN0X2xlbiwKPiAgICBhbmQgdGhlIGRtYV9idXJzdF9sZW4gc2hvdWxkIGJlIG9uZSBvZiA4LDcu Li4yLAo+ICAgIG90aGVyd2lzZSwgaXQgd2lsbCBiZSBzcGxpdCBpbnRvIHNldmVyYWwgU1BJIGJ1 cnN0cy4KPgo+IFNpZ25lZC1vZmYtYnk6IFN1bm55IEx1byA8c3VubnkubHVvQGFtbG9naWMuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IFhpYW53ZWkgWmhhbyA8eGlhbndlaS56aGFvQGFtbG9naWMuY29t Pgo+IC0tLQo+IENoYW5nZXMgaW4gdjI6Cj4gLSBNYWtlIGZvcm1hdHRpbmcgYWRqdXN0bWVudHMg YW5kIGNvZGUgb3B0aW1pemF0aW9ucyBhY2NvcmRpbmcgdG8gTmVpbCdzIHN1Z2dlc3Rpb25zLgo+ IC0gUmVtb3ZlIHR3byBzcGVjaWFsIERNQSB0cmlnZ2VyIG1vZGVzIHRoYXQgYXJlIG5vdCBmdWxs eSBpbXBsZW1lbnRlZC4KPiAtIExpbmsgdG8gdjE6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3Iv MjAyNTA0MDgtc3BpLWRtYS12MS0xLTNjMzhiZTYyYzA5Y0BhbWxvZ2ljLmNvbQo+IC0tLQo+ICBk cml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYyB8IDI0MSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCsp LCAyMSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGktbWVzb24t c3BpY2MuYyBiL2RyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jCj4gaW5kZXggZGY3NGFkNTA2 MGY4Li42YjkxMzczMDc1MzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zcGkvc3BpLW1lc29uLXNw aWNjLmMKPiArKysgYi9kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYwo+IEBAIC0yMSwxOCAr MjEsMjYgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvcmVzZXQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4KPiAgLyoKPiAtICogVGhlIE1lc29uIFNQSUND IGNvbnRyb2xsZXIgY291bGQgc3VwcG9ydCBETUEgYmFzZWQgdHJhbnNmZXJzLCBidXQgaXMgbm90 Cj4gLSAqIGltcGxlbWVudGVkIGJ5IHRoZSB2ZW5kb3IgY29kZSwgYW5kIHdoaWxlIGhhdmluZyB0 aGUgcmVnaXN0ZXJzIGRvY3VtZW50YXRpb24KPiAtICogaXQgaGFzIG5ldmVyIHdvcmtlZCBvbiB0 aGUgR1hMIEhhcmR3YXJlLgo+IC0gKiBUaGUgUElPIG1vZGUgaXMgdGhlIG9ubHkgbW9kZSBpbXBs ZW1lbnRlZCwgYW5kIGR1ZSB0byBiYWRseSBkZXNpZ25lZCBIVyA6Cj4gLSAqIC0gYWxsIHRyYW5z ZmVycyBhcmUgY3V0dGVkIGluIDE2IHdvcmRzIGJ1cnN0IGJlY2F1c2UgdGhlIEZJRk8gaGFuZ3Mg b24KPiAtICogICBUWCB1bmRlcmZsb3csIGFuZCB0aGVyZSBpcyBubyBUWCAiSGFsZi1FbXB0eSIg aW50ZXJydXB0LCBzbyB3ZSBnbyBieQo+IC0gKiAgIEZJRk8gbWF4IHNpemUgY2h1bmsgb25seQo+ IC0gKiAtIENTIG1hbmFnZW1lbnQgaXMgZHVtYiwgYW5kIGdvZXMgVVAgYmV0d2VlbiBldmVyeSBi dXJzdCwgc28gaXMgcmVhbGx5IGEKPiAtICogICAiRGF0YSBWYWxpZCIgc2lnbmFsIHRoYW4gYSBD aGlwIFNlbGVjdCwgR1BJTyBsaW5rIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKPiAtICogICB0byBo YXZlIGEgQ1MgZ28gZG93biBvdmVyIHRoZSBmdWxsIHRyYW5zZmVyCj4gKyAqIFRoZXJlIGFyZSB0 d28gbW9kZXMgZm9yIGRhdGEgdHJhbnNtaXNzaW9uOiBQSU8gYW5kIERNQS4KPiArICogV2hlbiBi aXRzX3Blcl93b3JkIGlzIDgsIDE2LCAyNCwgb3IgMzIsIGRhdGEgaXMgdHJhbnNmZXJyZWQgdXNp bmcgUElPIG1vZGUuCj4gKyAqIFdoZW4gYml0c19wZXJfd29yZCBpcyA2NCwgRE1BIG1vZGUgaXMg dXNlZCBieSBkZWZhdWx0Lgo+ICsgKgo+ICsgKiBETUEgYWNoaWV2ZXMgYSB0cmFuc2ZlciB3aXRo IG9uZSBvciBtb3JlIFNQSSBidXJzdHMsIGVhY2ggU1BJIGJ1cnN0IGlzIG1hZGUKPiArICogdXAg b2Ygb25lIG9yIG1vcmUgRE1BIGJ1cnN0cy4gVGhlIERNQSBidXJzdCBpbXBsZW1lbnRhdGlvbiBt ZWNoYW5pc20gaXMsCj4gKyAqIEZvciBUWCwgd2hlbiB0aGUgbnVtYmVyIG9mIHdvcmRzIGluIFRY RklGTyBpcyBsZXNzIHRoYW4gdGhlIHByZXNldAo+ICsgKiByZWFkaW5nIHRocmVzaG9sZCwgU1BJ Q0Mgc3RhcnRzIGEgcmVhZGluZyBETUEgYnVyc3QsIHdoaWNoIHJlYWRzIHRoZSBwcmVzZXQKPiAr ICogbnVtYmVyIG9mIHdvcmRzIGZyb20gVFggYnVmZmVyLCB0aGVuIHdyaXRlcyB0aGVtIGludG8g VFhGSUZPLgo+ICsgKiBGb3IgUlgsIHdoZW4gdGhlIG51bWJlciBvZiB3b3JkcyBpbiBSWEZJRk8g aXMgZ3JlYXRlciB0aGFuIHRoZSBwcmVzZXQKPiArICogd3JpdGluZyB0aHJlc2hvbGQsIFNQSUND IHN0YXJ0cyBhIHdyaXRpbmcgcmVxdWVzdCBidXJzdCwgd2hpY2ggcmVhZHMgdGhlCj4gKyAqIHBy ZXNldCBudW1iZXIgb2Ygd29yZHMgZnJvbSBSWEZJRk8sIHRoZW4gd3JpdGUgdGhlbSBpbnRvIFJY IGJ1ZmZlci4KPiArICogRE1BIHdvcmtzIGlmIHRoZSB0cmFuc2ZlciBtZWV0cyB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMsCj4gKyAqIC0gNjQgYml0cyBwZXIgd29yZAoKSnVzdCBmb3IgY2xhcmlm aWNhdGlvbiwgRE1BIGNhbiBvbmx5IHNlbmQgNjQtYml0IHdvcmRzIGR1ZSB0byBoYXJkd2FyZQpk ZXNpZ24sIHJpZ2h0PwpUaGUgYml0LXBlci13b3JkIGluIHNwaSBjb250cm9sIHJlZ2lzdGVyIChD T05SRUcpIGhhcyBubyBlZmZlY3Q/Cgo+ICsgKiAtIFRoZSB0cmFuc2ZlciBsZW5ndGggaW4gd29y ZCBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgZG1hX2J1cnN0X2xlbiwgYW5kCj4gKyAqICAgdGhl IGRtYV9idXJzdF9sZW4gc2hvdWxkIGJlIG9uZSBvZiA4LDcuLi4yLCBvdGhlcndpc2UsIGl0IHdp bGwgYmUgc3BsaXQKPiArICogICBpbnRvIHNldmVyYWwgU1BJIGJ1cnN0cyBieSB0aGlzIGRyaXZl cgo+ICAgKi8KPgo+ICAjZGVmaW5lIFNQSUNDX01BWF9CVVJTVCAgICAgICAgMTI4Cj4gQEAgLTEy OCw2ICsxMzYsMjMgQEAKPgo+ICAjZGVmaW5lIFNQSUNDX0RXQUREUiAgIDB4MjQgICAgLyogV3Jp dGUgQWRkcmVzcyBvZiBETUEgKi8KPgo+ICsjZGVmaW5lIFNQSUNDX0xEX0NOVEwwIDB4MjgKPiAr I2RlZmluZSBWU1lOQ19JUlFfU1JDX1NFTEVDVCAgICAgICAgICAgQklUKDApCj4gKyNkZWZpbmUg RE1BX0VOX1NFVF9CWV9WU1lOQyAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIFhDSF9FTl9T RVRfQllfVlNZTkMgICAgICAgICAgICBCSVQoMykKPiArI2RlZmluZSBETUFfUkVBRF9DT1VOVEVS X0VOICAgICAgICAgICAgQklUKDQpCj4gKyNkZWZpbmUgRE1BX1dSSVRFX0NPVU5URVJfRU4gICAg ICAgICAgIEJJVCg1KQo+ICsjZGVmaW5lIERNQV9SQUREUl9MT0FEX0JZX1ZTWU5DICAgICAgICAg ICAgICAgIEJJVCg2KQo+ICsjZGVmaW5lIERNQV9XQUREUl9MT0FEX0JZX1ZTWU5DICAgICAgICAg ICAgICAgIEJJVCg3KQo+ICsjZGVmaW5lIERNQV9BRERSX0xPQURfRlJPTV9MRF9BRERSICAgICBC SVQoOCkKPiArCj4gKyNkZWZpbmUgU1BJQ0NfTERfQ05UTDEgMHgyYwo+ICsjZGVmaW5lIERNQV9S RUFEX0NPVU5URVIgICAgICAgICAgICAgICBHRU5NQVNLKDE1LCAwKQo+ICsjZGVmaW5lIERNQV9X UklURV9DT1VOVEVSICAgICAgICAgICAgICBHRU5NQVNLKDMxLCAxNikKPiArI2RlZmluZSBETUFf QlVSU1RfTEVOX0RFRkFVTFQgICAgICAgICAgOAo+ICsjZGVmaW5lIERNQV9CVVJTVF9DT1VOVF9N QVggICAgICAgICAgICAweGZmZmYKPiArI2RlZmluZSBTUElfQlVSU1RfTEVOX01BWCAgICAgIChE TUFfQlVSU1RfTEVOX0RFRkFVTFQgKiBETUFfQlVSU1RfQ09VTlRfTUFYKQo+ICsKCkxEX0NOVEww IGFuZCBMRF9DTlRMMSBhcmUgbm90IGluIHRoaXMgZGF0YXNoZWV0IGZvciBHWEwKKFM4MDVYL1M5 MDVYL1M5MDVEKS4gRG8gdGhleSBleGlzdCBvbiB0aGVzZSBTb0NzIGFuZCBhcmUgbm90CmRvY3Vt ZW50ZWQ/Cgo+ICAjZGVmaW5lIFNQSUNDX0VOSF9DVEwwIDB4MzggICAgLyogRW5oYW5jZWQgRmVh dHVyZSAqLwo+ICAjZGVmaW5lIFNQSUNDX0VOSF9DTEtfQ1NfREVMQVlfTUFTSyAgICBHRU5NQVNL KDE1LCAwKQo+ICAjZGVmaW5lIFNQSUNDX0VOSF9EQVRBUkFURV9NQVNLICAgICAgICAgICAgICAg IEdFTk1BU0soMjMsIDE2KQo+IEBAIC0xNzEsNiArMTk2LDkgQEAgc3RydWN0IG1lc29uX3NwaWNj X2RldmljZSB7Cj4gICAgICAgICBzdHJ1Y3QgcGluY3RybCAgICAgICAgICAgICAgICAgICpwaW5j dHJsOwo+ICAgICAgICAgc3RydWN0IHBpbmN0cmxfc3RhdGUgICAgICAgICAgICAqcGluc19pZGxl X2hpZ2g7Cj4gICAgICAgICBzdHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAgICAgICAgICpwaW5zX2lk bGVfbG93Owo+ICsgICAgICAgZG1hX2FkZHJfdCAgICAgICAgICAgICAgICAgICAgICB0eF9kbWE7 Cj4gKyAgICAgICBkbWFfYWRkcl90ICAgICAgICAgICAgICAgICAgICAgIHJ4X2RtYTsKPiArICAg ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZG1hOwo+ICB9Owo+Cj4g ICNkZWZpbmUgcG93Ml9jbGtfdG9fc3BpY2MoX2RpdikgY29udGFpbmVyX29mKF9kaXYsIHN0cnVj dCBtZXNvbl9zcGljY19kZXZpY2UsIHBvdzJfZGl2KQo+IEBAIC0yMDIsNiArMjMwLDE0OCBAQCBz dGF0aWMgdm9pZCBtZXNvbl9zcGljY19vZW5fZW5hYmxlKHN0cnVjdCBtZXNvbl9zcGljY19kZXZp Y2UgKnNwaWNjKQo+ICAgICAgICAgd3JpdGVsX3JlbGF4ZWQoY29uZiwgc3BpY2MtPmJhc2UgKyBT UElDQ19FTkhfQ1RMMCk7Cj4gIH0KPgo+ICtzdGF0aWMgaW50IG1lc29uX3NwaWNjX2RtYV9tYXAo c3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzcGlfdHJhbnNmZXIgKnQpCj4gK3sKPiArICAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9IHNwaWNjLT5ob3N0LT5kZXYucGFyZW50Owo+ICsKPiArICAgICAgIGlmICgh KHQtPnR4X2J1ZiAmJiB0LT5yeF9idWYpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiArCj4gKyAgICAgICB0LT50eF9kbWEgPSBkbWFfbWFwX3NpbmdsZShkZXYsICh2b2lkICop dC0+dHhfYnVmLCB0LT5sZW4sIERNQV9UT19ERVZJQ0UpOwo+ICsgICAgICAgaWYgKGRtYV9tYXBw aW5nX2Vycm9yKGRldiwgdC0+dHhfZG1hKSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9N RU07Cj4gKwo+ICsgICAgICAgdC0+cnhfZG1hID0gZG1hX21hcF9zaW5nbGUoZGV2LCB0LT5yeF9i dWYsIHQtPmxlbiwgRE1BX0ZST01fREVWSUNFKTsKPiArICAgICAgIGlmIChkbWFfbWFwcGluZ19l cnJvcihkZXYsIHQtPnJ4X2RtYSkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ICsKPiArICAgICAgIHNwaWNjLT50eF9kbWEgPSB0LT50eF9kbWE7Cj4gKyAgICAgICBzcGljYy0+ cnhfZG1hID0gdC0+cnhfZG1hOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBtZXNvbl9zcGljY19kbWFfdW5tYXAoc3RydWN0IG1lc29uX3NwaWNjX2Rldmlj ZSAqc3BpY2MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzcGlf dHJhbnNmZXIgKnQpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHNwaWNjLT5o b3N0LT5kZXYucGFyZW50Owo+ICsKPiArICAgICAgIGlmICh0LT50eF9kbWEpCj4gKyAgICAgICAg ICAgICAgIGRtYV91bm1hcF9zaW5nbGUoZGV2LCB0LT50eF9kbWEsIHQtPmxlbiwgRE1BX1RPX0RF VklDRSk7Cj4gKyAgICAgICBpZiAodC0+cnhfZG1hKQo+ICsgICAgICAgICAgICAgICBkbWFfdW5t YXBfc2luZ2xlKGRldiwgdC0+cnhfZG1hLCB0LT5sZW4sIERNQV9GUk9NX0RFVklDRSk7Cj4gK30K PiArCj4gKy8qCj4gKyAqIEFjY29yZGluZyB0byB0aGUgcmVtYWluIHdvcmRzIGxlbmd0aCwgY2Fs Y3VsYXRlIGEgc3VpdGFibGUgc3BpIGJ1cnN0IGxlbmd0aAo+ICsgKiBhbmQgYSBkbWEgYnVyc3Qg bGVuZ3RoIGZvciBjdXJyZW50IHNwaSBidXJzdAo+ICsgKi8KPiArc3RhdGljIHUzMiBtZXNvbl9z cGljY19jYWxjX2RtYV9sZW4oc3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGxlbiwgdTMyICpkbWFfYnVyc3Rf bGVuKQo+ICt7Cj4gKyAgICAgICB1MzIgaTsKPiArCj4gKyAgICAgICBpZiAobGVuIDw9IHNwaWNj LT5kYXRhLT5maWZvX3NpemUpIHsKPiArICAgICAgICAgICAgICAgKmRtYV9idXJzdF9sZW4gPSBs ZW47Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBsZW47Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg ICAgKmRtYV9idXJzdF9sZW4gPSBETUFfQlVSU1RfTEVOX0RFRkFVTFQ7Cj4gKwo+ICsgICAgICAg aWYgKGxlbiA9PSAoU1BJX0JVUlNUX0xFTl9NQVggKyAxKSkKPiArICAgICAgICAgICAgICAgcmV0 dXJuIFNQSV9CVVJTVF9MRU5fTUFYIC0gRE1BX0JVUlNUX0xFTl9ERUZBVUxUOwo+ICsKPiArICAg ICAgIGlmIChsZW4gPj0gU1BJX0JVUlNUX0xFTl9NQVgpCj4gKyAgICAgICAgICAgICAgIHJldHVy biBTUElfQlVSU1RfTEVOX01BWDsKPiArCj4gKyAgICAgICBmb3IgKGkgPSBETUFfQlVSU1RfTEVO X0RFRkFVTFQ7IGkgPiAxOyBpLS0pCj4gKyAgICAgICAgICAgICAgIGlmICgobGVuICUgaSkgPT0g MCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICpkbWFfYnVyc3RfbGVuID0gaTsKPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVuOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ ICsgICAgICAgaSA9IGxlbiAlIERNQV9CVVJTVF9MRU5fREVGQVVMVDsKPiArICAgICAgIGxlbiAt PSBpOwo+ICsKPiArICAgICAgIGlmIChpID09IDEpCj4gKyAgICAgICAgICAgICAgIGxlbiAtPSBE TUFfQlVSU1RfTEVOX0RFRkFVTFQ7Cj4gKwo+ICsgICAgICAgcmV0dXJuIGxlbjsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgbWVzb25fc3BpY2Nfc2V0dXBfZG1hKHN0cnVjdCBtZXNvbl9zcGljY19k ZXZpY2UgKnNwaWNjKQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwo+ICsgICAgICAg dW5zaWduZWQgaW50IGRtYV9idXJzdF9sZW4sIGRtYV9idXJzdF9jb3VudDsKPiArICAgICAgIHVu c2lnbmVkIGludCBjb3VudF9lbiA9IDA7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgdHhmaWZvX3Ro cmVzID0gMDsKPiArICAgICAgIHVuc2lnbmVkIGludCByZWFkX3JlcSA9IDA7Cj4gKyAgICAgICB1 bnNpZ25lZCBpbnQgcnhmaWZvX3RocmVzID0gMzE7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgd3Jp dGVfcmVxID0gMDsKPiArICAgICAgIHVuc2lnbmVkIGludCBsZF9jdHIxID0gMDsKPiArCj4gKyAg ICAgICB3cml0ZWxfcmVsYXhlZChzcGljYy0+dHhfZG1hLCBzcGljYy0+YmFzZSArIFNQSUNDX0RS QUREUik7Cj4gKyAgICAgICB3cml0ZWxfcmVsYXhlZChzcGljYy0+cnhfZG1hLCBzcGljYy0+YmFz ZSArIFNQSUNDX0RXQUREUik7Cj4gKwo+ICsgICAgICAgLyogU2V0IHRoZSBtYXggYnVyc3QgbGVu Z3RoIHRvIHN1cHBvcnQgYSB0cmFuc21pc3Npb24gd2l0aCBsZW5ndGggb2YKPiArICAgICAgICAq IG5vIG1vcmUgdGhhbiAxMDI0IGJ5dGVzKDEyOCB3b3JkcyksIHdoaWNoIG11c3QgdXNlIHRoZSBD UyBtYW5hZ2VtZW50Cj4gKyAgICAgICAgKiBiZWNhdXNlIG9mIHNvbWUgc3RyaWN0IHRpbWluZyBy ZXF1aXJlbWVudHMKPiArICAgICAgICAqLwo+ICsgICAgICAgd3JpdGVsX2JpdHNfcmVsYXhlZChT UElDQ19CVVJTVExFTkdUSF9NQVNLLCBTUElDQ19CVVJTVExFTkdUSF9NQVNLLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBzcGljYy0+YmFzZSArIFNQSUNDX0NPTlJFRyk7Cj4gKwo+ICsg ICAgICAgbGVuID0gbWVzb25fc3BpY2NfY2FsY19kbWFfbGVuKHNwaWNjLCBzcGljYy0+eGZlcl9y ZW1haW4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtYV9idXJz dF9sZW4pOwo+ICsgICAgICAgc3BpY2MtPnhmZXJfcmVtYWluIC09IGxlbjsKPiArICAgICAgIGRt YV9idXJzdF9jb3VudCA9IERJVl9ST1VORF9VUChsZW4sIGRtYV9idXJzdF9sZW4pOwo+ICsgICAg ICAgZG1hX2J1cnN0X2xlbi0tOwo+ICsKPiArICAgICAgIGlmIChzcGljYy0+dHhfZG1hKSB7Cj4g KyAgICAgICAgICAgICAgIHNwaWNjLT50eF9kbWEgKz0gbGVuOwo+ICsgICAgICAgICAgICAgICBj b3VudF9lbiB8PSBETUFfUkVBRF9DT1VOVEVSX0VOOwo+ICsgICAgICAgICAgICAgICB0eGZpZm9f dGhyZXMgPSBzcGljYy0+ZGF0YS0+Zmlmb19zaXplIC0gZG1hX2J1cnN0X2xlbjsKPiArICAgICAg ICAgICAgICAgcmVhZF9yZXEgPSBkbWFfYnVyc3RfbGVuOwo+ICsgICAgICAgICAgICAgICBsZF9j dHIxIHw9IEZJRUxEX1BSRVAoRE1BX1JFQURfQ09VTlRFUiwgZG1hX2J1cnN0X2NvdW50KTsKPiAr ICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoc3BpY2MtPnJ4X2RtYSkgewo+ICsgICAgICAgICAg ICAgICBzcGljYy0+cnhfZG1hICs9IGxlbjsKPiArICAgICAgICAgICAgICAgY291bnRfZW4gfD0g RE1BX1dSSVRFX0NPVU5URVJfRU47Cj4gKyAgICAgICAgICAgICAgIHJ4Zmlmb190aHJlcyA9IGRt YV9idXJzdF9sZW47Cj4gKyAgICAgICAgICAgICAgIHdyaXRlX3JlcSA9IGRtYV9idXJzdF9sZW47 Cj4gKyAgICAgICAgICAgICAgIGxkX2N0cjEgfD0gRklFTERfUFJFUChETUFfV1JJVEVfQ09VTlRF UiwgZG1hX2J1cnN0X2NvdW50KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICB3cml0ZWxfcmVs YXhlZChjb3VudF9lbiwgc3BpY2MtPmJhc2UgKyBTUElDQ19MRF9DTlRMMCk7Cj4gKyAgICAgICB3 cml0ZWxfcmVsYXhlZChsZF9jdHIxLCBzcGljYy0+YmFzZSArIFNQSUNDX0xEX0NOVEwxKTsKPiAr ICAgICAgIHdyaXRlbF9yZWxheGVkKFNQSUNDX0RNQV9FTkFCTEUKPiArICAgICAgICAgICAgICAg ICAgIHwgU1BJQ0NfRE1BX1VSR0VOVAo+ICsgICAgICAgICAgICAgICAgICAgfCBGSUVMRF9QUkVQ KFNQSUNDX1RYRklGT19USFJFU0hPTERfTUFTSywgdHhmaWZvX3RocmVzKQo+ICsgICAgICAgICAg ICAgICAgICAgfCBGSUVMRF9QUkVQKFNQSUNDX1JFQURfQlVSU1RfTUFTSywgcmVhZF9yZXEpCj4g KyAgICAgICAgICAgICAgICAgICB8IEZJRUxEX1BSRVAoU1BJQ0NfUlhGSUZPX1RIUkVTSE9MRF9N QVNLLCByeGZpZm9fdGhyZXMpCj4gKyAgICAgICAgICAgICAgICAgICB8IEZJRUxEX1BSRVAoU1BJ Q0NfV1JJVEVfQlVSU1RfTUFTSywgd3JpdGVfcmVxKSwKPiArICAgICAgICAgICAgICAgICAgIHNw aWNjLT5iYXNlICsgU1BJQ0NfRE1BUkVHKTsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVybl90 IG1lc29uX3NwaWNjX2RtYV9pcnEoc3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MpCj4g K3sKPiArICAgICAgIGlmIChyZWFkbF9yZWxheGVkKHNwaWNjLT5iYXNlICsgU1BJQ0NfRE1BUkVH KSAmIFNQSUNDX0RNQV9FTkFCTEUpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBJUlFfSEFORExF RDsKPiArCj4gKyAgICAgICBpZiAoc3BpY2MtPnhmZXJfcmVtYWluKSB7Cj4gKyAgICAgICAgICAg ICAgIG1lc29uX3NwaWNjX3NldHVwX2RtYShzcGljYyk7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsg ICAgICAgICAgICAgICB3cml0ZWxfYml0c19yZWxheGVkKFNQSUNDX1NNQywgMCwgc3BpY2MtPmJh c2UgKyBTUElDQ19DT05SRUcpOwo+ICsgICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhlZCgwLCBz cGljYy0+YmFzZSArIFNQSUNDX0lOVFJFRyk7Cj4gKyAgICAgICAgICAgICAgIHdyaXRlbF9yZWxh eGVkKDAsIHNwaWNjLT5iYXNlICsgU1BJQ0NfRE1BUkVHKTsKPiArICAgICAgICAgICAgICAgbWVz b25fc3BpY2NfZG1hX3VubWFwKHNwaWNjLCBzcGljYy0+eGZlcik7Cj4gKyAgICAgICAgICAgICAg IGNvbXBsZXRlKCZzcGljYy0+ZG9uZSk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJu IElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW5saW5lIGJvb2wgbWVzb25fc3BpY2Nf dHhmdWxsKHN0cnVjdCBtZXNvbl9zcGljY19kZXZpY2UgKnNwaWNjKQo+ICB7Cj4gICAgICAgICBy ZXR1cm4gISFGSUVMRF9HRVQoU1BJQ0NfVEYsCj4gQEAgLTI5Myw2ICs0NjMsOSBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgbWVzb25fc3BpY2NfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpCj4KPiAgICAg ICAgIHdyaXRlbF9iaXRzX3JlbGF4ZWQoU1BJQ0NfVEMsIFNQSUNDX1RDLCBzcGljYy0+YmFzZSAr IFNQSUNDX1NUQVRSRUcpOwo+Cj4gKyAgICAgICBpZiAoc3BpY2MtPnVzaW5nX2RtYSkKPiArICAg ICAgICAgICAgICAgcmV0dXJuIG1lc29uX3NwaWNjX2RtYV9pcnEoc3BpY2MpOwo+ICsKPiAgICAg ICAgIC8qIEVtcHR5IFJYIEZJRk8gKi8KPiAgICAgICAgIG1lc29uX3NwaWNjX3J4KHNwaWNjKTsK Pgo+IEBAIC00MjYsOSArNTk5LDYgQEAgc3RhdGljIGludCBtZXNvbl9zcGljY190cmFuc2Zlcl9v bmUoc3RydWN0IHNwaV9jb250cm9sbGVyICpob3N0LAo+Cj4gICAgICAgICBtZXNvbl9zcGljY19y ZXNldF9maWZvKHNwaWNjKTsKPgo+IC0gICAgICAgLyogU2V0dXAgYnVyc3QgKi8KPiAtICAgICAg IG1lc29uX3NwaWNjX3NldHVwX2J1cnN0KHNwaWNjKTsKPiAtCj4gICAgICAgICAvKiBTZXR1cCB3 YWl0IGZvciBjb21wbGV0aW9uICovCj4gICAgICAgICByZWluaXRfY29tcGxldGlvbigmc3BpY2Mt PmRvbmUpOwo+Cj4gQEAgLTQ0MiwxMSArNjEyLDM2IEBAIHN0YXRpYyBpbnQgbWVzb25fc3BpY2Nf dHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdCwKPiAgICAgICAgIC8qIElu Y3JlYXNlIGl0IHR3aWNlIGFuZCBhZGQgMjAwIG1zIHRvbGVyYW5jZSAqLwo+ICAgICAgICAgdGlt ZW91dCArPSB0aW1lb3V0ICsgMjAwOwo+Cj4gLSAgICAgICAvKiBTdGFydCBidXJzdCAqLwo+IC0g ICAgICAgd3JpdGVsX2JpdHNfcmVsYXhlZChTUElDQ19YQ0gsIFNQSUNDX1hDSCwgc3BpY2MtPmJh c2UgKyBTUElDQ19DT05SRUcpOwo+ICsgICAgICAgaWYgKHhmZXItPmJpdHNfcGVyX3dvcmQgPT0g NjQpIHsKPiArICAgICAgICAgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICAgICAgICAgIC8q IGRtYV9idXJzdF9sZW4gMSBjYW4ndCB0cmlnZ2VyIGEgZG1hIGJ1cnN0ICovCj4gKyAgICAgICAg ICAgICAgIGlmICh4ZmVyLT5sZW4gPCAxNikKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICAgICAgICAgIHJldCA9IG1lc29uX3NwaWNjX2RtYV9t YXAoc3BpY2MsIHhmZXIpOwo+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgbWVzb25fc3BpY2NfZG1hX3VubWFwKHNwaWNjLCB4ZmVyKTsKPiArICAg ICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldi5wYXJlbnQsICJkbWEgbWFwIGZh aWxlZFxuIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAg ICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgc3BpY2MtPnVzaW5nX2RtYSA9IHRydWU7 Cj4gKyAgICAgICAgICAgICAgIHNwaWNjLT54ZmVyX3JlbWFpbiA9IERJVl9ST1VORF9VUCh4ZmVy LT5sZW4sIHNwaWNjLT5ieXRlc19wZXJfd29yZCk7Cj4gKyAgICAgICAgICAgICAgIG1lc29uX3Nw aWNjX3NldHVwX2RtYShzcGljYyk7Cj4gKyAgICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKFNQ SUNDX1RFX0VOLCBzcGljYy0+YmFzZSArIFNQSUNDX0lOVFJFRyk7Cj4gKyAgICAgICAgICAgICAg IHdyaXRlbF9iaXRzX3JlbGF4ZWQoU1BJQ0NfU01DLCBTUElDQ19TTUMsIHNwaWNjLT5iYXNlICsg U1BJQ0NfQ09OUkVHKTsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIHNwaWNj LT51c2luZ19kbWEgPSBmYWxzZTsKPiArICAgICAgICAgICAgICAgLyogU2V0dXAgYnVyc3QgKi8K PiArICAgICAgICAgICAgICAgbWVzb25fc3BpY2Nfc2V0dXBfYnVyc3Qoc3BpY2MpOwo+Cj4gLSAg ICAgICAvKiBFbmFibGUgaW50ZXJydXB0cyAqLwo+IC0gICAgICAgd3JpdGVsX3JlbGF4ZWQoU1BJ Q0NfVENfRU4sIHNwaWNjLT5iYXNlICsgU1BJQ0NfSU5UUkVHKTsKPiArICAgICAgICAgICAgICAg LyogU3RhcnQgYnVyc3QgKi8KPiArICAgICAgICAgICAgICAgd3JpdGVsX2JpdHNfcmVsYXhlZChT UElDQ19YQ0gsIFNQSUNDX1hDSCwgc3BpY2MtPmJhc2UgKyBTUElDQ19DT05SRUcpOwo+ICsKPiAr ICAgICAgICAgICAgICAgLyogRW5hYmxlIGludGVycnVwdHMgKi8KPiArICAgICAgICAgICAgICAg d3JpdGVsX3JlbGF4ZWQoU1BJQ0NfVENfRU4sIHNwaWNjLT5iYXNlICsgU1BJQ0NfSU5UUkVHKTsK PiArICAgICAgIH0KPgo+ICAgICAgICAgaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQo JnNwaWNjLT5kb25lLCBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXQpKSkKPiAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FVElNRURPVVQ7Cj4gQEAgLTU0NSw2ICs3NDAsMTQgQEAgc3RhdGljIGludCBt ZXNvbl9zcGljY19zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ICAgICAgICAgaWYgKCFz cGktPmNvbnRyb2xsZXJfc3RhdGUpCj4gICAgICAgICAgICAgICAgIHNwaS0+Y29udHJvbGxlcl9z dGF0ZSA9IHNwaV9jb250cm9sbGVyX2dldF9kZXZkYXRhKHNwaS0+Y29udHJvbGxlcik7Cj4KPiAr ICAgICAgIC8qIERNQSB3b3JrcyBhdCA2NCBiaXRzLCB0aGUgcmVzdCB3b3JrcyBvbiBQSU8gKi8K PiArICAgICAgIGlmIChzcGktPmJpdHNfcGVyX3dvcmQgIT0gOCAmJgo+ICsgICAgICAgICAgIHNw aS0+Yml0c19wZXJfd29yZCAhPSAxNiAmJgo+ICsgICAgICAgICAgIHNwaS0+Yml0c19wZXJfd29y ZCAhPSAyNCAmJgo+ICsgICAgICAgICAgIHNwaS0+Yml0c19wZXJfd29yZCAhPSAzMiAmJgo+ICsg ICAgICAgICAgIHNwaS0+Yml0c19wZXJfd29yZCAhPSA2NCkKPiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+IEBAIC04NTMsMTAg KzEwNTYsNiBAQCBzdGF0aWMgaW50IG1lc29uX3NwaWNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4gICAgICAgICBob3N0LT5udW1fY2hpcHNlbGVjdCA9IDQ7Cj4gICAgICAg ICBob3N0LT5kZXYub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwo+ICAgICAgICAgaG9zdC0+ bW9kZV9iaXRzID0gU1BJX0NQSEEgfCBTUElfQ1BPTCB8IFNQSV9DU19ISUdIIHwgU1BJX0xPT1A7 Cj4gLSAgICAgICBob3N0LT5iaXRzX3Blcl93b3JkX21hc2sgPSBTUElfQlBXX01BU0soMzIpIHwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSV9CUFdfTUFTSygyNCkgfAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BJX0JQV19NQVNLKDE2KSB8Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUElfQlBXX01BU0soOCk7CgpUaGlz IHNob3VsZCBub3QgYmUgcmVtb3ZlZC4gU1BJX0JQV19NQVNLKDY0KSBuZWVkcyB0byBiZSBhZGRl ZC4KUmVtb3ZpbmcgYml0c19wZXJfd29yZF9tYXNrIGNhdXNlcyBvdGhlciBjb2RlIHRvIGFzc3Vt ZSB0aGlzIGlzIGFuCjgtYml0IG9ubHkgY29udHJvbGxlci4KCgoKPiAgICAgICAgIGhvc3QtPmZs YWdzID0gKFNQSV9DT05UUk9MTEVSX01VU1RfUlggfCBTUElfQ09OVFJPTExFUl9NVVNUX1RYKTsK PiAgICAgICAgIGhvc3QtPm1pbl9zcGVlZF9oeiA9IHNwaWNjLT5kYXRhLT5taW5fc3BlZWRfaHo7 Cj4gICAgICAgICBob3N0LT5tYXhfc3BlZWRfaHogPSBzcGljYy0+ZGF0YS0+bWF4X3NwZWVkX2h6 Owo+Cj4gLS0tCj4gYmFzZS1jb21taXQ6IDQ5ODA3ZWQ4Nzg1MTkxNmVmNjU1ZjcyZTk1NjJmOTYz NTUxODMwOTAKPiBjaGFuZ2UtaWQ6IDIwMjUwNDA4LXNwaS1kbWEtYzQ5OWY1NjBkMjk1Cj4KPiBC ZXN0IHJlZ2FyZHMsCj4gLS0KPiBYaWFud2VpIFpoYW8gPHhpYW53ZWkuemhhb0BhbWxvZ2ljLmNv bT4KPgo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IGxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0Cj4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZy YWRlYWQub3JnCj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hbWxvZ2ljCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hbWxvZ2ljCg==