From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [DPU PATCH 03/11] drm/msm/dpu: add MDSS top level driver for dpu Date: Thu, 10 May 2018 10:56:01 -0600 Message-ID: <20180510165601.GD4995@jcrouse-lnx.qualcomm.com> References: <1525940985-30428-1-git-send-email-ryadav@codeaurora.org> <1525940985-30428-4-git-send-email-ryadav@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1525940985-30428-4-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rajesh Yadav Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gVGh1LCBNYXkgMTAsIDIwMTggYXQgMDE6NTk6MzdQTSArMDUzMCwgUmFqZXNoIFlhZGF2IHdy b3RlOgo+IFNvQ3MgY29udGFpbmluZyBkcHUgaGF2ZSBhIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIK PiB3aGljaCBpbmNsdWRlcyBzdWItYmxvY2tzIGFzIGRwdSwgZHNpLCBwaHksIGRwIGV0Yy4KPiBN RFNTIHRvcCBsZXZlbCB3cmFwcGVyIG1hbmFnZXMgY29tbW9uIHJlc291cmNlcyBsaWtlCj4gY29t bW9uIGNsb2NrcywgcG93ZXIgYW5kIGlycSBmb3IgaXRzIHN1Yi1ibG9ja3MuCj4gCj4gQ3VycmVu dGx5LCBpbiBkcHUgZHJpdmVyLCBhbGwgdGhlIHBvd2VyIHJlc291cmNlCj4gbWFuYWdlbWVudCBp cyBwYXJ0IG9mIHBvd2VyX2hhbmRsZSB3aGljaCBtYW5hZ2VzCj4gdGhlc2UgcmVzb3VyY2VzIHZp YSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gQW5kCj4gdGhlIHJlc291cmNlIHJlbGF0aW9uc2hp cHMgYXJlIG5vdCBtb2RlbGxlZCBwcm9wZXJseQo+IGluIGR0LiAgTW9yZW92ZXIgdGhlIGlycSBk b21haW4gaGFuZGxpbmcgY29kZSBpcyBwYXJ0Cj4gb2YgZHB1IGRldmljZSAod2hpY2ggaXMgYSBj aGlsZCBkZXZpY2UpIGR1ZSB0byBsYWNrCj4gb2YgYSBkZWRpY2F0ZWQgZHJpdmVyIGZvciBNRFNT IHRvcCBsZXZlbCB3cmFwcGVyCj4gZGV2aWNlLgo+IAo+IFRoaXMgY2hhbmdlIGFkZHMgZHB1X21k c3MgdG9wIGxldmVsIGRyaXZlciB0byBoYW5kbGUKPiBjb21tb24gY2xvY2sgbGlrZSAtIGNvcmUg Y2xvY2ssIGFoYiBjbG9jawo+IChmb3IgcmVnaXN0ZXIgYWNjZXNzKSwgbWFpbiBwb3dlciBzdXBw bHkgKGkuZS4gZ2RzYykKPiBhbmQgaXJxIG1hbmFnZW1lbnQuCj4gVGhlIHRvcCBsZXZlbCBtZHNz IGRldmljZS9kcml2ZXIgYWN0cyBhcyBhbiBpbnRlcnJ1cHQKPiBjb250cm9sbGVyIGFuZCBtYW5h Z2UgaHdpcnEgbWFwcGluZyBmb3IgaXRzIGNoaWxkCj4gZGV2aWNlcy4KPiAKPiBJdCBpbXBsZW1l bnRzIHJ1bnRpbWVfcG0gc3VwcG9ydCBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudC4KPiBDaGlsZCBu b2RlcyBjYW4gY29udHJvbCB0aGVzZSByZXNvdXJjZXMgdmlhIHJ1bnRpbWVfcG0KPiBnZXQvcHV0 IGNhbGxzIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgZGV2aWNlcyBkdWUgdG8gcGFyZW50Cj4gY2hp bGQgcmVsYXRpb25zaGlwIGRlZmluZWQgaW4gZHQuCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFqZXNo IFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9t c20vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuYyAgICAgIHwgIDk3IC0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmggICAgICB8ICAxNCAtCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgICAgfCAgIDkg LQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oICAgIHwg ICA3IC0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMu YyB8ICAyOSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVy cnVwdHMuaCB8ICAxMSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEu YyAgICAgICAgICAgfCAgNDggKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfa21zLmMgICAgICAgICAgIHwgICA2IC0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2ttcy5oICAgICAgICAgICB8ICAgMiAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9tZHNzLmMgICAgICAgICAgfCAzMDEgKysrKysrKysrKysrKysrKysrKysrKwo+ ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMgICAgICAgICAgICAgICAgIHwgIDU1 ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgICAgICAgICAgICAgICAgICAg ICB8ICAyNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgICAgICAg ICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwo+ICBpbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmggICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKPiAgMTYgZmlsZXMgY2hhbmdlZCwgMzkwIGluc2VydGlv bnMoKyksIDIyMiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKCjxzbmlwPgoKPiAtc3RhdGljIHN0cnVjdCBk cHVfbWRzc19iYXNlX2NmZyAqX19pbnRyX29mZnNldChzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAo+ ICtzdGF0aWMgaW50IF9faW50cl9vZmZzZXQoc3RydWN0IGRwdV9tZHNzX2NmZyAqbSwKPiAgCQl2 b2lkIF9faW9tZW0gKmFkZHIsIHN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmh3KQo+ICB7Cj4g IAlpZiAoIW0gfHwgIWFkZHIgfHwgIWh3IHx8IG0tPm1kcF9jb3VudCA9PSAwKQo+IC0JCXJldHVy biBOVUxMOwo+ICsJCXJldHVybiAtRUlOVkFMOwoKSXQgbG9va3MgbGlrZSB0aGlzIGlzIG9ubHkg dXNlZCBieSBkcHVfaHdfaW50cl9pbml0IGFuZCB5b3Uga25vdyB0aGF0IG0sIGFkZHIKYW5kIGh3 IHdpbGwgYWxsIGJlIHZhbGlkIGFuZCBJJ20gYXNzdW1pbmcgdGhhdCBpZiB3ZSBnZXQgdGhpcyBm YXIgdGhlcmUgaXMgYXQKbGVhc3Qgc29tZSBhc3N1bXB0aW9uIHRoYXQgbWRwX2NvdW50IGlzIHNl dCBzbyBpdCBsb29rcyBsaWtlIHlvdSBjYW4gc2tpcCB0aGlzCmVycm9yIHBhdGggYW5kIG1ha2Ug dGhpcyBhIHZvaWQgZnVuY3Rpb24uCgo+ICAJaHctPmJhc2Vfb2ZmID0gYWRkcjsKPiAtCWh3LT5i bGtfb2ZmID0gbS0+bWRzc1swXS5iYXNlOwo+ICsJaHctPmJsa19vZmYgPSBtLT5tZHBbMF0uYmFz ZTsKPiAgCWh3LT5od3ZlcnNpb24gPSBtLT5od3ZlcnNpb247Cj4gLQlyZXR1cm4gJm0tPm1kc3Nb MF07Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RydWN0IGRwdV9od19pbnRyICpkcHVfaHdf aW50cl9pbml0KHZvaWQgX19pb21lbSAqYWRkciwKPiAgCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICpt KQo+ICB7Cj4gIAlzdHJ1Y3QgZHB1X2h3X2ludHIgKmludHI7Cj4gLQlzdHJ1Y3QgZHB1X21kc3Nf YmFzZV9jZmcgKmNmZzsKPiArCWludCByZXQ7Cj4gIAo+ICAJaWYgKCFhZGRyIHx8ICFtKQo+ICAJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+IEBAIC0xMTk1LDEwICsxMTgyLDEwIEBAIHN0cnVj dCBkcHVfaHdfaW50ciAqZHB1X2h3X2ludHJfaW5pdCh2b2lkIF9faW9tZW0gKmFkZHIsCj4gIAlp ZiAoIWludHIpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+IC0JY2ZnID0gX19p bnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcpOwo+IC0JaWYgKCFjZmcpIHsKPiArCXJldCA9 IF9faW50cl9vZmZzZXQobSwgYWRkciwgJmludHItPmh3KTsKPiArCWlmIChyZXQpIHsKPiAgCQlr ZnJlZShpbnRyKTsKPiAtCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiArCQlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ICAJfQoKQW5kIG1ha2luZyB0aGF0IGEgdm9pZCBmdW5jdGlvbiBoYXMgdGhl IGFkZGVkIGJlbmVmaXQgb2Ygc2tpcHBpbmcgYWxsIG9mIHRoaXMKCj4gIAlfX3NldHVwX2ludHJf b3BzKCZpbnRyLT5vcHMpOwo+ICAKCjxzbmlwPgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9tZHNzLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjI2 YmYyYzEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X21kc3MuYwo+IEBAIC0wLDAgKzEsMzAxIEBACj4gKy8qCj4gKyAqIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgVGhlIExpbnV4 IEZvdW5kYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiZHB1X2ttcy5oIgo+ICsKPiArI2Rl ZmluZSB0b19kcHVfbWRzcyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRwdV9tZHNzLCBiYXNl KQo+ICsKPiArI2RlZmluZSBIV19JTlRSX1NUQVRVUwkJCTB4MDAxMAo+ICsKPiArc3RydWN0IGRw dV9tZHNzIHsKPiArCXN0cnVjdCBtc21fbWRzcyBiYXNlOwo+ICsJdm9pZCBfX2lvbWVtICptbWlv Owo+ICsJdW5zaWduZWQgbG9uZyBtbWlvX2xlbjsKPiArCXUzMiBod3ZlcnNpb247Cj4gKwlzdHJ1 Y3QgZHNzX21vZHVsZV9wb3dlciBtcDsKPiArCXN0cnVjdCBkcHVfaXJxX2NvbnRyb2xsZXIgaXJx X2NvbnRyb2xsZXI7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX2RwdV9tZHNzX2h3 X3Jldl9pbml0KHN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MpCj4gK3sKPiArCWRwdV9tZHNzLT5o d3ZlcnNpb24gPSByZWFkbF9yZWxheGVkKGRwdV9tZHNzLT5tbWlvICsgMHgwKTsKPiArfQo+ICsK PiArc3RhdGljIGludCBfZHB1X21kc3NfZ2V0X2ludHJfc291cmNlcyhzdHJ1Y3QgZHB1X21kc3Mg KmRwdV9tZHNzLAo+ICsJCXVpbnQzMl90ICpzb3VyY2VzKQo+ICt7Cj4gKwkqc291cmNlcyA9IHJl YWRsX3JlbGF4ZWQoZHB1X21kc3MtPm1taW8gKyBIV19JTlRSX1NUQVRVUyk7Cj4gKwlyZXR1cm4g MDsKPiArfQoKSXQgc2VlbXMgbGlrZSB0aGlzIGNvdWxkIGp1c3QgYXMgZWFzaWx5IGJlOgoKc3Rh dGljIHUzMiBfZHB1X21kc3NfZ2V0X2ludHJfc291cmNlcyhzdHJ1Y3QgZHB1X21kc3MgKmRwdV9t ZHNzKQp7CiAgICByZXR1cm4gcmVhZGxfcmVsYXhlZChkcHVfbWRzcy0+bW1pbyArIEhXX0lOVFJf U1RBVFVTKTsKfQoKT3IgaXQgc2hvdWxkbid0IHJldHVybiBhIDAgZm9yIG5vIGdyZWF0IHJlYXNv biBidXQgaWYgeW91IGFyZSBnb2luZyB0byBnbwpvdXQgb2YgeW91ciB3YXkgdG8gY3JlYXRlIGEg c3ViIGZ1bmN0aW9uIEkgZmVlbCBsaWtlIGl0IHNob3VsZCBkbyB3b3JrLgoKPiArc3RhdGljIGly cXJldHVybl90IGRwdV9tZHNzX2lycShpbnQgaXJxLCB2b2lkICphcmcpCj4gK3sKPiArCXN0cnVj dCBkcHVfbWRzcyAqZHB1X21kc3MgPSBhcmc7Cj4gKwl1MzIgaW50ZXJydXB0czsKPiArCj4gKwlp ZiAoIWFyZykKPiArCQlyZXR1cm4gSVJRX05PTkU7CgpUaGlzIGlzIG9ubHkgcG9zc2libGUgaWYg eW91IGFyZSBwYXNzaW5nIGEgTlVMTCBhcmd1bWVudCB0byB0aGUgaGFuZGxlciB3aGljaCBJCmRv dWJ0IHlvdSBhcmUuCgo+ICsJX2RwdV9tZHNzX2dldF9pbnRyX3NvdXJjZXMoZHB1X21kc3MsICZp bnRlcnJ1cHRzKTsKPiArCgpTZWUgaG93IHRoaXMgY291bGQganVzdCBhcyBlYXNpbHkgYmUKCmlu dGVycnVwdHMgPSBfZHB1X21kc3NfZ2V0X2ludHJfc291cmNlcyhkcHVfbWRzcyk7Cgo+ICsJd2hp bGUgKGludGVycnVwdHMpIHsKPiArCQlpcnFfaHdfbnVtYmVyX3QgaHdpcnEgPSBmbHMoaW50ZXJy dXB0cykgLSAxOwo+ICsJCXVuc2lnbmVkIGludCBtYXBwaW5nOwo+ICsJCWludCByYzsKPiArCj4g KwkJbWFwcGluZyA9IGlycV9maW5kX21hcHBpbmcoZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRv bWFpbiwKPiArCQkJCWh3aXJxKTsKPiArCQlpZiAobWFwcGluZyA9PSAwKSB7Cj4gKwkJCURQVV9F VlQzMihod2lycSwgRFBVX0VWVExPR19FUlJPUik7Cj4gKwkJCWdvdG8gZXJyb3I7Cj4gKwkJfQo+ ICsKPiArCQlyYyA9IGdlbmVyaWNfaGFuZGxlX2lycShtYXBwaW5nKTsKPiArCQlpZiAocmMgPCAw KSB7Cj4gKwkJCURQVV9FVlQzMihod2lycSwgbWFwcGluZywgcmMsIERQVV9FVlRMT0dfRVJST1Ip Owo+ICsJCQlnb3RvIGVycm9yOwo+ICsJCX0KPiArCj4gKwkJaW50ZXJydXB0cyAmPSB+KDEgPDwg aHdpcnEpOwo+ICsJfQo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArCj4gK2Vycm9yOgo+ ICsJLyogYmFkIHNpdHVhdGlvbiwgaW5mb3JtIGlycSBzeXN0ZW0sIGl0IG1heSBkaXNhYmxlIG92 ZXJhbGwgTURTUyBpcnEgKi8KPiArCXJldHVybiBJUlFfTk9ORTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgZHB1X21kc3NfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICppcnFkKQo+ICt7Cj4gKwlz dHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzOwo+ICsKPiArCWlmICghaXJxZCB8fCAhaXJxX2RhdGFf Z2V0X2lycV9jaGlwX2RhdGEoaXJxZCkpIHsKPiArCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1l dGVycyBpcnFkICVkXG4iLCBpcnFkICE9IE5VTEwpOwo+ICsJCXJldHVybjsKPiArCX0KCk5laXRo ZXIgb2YgdGhlc2UgY2FuIGJlIE5VTEwgYXQgdGhpcyBwb2ludCBzaW5jZSB5b3Ugc3BlY2lmeSB0 aGUgY2hpcCBkYXRhCmZyb20gdGhlIGRvbWFpbiBob3N0X2RhdGEgd2hpY2ggaXMga25vd24gZ29v ZC4gIFlvdSBkb24ndCBuZWVkIHRoZXNlIGNoZWNrcy4KCj4gKwlkcHVfbWRzcyA9IGlycV9kYXRh X2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwo+ICsKPiArCS8qIG1lbW9yeSBiYXJyaWVyICovCj4g KwlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPiArCWNsZWFyX2JpdChpcnFkLT5od2lycSwgJmRw dV9tZHNzLT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2spOwo+ICsJLyogbWVtb3J5IGJhcnJp ZXIgKi8KPiArCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGRwdV9tZHNzX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICppcnFkKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHB1X21kc3MgKmRwdV9tZHNzOwo+ICsKPiArCWlmICghaXJxZCB8fCAhaXJxX2RhdGFfZ2V0 X2lycV9jaGlwX2RhdGEoaXJxZCkpIHsKPiArCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVy cyBpcnFkICVkXG4iLCBpcnFkICE9IE5VTEwpOwo+ICsJCXJldHVybjsKPiArCX0KClNhbWUgYXMg YWJvdmUuCgo+ICsJZHB1X21kc3MgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShpcnFkKTsK PiArCj4gKwkvKiBtZW1vcnkgYmFycmllciAqLwo+ICsJc21wX21iX19iZWZvcmVfYXRvbWljKCk7 Cj4gKwlzZXRfYml0KGlycWQtPmh3aXJxLCAmZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmVuYWJs ZWRfbWFzayk7Cj4gKwkvKiBtZW1vcnkgYmFycmllciAqLwo+ICsJc21wX21iX19hZnRlcl9hdG9t aWMoKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBkcHVfbWRzc19pcnFfY2hp cCA9IHsKPiArCS5uYW1lID0gImRwdV9tZHNzIiwKPiArCS5pcnFfbWFzayA9IGRwdV9tZHNzX2ly cV9tYXNrLAo+ICsJLmlycV91bm1hc2sgPSBkcHVfbWRzc19pcnFfdW5tYXNrLAo+ICt9Owo+ICsK PiArc3RhdGljIGludCBkcHVfbWRzc19pcnFkb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpk b21haW4sCj4gKwkJdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAo IWRvbWFpbiB8fCAhZG9tYWluLT5ob3N0X2RhdGEpIHsKPiArCQlEUFVfRVJST1IoImludmFsaWQg cGFyYW1ldGVycyBkb21haW4gJWRcbiIsIGRvbWFpbiAhPSBOVUxMKTsKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCX0KClRoZSBwb2ludGVyIHRvIHRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9t IHRoZSBkb21haW4gcG9pbnRlciBzbyBpdCBpcyBrbm93bgpnb29kLiBZb3Ugc3BlY2lmeSBob3N0 X2RhdGEgd2hlbiBhbGxvY2F0aW5nIHRoZSBkb21haW4gZnJvbSBhIGtub3duIGdvb2QKcG9pbnRl ci4gIE5laXRoZXIgb2YgdGhlc2UgY2hlY2tzIGFyZSBuZWVkZWQuCgo+ICsJZHB1X21kc3MgPSBk b21haW4tPmhvc3RfZGF0YTsKPiArCj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAm ZHB1X21kc3NfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpOwo+ICsJcmV0ID0gaXJxX3NldF9j aGlwX2RhdGEoaXJxLCBkcHVfbWRzcyk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBkcHVfbWRzc19pcnFkb21haW5fb3Bz ID0gewo+ICsJLm1hcCA9IGRwdV9tZHNzX2lycWRvbWFpbl9tYXAsCj4gKwkueGxhdGUgPSBpcnFf ZG9tYWluX3hsYXRlX29uZWNlbGwsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9kcHVfbWRzc19p cnFfZG9tYWluX2FkZChzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluOwo+ICsKPiArCWRldiA9 IGRwdV9tZHNzLT5iYXNlLmRldi0+ZGV2Owo+ICsKPiArCWRvbWFpbiA9IGlycV9kb21haW5fYWRk X2xpbmVhcihkZXYtPm9mX25vZGUsIDMyLAo+ICsJCQkmZHB1X21kc3NfaXJxZG9tYWluX29wcywg ZHB1X21kc3MpOwo+ICsJaWYgKCFkb21haW4pIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBh ZGQgaXJxX2RvbWFpblxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJZHB1 X21kc3MtPmlycV9jb250cm9sbGVyLmVuYWJsZWRfbWFzayA9IDA7Cj4gKwlkcHVfbWRzcy0+aXJx X2NvbnRyb2xsZXIuZG9tYWluID0gZG9tYWluOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtpbnQgX2RwdV9tZHNzX2lycV9kb21haW5fZmluaShzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNz KQo+ICt7Cj4gKwlpZiAoZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbikgewo+ICsJCWly cV9kb21haW5fcmVtb3ZlKGRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5kb21haW4pOwo+ICsJCWRw dV9tZHNzLT5pcnFfY29udHJvbGxlci5kb21haW4gPSBOVUxMOwo+ICsJfQo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArc3RhdGljIGludCBkcHVfbWRzc19lbmFibGUoc3RydWN0IG1zbV9tZHNzICptZHNz KQo+ICt7Cj4gKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gdG9fZHB1X21kc3MobWRzcyk7 Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X21kc3MtPm1wOwo+ICsJaW50 IHJldCA9IDA7CgpZb3UgZG9uJ3QgbmVlZCB0byBpbml0aWFsaXplIHJldC4KCj4gKwlyZXQgPSBt c21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrLCB0cnVlKTsKPiAr CWlmIChyZXQpCj4gKwkJRFBVX0VSUk9SKCJjbG9jayBlbmFibGUgZmFpbGVkLCByZXQ6JWRcbiIs IHJldCk7Cj4gKwo+ICsJcmV0dXJuIDA7CgpZb3Ugc2hvdWxkIHJldHVybiAncmV0JyBoZXJlIC0g cHJlc3VtYWJseSB0aGUgY2FsbGluZyBmdW5jdGlvbiBjYXJlcyBhYm91dAp0aGUgcmVzdWx0LgoK PiArfQo+ICsKPiArc3RhdGljIGludCBkcHVfbWRzc19kaXNhYmxlKHN0cnVjdCBtc21fbWRzcyAq bWRzcykKPiArewo+ICsJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKG1k c3MpOwo+ICsJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9tZHNzLT5tcDsKPiAr CWludCByZXQgPSAwOwoKWW91IGRvbid0IG5lZWQgdG8gaW5pdGlhbGl6ZSByZXQuCgo+ICsJcmV0 ID0gbXNtX2Rzc19lbmFibGVfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2NsaywgZmFsc2Up Owo+ICsJaWYgKHJldCkKPiArCQlEUFVfRVJST1IoImNsb2NrIGRpc2FibGUgZmFpbGVkLCByZXQ6 JWRcbiIsIHJldCk7Cj4gKwo+ICsJcmV0dXJuIDA7CgpZb3Ugc2hvdWxkIHJldHVybiAncmV0JyB0 byB0aGUgY2FsbGluZyBmdW5jdGlvbi4KCj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRwdV9tZHNz X2Rlc3Ryb3koc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYtPmRldik7Cj4gKwlzdHJ1Y3Qg bXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcHVf bWRzcyAqZHB1X21kc3MgPSB0b19kcHVfbWRzcyhwcml2LT5tZHNzKTsKPiArCXN0cnVjdCBkc3Nf bW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRzcy0+bXA7Cj4gKwo+ICsJaWYgKCFkcHVfbWRzcykK PiArCQlyZXR1cm47Cgp0b19kcHVfbWRzcyBpcyBhIGNvbnRhaW5lcl9vZigpIHNvIHRoaXMgY2Fu IG5ldmVyIGJlIE5VTEwuIFRoZSBjaGVjayBzaG91bGQKYmUgb24gcHJpdi0+bWRzcyBpbnN0ZWFk LgoKPiArCV9kcHVfbWRzc19pcnFfZG9tYWluX2ZpbmkoZHB1X21kc3MpOwo+ICsKPiArCW1zbV9k c3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOwo+ICsJZGV2bV9rZnJlZSgm cGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7CgpZb3UgZG9uJ3QgbmVlZCB0byBmcmVlIHRoZXNl IGlmIHlvdSB3ZW50IG91dCBvZiB5b3VyIHdheSB0byB1c2UgZGV2bSBpbiB0aGUKZmlyc3QgcGxh Y2UuCgo+ICsKPiArCWlmIChkcHVfbWRzcy0+bW1pbykKPiArCQltc21faW91bm1hcChwZGV2LCBk cHVfbWRzcy0+bW1pbyk7Cj4gKwlkcHVfbWRzcy0+bW1pbyA9IE5VTEw7Cj4gKwo+ICsJcG1fcnVu dGltZV9kaXNhYmxlKGRldi0+ZGV2KTsKPiArCj4gKwlkZXZtX2tmcmVlKGRldi0+ZGV2LCBkcHVf bWRzcyk7Cj4gKwlwcml2LT5tZHNzID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBtc21fbWRzc19mdW5jcyBtZHNzX2Z1bmNzID0gewo+ICsJLmVuYWJsZQk9IGRwdV9tZHNz X2VuYWJsZSwKPiArCS5kaXNhYmxlID0gZHB1X21kc3NfZGlzYWJsZSwKPiArCS5kZXN0cm95ID0g ZHB1X21kc3NfZGVzdHJveSwKPiArfTsKPiArCj4gK2ludCBkcHVfbWRzc19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0 b19wbGF0Zm9ybV9kZXZpY2UoZGV2LT5kZXYpOwo+ICsJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAq cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzOwo+ ICsJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJ aWYgKCFvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtPmRldi0+b2Zfbm9kZSwgInFjb20sZHB1 LW1kc3MiKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlkcHVfbWRzcyA9IGRldm1fa3phbGxvYyhk ZXYtPmRldiwgc2l6ZW9mKCpkcHVfbWRzcyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFkcHVfbWRz cykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlkcHVfbWRzcy0+bW1pbyA9IG1zbV9pb3Jl bWFwKHBkZXYsICJtZHNzX3BoeXMiLCAibWRzc19waHlzIik7Cj4gKwlpZiAoSVNfRVJSKGRwdV9t ZHNzLT5tbWlvKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoZHB1X21kc3MtPm1taW8pOwo+ICsJCURQ VV9FUlJPUigibWRzcyByZWdpc3RlciBtZW1vcnkgbWFwIGZhaWxlZDogJWRcbiIsIHJldCk7Cj4g KwkJZHB1X21kc3MtPm1taW8gPSBOVUxMOwoKWW91IGRvbid0IG5lZWQgdG8gc2V0IHRoaXMgdG8g TlVMTCAtIHlvdSBhcmUgZ29pbmcgdG8gaW1tZWRpYXRlbHkgZnJlZQp0aGlzIHN0cnVjdHVyZS4K Cj4gKwkJZ290byBlcnJvcjsKPiArCX0KPiArCURSTV9JTkZPKCJtYXBwZWQgbWRzcyBhZGRyZXNz IHNwYWNlIEAlcFxuIiwgZHB1X21kc3MtPm1taW8pOwoKVGhpcyBzaG91bGQgYmUgZGVidWcgb3Ig cmVtb3ZlZC4gIEluIGFueSBldmVudCwgZG9uJ3QgYmUgdXNpbmcgJXAuCgo+ICsJZHB1X21kc3Mt Pm1taW9fbGVuID0gbXNtX2lvbWFwX3NpemUocGRldiwgIm1kc3NfcGh5cyIpOwo+ICsKPiArCW1w ID0gJmRwdV9tZHNzLT5tcDsKPiArCXJldCA9IG1zbV9kc3NfcGFyc2VfY2xvY2socGRldiwgbXAp Owo+ICsJaWYgKHJldCkgewo+ICsJCURQVV9FUlJPUigiZmFpbGVkIHRvIHBhcnNlIGNsb2Nrcywg cmV0PSVkXG4iLCByZXQpOwo+ICsJCWdvdG8gY2xrX3BhcnNlX2VycjsKPiArCX0KPiArCj4gKwly ZXQgPSBtc21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcsIG1wLT5udW1f Y2xrKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQgY2xvY2tz LCByZXQ9JWRcbiIsIHJldCk7Cj4gKwkJZ290byBjbGtfZ2V0X2Vycm9yOwo+ICsJfQo+ICsKPiAr CXJldCA9IG1zbV9kc3NfY2xrX3NldF9yYXRlKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7 Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gc2V0IGNsb2NrIHJhdGUs IHJldD0lZFxuIiwgcmV0KTsKPiArCQlnb3RvIGNsa19yYXRlX2Vycm9yOwo+ICsJfQo+ICsKPiAr CWRwdV9tZHNzLT5iYXNlLmRldiA9IGRldjsKPiArCWRwdV9tZHNzLT5iYXNlLmZ1bmNzID0gJm1k c3NfZnVuY3M7Cj4gKwo+ICsJcmV0ID0gX2RwdV9tZHNzX2lycV9kb21haW5fYWRkKGRwdV9tZHNz KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBpcnFfZG9tYWluX2Vycm9yOwo+ICsKPiArCXJldCA9 IGRldm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCksCj4g KwkJCWRwdV9tZHNzX2lycSwgMCwgImRwdV9tZHNzX2lzciIsIGRwdV9tZHNzKTsKPiArCWlmIChy ZXQpIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IGlycTogJWRcbiIsIHJldCk7Cj4g KwkJZ290byBpcnFfZXJyb3I7Cj4gKwl9Cj4gKwo+ICsJcG1fcnVudGltZV9lbmFibGUoZGV2LT5k ZXYpOwo+ICsKPiArCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2LT5kZXYpOwo+ICsJX2RwdV9tZHNz X2h3X3Jldl9pbml0KGRwdV9tZHNzKTsKPiArCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2LT5kZXYp Owo+ICsKPiArCXByaXYtPm1kc3MgPSAmZHB1X21kc3MtPmJhc2U7Cj4gKwo+ICsJcmV0dXJuIHJl dDsKPiArCj4gK2lycV9lcnJvcjoKPiArCV9kcHVfbWRzc19pcnFfZG9tYWluX2ZpbmkoZHB1X21k c3MpOwo+ICtpcnFfZG9tYWluX2Vycm9yOgo+ICtjbGtfcmF0ZV9lcnJvcjoKPiArCW1zbV9kc3Nf cHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOwo+ICtjbGtfZ2V0X2Vycm9yOgo+ ICsJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7Cj4gK2Nsa19wYXJzZV9l cnI6Cj4gKwlpZiAoZHB1X21kc3MtPm1taW8pCj4gKwkJbXNtX2lvdW5tYXAocGRldiwgZHB1X21k c3MtPm1taW8pOwo+ICsJZHB1X21kc3MtPm1taW8gPSBOVUxMOwo+ICtlcnJvcjoKPiArCWRldm1f a2ZyZWUoZGV2LT5kZXYsIGRwdV9tZHNzKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kcHVfaW9fdXRpbC5jCj4gaW5kZXggYTE4YmM5OS4uZWZhMDZhOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2RwdV9pb191dGlsLmMKPiBAQCAtNDQ4LDYgKzQ0OCw2MSBAQCBpbnQgbXNtX2Rzc19l bmFibGVfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGssIGludCBlbmFi bGUpCj4gIH0gLyogbXNtX2Rzc19lbmFibGVfY2xrICovCj4gIEVYUE9SVF9TWU1CT0wobXNtX2Rz c19lbmFibGVfY2xrKTsKPiAgCj4gK2ludCBtc21fZHNzX3BhcnNlX2Nsb2NrKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYsCj4gKwkJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wKQo+ICt7 Cj4gKwl1MzIgaSA9IDAsIHJjID0gMDsKPiArCWNvbnN0IGNoYXIgKmNsb2NrX25hbWU7Cj4gKwl1 MzIgY2xvY2tfcmF0ZSA9IDA7Cj4gKwl1MzIgY2xvY2tfbWF4X3JhdGUgPSAwOwo+ICsJaW50IG51 bV9jbGsgPSAwOwo+ICsKPiArCWlmICghcGRldiB8fCAhbXApIHsKPiArCQlwcl9lcnIoImludmFs aWQgaW5wdXQgcGFyYW0gcGRldjolcEsgbXA6JXBLXG4iLCBwZGV2LCBtcCk7CgpJIGRvbid0IHRo aW5rIGEgbG9nIGlzIG5lY2Vzc2FyeSBoZXJlLiAgV0FSTiBpZiB5b3UgbXVzdCwgYnV0IEkgd291 bGQganVzdApyZXR1cm4uCgo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCW1wLT5u dW1fY2xrID0gMDsKPiArCW51bV9jbGsgPSBvZl9wcm9wZXJ0eV9jb3VudF9zdHJpbmdzKHBkZXYt PmRldi5vZl9ub2RlLCAiY2xvY2stbmFtZXMiKTsKPiArCWlmIChudW1fY2xrIDw9IDApIHsKPiAr CQlwcl9lcnIvKmRlYnVnKi8oImNsb2NrcyBhcmUgbm90IGRlZmluZWRcbiIpOwoKT3VjaCAtIHBs ZWFzZSBkb24ndCB1c2UgaW50ZXJuYWwgY29tbWVudHMgKi8KPiArCQlnb3RvIGNsa19lcnI7Cgpy YyBpcyAwIHRoaXMgcG9pbnQgLSB5b3UgY2FuIGp1c3QgcmV0dXJuIDAgaGVyZSAob3IgZXJyb3Ig aWYgeW91IGNob29zZSkuCj4gKwl9Cj4gKwo+ICsJbXAtPm51bV9jbGsgPSBudW1fY2xrOwo+ICsJ bXAtPmNsa19jb25maWcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwKPiArCQkJc2l6ZW9mKHN0 cnVjdCBkc3NfY2xrKSAqIG51bV9jbGssIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFtcC0+Y2xrX2Nv bmZpZykgewo+ICsJCXJjID0gLUVOT01FTTsKPiArCQltcC0+bnVtX2NsayA9IDA7Cj4gKwkJZ290 byBjbGtfZXJyOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBudW1fY2xrOyBpKyspIHsK PiArCQlvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChwZGV2LT5kZXYub2Zfbm9kZSwgImNs b2NrLW5hbWVzIiwKPiArCQkJCQkJCWksICZjbG9ja19uYW1lKTsKPiArCQlzdHJsY3B5KG1wLT5j bGtfY29uZmlnW2ldLmNsa19uYW1lLCBjbG9ja19uYW1lLAo+ICsJCQkJc2l6ZW9mKG1wLT5jbGtf Y29uZmlnW2ldLmNsa19uYW1lKSk7Cj4gKwo+ICsJCW9mX3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4 KHBkZXYtPmRldi5vZl9ub2RlLCAiY2xvY2stcmF0ZSIsCj4gKwkJCQkJCQlpLCAmY2xvY2tfcmF0 ZSk7Cj4gKwkJbXAtPmNsa19jb25maWdbaV0ucmF0ZSA9IGNsb2NrX3JhdGU7Cj4gKwo+ICsJCWlm ICghY2xvY2tfcmF0ZSkKPiArCQkJbXAtPmNsa19jb25maWdbaV0udHlwZSA9IERTU19DTEtfQUhC Owo+ICsJCWVsc2UKPiArCQkJbXAtPmNsa19jb25maWdbaV0udHlwZSA9IERTU19DTEtfUENMSzsK PiArCj4gKwkJY2xvY2tfbWF4X3JhdGUgPSAwOwo+ICsJCW9mX3Byb3BlcnR5X3JlYWRfdTMyX2lu ZGV4KHBkZXYtPmRldi5vZl9ub2RlLCAiY2xvY2stbWF4LXJhdGUiLAo+ICsJCQkJCQkJaSwgJmNs b2NrX21heF9yYXRlKTsKPiArCQltcC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZSA9IGNsb2NrX21h eF9yYXRlOwo+ICsJfQo+ICsKPiArY2xrX2VycjoKPiArCXJldHVybiByYzsKPiArfQo+ICtFWFBP UlRfU1lNQk9MKG1zbV9kc3NfcGFyc2VfY2xvY2spOwoKVGhpcyBuZWVkcyB0byBiZSBleHBvcnRl ZD8gV2hhdCBvdGhlciB1cHN0cmVhbSBtb2R1bGVzIHdvdWxkIHVzZSB0aGlzPwoKPiAgaW50IGRw dV9pMmNfYnl0ZV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVpbnQ4X3Qgc2xhdmVf YWRkciwKPiAgCQkJdWludDhfdCByZWdfb2Zmc2V0LCB1aW50OF90ICpyZWFkX2J1ZikKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuYwo+IGluZGV4IDVkOGYxYjYuLmEwZTczZWEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuYwo+IEBAIC01MDMsNyArNTAzLDE4IEBAIHN0YXRpYyBpbnQgbXNtX2RybV9pbml0KHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRybV9kcml2ZXIgKmRydikKPiAgCWRkZXYtPmRldl9w cml2YXRlID0gcHJpdjsKPiAgCXByaXYtPmRldiA9IGRkZXY7Cj4gIAo+IC0JcmV0ID0gbWRwNV9t ZHNzX2luaXQoZGRldik7Cj4gKwlzd2l0Y2ggKGdldF9tZHBfdmVyKHBkZXYpKSB7Cj4gKwljYXNl IEtNU19NRFA1Ogo+ICsJCXJldCA9IG1kcDVfbWRzc19pbml0KGRkZXYpOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSBLTVNfRFBVOgo+ICsJCXJldCA9IGRwdV9tZHNzX2luaXQoZGRldik7Cj4gKwkJYnJl YWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldCA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICAJ aWYgKHJldCkKPiAgCQlnb3RvIG1kc3NfaW5pdF9mYWlsOwo+ICAKPiBAQCAtMTUzOSwxMiArMTU1 MCwxMyBAQCBzdGF0aWMgaW50IGFkZF9kaXNwbGF5X2NvbXBvbmVudHMoc3RydWN0IGRldmljZSAq ZGV2LAo+ICAJaW50IHJldDsKPiAgCj4gIAkvKgo+IC0JICogTURQNSBiYXNlZCBkZXZpY2VzIGRv bid0IGhhdmUgYSBmbGF0IGhpZXJhcmNoeS4gVGhlcmUgaXMgYSB0b3AgbGV2ZWwKPiAtCSAqIHBh cmVudDogTURTUywgYW5kIGNoaWxkcmVuOiBNRFA1LCBEU0ksIEhETUksIGVEUCBldGMuIFBvcHVs YXRlIHRoZQo+IC0JICogY2hpbGRyZW4gZGV2aWNlcywgZmluZCB0aGUgTURQNSBub2RlLCBhbmQg dGhlbiBhZGQgdGhlIGludGVyZmFjZXMKPiAtCSAqIHRvIG91ciBjb21wb25lbnRzIGxpc3QuCj4g KwkgKiBNRFA1L0RQVSBiYXNlZCBkZXZpY2VzIGRvbid0IGhhdmUgYSBmbGF0IGhpZXJhcmNoeS4g VGhlcmUgaXMgYSB0b3AKPiArCSAqIGxldmVsIHBhcmVudDogTURTUywgYW5kIGNoaWxkcmVuOiBN RFA1L0RQVSwgRFNJLCBIRE1JLCBlRFAgZXRjLgo+ICsJICogUG9wdWxhdGUgdGhlIGNoaWxkcmVu IGRldmljZXMsIGZpbmQgdGhlIE1EUDUvRFBVIG5vZGUsIGFuZCB0aGVuIGFkZAo+ICsJICogdGhl IGludGVyZmFjZXMgdG8gb3VyIGNvbXBvbmVudHMgbGlzdC4KPiAgCSAqLwo+IC0JaWYgKG9mX2Rl dmljZV9pc19jb21wYXRpYmxlKGRldi0+b2Zfbm9kZSwgInFjb20sbWRzcyIpKSB7Cj4gKwlpZiAo b2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxtZHNzIikgfHwKPiAr CQlvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtPm9mX25vZGUsICJxY29tLGRwdS1tZHNzIikp IHsKPiAgCQlyZXQgPSBvZl9wbGF0Zm9ybV9wb3B1bGF0ZShkZXYtPm9mX25vZGUsIE5VTEwsIE5V TEwsIGRldik7Cj4gIAkJaWYgKHJldCkgewo+ICAJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBw b3B1bGF0ZSBjaGlsZHJlbiBkZXZpY2VzXG4iKTsKPiBAQCAtMTY4Niw3ICsxNjk4LDcgQEAgc3Rh dGljIGludCBtc21fcGRldl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAg CXsgLmNvbXBhdGlibGUgPSAicWNvbSxtZHA0IiwgLmRhdGEgPSAodm9pZCAqKUtNU19NRFA0IH0s Cj4gIAl7IC5jb21wYXRpYmxlID0gInFjb20sbWRzcyIsIC5kYXRhID0gKHZvaWQgKilLTVNfTURQ NSB9LAo+ICAjaWZkZWYgQ09ORklHX0RSTV9NU01fRFBVCj4gLQl7IC5jb21wYXRpYmxlID0gInFj b20sZHB1LWttcyIsIC5kYXRhID0gKHZvaWQgKilLTVNfRFBVIH0sCj4gKwl7IC5jb21wYXRpYmxl ID0gInFjb20sZHB1LW1kc3MiLCAuZGF0YSA9ICh2b2lkICopS01TX0RQVSB9LAo+ICAjZW5kaWYK PiAgCXt9Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPiBpbmRleCA5MGEyNTIxLi5lOGU1ZTcz IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPiBAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBt c21fZHJtX3ByaXZhdGUgewo+ICAJLyogc3Vib3JkaW5hdGUgZGV2aWNlcywgaWYgcHJlc2VudDog Ki8KPiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmdwdV9wZGV2Owo+ICAKPiAtCS8qIHRvcCBs ZXZlbCBNRFNTIHdyYXBwZXIgZGV2aWNlIChmb3IgTURQNSBvbmx5KSAqLwo+ICsJLyogdG9wIGxl dmVsIE1EU1Mgd3JhcHBlciBkZXZpY2UgKGZvciBNRFA1L0RQVSBvbmx5KSAqLwo+ICAJc3RydWN0 IG1zbV9tZHNzICptZHNzOwo+ICAKPiAgCS8qIHBvc3NpYmx5IHRoaXMgc2hvdWxkIGJlIGluIHRo ZSBrbXMgY29tcG9uZW50LCBidXQgaXQgaXMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAo+IGluZGV4IDlh N2JjN2QuLjhmNTA2MTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21z LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAo+IEBAIC0xNDUsNiArMTQ1 LDggQEAgc3RydWN0IG1zbV9tZHNzIHsKPiAgCj4gIGludCBtZHA1X21kc3NfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiAgCj4gK2ludCBkcHVfbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ICsKPiAgLyoqCj4gICAqIE1vZGUgU2V0IFV0aWxpdHkgRnVuY3Rpb25zCj4g ICAqLwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmggYi9pbmNsdWRl L2xpbnV4L2RwdV9pb191dGlsLmgKPiBpbmRleCA3YzczODk5Li40NWU2MDZmIDEwMDY0NAo+IC0t LSBhL2luY2x1ZGUvbGludXgvZHB1X2lvX3V0aWwuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZHB1 X2lvX3V0aWwuaAo+IEBAIC0xMDQsNiArMTA0LDggQEAgaW50IG1zbV9kc3NfY29uZmlnX3ZyZWco c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHNzX3ZyZWcgKmluX3ZyZWcsCj4gIHZvaWQgbXNt X2Rzc19wdXRfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGspOwo+ICBp bnQgbXNtX2Rzc19jbGtfc2V0X3JhdGUoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVt X2Nsayk7Cj4gIGludCBtc21fZHNzX2VuYWJsZV9jbGsoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5 LCBpbnQgbnVtX2NsaywgaW50IGVuYWJsZSk7Cj4gK2ludCBtc21fZHNzX3BhcnNlX2Nsb2NrKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gKwkJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIg Km1wKTsKPiAgCj4gIGludCBkcHVfaTJjX2J5dGVfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50LCB1aW50OF90IHNsYXZlX2FkZHIsCj4gIAkJICAgICAgIHVpbnQ4X3QgcmVnX29mZnNldCwg dWludDhfdCAqcmVhZF9idWYpOwoKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwg SW5jLiBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9u IENvbGxhYm9yYXRpdmUgUHJvamVjdApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9mcmVlZHJlbm8K