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 73CA7C433EF for ; Wed, 15 Jun 2022 14:46:48 +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:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=kyDBMem38rP+uH7akQA7HBbBANz6Co7UxMGdzmB0PDY=; b=iOXppCpiLP36Mc nfDI29FsXxxB6cxwG+bi/+PLixJh+djyqe8tEyxq0euZ5uQ+G/DBTBZUnXWpqm6pIczLLgT+56aoe 0zhoO5BC6HZMboNKqgRr0FEHdWsxpYMoSaPBt+HnXjDgU4R+c2XSIz6lDENqvvCe0EU2vInstbSaz PidliNP/TO1KyxfaZsYbSzv4uNYN/vLZYx7d7sE6dCiU460rGrBm10ASAigLTEwladFvrIrL2Kd6n KSPf7AzVivk4kDkEnLmOhZk3Xk+/hwKhxkSfTbEd8IDu5HkeqyHlm/E07HrejbtSvu1EPRbP43ifa WNgrGoZ0Byv85amoIgxg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o1UGu-00F01y-T6; Wed, 15 Jun 2022 14:45:28 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o1UGq-00F012-Og; Wed, 15 Jun 2022 14:45:27 +0000 Received: from nicolas-tpx395.localdomain (192-222-136-102.qc.cable.ebox.net [192.222.136.102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 067A46601707; Wed, 15 Jun 2022 15:45:19 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1655304322; bh=B5ZJF2aBx5ss4ohJzqiscPZXnsAb9fMttJ93kueV2pw=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=g9ABufRk84jpvagLpaqe/NEmV0fXAi7UeFmB3M2ezk+EvigPi4QGfef/mwBk13akZ m2C4bBilQTaEXsD9xZ/V925fg5Mt3K+YQHov6F6BuocS3V/xYCF3AVF0Uh0qvIvxIw 0pzxh6UKvcMNZA+IAneHaCzxf/JuVbMV8LNT+NLM1ARf1Zj7KTFIscgKnczEjpNIcC L9JkgblamTX61jkeGXE0JvBb+aC5iSq4CoK7UhZdEBRfXET8Ya+o8dLbtX0gpJ83Pi Rc0K0JcDW/sdDg14ibGZ1BRuNSwDLCV1ldgr7KWG0jPEDu88yjihOirNoGxcMs0Cv5 gg/BcGgH5pH4A== Message-ID: <46b517debe88cd7617be473fe9effd0de3e16e56.camel@collabora.com> Subject: Re: [V9,5/7] mtk-jpegenc: add jpeg encode worker interface From: Nicolas Dufresne To: Irui Wang , Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Tzung-Bi Shih , angelogioacchino.delregno@collabora.com, wenst@chromium.org Cc: Project_Global_Chrome_Upstream_Group@mediatek.com, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Tomasz Figa , xia.jiang@mediatek.com, maoguang.meng@mediatek.com, kyrie wu , srv_heupstream@mediatek.com Date: Wed, 15 Jun 2022 10:45:10 -0400 In-Reply-To: <20220613032306.23237-6-irui.wang@mediatek.com> References: <20220613032306.23237-1-irui.wang@mediatek.com> <20220613032306.23237-6-irui.wang@mediatek.com> User-Agent: Evolution 3.44.1 (3.44.1-1.fc36) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220615_074525_115847_40AF1F02 X-CRM114-Status: GOOD ( 31.75 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org TGUgbHVuZGkgMTMganVpbiAyMDIyIMOgIDExOjIzICswODAwLCBJcnVpIFdhbmcgYSDDqWNyaXTC oDoKPiBGcm9tOiBreXJpZSB3dSA8a3lyaWUud3VAbWVkaWF0ZWsuY29tPgo+IAo+IEFkZCBqcGVn IGVuY29kaW5nIHdvcmtlciB0byBlbnN1cmUgdGhhdCB0d28gSFdzCj4gcnVuIGluIHBhcmFsbGVs IGluIE1UODE5NS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBreXJpZSB3dSA8a3lyaWUud3VAbWVkaWF0 ZWsuY29tPgo+IC0tLQo+ICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsvanBlZy9tdGtfanBlZ19jb3Jl LmMgICAgfCAyMTYgKysrKysrKysrKysrKysrKy0tCj4gIC4uLi9wbGF0Zm9ybS9tZWRpYXRlay9q cGVnL210a19qcGVnX2NvcmUuaCAgICB8ICAzMCArKy0KPiAgLi4uL3BsYXRmb3JtL21lZGlhdGVr L2pwZWcvbXRrX2pwZWdfZW5jX2h3LmMgIHwgIDM4ICsrLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDI0 OCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay9qcGVnL210a19qcGVnX2NvcmUuYyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvanBlZy9tdGtfanBlZ19jb3JlLmMKPiBpbmRleCBmN2E1 Yjk3MWU2MjguLmYzNWNhMjNkMzEzOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL21lZGlhdGVrL2pwZWcvbXRrX2pwZWdfY29yZS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tZWRpYXRlay9qcGVnL210a19qcGVnX2NvcmUuYwo+IEBAIC0xMDUsMTAgKzEwNSwx OCBAQCBzdGF0aWMgc3RydWN0IG10a19qcGVnX2ZtdCBtdGtfanBlZ19kZWNfZm9ybWF0c1tdID0g ewo+ICAjZGVmaW5lIE1US19KUEVHX0VOQ19OVU1fRk9STUFUUyBBUlJBWV9TSVpFKG10a19qcGVn X2VuY19mb3JtYXRzKQo+ICAjZGVmaW5lIE1US19KUEVHX0RFQ19OVU1fRk9STUFUUyBBUlJBWV9T SVpFKG10a19qcGVnX2RlY19mb3JtYXRzKQo+ICAKPiArZW51bSB7Cj4gKwlNVEtfSlBFR19CVUZf RkxBR1NfSU5JVAkJCT0gMCwKPiArCU1US19KUEVHX0JVRl9GTEFHU19MQVNUX0ZSQU1FCQk9IDEs Cj4gK307Cj4gKwo+ICBzdHJ1Y3QgbXRrX2pwZWdfc3JjX2J1ZiB7Cj4gKwl1MzIgZnJhbWVfbnVt Owo+ICAJc3RydWN0IHZiMl92NGwyX2J1ZmZlciBiOwo+ICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0 Owo+ICAJc3RydWN0IG10a19qcGVnX2RlY19wYXJhbSBkZWNfcGFyYW07Cj4gKwo+ICsJc3RydWN0 IG10a19qcGVnX2N0eCAqY3Vycl9jdHg7Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW50IGRlYnVnOwo+ IEBAIC05MDcsMzggKzkxNSwxMzggQEAgc3RhdGljIGludCBtdGtfanBlZ19zZXRfZGVjX2RzdChz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGlj IHZvaWQgbXRrX2pwZWdfZW5jX2RldmljZV9ydW4odm9pZCAqcHJpdikKPiArc3RhdGljIGludCBt dGtfanBlZ2VuY19zZWxlY3RfaHcoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQo+ICB7Cj4gLQlz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBwcml2Owo+ICsJc3RydWN0IG10a19qcGVnZW5jX2Nv bXBfZGV2ICpjb21wX2pwZWc7Cj4gIAlzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5q cGVnOwo+IC0Jc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1ZiwgKmRzdF9idWY7Cj4gKwl1 bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJaW50IGh3X2lkID0gLTE7Cj4gKwlpbnQgaTsKPiArCj4g KwlzcGluX2xvY2tfaXJxc2F2ZSgmanBlZy0+aHdfbG9jaywgZmxhZ3MpOwo+ICsJZm9yIChpID0g MDsgaSA8IE1US19KUEVHRU5DX0hXX01BWDsgaSsrKSB7Cj4gKwkJY29tcF9qcGVnID0ganBlZy0+ ZW5jX2h3X2RldltpXTsKPiArCQlpZiAoY29tcF9qcGVnLT5od19zdGF0ZSA9PSBNVEtfSlBFR19I V19JRExFKSB7Cj4gKwkJCWh3X2lkID0gaTsKPiArCQkJY29tcF9qcGVnLT5od19zdGF0ZSA9IE1U S19KUEVHX0hXX0JVU1k7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmpwZWctPmh3X2xvY2ssIGZsYWdzKTsKPiArCj4gKwlyZXR1cm4gaHdfaWQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2pwZWdlbmNfc2V0X2h3X3BhcmFtKHN0cnVjdCBt dGtfanBlZ19jdHggKmN0eCwKPiArCQkJCSAgICBpbnQgaHdfaWQsCj4gKwkJCQkgICAgc3RydWN0 IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1ZiwKPiArCQkJCSAgICBzdHJ1Y3QgdmIyX3Y0bDJfYnVm ZmVyICpkc3RfYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX2pwZWdlbmNfY29tcF9kZXYgKmpwZWcg PSBjdHgtPmpwZWctPmVuY19od19kZXZbaHdfaWRdOwo+ICsKPiArCWpwZWctPmh3X3BhcmFtLmN1 cnJfY3R4ID0gY3R4Owo+ICsJanBlZy0+aHdfcGFyYW0uc3JjX2J1ZmZlciA9IHNyY19idWY7Cj4g KwlqcGVnLT5od19wYXJhbS5kc3RfYnVmZmVyID0gZHN0X2J1ZjsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfanBlZ2VuY19kZXNlbGVjdF9odyhzdHJ1Y3QgbXRr X2pwZWdfZGV2ICpqcGVnLCBpbnQgaHdfaWQpCgpKdXN0IGEgdGhvdWdodCwgcGVyaGFwcyBzb21l IG9sZCB0aW1lciBtYXkgaGVscCBoZXJlLCBidXQgc2VsZWN0L2Rlc2VsZWN0IGlzCmluZGVlZCB1 c2VkLCBidXQgZ2V0L3B1dCgpIGFsc28gY2FtZSB0byBteSBtaW5kLiBUaGVyZSBpcyBubyBpc3N1 ZSBvdGhlcndpc2UsIEkKd291bGQganVzdCB3YW50IHRvIGtub3cgd2hhdCB3b3VsZCBiZSB0aGUg bW9zdCBjb25zaXN0ZW50IG5hbWluZyBoZXJlLgoKPiArewo+ICsJdW5zaWduZWQgbG9uZyBmbGFn czsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmanBlZy0+aHdfbG9jaywgZmxhZ3MpOwo+ICsJ anBlZy0+ZW5jX2h3X2Rldltod19pZF0tPmh3X3N0YXRlID0gTVRLX0pQRUdfSFdfSURMRTsKPiAr CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmpwZWctPmh3X2xvY2ssIGZsYWdzKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2pwZWdlbmNfd29ya2VyKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IG10a19qcGVnZW5jX2NvbXBfZGV2 ICpjb21wX2pwZWdbTVRLX0pQRUdFTkNfSFdfTUFYXTsKPiAgCWVudW0gdmIyX2J1ZmZlcl9zdGF0 ZSBidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0VSUk9SOwo+ICsJc3RydWN0IG10a19qcGVnX3Ny Y19idWYgKmpwZWdfZHN0X2J1ZjsKPiArCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyY19idWYs ICpkc3RfYnVmOwo+ICsJYXRvbWljX3QgKmh3X3JkeVtNVEtfSlBFR0VOQ19IV19NQVhdOwo+ICsJ aW50IHJldCwgaSwgaHdfaWQgPSAwOwo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCWludCBy ZXQ7Cj4gIAo+ICsJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gY29udGFpbmVyX29mKHdvcmss Cj4gKwkJc3RydWN0IG10a19qcGVnX2N0eCwKPiArCQlqcGVnX3dvcmspOwo+ICsJc3RydWN0IG10 a19qcGVnX2RldiAqanBlZyA9IGN0eC0+anBlZzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgTVRL X0pQRUdFTkNfSFdfTUFYOyBpKyspIHsKPiArCQljb21wX2pwZWdbaV0gPSBqcGVnLT5lbmNfaHdf ZGV2W2ldOwo+ICsJCWh3X3JkeVtpXSA9ICZjb21wX2pwZWdbaV0tPmh3X3JkeTsKPiArCX0KPiAr Cj4gK3JldHJ5X3NlbGVjdDoKPiArCWh3X2lkID0gbXRrX2pwZWdlbmNfc2VsZWN0X2h3KGN0eCk7 Cj4gKwlpZiAoaHdfaWQgPCAwKSB7Cj4gKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxl KGpwZWctPmVuY19od193cSwKPiArCQkJCQkgICAgICAgKGF0b21pY19yZWFkKGh3X3JkeVswXSkg fHwKPiArCQkJCQkJYXRvbWljX3JlYWQoaHdfcmR5WzFdKSkgPiAwKTsKCkkgc2VlIHR3byBpc3N1 ZXMgaGVyZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGF0IGFsbCB0aGUgY29kZSB0aGF0IHdhcyBhc3N1 bWluZyB3ZQpjb3VsZCBwb3NzaWJseSBzdXBwb3J0IG1vcmUgdGhlbiAyIGNvcmVzIGluIHRoZSBm dXR1cmUgZmFsbHMgaGVyZS4gVGhlIHNlY29uZCBpcwphIGJpdCBiaWdnZXIsIGRvaW5nIDIgYXRv bWljX3JlYWQoKSBvbmUgYWZ0ZXIgdGhlIG90aGVyIGlzbid0IGF0b21pYy4KCkkgZG9uJ3Qga25v dyB0aGUgdXN1YWwgbWVjaGFuaXNtIGluIHRoZSBMaW51eCBrZXJuZWwsIGFuZCBJJ2QgYXBwcmVj aWF0ZSBpZgp0aGVyZSBpcyBtb3JlICJrZXJuZWwgc3R5bGUiIHN1Z2dlc3Rpb24gaGVyZS4gTm9y bWFsbHkgSSB3b3VsZCBpbiBzb2x2ZSB0aGlzCndpdGggYW4gYXRvbWljIGNvdW50ZXIuIFdoZW5l dmVyIHlvdSByZXNlcnZlIChzZWxlY3QpIGEgY29yZSwgeW91IGRlY3JlYXNlIHRoZQp1c2FnZSBj b3VudGVyLiBXaGVuIHlvdSByZWxlYXNlIGEgY29yZSwgeW91IGluY3JlYXNlIHRoZSBjb3VudGVy IChhbmQgc2lnbmFsKS4KWW91IHRoZW4gaGF2ZSAxIGF0b21pY19yZWFkKCkgdG8gY2hlY2ssIGF0 b21pY19yZWFkKG51bV9pZGxlX2hyKSA+IDAuCgo+ICsJCWlmIChyZXQgIT0gMCkgewo+ICsJCQlk ZXZfZXJyKGpwZWctPmRldiwgIiVzIDogJWQsIGFsbCBIVyBhcmUgYnVzeVxuIiwKPiArCQkJCV9f ZnVuY19fLCBfX0xJTkVfXyk7Cj4gKwkJCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2Rl diwgY3R4LT5maC5tMm1fY3R4KTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCj4gKwkJZ290byBy ZXRyeV9zZWxlY3Q7Cj4gKwl9Cj4gKwo+ICsJYXRvbWljX2RlYygmY29tcF9qcGVnW2h3X2lkXS0+ aHdfcmR5KTsKPiAgCXNyY19idWYgPSB2NGwyX20ybV9uZXh0X3NyY19idWYoY3R4LT5maC5tMm1f Y3R4KTsKPiArCWlmICghc3JjX2J1ZikKPiArCQlnb3RvIGdldGJ1Zl9mYWlsOwo+ICsKPiAgCWRz dF9idWYgPSB2NGwyX20ybV9uZXh0X2RzdF9idWYoY3R4LT5maC5tMm1fY3R4KTsKPiArCWlmICgh ZHN0X2J1ZikKPiArCQlnb3RvIGdldGJ1Zl9mYWlsOwo+ICAKPiAtCXJldCA9IHBtX3J1bnRpbWVf cmVzdW1lX2FuZF9nZXQoanBlZy0+ZGV2KTsKPiAtCWlmIChyZXQgPCAwKQo+ICsJdjRsMl9tMm1f c3JjX2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsKPiArCXY0bDJfbTJtX2RzdF9idWZfcmVt b3ZlKGN0eC0+ZmgubTJtX2N0eCk7Cj4gKwo+ICsJdjRsMl9tMm1fYnVmX2NvcHlfbWV0YWRhdGEo c3JjX2J1ZiwgZHN0X2J1ZiwgdHJ1ZSk7Cj4gKwo+ICsJbXRrX2pwZWdlbmNfc2V0X2h3X3BhcmFt KGN0eCwgaHdfaWQsIHNyY19idWYsIGRzdF9idWYpOwo+ICsJcmV0ID0gcG1fcnVudGltZV9nZXRf c3luYyhjb21wX2pwZWdbaHdfaWRdLT5kZXYpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZf ZXJyKGpwZWctPmRldiwgIiVzIDogJWQsIHBtX3J1bnRpbWVfZ2V0X3N5bmMgZmFpbCAhISFcbiIs Cj4gKwkJCV9fZnVuY19fLCBfX0xJTkVfXyk7Cj4gIAkJZ290byBlbmNfZW5kOwo+ICsJfQo+ICAK PiAtCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmanBlZy0+am9iX3RpbWVvdXRfd29yaywKPiAtCQkJ ICAgICAgbXNlY3NfdG9famlmZmllcyhNVEtfSlBFR19IV19USU1FT1VUX01TRUMpKTsKPiArCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShjb21wX2pwZWdbaHdfaWRdLT52ZW5jX2Nsay5jbGtzLT5j bGspOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoanBlZy0+ZGV2LCAiJXMgOiAlZCwganBl Z2VuYyBjbGtfcHJlcGFyZV9lbmFibGUgZmFpbFxuIiwKPiArCQkJX19mdW5jX18sIF9fTElORV9f KTsKPiArCQlnb3RvIGVuY19lbmQ7Cj4gKwl9Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmpw ZWctPmh3X2xvY2ssIGZsYWdzKTsKPiArCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmY29tcF9qcGVn W2h3X2lkXS0+am9iX3RpbWVvdXRfd29yaywKPiArCQkJICAgICAgbXNlY3NfdG9famlmZmllcyhN VEtfSlBFR19IV19USU1FT1VUX01TRUMpKTsKPiAgCj4gLQkvKgo+IC0JICogUmVzZXR0aW5nIHRo ZSBoYXJkd2FyZSBldmVyeSBmcmFtZSBpcyB0byBlbnN1cmUgdGhhdCBhbGwgdGhlCj4gLQkgKiBy ZWdpc3RlcnMgYXJlIGNsZWFyZWQuIFRoaXMgaXMgYSBoYXJkd2FyZSByZXF1aXJlbWVudC4KPiAt CSAqLwo+IC0JbXRrX2pwZWdfZW5jX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsKPiArCXNwaW5fbG9j a19pcnFzYXZlKCZjb21wX2pwZWdbaHdfaWRdLT5od19sb2NrLCBmbGFncyk7Cj4gKwlqcGVnX2Rz dF9idWYgPSBtdGtfanBlZ192YjJfdG9fc3JjYnVmKCZkc3RfYnVmLT52YjJfYnVmKTsKPiArCWpw ZWdfZHN0X2J1Zi0+Y3Vycl9jdHggPSBjdHg7Cj4gKwlqcGVnX2RzdF9idWYtPmZyYW1lX251bSA9 IGN0eC0+dG90YWxfZnJhbWVfbnVtOwo+ICsJY3R4LT50b3RhbF9mcmFtZV9udW0rKzsKPiArCW10 a19qcGVnX2VuY19yZXNldChjb21wX2pwZWdbaHdfaWRdLT5yZWdfYmFzZSk7Cj4gKwltdGtfanBl Z19zZXRfZW5jX2RzdChjdHgsCj4gKwkJCSAgICAgY29tcF9qcGVnW2h3X2lkXS0+cmVnX2Jhc2Us Cj4gKwkJCSAgICAgJmRzdF9idWYtPnZiMl9idWYpOwo+ICsJbXRrX2pwZWdfc2V0X2VuY19zcmMo Y3R4LAo+ICsJCQkgICAgIGNvbXBfanBlZ1tod19pZF0tPnJlZ19iYXNlLAo+ICsJCQkgICAgICZz cmNfYnVmLT52YjJfYnVmKTsKPiArCW10a19qcGVnX3NldF9lbmNfcGFyYW1zKGN0eCwgY29tcF9q cGVnW2h3X2lkXS0+cmVnX2Jhc2UpOwo+ICsJbXRrX2pwZWdfZW5jX3N0YXJ0KGNvbXBfanBlZ1to d19pZF0tPnJlZ19iYXNlKTsKPiArCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2Rldiwg Y3R4LT5maC5tMm1fY3R4KTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbXBfanBlZ1to d19pZF0tPmh3X2xvY2ssIGZsYWdzKTsKPiAgCj4gLQltdGtfanBlZ19zZXRfZW5jX3NyYyhjdHgs IGpwZWctPnJlZ19iYXNlLCAmc3JjX2J1Zi0+dmIyX2J1Zik7Cj4gLQltdGtfanBlZ19zZXRfZW5j X2RzdChjdHgsIGpwZWctPnJlZ19iYXNlLCAmZHN0X2J1Zi0+dmIyX2J1Zik7Cj4gLQltdGtfanBl Z19zZXRfZW5jX3BhcmFtcyhjdHgsIGpwZWctPnJlZ19iYXNlKTsKPiAtCW10a19qcGVnX2VuY19z dGFydChqcGVnLT5yZWdfYmFzZSk7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZqcGVnLT5o d19sb2NrLCBmbGFncyk7Cj4gIAlyZXR1cm47Cj4gIAo+ICBlbmNfZW5kOgo+IEBAIC05NDYsOSAr MTA1NCw1OCBAQCBzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfZGV2aWNlX3J1bih2b2lkICpwcml2 KQo+ICAJdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsKPiAgCXY0bDJf bTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0ZSk7Cj4gIAl2NGwyX20ybV9idWZfZG9uZShk c3RfYnVmLCBidWZfc3RhdGUpOwo+ICtnZXRidWZfZmFpbDoKPiArCWF0b21pY19pbmMoJmNvbXBf anBlZ1tod19pZF0tPmh3X3JkeSk7Cj4gKwltdGtfanBlZ2VuY19kZXNlbGVjdF9odyhqcGVnLCBo d19pZCk7Cj4gIAl2NGwyX20ybV9qb2JfZmluaXNoKGpwZWctPm0ybV9kZXYsIGN0eC0+ZmgubTJt X2N0eCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19kZXZpY2VfcnVuKHZv aWQgKnByaXYpCj4gK3sKPiArCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHByaXY7Cj4gKwlz dHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOwo+ICsJc3RydWN0IHZiMl92NGwy X2J1ZmZlciAqc3JjX2J1ZiwgKmRzdF9idWY7Cj4gKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgYnVm X3N0YXRlID0gVkIyX0JVRl9TVEFURV9FUlJPUjsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCWlmICghanBlZy0+dmFyaWFudC0+aXNfbXVsdGlodykgewo+ICsJ CXNyY19idWYgPSB2NGwyX20ybV9uZXh0X3NyY19idWYoY3R4LT5maC5tMm1fY3R4KTsKPiArCQlk c3RfYnVmID0gdjRsMl9tMm1fbmV4dF9kc3RfYnVmKGN0eC0+ZmgubTJtX2N0eCk7Cj4gKwo+ICsJ CXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoanBlZy0+ZGV2KTsKPiArCQlpZiAocmV0 IDwgMCkKPiArCQkJZ290byBlbmNfZW5kOwo+ICsKPiArCQlzY2hlZHVsZV9kZWxheWVkX3dvcmso JmpwZWctPmpvYl90aW1lb3V0X3dvcmssCj4gKwkJCQkgICAgICBtc2Vjc190b19qaWZmaWVzKE1U S19KUEVHX0hXX1RJTUVPVVRfTVNFQykpOwo+ICsKPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmanBl Zy0+aHdfbG9jaywgZmxhZ3MpOwo+ICsKPiArCQkvKgo+ICsJCSAqIFJlc2V0dGluZyB0aGUgaGFy ZHdhcmUgZXZlcnkgZnJhbWUgaXMgdG8gZW5zdXJlIHRoYXQgYWxsIHRoZQo+ICsJCSAqIHJlZ2lz dGVycyBhcmUgY2xlYXJlZC4gVGhpcyBpcyBhIGhhcmR3YXJlIHJlcXVpcmVtZW50Lgo+ICsJCSAq Lwo+ICsJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7Cj4gKwo+ICsJCW10a19q cGVnX3NldF9lbmNfc3JjKGN0eCwganBlZy0+cmVnX2Jhc2UsICZzcmNfYnVmLT52YjJfYnVmKTsK PiArCQltdGtfanBlZ19zZXRfZW5jX2RzdChjdHgsIGpwZWctPnJlZ19iYXNlLCAmZHN0X2J1Zi0+ dmIyX2J1Zik7Cj4gKwkJbXRrX2pwZWdfc2V0X2VuY19wYXJhbXMoY3R4LCBqcGVnLT5yZWdfYmFz ZSk7Cj4gKwkJbXRrX2pwZWdfZW5jX3N0YXJ0KGpwZWctPnJlZ19iYXNlKTsKPiArCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZqcGVnLT5od19sb2NrLCBmbGFncyk7Cj4gKwkJcmV0dXJuOwo+ICsK PiArZW5jX2VuZDoKPiArCQl2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgp Owo+ICsJCXY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7Cj4gKwkJdjRs Ml9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsKPiArCQl2NGwyX20ybV9idWZfZG9u ZShkc3RfYnVmLCBidWZfc3RhdGUpOwo+ICsJCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJt X2RldiwgY3R4LT5maC5tMm1fY3R4KTsKPiArCX0gZWxzZSB7Cj4gKwkJcXVldWVfd29yayhqcGVn LT53b3JrcXVldWUsICZjdHgtPmpwZWdfd29yayk7Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2 b2lkIG10a19qcGVnX2RlY19kZXZpY2VfcnVuKHZvaWQgKnByaXYpCj4gIHsKPiAgCXN0cnVjdCBt dGtfanBlZ19jdHggKmN0eCA9IHByaXY7Cj4gQEAgLTEyMTEsNiArMTM2OCwxMyBAQCBzdGF0aWMg aW50IG10a19qcGVnX29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCj4gIAkJZ290byBmcmVlOwo+ICAJ fQo+ICAKPiArCWlmIChqcGVnLT52YXJpYW50LT5pc19tdWx0aWh3KSB7Cj4gKwkJaWYgKG9mX3By b3BlcnR5X3JlYWRfYm9vbChqcGVnLT5kZXYtPm9mX25vZGUsCj4gKwkJCQkJICAibWVkaWF0ZWss anBlZ2VuYy1tdWx0aS1jb3JlIikpIHsKPiArCQkJSU5JVF9XT1JLKCZjdHgtPmpwZWdfd29yaywg bXRrX2pwZWdlbmNfd29ya2VyKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJdjRsMl9maF9pbml0KCZj dHgtPmZoLCB2ZmQpOwo+ICAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gJmN0eC0+Zmg7Cj4gIAl2NGwy X2ZoX2FkZCgmY3R4LT5maCk7Cj4gQEAgLTEzNDUsNiArMTUwOSwxOCBAQCBzdGF0aWMgaW50IG10 a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJCWRldl9lcnIo JnBkZXYtPmRldiwgIkZhaWxlZCB0byBpbml0IGNsa1xuIik7Cj4gIAkJCWdvdG8gZXJyX2Nsa19p bml0Owo+ICAJCX0KPiArCX0gZWxzZSB7Cj4gKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChw ZGV2LT5kZXYub2Zfbm9kZSwKPiArCQkJCQkgICJtZWRpYXRlayxqcGVnZW5jLW11bHRpLWNvcmUi KSkgewo+ICsJCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZqcGVnLT5lbmNfaHdfd3EpOwo+ICsJCQlq cGVnLT53b3JrcXVldWUgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShNVEtfSlBFR19OQU1FLAo+ ICsJCQkJCQkJCSAgV1FfTUVNX1JFQ0xBSU0KPiArCQkJCQkJCQkgIHwgV1FfRlJFRVpBQkxFKTsK PiArCQkJaWYgKCFqcGVnLT53b3JrcXVldWUpIHsKPiArCQkJCXJldCA9IC1FSU5WQUw7Cj4gKwkJ CQlnb3RvIGVycl9hbGxvY193b3JrcXVldWU7Cj4gKwkJCX0KPiArCQl9Cj4gIAl9Cj4gIAo+ICAJ cmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldiwgJmpwZWctPnY0bDJfZGV2KTsK PiBAQCAtMTQyMSw2ICsxNTk3LDggQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAKPiAgZXJyX2Nsa19pbml0Ogo+ICAKPiArZXJyX2Fs bG9jX3dvcmtxdWV1ZToKPiArCj4gIGVycl9yZXFfaXJxOgo+ICAKPiAgCXJldHVybiByZXQ7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvanBlZy9tdGtfanBl Z19jb3JlLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL2pwZWcvbXRrX2pwZWdf Y29yZS5oCj4gaW5kZXggMDY4M2Q4MGZjZWE1Li5kMjMzYTQ5YmY5NTIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay9qcGVnL210a19qcGVnX2NvcmUuaAo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvanBlZy9tdGtfanBlZ19jb3JlLmgK PiBAQCAtNzYsNiArNzYsMTEgQEAgc3RydWN0IG10a19qcGVnX3ZhcmlhbnQgewo+ICAJdTMyIGNh cF9xX2RlZmF1bHRfZm91cmNjOwo+ICB9Owo+ICAKPiArZW51bSBtdGtfanBlZ19od19zdGF0ZSB7 Cj4gKwlNVEtfSlBFR19IV19JRExFID0gMCwKPiArCU1US19KUEVHX0hXX0JVU1kgPSAxLAo+ICt9 Owo+ICsKPiAgc3RydWN0IG10a19qcGVnX2h3X3BhcmFtIHsKPiAgCXN0cnVjdCB2YjJfdjRsMl9i dWZmZXIgKnNyY19idWZmZXI7Cj4gIAlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpkc3RfYnVmZmVy Owo+IEBAIC05OCwxMiArMTAzLDE3IEBAIHN0cnVjdCBtdGtfanBlZ2VuY19jbGsgewo+ICAKPiAg LyoqCj4gICAqIHN0cnVjdCBtdGtfanBlZ2VuY19jb21wX2RldiAtIEpQRUcgQ09SRVggYWJzdHJh Y3Rpb24KPiAtICogQGRldjoJCSAgICAgICAgSlBFRyBkZXZpY2UKPiAtICogQHBsYXRfZGV2OgkJ ICAgIHBsYXRmb3JtIGRldmljZSBkYXRhCj4gLSAqIEByZWdfYmFzZToJCSAgICBKUEVHIHJlZ2lz dGVycyBtYXBwaW5nCj4gLSAqIEBtYXN0ZXJfZGV2OgkJICAgIG10a19qcGVnX2RldiBkZXZpY2UK PiAtICogQHBtOgkgICAgICAgICAgICAgICAgbXRrX2pwZWdlbmNfcG0KPiAtICogQGpwZWdlbmNf aXJxOgkgICAganBlZyBlbmNvZGUgaXJxIG51bQo+ICsgKiBAZGV2OgkJSlBFRyBkZXZpY2UKPiAr ICogQHBsYXRfZGV2OgkJcGxhdGZvcm0gZGV2aWNlIGRhdGEKPiArICogQHJlZ19iYXNlOgkJSlBF RyByZWdpc3RlcnMgbWFwcGluZwo+ICsgKiBAbWFzdGVyX2RldjoJCW10a19qcGVnX2RldiBkZXZp Y2UKPiArICogQHZlbmNfY2xrOgkgICAgICAgIG10a19qcGVnZW5jX2Nsawo+ICsgKiBAanBlZ2Vu Y19pcnE6CWpwZWcgZW5jb2RlIGlycSBudW0KPiArICogQGpvYl90aW1lb3V0X3dvcms6CWhhbmRs ZSBqcGVnIGVuY29kZSB3b3JrCj4gKyAqIEBod19wYXJhbToJCXJlY29yZCBodyBwYXJhbQo+ICsg KiBAaHdfcmR5OgkJcmVjb3JkIGh3IHJlYWR5Cj4gKyAqIEBod19zdGF0ZToJCXJlY29yZCBodyBz dGF0ZQo+ICsgKiBAaHdfbG9jazoJCXNwaW5sb2NrIHByb3RlY3RpbmcgdGhlIGh3IGRldmljZSBy ZXNvdXJjZQo+ICAgKi8KPiAgc3RydWN0IG10a19qcGVnZW5jX2NvbXBfZGV2IHsKPiAgCXN0cnVj dCBkZXZpY2UgKmRldjsKPiBAQCAtMTE1LDYgKzEyNSwxMCBAQCBzdHJ1Y3QgbXRrX2pwZWdlbmNf Y29tcF9kZXYgewo+ICAJaW50IGh3X2lkOwo+ICAJc3RydWN0IGRlbGF5ZWRfd29yayBqb2JfdGlt ZW91dF93b3JrOwo+ICAJc3RydWN0IG10a19qcGVnX2h3X3BhcmFtIGh3X3BhcmFtOwo+ICsJYXRv bWljX3QgaHdfcmR5Owo+ICsJZW51bSBtdGtfanBlZ19od19zdGF0ZSBod19zdGF0ZTsKPiArCS8v c3BpbmxvY2sgcHJvdGVjdGluZyB0aGUgaHcgZGV2aWNlIHJlc291cmNlCj4gKwlzcGlubG9ja190 IGh3X2xvY2s7Cj4gIH07Cj4gIAo+ICAvKioKPiBAQCAtMTQ2LDYgKzE2MCw3IEBAIHN0cnVjdCBt dGtfanBlZ19kZXYgewo+ICAKPiAgCXZvaWQgX19pb21lbSAqcmVnX2VuY2Jhc2VbTVRLX0pQRUdF TkNfSFdfTUFYXTsKPiAgCXN0cnVjdCBtdGtfanBlZ2VuY19jb21wX2RldiAqZW5jX2h3X2RldltN VEtfSlBFR0VOQ19IV19NQVhdOwo+ICsJd2FpdF9xdWV1ZV9oZWFkX3QgZW5jX2h3X3dxOwo+ICB9 Owo+ICAKPiAgLyoqCj4gQEAgLTIwNCw2ICsyMTksOSBAQCBzdHJ1Y3QgbXRrX2pwZWdfY3R4IHsK PiAgCXU4IGVuY19xdWFsaXR5Owo+ICAJdTggcmVzdGFydF9pbnRlcnZhbDsKPiAgCXN0cnVjdCB2 NGwyX2N0cmxfaGFuZGxlciBjdHJsX2hkbDsKPiArCj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QganBl Z193b3JrOwo+ICsJdTMyIHRvdGFsX2ZyYW1lX251bTsKPiAgfTsKPiAgCj4gICNlbmRpZiAvKiBf TVRLX0pQRUdfQ09SRV9IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bWVkaWF0ZWsvanBlZy9tdGtfanBlZ19lbmNfaHcuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bWVkaWF0ZWsvanBlZy9tdGtfanBlZ19lbmNfaHcuYwo+IGluZGV4IDk5ZjNkYjJhMzkzYS4uMzE2 ZGQzODE4MTg3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsv anBlZy9tdGtfanBlZ19lbmNfaHcuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVk aWF0ZWsvanBlZy9tdGtfanBlZ19lbmNfaHcuYwo+IEBAIC0xOTIsNiArMTkyLDcgQEAgc3RhdGlj IHZvaWQgbXRrX2pwZWdlbmNfdGltZW91dF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK PiAgCQljb250YWluZXJfb2YoZGx5X3dvcmssCj4gIAkJCSAgICAgc3RydWN0IG10a19qcGVnZW5j X2NvbXBfZGV2LAo+ICAJCQkgICAgIGpvYl90aW1lb3V0X3dvcmspOwo+ICsJc3RydWN0IG10a19q cGVnX2RldiAqbWFzdGVyX2pwZWcgPSBjanBlZy0+bWFzdGVyX2RldjsKPiAgCWVudW0gdmIyX2J1 ZmZlcl9zdGF0ZSBidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0VSUk9SOwo+ICAJc3RydWN0IHZi Ml92NGwyX2J1ZmZlciAqc3JjX2J1ZiwgKmRzdF9idWY7Cj4gIAo+IEBAIC0yMDIsNiArMjAzLDkg QEAgc3RhdGljIHZvaWQgbXRrX2pwZWdlbmNfdGltZW91dF93b3JrKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiAgCW10a19qcGVnX2VuY19yZXNldChjanBlZy0+cmVnX2Jhc2UpOwo+ICAJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKGNqcGVnLT52ZW5jX2Nsay5jbGtzLT5jbGspOwo+ICAJcG1fcnVu dGltZV9wdXQoY2pwZWctPmRldik7Cj4gKwljanBlZy0+aHdfc3RhdGUgPSBNVEtfSlBFR19IV19J RExFOwo+ICsJYXRvbWljX2luYygmY2pwZWctPmh3X3JkeSk7Cj4gKwl3YWtlX3VwKCZtYXN0ZXJf anBlZy0+ZW5jX2h3X3dxKTsKPiAgCXY0bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0 ZSk7Cj4gIH0KPiAgCj4gQEAgLTIxOCwzMCArMjIyLDM4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBt dGtfanBlZ2VuY19od19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQo+ICAKPiAgCWNh bmNlbF9kZWxheWVkX3dvcmsoJmpwZWctPmpvYl90aW1lb3V0X3dvcmspOwo+ICAKPiArCWN0eCA9 IGpwZWctPmh3X3BhcmFtLmN1cnJfY3R4Owo+ICsJc3JjX2J1ZiA9IGpwZWctPmh3X3BhcmFtLnNy Y19idWZmZXI7Cj4gKwlkc3RfYnVmID0ganBlZy0+aHdfcGFyYW0uZHN0X2J1ZmZlcjsKPiArCWRz dF9idWYtPnZiMl9idWYudGltZXN0YW1wID0gc3JjX2J1Zi0+dmIyX2J1Zi50aW1lc3RhbXA7Cj4g Kwo+ICAJaXJxX3N0YXR1cyA9IHJlYWRsKGpwZWctPnJlZ19iYXNlICsgSlBFR19FTkNfSU5UX1NU UykgJgo+ICAJCUpQRUdfRU5DX0lOVF9TVEFUVVNfTUFTS19BTExJUlE7Cj4gIAlpZiAoaXJxX3N0 YXR1cykKPiAgCQl3cml0ZWwoMCwganBlZy0+cmVnX2Jhc2UgKyBKUEVHX0VOQ19JTlRfU1RTKTsK PiAtCWlmICghKGlycV9zdGF0dXMgJiBKUEVHX0VOQ19JTlRfU1RBVFVTX0RPTkUpKQo+IC0JCXJl dHVybiBJUlFfTk9ORTsKPiAgCj4gLQljdHggPSB2NGwyX20ybV9nZXRfY3Vycl9wcml2KG1hc3Rl cl9qcGVnLT5tMm1fZGV2KTsKPiAtCWlmICghY3R4KSB7Cj4gLQkJdjRsMl9lcnIoJm1hc3Rlcl9q cGVnLT52NGwyX2RldiwgIkNvbnRleHQgaXMgTlVMTFxuIik7Cj4gLQkJcmV0dXJuIElSUV9IQU5E TEVEOwo+ICsJaWYgKCEoaXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfRE9ORSkpIHsK PiArCQlkZXZfZXJyKGpwZWctPmRldiwgIiBOb3QgSlBFR19FTkNfSU5UX1NUQVRVU19ET05FXG4i KTsKPiArCQlnb3RvIGlycV9oYW5kbGVkOwo+ICAJfQo+ICAKPiAtCXNyY19idWYgPSB2NGwyX20y bV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOwo+IC0JZHN0X2J1ZiA9IHY0bDJfbTJt X2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7Cj4gLQlkc3RfYnVmLT52YjJfYnVmLnRp bWVzdGFtcCA9IHNyY19idWYtPnZiMl9idWYudGltZXN0YW1wOwo+IC0KPiAgCXJlc3VsdF9zaXpl ID0gbXRrX2pwZWdfZW5jX2dldF9maWxlX3NpemUoanBlZy0+cmVnX2Jhc2UpOwo+ICAJdmIyX3Nl dF9wbGFuZV9wYXlsb2FkKCZkc3RfYnVmLT52YjJfYnVmLCAwLCByZXN1bHRfc2l6ZSk7Cj4gKwo+ ICtpcnFfaGFuZGxlZDoKPiAgCWJ1Zl9zdGF0ZSA9IFZCMl9CVUZfU1RBVEVfRE9ORTsKPiAgCXY0 bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0ZSk7Cj4gIAl2NGwyX20ybV9idWZfZG9u ZShkc3RfYnVmLCBidWZfc3RhdGUpOwo+IC0JdjRsMl9tMm1fam9iX2ZpbmlzaChtYXN0ZXJfanBl Zy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4KTsKPiAgCXBtX3J1bnRpbWVfcHV0KGN0eC0+anBl Zy0+ZGV2KTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShqcGVnLT52ZW5jX2Nsay5jbGtzLT5j bGspOwo+ICsJaWYgKCFsaXN0X2VtcHR5KCZjdHgtPmZoLm0ybV9jdHgtPm91dF9xX2N0eC5yZHlf cXVldWUpIHx8Cj4gKwkgICAgIWxpc3RfZW1wdHkoJmN0eC0+ZmgubTJtX2N0eC0+Y2FwX3FfY3R4 LnJkeV9xdWV1ZSkpIHsKPiArCQlxdWV1ZV93b3JrKG1hc3Rlcl9qcGVnLT53b3JrcXVldWUsICZj dHgtPmpwZWdfd29yayk7Cj4gKwl9Cj4gKwo+ICsJanBlZy0+aHdfc3RhdGUgPSBNVEtfSlBFR19I V19JRExFOwo+ICsJd2FrZV91cCgmbWFzdGVyX2pwZWctPmVuY19od193cSk7Cj4gKwlhdG9taWNf aW5jKCZqcGVnLT5od19yZHkpOwo+ICAKPiAgCXJldHVybiBJUlFfSEFORExFRDsKPiAgfQo+IEBA IC0yOTQsNiArMzA2LDEwIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdlbmNfaHdfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWRldi0+cGxhdF9kZXYgPSBwZGV2Owo+ICAJZGV2 LT5kZXYgPSAmcGRldi0+ZGV2Owo+ICAKPiArCWF0b21pY19zZXQoJmRldi0+aHdfcmR5LCAxVSk7 Cj4gKwlzcGluX2xvY2tfaW5pdCgmZGV2LT5od19sb2NrKTsKPiArCWRldi0+aHdfc3RhdGUgPSBN VEtfSlBFR19IV19JRExFOwo+ICsKPiAgCUlOSVRfREVMQVlFRF9XT1JLKCZkZXYtPmpvYl90aW1l b3V0X3dvcmssCj4gIAkJCSAgbXRrX2pwZWdlbmNfdGltZW91dF93b3JrKTsKPiAgCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=