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 D0001C5AC67 for ; Wed, 12 Aug 2026 03:04:16 +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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=N+xHSquL2/4ODUQ8HhhlIxF9ikxeo/686ecQQFNl2fU=; b=YfK+WL7ZnkgpNZ q06Xmn7P9fh7z4tFg82iuRGpY4B5c2JA2Y64ySutkBaeQ/ztXRY5ZIA6FqL75NWqFE4e2rQoSlyuk QUo92ucXr8Wwy3Cs4E0m3SFTzabYfU2w4xM4/p0+clCPAQoKsMpHf4m8qt4mkrmSrPJjw6vPhxer+ aU4Nnt1416hlyU6aU6sx1WWfbPCEMHG5MqASY99szNYJvF+gBje6HujU/w1Mk4vYOiHg84EKop/B7 TwscdsHlKmeZXhyaK57tkzn+F6GM1P/Sux1Aqz2ee2JNklBM6Y10KAOu0TSei/opa3hwH9JuieOBm CDUnWYXGtGV1KpFCie1A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wtzGD-0000000FKLF-0Fs2; Wed, 12 Aug 2026 03:04:09 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wtzGA-0000000FKL4-3bLH for linux-amlogic@lists.infradead.org; Wed, 12 Aug 2026 03:04:08 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 71C5042E6C; Wed, 12 Aug 2026 03:04:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EFAFD1F000E9; Wed, 12 Aug 2026 03:04:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786503846; bh=pycxU543XN7qwtxxsAjU6N59CasYVXqBRsX4jrr615Y=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=PtxRbljhJzDF/4PZv3P59HEPJEqjV0KFih8R+RzTAu/F2nZ85lvLpZwxiIPU06Hgt wNQC6FbXv906dSct/3L/AEoB1MEk2epDis8O1ZufMggDezDwPAq/+qIJmoKSFGkH1I 5Q25SCZQMQPe/zj6feB96gvXMBM86f+VesQJj+1euAmrLPWtZ8fbDYTxn0QcWboIla FQDoZ1kdgMdUooJHyijkfGt3QH+hE3EtDGA9w+hAHSLJ6PdNZ69O6S94GXW3QWW4qc bVEwuF5F0jfyx5WBymvSnZ4TGFBlpoKdZK+LK4YbwfXOrZ5I2UTmOiw/vvLRKxGpwK DMzCEYK1S7l8A== From: sashiko-bot@kernel.org Subject: Re: [PATCH v7 4/6] decoder: Add V4L2 stateless H.264 decoder driver To: "Zhentao Guo" Cc: devicetree@vger.kernel.org, robh@kernel.org, neil.armstrong@linaro.org, conor+dt@kernel.org, linux-amlogic@lists.infradead.org, media-ci@linuxtv.org In-Reply-To: <20260812-b4-s4-vdec-upstream-v7-4-3fae085861bd@amlogic.com> References: <20260812-b4-s4-vdec-upstream-v7-0-3fae085861bd@amlogic.com> <20260812-b4-s4-vdec-upstream-v7-4-3fae085861bd@amlogic.com> Date: Wed, 12 Aug 2026 03:04:05 +0000 Message-Id: <20260812030405.EFAFD1F000E9@smtp.kernel.org> 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: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 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 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MjIgcG90ZW50aWFsIGlzc3VlKHMpIHRvIGNvbnNpZGVyOgotIFtDcml0aWNhbF0gVW52YWxpZGF0 ZWQgU1BTIGRpbWVuc2lvbnMgY2F1c2UgYSAzMi1iaXQgaW50ZWdlciBvdmVyZmxvdywgcmVzdWx0 aW5nIGluIGFuIHVuZGVyc2l6ZWQgQ01BIGJ1ZmZlciBhbmQgbWFzc2l2ZSBvdXQtb2YtYm91bmRz IERNQSB3cml0ZXMuCi0gW0NyaXRpY2FsXSBBcnJheSBib3VuZHMgd3JpdGVzIGR1cmluZyByZWZl cmVuY2UgbGlzdCByZW9yZGVyaW5nIGFsbG93cyBtYXNzaXZlIGhlYXAgY29ycnVwdGlvbi4KLSBb Q3JpdGljYWxdIFRydXN0aW5nIFY0TDIgUFBTIGNvbnRyb2wgZmllbGRzIGFsbG93cyBhIGhlYXAg b3ZlcmZsb3cgdmlhIGBjbGVhcl91bnVzZWRfY29sX2J1ZmAuCi0gW0NyaXRpY2FsXSBEeW5hbWlj IHJlc29sdXRpb24gY2hhbmdlcyBieXBhc3MgRE1BIGJ1ZmZlciByZWFsbG9jYXRpb24sIGNhdXNp bmcgdGhlIGhhcmR3YXJlIHRvIG92ZXJmbG93IHRoZSBjb2xvY2F0ZWQgQ01BIGJ1ZmZlci4KLSBb SGlnaF0gVXNlLWFmdGVyLWZyZWUgb2YgVjRMMiBNMk0gY29udGV4dCBhbmQgZHJpdmVyIHJlc291 cmNlcyBkdWUgdG8gaW5jb3JyZWN0IHRlYXJkb3duIG9yZGVyIGFuZCBkZXZyZXMgdXNhZ2UgaW4g YGFtbF92ZGVjX2Rydl9yZW1vdmVgLgotIFtIaWdoXSBUT0NUT1UgcmFjZSBpbiBgdmRlY190aHJl YWRlZF9pc3JfaGFuZGxlcmAgbGVhZHMgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9mIGBj dXJyX2N0eGAgYW5kIGB2NGwyX20ybV9uZXh0X2RzdF9idWZgLgotIFtIaWdoXSBFcnJvciBwYXRo IGluIGBnZXRfZmlybXdhcmVgIGluY29ycmVjdGx5IHJldHVybnMgMCBvbiB1bmRlcnNpemVkIGZp cm13YXJlLCBwYXNzaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2sgbWVtb3J5IHRvIHRoZSBURUUgQVBJ LgotIFtIaWdoXSBIYXJkd2FyZSBWSUZJRk8gV3JpdGUgUG9pbnRlciBpcyBwcm9ncmFtbWVkIHdp dGggYSBwaHlzaWNhbCBvZmZzZXQgYmV5b25kIHRoZSBhbGxvY2F0ZWQgVjRMMiBidWZmZXIgYm91 bmRzLCBjYXVzaW5nIG91dC1vZi1ib3VuZHMgRE1BIHJlYWRzLgotIFtIaWdoXSBJbXByb3BlciBl cnJvciBoYW5kbGluZyBvZiBgb2ZfcGFyc2VfcGhhbmRsZWAgYWxsb3dzIGBzZWNfZndgIHRvIHJl bWFpbiBOVUxMLCBjYXVzaW5nIGEga2VybmVsIHBhbmljLgotIFtIaWdoXSBTbGVlcGluZyBpbiBg ZGV2aWNlX3J1bmAgc3RhbGxzIHRoZSBzaGFyZWQgVjRMMiBNMk0gd29ya2VyIHRocmVhZC4KLSBb SGlnaF0gRG91YmxlIGZyZWUgb2YgdGhlIHZpZGVvIGRldmljZSBvYmplY3QgYHZmZF9kZWNgIG9u IGVycm9yIHBhdGhzIGluIGBhbWxfdmRlY19kcnZfcHJvYmVgLgotIFtIaWdoXSBNaXNzaW5nIHJl c2V0IG9mIGBjdHgtPmludF9jb25kYCBjYXVzZXMgc3Vic2VxdWVudCBoYXJkd2FyZSBkZWNvZGUg d2FpdHMgdG8gY29tcGxldGUgcHJlbWF0dXJlbHkuCi0gW0hpZ2hdIGBmb3BzX3Zjb2RlY19yZWxl YXNlYCBmcmVlcyB0aGUgY29udHJvbCBoYW5kbGVyIGJlZm9yZSByZWxlYXNpbmcgdGhlIE0yTSBj b250ZXh0LCBjYXVzaW5nIGFjdGl2ZSBqb2JzIHRvIGFjY2VzcyBmcmVlZCBjb250cm9scy4KLSBb SGlnaF0gRmFpbGluZyB0byB2YWxpZGF0ZSBhbiB1bmFsbG9jYXRlZCBDYW52YXMgUE9DIGFsbG93 cyBhbiBvdXQtb2YtYm91bmRzIE1NSU8gcmVnaXN0ZXIgd3JpdGUsIGxldHRpbmcgYW4gYXR0YWNr ZXIgdGFtcGVyIHdpdGggYWRqYWNlbnQgZGV2aWNlIHJlZ2lzdGVycy4KLSBbSGlnaF0gRGF0YSBy YWNlIGJldHdlZW4gaGFyZHdhcmUgd2FpdCB0aW1lb3V0L3NpZ25hbCBoYW5kbGluZyBhbmQgdGhl IHRocmVhZGVkIElSUSBoYW5kbGVyLgotIFtIaWdoXSBUaGUgaGFyZCBJUlEgaGFuZGxlciBhY2Nl c3NlcyByZWdtYXAgb3ZlciBNTUlPIHdpdGhvdXQgYC51c2VfcmF3X3NwaW5sb2NrID0gdHJ1ZWAs IHRyaWdnZXJpbmcgYSAnc2xlZXBpbmcgaW4gYXRvbWljIGNvbnRleHQnIEJVRyBvbiBQUkVFTVBU X1JUIGtlcm5lbHMuCi0gW01lZGl1bV0gT3ZlcndyaXRpbmcgYG1lc29uX2NhbnZhc19hbGxvY2Ag cmV0dXJuIHZhbHVlcyBieXBhc3NlcyBlcnJvciBjaGVja2luZywgbGVhZGluZyB0byBjYW52YXMg Y29ycnVwdGlvbiBhbmQgZG91YmxlLWZyZWVzLgotIFtNZWRpdW1dIFRoZSBkcml2ZXIgaWdub3Jl cyBgbnVtX3JlZl9pZHhfbDFfYWN0aXZlX21pbnVzMWAgb3ZlcnJpZGVzIGluIEItc2xpY2VzLCB2 aW9sYXRpbmcgdGhlIEguMjY0IHNwZWNpZmljYXRpb24uCi0gW01lZGl1bV0gSGFyZHdhcmUgcG93 ZXIgZG9tYWlucyBhbmQgY2xvY2tzIGFyZSB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZCBwZXJtYW5l bnRseSBkdXJpbmcgcHJvYmUuCi0gW01lZGl1bV0gUG93ZXIgZG9tYWlucyBhbmQgZGV2aWNlIGxp bmtzIGFyZSBsZWFrZWQgaWYgaGFyZHdhcmUgcmVzb3VyY2UgaW5pdGlhbGl6YXRpb24gZmFpbHMu Ci0gW01lZGl1bV0gVGhlIGB2NGwyX2N0cmxfaGFuZGxlcmAgbWVtb3J5IGlzIGxlYWtlZCBpZiBg djRsMl9jdHJsX2hhbmRsZXJfc2V0dXBgIGZhaWxzLgotIFtMb3ddIEtjb25maWcgdW5jb25kaXRp b25hbGx5IHNlbGVjdHMgYE1FU09OX0NBTlZBU2AsIHJpc2tpbmcgdW5tZXQgZGlyZWN0IGRlcGVu ZGVuY3kgd2FybmluZ3MgdW5kZXIgYENPTVBJTEVfVEVTVGAuCi0tCgotLS0gUGF0Y2ggWzRdOiBb UEFUQ0ggdjcgNC82XSBkZWNvZGVyOiBBZGQgVjRMMiBzdGF0ZWxlc3MgSC4yNjQgZGVjb2RlciBk cml2ZXIgLS0tCmNvbW1pdCBiMTFmMmI3MzY5YTJiZDhiODU2YmQ3N2NhMzA4MmI3N2ZlZmE2NmZl CkF1dGhvcjogWmhlbnRhbyBHdW8gPHpoZW50YW8uZ3VvQGFtbG9naWMuY29tPgpTdWJqZWN0OiBk ZWNvZGVyOiBBZGQgVjRMMiBzdGF0ZWxlc3MgSC4yNjQgZGVjb2RlciBkcml2ZXIKClRoaXMgY29t bWl0IGFkZHMgdGhlIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIFY0TDIgc3RhdGVsZXNzIHZpZGVv IGRlY29kZXIKZHJpdmVyIG9uIHRoZSBBbWxvZ2ljIFM0IHBsYXRmb3JtLiBJdCBjdXJyZW50bHkg c3VwcG9ydHMgOC1iaXQgcHJvZ3Jlc3NpdmUKSC4yNjQgYml0c3RyZWFtIGRlY29kaW5nLgoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvS2NvbmZpZyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL0tjb25maWcKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvS2NvbmZpZwo+ IEBAIC0wLDAgKzEsMTggQEAKPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAt b25seSBPUiBNSVQpCj4gKwo+ICtjb25maWcgVklERU9fQU1MT0dJQ19WREVDCj4gKyAgICB0cmlz dGF0ZSAiQW1sb2dpYyBWaWRlbyBEZWNvZGVyIERyaXZlciIKPiArICAgIGRlcGVuZHMgb24gQVJD SF9NRVNPTiB8fCBDT01QSUxFX1RFU1QKPiArICAgIGRlcGVuZHMgb24gVklERU9fREVWCj4gKyAg ICBkZXBlbmRzIG9uIFY0TF9NRU0yTUVNX0RSSVZFUlMKPiArICAgIGRlcGVuZHMgb24gVEVFCj4g KyAgICBkZXBlbmRzIG9uIE1FU09OX1NNCj4gKyAgICBzZWxlY3QgVklERU9CVUYyX0RNQV9DT05U SUcKPiArICAgIHNlbGVjdCBWNEwyX0gyNjQKPiArICAgIHNlbGVjdCBWNEwyX01FTTJNRU1fREVW Cj4gKyAgICBzZWxlY3QgTUVTT05fQ0FOVkFTCgpbU2V2ZXJpdHk6IExvd10KRG9lcyBzZWxlY3Rp bmcgTUVTT05fQ0FOVkFTIHVuY29uZGl0aW9uYWxseSBoZXJlIHJpc2sgdW5tZXQgZGlyZWN0CmRl cGVuZGVuY3kgd2FybmluZ3MgdW5kZXIgQ09NUElMRV9URVNUPyBTaW5jZSBWSURFT19BTUxPR0lD X1ZERUMgc3VwcG9ydHMKQ09NUElMRV9URVNULCBpdCBjb3VsZCBiZSBidWlsdCBvbiBhcmNoaXRl Y3R1cmVzIHdoZXJlIE1FU09OX0NBTlZBUwpkZXBlbmRlbmNpZXMgYXJlIG5vdCBtZXQuCgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRlY19k cnYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5j Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92 ZGVjL2FtbF92ZGVjX2Rydi5jCj4gQEAgLTAsMCArMSwyMzEgQEAKWyAuLi4gXQo+ICtzdGF0aWMg aW50IGZvcHNfdmNvZGVjX29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCj4gK3sKWyAuLi4gXQo+ICsJ cmV0ID0gYW1sX3ZkZWNfY3RybHNfc2V0dXAoY3R4KTsKPiArCWlmIChyZXQpIHsKPiArCQl2NGwy X2VycigmZGVjX2Rldi0+djRsMl9kZXYsICJGYWlsZWQgdG8gaW5pdCBhbGwgY3RybHMgKCVkKSIs IHJldCk7Cj4gKwkJZ290byBlcnJfY3RybHNfc2V0dXA7Cj4gKwl9Cj4gKwo+ICsJYW1sX3ZkZWNf cmVzZXRfZm10cyhjdHgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZWNfZGV2LT5kZXZfbXV0ZXgpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gKwo+ICtlcnJfY3RybHNfc2V0dXA6Cj4gKwl2NGwyX20ybV9j dHhfcmVsZWFzZShjdHgtPm0ybV9jdHgpOwo+ICtlcnJfbTJtX2N0eF9pbml0Ogo+ICsJdjRsMl9m aF9kZWwoJmN0eC0+ZmgsIGZpbGUpOwo+ICsJdjRsMl9maF9leGl0KCZjdHgtPmZoKTsKPiArCWtm cmVlKGN0eCk7Cj4gKwltdXRleF91bmxvY2soJmRlY19kZXYtPmRldl9tdXRleCk7Cj4gKwo+ICsJ cmV0dXJuIHJldDsKPiArfQoKW1NldmVyaXR5OiBNZWRpdW1dCklzIHRoZXJlIGEgbWlzc2luZyBj YWxsIHRvIHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUgaW4gdGhlIGVycl9jdHJsc19zZXR1cApwYXRo IGluIGZvcHNfdmNvZGVjX29wZW4/IElmIHY0bDJfY3RybF9oYW5kbGVyX3NldHVwIGZhaWxzIGR1 cmluZwphbWxfdmRlY19jdHJsc19zZXR1cCwgaXQgcmV0dXJucyBhbiBlcnJvciBidXQgZG9lcyBu b3QgZnJlZSB0aGUgaGFuZGxlci4KVGhpcyBlcnJvciBwYXRoIGFsc28gc2tpcHMgY2xlYW5pbmcg aXQgdXAsIHdoaWNoIGxvb2tzIGxpa2UgaXQgd291bGQKcGVybWFuZW50bHkgbGVhayB0aGUgaGFu ZGxlcidzIGludGVybmFsIGFsbG9jYXRpb25zLgoKWyAuLi4gXQo+ICtzdGF0aWMgaW50IGZvcHNf dmNvZGVjX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpCj4gK3sKPiArCXN0cnVjdCBhbWxfdmRl Y19jdHggKmN0eCA9IGZoX3RvX2RlY19jdHgoZmlsZSk7Cj4gKwo+ICsJdjRsMl9jdHJsX2hhbmRs ZXJfZnJlZSgmY3R4LT5jdHJsX2hhbmRsZXIpOwo+ICsJdjRsMl9tMm1fY3R4X3JlbGVhc2UoY3R4 LT5tMm1fY3R4KTsKPiArCXY0bDJfZmhfZGVsKCZjdHgtPmZoLCBmaWxlKTsKPiArCXY0bDJfZmhf ZXhpdCgmY3R4LT5maCk7Cj4gKwlrZnJlZShjdHgpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cgpb U2V2ZXJpdHk6IEhpZ2hdCkNvdWxkIGZyZWVpbmcgdGhlIGNvbnRyb2wgaGFuZGxlciBiZWZvcmUg cmVsZWFzaW5nIHRoZSBNMk0gY29udGV4dCBjYXVzZQphIHVzZS1hZnRlci1mcmVlIGluIGZvcHNf dmNvZGVjX3JlbGVhc2U/CgpUaGUgTTJNIGNvbnRleHQgcmVsZWFzZSBwZXJmb3JtcyBhIGJsb2Nr aW5nIHdhaXQgdG8gY2FuY2VsIGFjdGl2ZSBqb2JzLgpJZiB0aGUgd29ya2VyIHRocmVhZCBpcyBz dGlsbCBleGVjdXRpbmcgb3Igc2xlZXBpbmcgaW4gYW1sX2gyNjRfZGVjX3J1biwKaXQgd2lsbCBl dmVudHVhbGx5IGZpbmlzaCBhbmQgY2FsbCB2NGwyX2N0cmxfcmVxdWVzdF9jb21wbGV0ZS4gVGhp cwp3b3VsZCBhY2Nlc3MgdGhlIHBvaXNvbmVkIGNvbnRyb2wgbGlzdHMgc2luY2UgdjRsMl9jdHJs X2hhbmRsZXJfZnJlZQpoYXMgYWxyZWFkeSBkZXN0cm95ZWQgdGhlbS4KClsgLi4uIF0KPiArc3Rh dGljIGludCBhbWxfdmRlY19kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiArewo+ICsJc3RydWN0IGFtbF92ZGVjX2RldiAqZGV2Owo+ICsJc3RydWN0IHZpZGVvX2Rldmlj ZSAqdmZkX2RlYzsKPiArCXN0cnVjdCBhbWxfdmRlY19odyAqaHc7Cj4gKwlpbnQgcmV0ID0gMDsK PiArCj4gKwlkZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpkZXYpLCBHRlBf S0VSTkVMKTsKCltTZXZlcml0eTogSGlnaF0KU2hvdWxkIHRoZSBhbWxfdmRlY19kZXYgc3RydWN0 dXJlJ3MgbGlmZXRpbWUgYmUgdGllZCB0byB0aGUgVjRMMiBvYmplY3QKaW5zdGVhZCBvZiB0aGUg ZGV2aWNlIGJpbmRpbmcgaW4gYW1sX3ZkZWNfZHJ2X3Byb2JlPwoKQnkgdXNpbmcgZGV2cmVzLCB0 aGUgc3RydWN0dXJlIGlzIGZyZWVkIHdoZW4gdGhlIGRldmljZSB1bmJpbmRzLiBIb3dldmVyLAp1 c2Vyc3BhY2UgY291bGQgc3RpbGwgaG9sZCBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciB0byB0aGUg dmlkZW8gZGV2aWNlLAphbGxvd2luZyBzdWJzZXF1ZW50IGlvY3RscyBvciBjbG9zZSBvcGVyYXRp b25zIHRvIGFjY2VzcyB0aGUgZnJlZWQKbTJtX2Rldl9kZWMgYW5kIGRldl9tdXRleCB2aWEgdGhl IGRhbmdsaW5nIGN0eC0+ZGV2IHBvaW50ZXIuCgpbIC4uLiBdCj4gKwlyZXQgPSBtZWRpYV9kZXZp Y2VfcmVnaXN0ZXIoJmRldi0+bWRldik7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJdjRsMl9lcnIoJmRl di0+djRsMl9kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgbWVkaWEgZGV2aWNlIik7Cj4gKwkJZ290 byBlcnJfbWVkaWFfZGV2X3JlZ2lzdGVyOwo+ICsJfQo+ICsJdmRlY19lbmFibGUoZGV2LT5kZWNf aHcpOwo+ICsJcmV0dXJuIDA7CgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyBhbWxfdmRlY19kcnZf cHJvYmUga2VlcCB0aGUgaGFyZHdhcmUgcG93ZXIgZG9tYWluIGFuZCBjbG9ja3MKcGVybWFuZW50 bHkgZW5hYmxlZCB3aGlsZSB0aGUgZHJpdmVyIGlzIGxvYWRlZD8KCkNhbGxpbmcgdmRlY19lbmFi bGUgaGVyZSBzeW5jaHJvbm91c2x5IHBvd2VycyBvbiB0aGUgZG9tYWluIGFuZCBlbmFibGVzCnRo ZSBjbG9ja3MgaW5kZWZpbml0ZWx5LiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gaW50ZWdyYXRlIHRo aXMgd2l0aApSdW50aW1lIFBNIHNvIHRoZSBoYXJkd2FyZSBjYW4gcG93ZXIgZG93biB3aGVuIG5v dCBhY3RpdmVseSBkZWNvZGluZy4KClsgLi4uIF0KPiArZXJyX21lZGlhX2Rldl9yZWdpc3RlcjoK PiArCXY0bDJfbTJtX3VucmVnaXN0ZXJfbWVkaWFfY29udHJvbGxlcihkZXYtPm0ybV9kZXZfZGVj KTsKPiArZXJyb3JfbTJtX21jX3JlZ2lzdGVyOgo+ICsJbWVkaWFfZGV2aWNlX2NsZWFudXAoJmRl di0+bWRldik7Cj4gKwl2aWRlb191bnJlZ2lzdGVyX2RldmljZShkZXYtPnZmZCk7Cj4gK2Vycl92 aWRfZGV2X3JlZ2lzdGVyOgo+ICsJdjRsMl9tMm1fcmVsZWFzZShkZXYtPm0ybV9kZXZfZGVjKTsK PiArZXJyX20ybV9kZXZfaW5pdDoKPiArCWRldi0+cHZkZWNfZGF0YS0+ZGVzdHJveV9od19yZXNv dXJjZShkZXYpOwo+ICtlcnJfaHdfaW5pdDoKPiArCWRldi0+ZGVjX2h3ID0gTlVMTDsKPiArZXJy X2RlY19tZW1faW5pdDoKPiArCXZpZGVvX2RldmljZV9yZWxlYXNlKHZmZF9kZWMpOwo+ICtlcnJf ZGV2aWNlX2FsbG9jOgo+ICsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmZGV2LT52NGwyX2Rldik7 Cj4gKwlyZXR1cm4gcmV0Owo+ICt9CgpbU2V2ZXJpdHk6IEhpZ2hdCkNhbiB0aGUgZXJyX2RlY19t ZW1faW5pdCBwYXRoIGluIGFtbF92ZGVjX2Rydl9wcm9iZSBjYXVzZSBhIGRvdWJsZSBmcmVlCm9m IHRoZSB2aWRlbyBkZXZpY2Ugb2JqZWN0PwoKSWYgYW4gZXJyb3Igb2NjdXJzIGFmdGVyIHN1Y2Nl c3NmdWwgdmlkZW8gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgdGhlIGNvZGUKZmFsbHMgdGhyb3VnaCBl cnJvcl9tMm1fbWNfcmVnaXN0ZXIgYW5kIGNhbGxzIHZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlLAp3 aGljaCBkcm9wcyB0aGUgcmVmY291bnQgYW5kIGludm9rZXMgdGhlIHJlbGVhc2UgY2FsbGJhY2sg dG8ga2ZyZWUgdmZkX2RlYy4KQ29udGludWluZyB0byBmYWxsIHRocm91Z2ggdG8gZXJyX2RlY19t ZW1faW5pdCB0aGVuIGNhbGxzCnZpZGVvX2RldmljZV9yZWxlYXNlKHZmZF9kZWMpLCB3aGljaCB3 b3VsZCBrZnJlZSB0aGUgZXhhY3Qgc2FtZSBwb2ludGVyLgoKWyAuLi4gXQo+ICtzdGF0aWMgdm9p ZCBhbWxfdmRlY19kcnZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sK PiArCXN0cnVjdCBhbWxfdmRlY19kZXYgKmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYp Owo+ICsKPiArCXZkZWNfZGlzYWJsZShkZXYtPmRlY19odyk7Cj4gKwo+ICsJbWVkaWFfZGV2aWNl X3VucmVnaXN0ZXIoJmRldi0+bWRldik7Cj4gKwl2NGwyX20ybV91bnJlZ2lzdGVyX21lZGlhX2Nv bnRyb2xsZXIoZGV2LT5tMm1fZGV2X2RlYyk7Cj4gKwltZWRpYV9kZXZpY2VfY2xlYW51cCgmZGV2 LT5tZGV2KTsKPiArCj4gKwl2NGwyX20ybV9yZWxlYXNlKGRldi0+bTJtX2Rldl9kZWMpOwo+ICsJ dmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LT52ZmQpOwo+ICsJZGV2LT5wdmRlY19kYXRhLT5k ZXN0cm95X2h3X3Jlc291cmNlKGRldik7Cj4gKwl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZkZXYt PnY0bDJfZGV2KTsKPiArfQoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHJlbGVhc2luZyB0aGUgTTJN IGNvbnRleHQgYmVmb3JlIHVucmVnaXN0ZXJpbmcgdGhlIHZpZGVvIGRldmljZQppbiBhbWxfdmRl Y19kcnZfcmVtb3ZlIGNyZWF0ZSBhIHJhY2UgY29uZGl0aW9uPwoKSWYgYSB1c2Vyc3BhY2UgYXBw bGljYXRpb24gaXMgY29uY3VycmVudGx5IGNhbGxpbmcgaW9jdGxzIHdoaWxlIHRoZSBkcml2ZXIK aXMgYmVpbmcgcmVtb3ZlZCwgdGhleSBtaWdodCBhY2Nlc3MgdGhlIGZyZWVkIE0yTSBjb250ZXh0 IGJlZm9yZSB0aGUKdmlkZW8gZGV2aWNlIGlzIGZ1bGx5IHRvcm4gZG93biBieSB2aWRlb191bnJl Z2lzdGVyX2RldmljZS4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1s b2dpYy92ZGVjL2FtbF92ZGVjX2h3LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMv dmRlYy9hbWxfdmRlY19ody5jCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2h3LmMKWyAuLi4gXQo+ICtzdGF0aWMgaXJx cmV0dXJuX3QgdmRlY190aHJlYWRlZF9pc3JfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQo+ ICt7Cj4gKwlzdHJ1Y3QgYW1sX3ZkZWNfZGV2ICpkZXYgPSAoc3RydWN0IGFtbF92ZGVjX2RldiAq KXByaXY7Cj4gKwlzdHJ1Y3QgYW1sX3ZkZWNfaHcgKmh3ID0gZGV2LT5kZWNfaHc7Cj4gKwlpcnFy ZXR1cm5fdCByZXQgPSBJUlFfSEFORExFRDsKPiArCj4gKwlpZiAoaHctPmh3X29wcy5pcnFfdGhy ZWFkZWRfZnVuYyAmJiBody0+Y3Vycl9jdHgpCj4gKwkJcmV0ID0gaHctPmh3X29wcy5pcnFfdGhy ZWFkZWRfZnVuYyhpcnEsIHByaXYpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KCltTZXZlcml0 eTogSGlnaF0KSXMgaXQgc2FmZSB0byBjaGVjayBody0+Y3Vycl9jdHggaW4gdmRlY190aHJlYWRl ZF9pc3JfaGFuZGxlciB3aXRob3V0CmhvbGRpbmcgYW55IGxvY2tzPwoKQ29uY3VycmVudGx5LCBh bWxfaDI2NF9kZWNfcnVuIGNhbiBzZXQgaHctPmN1cnJfY3R4IHRvIE5VTEwgdXBvbiBhIHRpbWVv dXQKb3Igc2lnbmFsLiBJZiB0aGUgY29udGV4dCBpcyBjbGVhcmVkIGltbWVkaWF0ZWx5IGFmdGVy IHRoaXMgY2hlY2sgcGFzc2VzLAp0aGUgdGhyZWFkZWQgSVNSIHdvdWxkIGRlcmVmZXJlbmNlIGEg TlVMTCBwb2ludGVyLgoKWyAuLi4gXQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25m aWcgZG9zX3JlZ21hcF9jb25mID0gewo+ICsJLnJlZ19iaXRzID0gMzIsCj4gKwkudmFsX2JpdHMg PSAzMiwKPiArCS5yZWdfc3RyaWRlID0gNCwKPiArCS5tYXhfcmVnaXN0ZXIgPSAweDEwMDAwLAo+ ICt9OwoKW1NldmVyaXR5OiBIaWdoXQpTaG91bGQgdGhlIGRvc19yZWdtYXBfY29uZiBjb25maWd1 cmF0aW9uIGluY2x1ZGUgLnVzZV9yYXdfc3BpbmxvY2sgPSB0cnVlPwoKV2l0aG91dCBpdCwgdGhl IHJlZ21hcCB1c2VzIGEgc3RhbmRhcmQgc3BpbmxvY2ssIHdoaWNoIGJlY29tZXMgYQpzbGVlcGFi bGUgbXV0ZXggb24gUFJFRU1QVF9SVCBrZXJuZWxzLiBTaW5jZSBoMjY0X2lzciBjYWxscyByZWdt YXBfd3JpdGUKZnJvbSB0aGUgcHJpbWFyeSBoYXJkIElSUSBoYW5kbGVyIGNvbnRleHQsIHRha2lu ZyBhIHNsZWVwYWJsZSBsb2NrIGhlcmUKd2lsbCBjYXVzZSBhIHNsZWVwaW5nIGluIGF0b21pYyBj b250ZXh0IEJVRyBvbiBSVC4KClsgLi4uIF0KPiAraW50IGRldl9yZXF1ZXN0X2h3X3Jlc291cmNl cyh2b2lkICpwcml2KQo+ICt7ClsgLi4uIF0KPiArCWlmIChody0+cG0tPmluaXQpIHsKPiArCQly ZXQgPSBody0+cG0tPmluaXQoaHcpOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCWRldl9lcnIo JnBkZXYtPmRldiwgInBvd2VyIG1nciBpbml0IGZhaWxlZCFcbiIpOwo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXQgPSB2ZGVjX2Nsb2NrX2dhdGVfaW5pdChodyk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2xrIGJ1bGsgaW5pdCBmYWls ZWQhXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQoKW1NldmVyaXR5OiBNZWRpdW1dCklmIHZk ZWNfY2xvY2tfZ2F0ZV9pbml0IG9yIGFtbF90ZWVfZndfcHJlbG9hZCBmYWlscyBpbgpkZXZfcmVx dWVzdF9od19yZXNvdXJjZXMsIHdlIHJldHVybiBlYXJseS4gU2hvdWxkIHdlIGNhbGwKaHctPnBt LT5yZWxlYXNlKGh3KSBpbiB0aGUgZXJyb3IgcGF0aCB0byB0ZWFyIGRvd24gdGhlIFBNIGRvbWFp biB3ZSBqdXN0CnN1Y2Nlc3NmdWxseSBhdHRhY2hlZCwgdG8gYXZvaWQgcGVybWFuZW50bHkgbGVh a2luZyBpdD8KClsgLi4uIF0KPiArCXNtX25wID0gb2ZfcGFyc2VfcGhhbmRsZShwZGV2LT5kZXYu b2Zfbm9kZSwgInNlY3VyZS1tb25pdG9yIiwgMCk7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoc21f bnApKQo+ICsJCXJldHVybiBQVFJfRVJSKHNtX25wKTsKCltTZXZlcml0eTogSGlnaF0KRG9lcyBJ U19FUlJfT1JfTlVMTCBtYXNrIHRoZSBlcnJvciB3aGVuIG9mX3BhcnNlX3BoYW5kbGUgZmFpbHMg aW4KZGV2X3JlcXVlc3RfaHdfcmVzb3VyY2VzPwoKb2ZfcGFyc2VfcGhhbmRsZSByZXR1cm5zIE5V TEwgb24gZmFpbHVyZS4gUFRSX0VSUihOVUxMKSBldmFsdWF0ZXMgdG8gMCwKc28gZGV2X3JlcXVl c3RfaHdfcmVzb3VyY2VzIHdvdWxkIHNpbGVudGx5IHN1Y2NlZWQgd2hpbGUgbGVhdmluZwpody0+ c2VjX2Z3IHVuaW5pdGlhbGl6ZWQuIExhdGVyLCBsb2FkX2Zpcm13YXJlIHdvdWxkIHBhc3MgdGhp cyBOVUxMCnBvaW50ZXIgdG8gbWVzb25fc21fY2FsbCwgY2F1c2luZyBhIGtlcm5lbCBwYW5pYy4K Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92 ZGVjX3RlZV9mdy5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3Zk ZWNfdGVlX2Z3LmMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfdGVlX2Z3LmMKWyAuLi4gXQo+ICtzdGF0aWMgaW50IGdl dF9maXJtd2FyZShjb25zdCBjaGFyICpwYXRoLCB2b2lkICoqZGF0YSwgc2l6ZV90ICpzaXplKQo+ ICt7Cj4gKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3ID0gTlVMTDsKPiArCWludCByZXQ7Cj4g Kwl2b2lkICpidWY7Cj4gKwo+ICsJcmV0ID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIEZJUk1XQVJF X1BBVEgsIE5VTEwpOwo+ICsJaWYgKHJldCB8fCBmdy0+c2l6ZSA8PSBVQ09ERV9IRUFERVJfU0la RSkKPiArCQlyZXR1cm4gcmV0OwoKW1NldmVyaXR5OiBIaWdoXQpJZiB0aGUgZmlybXdhcmUgc2l6 ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gVUNPREVfSEVBREVSX1NJWkUgaW4KZ2V0X2Zpcm13 YXJlLCB0aGlzIHJldHVybnMgMCAoc2luY2UgcmV0IGlzIDAgaGVyZSkgYnV0IGRvZXNuJ3QgaW5p dGlhbGl6ZQp0aGUgZGF0YSBvciBzaXplIG91dHB1dCBwb2ludGVycy4KClRoaXMgY2F1c2VzIHRo ZSBjYWxsZXIsIHBhc3NfZmlybXdhcmVfdG9fdGVlLCB0byBiZWxpZXZlIGl0IHN1Y2NlZWRlZAph bmQgaW52b2tlIHRoZSBURUUgQVBJIHdpdGggdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnksIGV2 ZW50dWFsbHkKY2FsbGluZyBrZnJlZSBvbiBhbiB1bmluaXRpYWxpemVkIHBvaW50ZXIuCgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9oMjY0LmMgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9oMjY0LmMKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvaDI2NC5jClsgLi4u IF0KPiArc3RhdGljIGludCBoMjY0X3ByZXBhcmVfaW5wdXQoc3RydWN0IGFtbF92ZGVjX2N0eCAq Y3R4KQo+ICt7ClsgLi4uIF0KPiArCWR1bW15ID0gcGF5bG9hZF9zaXplICsgVkxEX1BBRERJTkdf U0laRTsKPiArCXJlZ21hcF93cml0ZShody0+bWFwW0RPU19CVVNdLCBWTERfTUVNX1ZJRklGT19X UCwKPiArCQkgICAgIHJvdW5kX2Rvd24oKHNyY19kbWEgKyBkdW1teSksIFZERUNfRklGT19BTElH TikpOwoKW1NldmVyaXR5OiBIaWdoXQpDb3VsZCB0aGUgZHVtbXkgY2FsY3VsYXRpb24gaW4gaDI2 NF9wcmVwYXJlX2lucHV0IGNhdXNlIG91dC1vZi1ib3VuZHMKRE1BIHJlYWRzPwoKV2UgcHJvZ3Jh bSB0aGUgaGFyZHdhcmUgd3JpdGUgcG9pbnRlciB0bwpzcmNfZG1hICsgcGF5bG9hZF9zaXplICsg VkxEX1BBRERJTkdfU0laRS4gSWYgdXNlcnNwYWNlIHNldHMgc2l6ZWltYWdlCmVxdWFsIHRvIHBh eWxvYWRfc2l6ZSwgdGhpcyBwaHlzaWNhbCBvZmZzZXQgcG9pbnRzIGJleW9uZCB0aGUgbWVtb3J5 CmFsbG9jYXRlZCBmb3IgdGhlIENNQSBidWZmZXIuCgpbIC4uLiBdCj4gK3N0YXRpYyB2b2lkIGNv bmZpZ19zcHNfcGFyYW1zKHN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+ICsJCQkgICAg ICB1bnNpZ25lZCBzaG9ydCAqc3BzX2Jhc2UsCj4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCB2NGwy X2N0cmxfaDI2NF9zcHMgKnNwcykKPiArewpbIC4uLiBdCj4gKwloMjY0X2N0eC0+bWJfd2lkdGgg PSAoc3BzLT5waWNfd2lkdGhfaW5fbWJzX21pbnVzMSArIDQpICYgMHhmZmZmZmZmYzsKPiArCWgy NjRfY3R4LT5tYl9oZWlnaHQgPSAoc3BzLT5waWNfaGVpZ2h0X2luX21hcF91bml0c19taW51czEg KyA0KSAmIDB4ZmZmZmZmZmM7Cj4gKwo+ICsJaDI2NF9jdHgtPm1iX3RvdGFsID0gaDI2NF9jdHgt Pm1iX3dpZHRoICogaDI2NF9jdHgtPm1iX2hlaWdodDsKCltTZXZlcml0eTogQ3JpdGljYWxdCkFy ZSB0aGUgbWJfd2lkdGggYW5kIG1iX2hlaWdodCBkaW1lbnNpb25zIHZhbGlkYXRlZCBhZ2FpbnN0 IG1heGltdW0KbGltaXRzIGluIGNvbmZpZ19zcHNfcGFyYW1zPwoKVXNlcnNwYWNlIGNhbiBwcm92 aWRlIGFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSB3aWR0aCBhbmQgaGVpZ2h0LgpFeHRyZW1lbHkg bGFyZ2UgdmFsdWVzIGNhdXNlIG1iX3RvdGFsICogOTYgaW4gYWxsb2NfY29sb2NhdGVfY21hIHRv CmV4Y2VlZCAzMiBiaXRzLCB0cnVuY2F0aW5nIHRvIGEgc21hbGwgYWxsb2NhdGlvbiBzaXplLiBU aGUgaGFyZHdhcmUKd291bGQgdGhlbiB3cml0ZSBjb2xvY2F0ZWQgbW90aW9uIHZlY3RvcnMgd2Vs bCBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyCmJvdW5kcy4KClsgLi4uIF0KPiArc3RhdGljIHZv aWQgY29uZmlnX2RlY29kZV9jYW52YXMoc3RydWN0IGFtbF92ZGVjX2h3ICpodywKPiArCQkJCSBz dHJ1Y3QgaDI2NF9kZWNvZGVfYnVmX3NwZWMgKmJ1Zl9zcGVjLAo+ICsJCQkJIHUzMiBtYl93aWR0 aCwgdTMyIG1iX2hlaWdodCkKPiArewo+ICsJaW50IGNhbnZhc19hbGxvY19yZXN1bHQgPSAwOwo+ ICsJaW50IGJsa21vZGUgPSAweDA7Cj4gKwo+ICsJY2FudmFzX2FsbG9jX3Jlc3VsdCA9IG1lc29u X2NhbnZhc19hbGxvYyhody0+Y2FudmFzLCAmYnVmX3NwZWMtPnlfY2FudmFzX2luZGV4KTsKPiAr CWNhbnZhc19hbGxvY19yZXN1bHQgPSBtZXNvbl9jYW52YXNfYWxsb2MoaHctPmNhbnZhcywgJmJ1 Zl9zcGVjLT51X2NhbnZhc19pbmRleCk7CgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyBjb25maWdf ZGVjb2RlX2NhbnZhcyBjbG9iYmVyIHRoZSBmaXJzdCBjYW52YXNfYWxsb2NfcmVzdWx0IHdpdGhv dXQKY2hlY2tpbmcgaXQ/CgpJZiB0aGUgWSBjYW52YXMgYWxsb2NhdGlvbiBmYWlscyBidXQgdGhl IFUgY2FudmFzIGFsbG9jYXRpb24gc3VjY2VlZHMsCnRoZSBlcnJvciBpcyBtYXNrZWQuIFRoZSB1 bmluaXRpYWxpemVkIFkgY2FudmFzIGluZGV4IHdpbGwgYmUgcHJvZ3JhbW1lZAppbnRvIGhhcmR3 YXJlIGFuZCBldmVudHVhbGx5IHBhc3NlZCB0byBtZXNvbl9jYW52YXNfZnJlZSwgcG90ZW50aWFs bHkKY2F1c2luZyBhIGRvdWJsZS1mcmVlLgoKWyAuLi4gXQo+ICtzdGF0aWMgaW50IGFsbG9jX2Nv bG9jYXRlX2NtYShzdHJ1Y3QgYW1sX2gyNjRfY3R4ICpoMjY0X2N0eCwKPiArCQkJICAgICAgc3Ry dWN0IGFtbF92ZGVjX2N0eCAqY3R4KQo+ICt7Cj4gKwlpbnQgYWxsb2Nfc2l6ZSA9IDA7Cj4gKwlp bnQgaTsKPiArCXN0cnVjdCBhbWxfdmRlY19odyAqaHc7Cj4gKwlnZnBfdCBnZnAgPSBHRlBfS0VS TkVMIHwgR0ZQX0RNQTMyOwo+ICsKPiArCWlmIChoMjY0X2N0eC0+Y29sbGF0ZWRfY21hX3ZhZGRy KQo+ICsJCXJldHVybiAwOwoKW1NldmVyaXR5OiBDcml0aWNhbF0KSWYgdXNlcnNwYWNlIHByb3Zp ZGVzIGEgbmV3IFNQUyBtaWQtc3RyZWFtIHRoYXQgaW5jcmVhc2VzIHRoZSByZXNvbHV0aW9uLApk b2VzIGFsbG9jX2NvbG9jYXRlX2NtYSBieXBhc3MgcmVhbGxvY2F0aW5nIHRoZSBDTUEgYnVmZmVy PwoKSWYgd2UgcmV0dXJuIGVhcmx5IGhlcmUsIG9uZV9jb2xfYnVmX3NpemUgaXMgbm90IHVwZGF0 ZWQgZm9yIHRoZSBuZXcKZGltZW5zaW9ucy4gVGhpcyBjYXVzZXMgdGhlIGhhcmR3YXJlIHRvIHNp bGVudGx5IG92ZXJmbG93IHRoZSBleGlzdGluZwpzbWFsbGVyIGJ1ZmZlciB3aGVuIHdyaXRpbmcg bW90aW9uIHZlY3RvcnMuCgpbIC4uLiBdCj4gK3N0YXRpYyB2b2lkIHJlbGVhc2VfY29sb2NhdGVf YnVmKHN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LCBpbnQgaW5kZXgpCj4gK3sKWyAuLi4g XQo+ICsJCX0gZWxzZSB7Cj4gKwkJCWlmIChoMjY0X2N0eC0+Y29sb2NhdGVkX2J1Zl9wb2NbaW5k ZXhdICE9IElOVkFMSURfUE9DICYmCj4gKwkJCSAgICAoKGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVm X21hcCA+PiBpbmRleCkgJiAweDEpID09IDB4MSkgewo+ICsJCQkJaDI2NF9jdHgtPmNvbG9jYXRl ZF9idWZfbWFwICY9ICh+KDEgPDwgaW5kZXgpKTsKPiArCQkJCWRldl9kYmcKPiArCQkJCSAgICAo JmN0eC0+ZGV2LT5wbGF0X2Rldi0+ZGV2LAo+ICsJCQkJICAgICAiJXMgY29sb2NhdGVkX2J1Zl9p bmRleCAlZCByZWxlYXNlZCBwb2MgJWRcbiIsCj4gKwkJCQkgICAgIF9fZnVuY19fLCBpbmRleCwK PiArCQkJCSAgICAgaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfcG9jW2luZGV4XSk7Cj4gKwkJCX0K PiArCQkJaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfcG9jW2luZGV4XSA9IElOVkFMSURfUE9DOwo+ ICsJCX0KPiArCX0KPiArfQpbIC4uLiBdCj4gK3N0YXRpYyB2b2lkIGNsZWFyX3VudXNlZF9jb2xf YnVmKHN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4LAo+ICsJCQkJIHN0cnVjdCB2NGwyX2N0 cmxfaDI2NF9kZWNvZGVfcGFyYW1zICpkZWNvZGUpCj4gK3sKWyAuLi4gXQo+ICsJZm9yIChpID0g MDsgaSA8IGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX251bTsgaSsrKSB7Cj4gKwkJY29sX3BvYyA9 IGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX3BvY1tpXTsKPiArCQlpZiAoY29sX3BvYyAhPSBJTlZB TElEX1BPQyAmJgo+ICsJCSAgICAocG9jX2lzX2luX2RwYihjb2xfcG9jLCBkZWNvZGUtPmRwYikg IT0gMSkpCj4gKwkJCXJlbGVhc2VfY29sb2NhdGVfYnVmKGgyNjRfY3R4LCBpKTsKPiArCX0KCltT ZXZlcml0eTogQ3JpdGljYWxdCklzIGNvbG9jYXRlZF9idWZfbnVtIGZ1bGx5IGNvbnRyb2xsZWQg YnkgdGhlIFBQUyBkZWZhdWx0IGFjdGl2ZSBtaW51czEKaW4gY2xlYXJfdW51c2VkX2NvbF9idWY/ CgpJZiB1c2Vyc3BhY2UgaW5mbGF0ZXMgdGhpcyB2YWx1ZSBiZXlvbmQgSDI2NF9NQVhfQ09MX0JV RiAoMzIpLCB0aGlzIGxvb3AKd2lsbCBpdGVyYXRlIG91dCBvZiBib3VuZHMsIGFuZCByZWxlYXNl X2NvbG9jYXRlX2J1ZiB3aWxsIHdyaXRlCklOVkFMSURfUE9DICgweEZGRkZGRkZGKSBiZXlvbmQg dGhlIGVuZCBvZiB0aGUgY29sb2NhdGVkX2J1Zl9wb2MgYXJyYXksCmNhdXNpbmcgbWVtb3J5IGNv cnJ1cHRpb24gaW4gdGhlIGFtbF9oMjY0X2N0eCBzdHJ1Y3QuCgpbIC4uLiBdCj4gK3N0YXRpYyB2 b2lkIGgyNjRfY29uZmlnX2RlY29kZV9zcGVjKHN0cnVjdCBhbWxfdmRlY19odyAqaHcsIHN0cnVj dCBhbWxfdmRlY19jdHggKmN0eCkKPiArewpbIC4uLiBdCj4gKwkJYnVmX3NwZWNfbDAgPSBmaW5k X3NwZWNfYnlfZHBiX2luZGV4KGgyNjRfY3R4LCBpLCAwKTsKPiArCQlpZiAoYnVmX3NwZWNfbDAp IHsKPiArCQkJYnVmX3NwZWNfbDAtPmNhbnZhc19wb3MgPQo+ICsJCQkgICAgZ2V0X2NhbnZhc19w b3NfYnlfcG9jKGgyNjRfY3R4LAo+ICsJCQkJCQkgIGRwYi0+dG9wX2ZpZWxkX29yZGVyX2NudCk7 Cj4gKwkJCWlmIChidWZfc3BlY19sMC0+Y2FudmFzX3BvcyA8IDApIHsKPiArCQkJCWRldl9lcnIo JmN0eC0+ZGV2LT5wbGF0X2Rldi0+ZGV2LAoKW1NldmVyaXR5OiBIaWdoXQpJcyBjYW52YXNfcG9z IGFuIHVuc2lnbmVkIGludGVnZXIgaW4gaDI2NF9jb25maWdfZGVjb2RlX3NwZWM/CgpJZiBnZXRf Y2FudmFzX3Bvc19ieV9wb2MgcmV0dXJucyAtMSBmb3IgYW4gdW5hbGxvY2F0ZWQgY2FudmFzLCB0 aGUgPCAwCmNoZWNrIHdpbGwgZmFpbCBiZWNhdXNlIG9mIGludGVnZXIgcHJvbW90aW9uLiBUaGUg MHhGRkZGRkZGRiB2YWx1ZSB3aWxsCnRoZW4gYmUgdXNlZCBpbiBjb25maWdfZGVjb2RlX2NhbnZh cyB0byBjYWxjdWxhdGUgYW4gb3V0LW9mLWJvdW5kcyBNTUlPCm9mZnNldCAoQU5DMF9DQU5WQVNf QUREUiAtIDQpIGFuZCBvdmVyd3JpdGUgYWRqYWNlbnQgaGFyZHdhcmUgcmVnaXN0ZXJzLgoKWyAu Li4gXQo+ICtzdGF0aWMgdm9pZCByZW9yZGVyX3Nob3J0X3Rlcm0oc3RydWN0IHNsaWNlICpjdXJy X3NsaWNlLCBpbnQgY3VyX2xpc3QsCj4gKwkJCSAgICAgICBpbnQgcGljX251bV9seCwgaW50ICpy ZWZfaWR4X2x4KQo+ICt7ClsgLi4uIF0KPiArCW51bV9yZWZfaWR4X2x4X2FjdGl2ZSA9IGdldF9y ZWZfbGlzdF9zaXplKGgyNjRfY3R4LCBjdXJfbGlzdCk7Cj4gKwlpZiAobnVtX3JlZl9pZHhfbHhf YWN0aXZlID4gKFY0TDJfSDI2NF9OVU1fRFBCX0VOVFJJRVMgKyAxKSkgewo+ICsJCWRldl9kYmco JmN0eC0+ZGV2LT5wbGF0X2Rldi0+ZGV2LCAiaW5jb3JyZWN0IHZhbHVlIHN0IG51bV9yZWZfaWR4 X2x4X2FjdGl2ZSAlZFxuIiwKPiArCQkJbnVtX3JlZl9pZHhfbHhfYWN0aXZlKTsKPiArCQlyZXR1 cm47Cj4gKwl9CgpbU2V2ZXJpdHk6IENyaXRpY2FsXQpEb2VzIHRoZSBvZmYtYnktb25lIGNoZWNr IGluIHJlb3JkZXJfc2hvcnRfdGVybSBhbGxvdyBhbiBhcnJheSBib3VuZHMgd3JpdGU/CgpWNEwy X0gyNjRfTlVNX0RQQl9FTlRSSUVTIGlzIDE2LCBzbyB0aGUgY2hlY2sgYWxsb3dzIG51bV9yZWZf aWR4X2x4X2FjdGl2ZQp0byBiZSAxNy4gVGhlIGxvb3AgYmVsb3cgd2lsbCB0aGVuIGFjY2VzcyBh bmQgd3JpdGUgdG8gaW5kZXggMTcgb2YgdGhlCnJlZl9saXN0IGFycmF5LCB3aGljaCBvbmx5IGhv bGRzIDE3IGl0ZW1zICgwIHRvIDE2KS4gQWRkaXRpb25hbGx5LApyZW9yZGVyX2xvbmdfdGVybSBh cHBlYXJzIHRvIGNvbXBsZXRlbHkgbGFjayB0aGlzIGJvdW5kcyBjaGVjaywgYWxsb3dpbmcKdW5i b3VuZGVkIHdyaXRlcyBwYXN0IHRoZSBhcnJheSBiYXNlZCBvbiBQUFMgdmFsdWVzLgoKWyAuLi4g XQo+ICtzdGF0aWMgaW50IGdldF9yZWZfbGlzdF9zaXplKHN0cnVjdCBhbWxfaDI2NF9jdHggKmgy NjRfY3R4LCBpbnQgY3VyX2xpc3QpCj4gK3sKWyAuLi4gXQo+ICsJaWYgKGN1cl9saXN0ID09IDAp IHsKPiArCQludW1fcmVmX2lkeF9seF9hY3RpdmVfbWludXMxID0KPiArCQkJaDI2NF9jdHgtPmN0 cmxfcmVmLnBwcy0+bnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9hY3RpdmVfbWludXMxOwo+ICsJCWlm IChvdmVycmlkZV9mbGFnKQo+ICsJCQludW1fcmVmX2lkeF9seF9hY3RpdmVfbWludXMxID0KPiAr CQkJCWgyNjRfY3R4LT5kcGJfcGFyYW0uZHBiLm51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51czE7 Cj4gKwl9IGVsc2Ugewo+ICsJCW51bV9yZWZfaWR4X2x4X2FjdGl2ZV9taW51czEgPQo+ICsJCQlo MjY0X2N0eC0+Y3RybF9yZWYucHBzLT5udW1fcmVmX2lkeF9sMV9kZWZhdWx0X2FjdGl2ZV9taW51 czE7Cj4gKwl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyBnZXRfcmVmX2xpc3Rfc2l6ZSBpZ25v cmUgdGhlIG92ZXJyaWRlX2ZsYWcgZm9yIHRoZSBMMSByZWZlcmVuY2UgbGlzdD8KCkFjY29yZGlu ZyB0byB0aGUgSC4yNjQgc3BlY2lmaWNhdGlvbiwgbnVtX3JlZl9pZHhfYWN0aXZlX292ZXJyaWRl X2ZsYWcKYXBwbGllcyB0byBib3RoIEwwIGFuZCBMMSBsaXN0cyBpbiBCLXNsaWNlcy4gSWdub3Jp bmcgaXQgaGVyZSBjb3VsZCBjYXVzZQpkZWNvZGluZyBpc3N1ZXMgZm9yIHZhbGlkIHN0cmVhbXMg dGhhdCBvdmVycmlkZSBib3RoIHNpemVzLgoKWyAuLi4gXQo+ICtzdGF0aWMgaXJxcmV0dXJuX3Qg aDI2NF90aHJlYWRlZF9pc3JfZnVuYyhpbnQgaXJxLCB2b2lkICpwcml2KQo+ICt7Cj4gKwl1MzIg ZGVjX3N0YXR1czsKPiArCXN0cnVjdCBhbWxfdmRlY19kZXYgKmRldiA9IChzdHJ1Y3QgYW1sX3Zk ZWNfZGV2ICopcHJpdjsKPiArCXN0cnVjdCBhbWxfaDI2NF9jdHggKmgyNjRfY3R4ID0gKHN0cnVj dCBhbWxfaDI2NF9jdHggKilkZXYtPmRlY19ody0+Y3Vycl9jdHg7Cj4gKwlzdHJ1Y3QgYW1sX3Zk ZWNfY3R4ICpjdHggPSAoc3RydWN0IGFtbF92ZGVjX2N0eCAqKWgyNjRfY3R4LT52NGwyX2N0eDsK CltTZXZlcml0eTogSGlnaF0KSWYgaHctPmN1cnJfY3R4IGlzIGNsZWFyZWQgY29uY3VycmVudGx5 IGFzIG5vdGljZWQgZWFybGllciBpbgp2ZGVjX3RocmVhZGVkX2lzcl9oYW5kbGVyLCBkb2Vzbid0 IGgyNjRfdGhyZWFkZWRfaXNyX2Z1bmMgZGVyZWZlcmVuY2UKdGhlIE5VTEwgY29udGV4dCB3aGVu IGNhc3RpbmcgYW5kIHJlYWRpbmcgaDI2NF9jdHgtPnY0bDJfY3R4PwoKQWRkaXRpb25hbGx5LCBp ZiB0aGUgY29udGV4dCBpcyB2YWxpZCBidXQgdGhlIHF1ZXVlIGlzIGVtcHR5IGR1cmluZyBhCnNw dXJpb3VzIGludGVycnVwdCwgdjRsMl9tMm1fbmV4dF9kc3RfYnVmIGZ1cnRoZXIgZG93biB3aWxs IHJldHVybiBOVUxMCmFuZCBjcmFzaC4KClsgLi4uIF0KPiAraW50IGFtbF9oMjY0X2RlY19ydW4o dm9pZCAqcHJpdikKPiArewpbIC4uLiBdCj4gKwlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGli bGVfdGltZW91dChjdHgtPnF1ZXVlLCBjdHgtPmludF9jb25kLAo+ICsJCQkJCSAgICAgICBtc2Vj c190b19qaWZmaWVzKERFQ09ERVJfVElNRU9VVF9NUykpOwo+ICsJY3R4LT5pbnRfY29uZCA9IDA7 CgpbU2V2ZXJpdHk6IEhpZ2hdCklzIGl0IHNhZmUgdG8gcGVyZm9ybSBhIGJsb2NraW5nIHdhaXQg aW5zaWRlIHRoZSBub24tYmxvY2tpbmcgZGV2aWNlX3J1bgpjYWxsYmFjayBpbiBhbWxfaDI2NF9k ZWNfcnVuPwoKVGhlIFY0TDIgTTJNIGFyY2hpdGVjdHVyZSBleHBlY3RzIGRldmljZV9ydW4gdG8g aW5pdGlhdGUgaGFyZHdhcmUKcHJvY2Vzc2luZyBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LiBTbGVl cGluZyBoZXJlIGZvcmNlcyB0aGUgc2hhcmVkIE0yTQp3b3JrZXIgdGhyZWFkIHRvIGJsb2NrLCBz dGFsbGluZyBhbGwgY29uY3VycmVudCBkZWNvZGluZyBpbnN0YW5jZXMuCgpBbHNvLCBzaG91bGQg Y3R4LT5pbnRfY29uZCBiZSByZXNldCB0byAwIGJlZm9yZSBpbml0aWF0aW5nIHRoZSBqb2IsCnJh dGhlciB0aGFuIGFmdGVyIHRoZSB3YWl0PyBJZiBhIGRlbGF5ZWQgaGFyZHdhcmUgaW50ZXJydXB0 IGZpcmVzIGFmdGVyCnRoaXMgcmVzZXQsIHRoZSBuZXh0IGRlY29kZSBydW4gd2lsbCBvYnNlcnZl IGN0eC0+aW50X2NvbmQgPT0gMSBhbmQKcmV0dXJuIGluc3RhbnRseS4KClsgLi4uIF0KPiArCWlm ICghcmV0KSB7Cj4gKwkJcmV0ID0gLTE7Cj4gKwkJZGV2X2VycigmY3R4LT5kZXYtPnBsYXRfZGV2 LT5kZXYsICJkZWMgdGltZW91dD0ldVxuIiwgREVDT0RFUl9USU1FT1VUX01TKTsKPiArCQlmb3Ig KGkgPSAwOyBpIDwgMTY7IGkrKykgewkvKiAxNiA6IHNob3cgdWNvZGUgUEMgMTYgdGltZXMgd2hl biB0aW1lb3V0ICovCj4gKwkJCWRldl9kYmcoJmN0eC0+ZGV2LT5wbGF0X2Rldi0+ZGV2LCAiZGVj b2RlciB0aW1lb3V0LCBwYyAweCV4XG4iLAo+ICsJCQkJcmVhZF9kb3NfcmVnKGRlY19odywgTVBD X0UpKTsKPiArCQkJdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4gKwkJfQo+ICsJCWgyNjRfcmVsZWFz ZV9kZWNvZGVfc3BlYyhkZWNfaHcsIGN0eCk7Cj4gKwl9IGVsc2UgaWYgKC1FUkVTVEFSVFNZUyA9 PSByZXQpIHsKPiArCQlyZXQgPSAtMTsKPiArCQloMjY0X3JlbGVhc2VfZGVjb2RlX3NwZWMoZGVj X2h3LCBjdHgpOwo+ICsJfQoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHRoZSB0aW1lb3V0IG9yIHNp Z25hbCBoYW5kbGluZyBpbiBhbWxfaDI2NF9kZWNfcnVuIHJhY2Ugd2l0aCB0aGUKdGhyZWFkZWQg SVJRIGhhbmRsZXI/CgpJZiB0aGUgd2FpdCBpcyBpbnRlcnJ1cHRlZCBvciB0aW1lcyBvdXQsIHRo aXMgZGlyZWN0bHkgZXhlY3V0ZXMKaDI2NF9yZWxlYXNlX2RlY29kZV9zcGVjLiBJZiB0aGUgZGVs YXllZCBoYXJkd2FyZSBpbnRlcnJ1cHQgZmlyZXMKY29uY3VycmVudGx5LCBoMjY0X3RocmVhZGVk X2lzcl9mdW5jIHdpbGwgYWxzbyB1bmNvbmRpdGlvbmFsbHkgY2FsbApoMjY0X3JlbGVhc2VfZGVj b2RlX3NwZWMuIFdpdGhvdXQgYSBsb2NrLCB0aGlzIHJpc2tzIGRvdWJsZS1mcmVlcyBvZgp0aGUg Y2FudmFzIElEcyBhbmQgc3RydWN0dXJhbCBjb3JydXB0aW9uLgoKLS0gClNhc2hpa28gQUkgcmV2 aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDgxMi1iNC1zNC12ZGVj LXVwc3RyZWFtLXY3LTAtM2ZhZTA4NTg2MWJkQGFtbG9naWMuY29tP3BhcnQ9NAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWls aW5nIGxpc3QKbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYW1sb2dpYwo=