From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH v6 3/9] drm/i915: gvt: Introduce the basic architecture of GVT-g Date: Fri, 03 Jun 2016 12:14:23 +0300 Message-ID: <1464945263.7292.19.camel@linux.intel.com> References: <1464885380-7056-1-git-send-email-zhi.a.wang@intel.com> <1464885380-7056-4-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 5FAEA6E0A8 for ; Fri, 3 Jun 2016 09:14:27 +0000 (UTC) In-Reply-To: <1464885380-7056-4-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhi Wang , intel-gfx@lists.freedesktop.org, tvrtko.ursulin@linux.intel.com, kevin.tian@intel.com, zhiyuan.lv@intel.com, chris@chris-wilson.co.uk List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDYtMDIgYXQgMTI6MzYgLTA0MDAsIFpoaSBXYW5nIHdyb3RlOgo+IFRoaXMg cGF0Y2ggaW50cm9kdWNlcyB0aGUgdmVyeSBiYXNpYyBmcmFtZXdvcmsgb2YgR1ZULWcgZGV2aWNl IG1vZGVsLAo+IGluY2x1ZGVzIGJhc2ljIHByb3RvdHlwZXMsIGRlZmluaXRpb25zLCBpbml0aWFs aXphdGlvbi4KPiAKPiB2NjoKPiAtIFJlZmluZSBpbnRyb2R1Y3Rpb24gaW4gS2NvbmZpZy4gKENo cmlzKQo+IC0gVGhlIGV4cG9zZWQgQVBJIGZ1bmN0aW9ucyB3aWxsIHRha2Ugc3RydWN0IGludGVs X2d2dCAqIGluc3RlYWQgb2YKPiB2b2lkICouIChDaHJpcy9UdnJ0a28pCj4gLSBSZW1vdmUgbW9z dCBtZW1lYmVycyBvZiBzdHJjdCBpbnRlbF9ndnRfZGV2aWNlX2luZm8uIFdpbGwgYWRkIHRoZW0K PiBpbiB0aGUgZGV2aWNlIG1vZGVsIHBhdGNoZXMuKENocmlzKQo+IC0gUmVtb3ZlIGd2dF9pbmZv KCkgYW5kIGd2dF9lcnIoKSBpbiBkZWJ1Zy5oLiAoQ2hyaXMpCj4gLSBNb3ZlIEdWVCBrZXJuZWwg cGFyYW1ldGVyIGludG8gaTkxNV9wYXJhbXMuIChDaHJpcykKPiAtIFJlbW92ZSBpbmNsdWRlL2Ry bS9pOTE1X2d2dC5oLCBhcyBHVlQtZyB3aWxsIGJlIGJ1aWx0IHdpdGhpbiBpOTE1Lgo+IC0gUmVt b3ZlIHRoZSByZWR1bmRhbnQgc3RydWN0IGk5MTVfZ3Z0ICosIGFzIHRoZSBmdW5jdGlvbnMgaW4g aTkxNQo+IHdpbGwgZGlyZWN0bHkgdGFrZSBzdHJ1Y3QgaW50ZWxfZ3Z0ICouCj4gLSBBZGQgbW9y ZSBjb21tZW50cyBmb3IgcmV2aWV3ZXIuCj4gCj4gdjU6Cj4gVGFrZSBUdnJ0a28ncyBjb21tZW50 czoKPiAtIEZpeCB0aGUgbWlzc3BlbGxlZCB3b3JkcyBpbiBLY29uZmlnCj4gLSBMZXQgZnVuY3Rp b25zIHRha2UgZHJtX2k5MTVfcHJpdmF0ZSAqIGluc3RlYWQgb2Ygc3RydWN0IGRybV9kZXZpY2Ug Kgo+IC0gUmVtb3ZlIHJlZHVuZGFudCBwcmludHMvbG9jYWwgdmFyaWJsZSBpbml0aWFsaXphdGlv bgo+IAo+IHYzOgo+IFRha2UgSm9vbmFzJyBjb21tZW50czoKPiAtIENoYW5nZSBmaWxlIG5hbWUg aTkxNV9ndnQuKiB0byBpbnRlbF9ndnQuKgo+IC0gTW92ZSBHVlQga2VybmVsIHBhcmFtZXRlciBp bnRvIGludGVsX2d2dC5jCj4gLSBSZW1vdmUgcmVkdW5kYW50IGRlYnVnIG1hY3Jvcwo+IC0gQ2hh bmdlIGVycm9yIGhhbmRsaW5nIHN0eWxlCj4gLSBBZGQgaW50cm9kdWN0aW9ucyBmb3Igc29tZSBz dHViIGZ1bmN0aW9ucwo+IC0gSW50cm9kdWNlIGRybS9pOTE1X2d2dC5oLgo+IAo+IFRha2UgS2V2 aW4ncyBjb21tZW50czoKPiAtIE1vdmUgR1ZULWcgaG9zdC9ndWVzdCBjaGVjayBpbnRvIGludGVs X3ZndF9iYWxsb29uIGluIGk5MTVfZ2VtX2d0dC5jCj4gCj4gdjI6Cj4gLSBJbnRyb2R1Y2UgaTkx NV9ndnQuYy4KPiBJdCdzIG5lY2Vzc2FyeSB0byBpbnRyb2R1Y2UgdGhlIHN0dWJzIGJldHdlZW4g aTkxNSBkcml2ZXIgYW5kIEdWVC1nIGhvc3QsCj4gYXMgR1ZULWcgY29tcG9uZW50cyBpcyBjb25m aWd1cmFibGUgaW4ga2VybmVsIGNvbmZpZy4gV2hlbiBkaXNhYmxlZCwgdGhlCj4gc3R1YnMgaGVy ZSBkbyBub3RoaW5nLgo+IAo+IFRha2UgSm9vbmFzJyBjb21tZW50czoKPiAtIFJlcGxhY2UgYm9v bGVhbiByZXR1cm4gdmFsdWUgd2l0aCBpbnQuCj4gLSBSZXBsYWNlIGN1c3RvbWl6ZWQgaW5mby93 YXJuL2RlYnVnIG1hY3JvcyB3aXRoIERSTSBtYWNyb3MuCj4gLSBEb2N1bWVudCBhbGwgbm9uLXN0 YXRpYyBmdW5jdGlvbnMgbGlrZSBpOTE1Lgo+IC0gUmVtb3ZlIGVtcHR5IGFuZCB1bnVzZWQgZnVu Y3Rpb25zLgo+IC0gUmVwbGFjZSBtYWdpYyBudW1iZXIgd2l0aCBtYXJjb3MuCj4gLSBTZXQgR1ZU LWcgaW4ga2VybmVsIGNvbmZpZyB0byAibiIgYnkgZGVmYXVsdC4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBaaGkgV2FuZyA8emhpLmEud2FuZ0BpbnRlbC5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxOSArKysrCj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgNSArCj4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGXCoMKgwqDCoHzCoMKgwqA1ICsKPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5owqDCoMKgwqDCoHzCoMKgMzQgKysrKysrKwo+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jwqDCoMKgwqDCoMKgwqB8IDE4MSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2d2dC5owqDCoMKgwqDCoMKgwqB8wqDCoDc1ICsrKysrKysrKysrKysrKwo+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oIHzCoMKgMzggKysrKysrKysKPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9tcHQuaMKgwqDCoMKgwqDCoMKgfMKgwqA0OSArKysrKysrKysrCj4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jwqDCoMKgwqDCoMKgfMKgwqAxNyArKyst Cj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgfMKgwqAxMCAr Kwo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuY8KgwqDCoHzCoMKgwqA1ICsK PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmjCoMKgwqB8wqDCoMKgMSArCj4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuY8KgwqDCoMKgwqB8wqDCoDkwICsrKysr KysrKysrKysrKysrCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuaMKgwqDCoMKg wqB8wqDCoDQ2ICsrKysrKysrKwo+IMKgMTQgZmlsZXMgY2hhbmdlZCwgNTcxIGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2RlYnVnLmgKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmMKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmgKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvaHlwZXJjYWxsLmgKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvbXB0LmgKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndnQuYwo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d2dC5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gaW5kZXggMjlhMzJiMS4uZTRmZDlkYSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+IEBAIC01Nyw2ICs1NywyNSBAQCBjb25maWcgRFJNX0k5 MTVfVVNFUlBUUgo+IMKgCj4gwqAJwqDCoElmIGluIGRvdWJ0LCBzYXkgIlkiLgo+IMKgCj4gK2Nv bmZpZyBEUk1fSTkxNV9HVlQKPiArwqDCoMKgwqDCoMKgwqDCoGJvb2wgIkVuYWJsZSBJbnRlbCBH VlQtZyBncmFwaGljcyB2aXJ0dWFsaXphdGlvbiBob3N0IHN1cHBvcnQiCj4gK8KgwqDCoMKgwqDC oMKgwqBkZXBlbmRzIG9uIERSTV9JOTE1Cj4gK8KgwqDCoMKgwqDCoMKgwqBkZWZhdWx0IG4KPiAr wqDCoMKgwqDCoMKgwqDCoGhlbHAKPiArCcKgwqBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IHdh bnQgdG8gZW5hYmxlIEludGVsIEdWVC1nIGdyYXBoaWNzCj4gKwnCoMKgdmlydHVhbGl6YXRpb24g dGVjaG5vbG9neSBob3N0IHN1cHBvcnQgd2l0aCBpbnRlZ3JhdGVkIGdyYXBoaWNzLgo+ICsJwqDC oFdpdGggR1ZULWcsIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBvbmUgaW50ZWdyYXRlZCBncmFwaGlj cwo+ICsJwqDCoGRldmljZSBzaGFyZWQgYnkgbXVsdGlwbGUgVk1zIHVuZGVyIGRpZmZlcmVudCBo eXBlcnZpc29ycy4KPiArCj4gKwnCoMKgTm90ZSB0aGF0IGF0IGxlYXN0IG9uZSBoeXBlcnZpc29y IGxpa2UgWGVuIG9yIEtWTSBpcyByZXF1aXJlZCBmb3IKPiArCcKgwqB0aGlzIGRyaXZlciB0byB3 b3JrLCBhbmQgaXQgb25seSBzdXBwb3J0cyBuZXdlciBkZXZpY2UgZnJvbQo+ICsJwqDCoEJyb2Fk d2VsbCsuIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGFuZCBzZXR1cCBndWlkZSwgeW91IGNhbgo+ ICsJwqDCoHZpc2l0OiBodHRwOi8vMDEub3JnL3poL2lndnQtZy4KCk1heWJlIGxpbmsgc2hvdWxk IGJlwqBodHRwOi8vMDEub3JnL2lndnQtZ8KgKGZpcnN0IHJlc3VsdCBpbiBHb29nbGUpCndoaWNo IGN1cnJlbnRseSByZWRpcmVjdHMgdG8gdGhhdCBsaW5rLCAvemgvIHdvdWxkIGluZGljYXRlIHRo ZSBwYWdlIHRvCmJlIGluIENoaW5lc2UsIHNvIG1heWJlIHRoZSBwYWdlIG91Z2h0IHRvIGJlIGZp eGVkIHRvIGNoYW5nZSB0aGUgcGFnZQpsYW5ndWFnZSB0byBFbmdsaXNoIGluIHNldHRpbmdzLgoK PiArCj4gKwnCoMKgVGhlIGZpcnN0IHZlcnNpb24gaXMgc3RpbGwgcHJlbGltaW5hcnkuIFVzZSBp dCB1bmRlciB5b3Ugb3duIHJpc2suCj4gKwo+ICsJwqDCoElmIGluIGRvdWJ0LCBzYXkgIk4iLgo+ ICsKPiDCoG1lbnUgImRybS9pOTE1IERlYnVnZ2luZyIKPiDCoGRlcGVuZHMgb24gRFJNX0k5MTUK PiDCoGRlcGVuZHMgb24gRVhQRVJUCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA3ZTI5NDQ0 Li4yNzZhYmYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTA0LDYgKzEwNCwxMSBA QCBpOTE1LXkgKz0gaTkxNV92Z3B1Lm8KPiDCoCMgbGVnYWN5IGhvcnJvcnMKPiDCoGk5MTUteSAr PSBpOTE1X2RtYS5vCj4gwqAKPiAraWZlcSAoJChDT05GSUdfRFJNX0k5MTVfR1ZUKSx5KQo+ICtp OTE1LXkgKz0gaW50ZWxfZ3Z0Lm8KPiAraW5jbHVkZSAkKHNyYykvZ3Z0L01ha2VmaWxlCj4gK2Vu ZGlmCj4gKwo+IMKgb2JqLSQoQ09ORklHX0RSTV9JOTE1KcKgwqArPSBpOTE1Lm8KPiDCoAo+IMKg Q0ZMQUdTX2k5MTVfdHJhY2VfcG9pbnRzLm8gOj0gLUkkKHNyYykKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5kMGYyMWE2 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmls ZQo+IEBAIC0wLDAgKzEsNSBAQAo+ICtHVlRfRElSIDo9IGd2dAo+ICtHVlRfU09VUkNFIDo9IGd2 dC5vCj4gKwo+ICtjY2ZsYWdzLXnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCs9IC1JJChzcmMpIC1JJChzcmMpLyQoR1ZUX0RJUikgLVdhbGwKPiAraTkxNS15CQkJ wqDCoMKgwqDCoMKgwqArPSAkKGFkZHByZWZpeCAkKEdWVF9ESVIpLywgJChHVlRfU09VUkNFKSkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMC4uN2VmNDEyYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZGVidWcuaAo+IEBAIC0wLDAgKzEsMzQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0 KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAr ICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4gKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFCj4gKyAqIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19HVlRfREVC VUdfSF9fCj4gKyNkZWZpbmUgX19HVlRfREVCVUdfSF9fCj4gKwo+ICsjZGVmaW5lIGd2dF9kYmdf Y29yZShmbXQsIGFyZ3MuLi4pIFwKPiArCURSTV9ERUJVR19EUklWRVIoImd2dDogY29yZTogImZt dCwgIyNhcmdzKQo+ICsKPiArLyoKPiArICogT3RoZXIgR1ZUIGRlYnVnIHN0dWZmIHdpbGwgYmUg aW50cm9kdWNlZCBpbiB0aGUgR1ZUIGRldmljZSBtb2RlbCBwYXRjaGVzLgo+ICsgKi8KPiArCj4g KyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLjlmMWQzZTcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2d2dC5jCj4gQEAgLTAsMCArMSwxODEgQEAKPiArLyoKPiArICogQ29weXJp Z2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Cj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4gKyAqIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MgSU4gVEhFCj4gKyAqIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIAo+ICsj aW5jbHVkZSAKPiArI2luY2x1ZGUgCj4gKwo+ICsjaW5jbHVkZSAiZ3Z0LmgiCj4gKwo+ICtzdHJ1 Y3QgaW50ZWxfZ3Z0X2hvc3QgaW50ZWxfZ3Z0X2hvc3Q7Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hh ciAqIGNvbnN0IHN1cHBvcnRlZF9oeXBlcnZpc29yc1tdID0gewo+ICsJW0lOVEVMX0dWVF9IWVBF UlZJU09SX1hFTl0gPSAiWEVOIiwKPiArCVtJTlRFTF9HVlRfSFlQRVJWSVNPUl9LVk1dID0gIktW TSIsCj4gK307Cj4gKwo+ICsjZGVmaW5lIE1CKHgpICh4ICogMTAyNFVMTCAqIDEwMjRVTEwpCj4g KyNkZWZpbmUgR0IoeCkgKHggKiBNQigxMDI0KSkKPiArCj4gKy8qIExvYWQgTVBUIG1vZHVsZXMg YW5kIGRldGVjdCBpZiB3ZSdyZSBydW5uaW5nIGluIGhvc3QgKi8KPiArc3RhdGljIGludCBpbml0 X2d2dF9ob3N0KHZvaWQpCj4gK3sKPiArCWlmIChpbnRlbF9ndnRfaG9zdC5pbml0aWFsaXplZCkK PiArCQlyZXR1cm4gMDsKPiArCj4gKwkvKiBYZW4gRE9NIFUgKi8KPiArCWlmICh4ZW5fZG9tYWlu KCkgJiYgIXhlbl9pbml0aWFsX2RvbWFpbigpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAr CS8qIFRyeSB0byBsb2FkIE1QVCBtb2R1bGVzIGZvciBoeXBlcnZpc29ycyAqLwo+ICsJaWYgKHhl bl9pbml0aWFsX2RvbWFpbigpKSB7Cj4gKwkJLyogSW4gWGVuIGRvbTAgKi8KPiArCQlpbnRlbF9n dnRfaG9zdC5tcHQgPSB0cnlfdGhlbl9yZXF1ZXN0X21vZHVsZSgKPiArCQkJCXN5bWJvbF9nZXQo eGVuZ3RfbXB0KSwgInhlbmd0Iik7Cj4gKwkJaW50ZWxfZ3Z0X2hvc3QuaHlwZXJ2aXNvcl90eXBl ID0gSU5URUxfR1ZUX0hZUEVSVklTT1JfWEVOOwo+ICsJfSBlbHNlIHsKPiArCQkvKiBub3QgaW4g WGVuLiBUcnkgS1ZNR1QgKi8KPiArCQlpbnRlbF9ndnRfaG9zdC5tcHQgPSB0cnlfdGhlbl9yZXF1 ZXN0X21vZHVsZSgKPiArCQkJCXN5bWJvbF9nZXQoa3ZtZ3RfbXB0KSwgImt2bSIpOwo+ICsJCWlu dGVsX2d2dF9ob3N0Lmh5cGVydmlzb3JfdHlwZSA9IElOVEVMX0dWVF9IWVBFUlZJU09SX0tWTTsK PiArCX0KPiArCj4gKwkvKiBGYWlsIHRvIGxvYWQgTVBUIG1vZHVsZXMgLSBiYWlsIG91dCAqLwo+ ICsJaWYgKCFpbnRlbF9ndnRfaG9zdC5tcHQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ LyogVHJ5IHRvIGRldGVjdCBpZiB3ZSdyZSBydW5uaW5nIGluIGhvc3QgaW5zdGVhZCBvZiBWTS4g Ki8KPiArCWlmICghaW50ZWxfZ3Z0X2h5cGVydmlzb3JfZGV0ZWN0X2hvc3QoKSkKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCj4gKwlndnRfZGJnX2NvcmUoIlJ1bm5pbmcgd2l0aCBoeXBlcnZpc29y ICVzIGluIGhvc3QgbW9kZVxuIiwKPiArCQkJc3VwcG9ydGVkX2h5cGVydmlzb3JzW2ludGVsX2d2 dF9ob3N0Lmh5cGVydmlzb3JfdHlwZV0pOwo+ICsKPiArCWlkcl9pbml0KCZpbnRlbF9ndnRfaG9z dC5ndnRfaWRyKTsKPiArCW11dGV4X2luaXQoJmludGVsX2d2dF9ob3N0Lmd2dF9pZHJfbG9jayk7 Cj4gKwlpbnRlbF9ndnRfaG9zdC5pbml0aWFsaXplZCA9IHRydWU7Cj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgaW5pdF9kZXZpY2VfaW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpn dnQpCj4gK3sKPiArCWlmIChJU19CUk9BRFdFTEwoZ3Z0LT5kZXZfcHJpdikpCj4gKwkJZ3Z0LT5k ZXZpY2VfaW5mby5tYXhfc3VwcG9ydF92Z3B1cyA9IDg7Cj4gKwkvKiBUaGlzIGZ1bmN0aW9uIHdp bGwgZ3JvdyBsYXJnZSBpbiBHVlQgZGV2aWNlIG1vZGVsIHBhdGNoZXMuICovCj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGZyZWVfZ3Z0X2RldmljZShzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gK3sK PiArCW11dGV4X2xvY2soJmludGVsX2d2dF9ob3N0Lmd2dF9pZHJfbG9jayk7Cj4gKwlpZHJfcmVt b3ZlKCZpbnRlbF9ndnRfaG9zdC5ndnRfaWRyLCBndnQtPmlkKTsKPiArCW11dGV4X3VubG9jaygm aW50ZWxfZ3Z0X2hvc3QuZ3Z0X2lkcl9sb2NrKTsKPiArCj4gKwl2ZnJlZShndnQpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IGludGVsX2d2dCAqYWxsb2NfZ3Z0X2RldmljZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsK PiArCWludCByZXQ7Cj4gKwo+ICsJLyoKPiArCcKgKiBUaGlzIGRhdGEgc3RydWN0dXJlIHdpbGwg Z3JvdyBsYXJnZSBpbiBmdXR1cmUsIHVzZSB2emFsbG9jKCkgYXQKPiArCcKgKiB0aGUgYmVnaW5u aW5nLgo+ICsJwqAqLwo+ICsJZ3Z0ID0gdnphbGxvYyhzaXplb2YoKmd2dCkpOwo+ICsJaWYgKCFn dnQpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmaW50 ZWxfZ3Z0X2hvc3QuZ3Z0X2lkcl9sb2NrKTsKPiArCXJldCA9IGlkcl9hbGxvYygmaW50ZWxfZ3Z0 X2hvc3QuZ3Z0X2lkciwgZ3Z0LCAwLCAwLCBHRlBfS0VSTkVMKTsKPiArCW11dGV4X3VubG9jaygm aW50ZWxfZ3Z0X2hvc3QuZ3Z0X2lkcl9sb2NrKTsKPiArCj4gKwlpZiAocmV0IDwgMCkKPiArCQln b3RvIGVycjsKPiArCj4gKwlndnQtPmlkID0gcmV0Owo+ICsJbXV0ZXhfaW5pdCgmZ3Z0LT5sb2Nr KTsKPiArCWd2dC0+ZGV2X3ByaXYgPSBkZXZfcHJpdjsKPiArCWlkcl9pbml0KCZndnQtPnZncHVf aWRyKTsKPiArCj4gKwlyZXR1cm4gZ3Z0Owo+ICtlcnI6CgpOYWNrLiBGcmVlL2ZpbmkvZXRjLiBm dW5jdGlvbnMgb25seSB0byBiZSBjYWxsZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBpbml0LgoKRm9yIGV4 YW1wbGUgaW4gdGhpcyBjYXNlIGlmIHRoZSBJRCBhbGxvY2F0aW9uIGZhaWxzIChsZXRzIGFzc3Vt ZSB3ZSBydW4Kb3V0IG9mIElEcykgZ3Z0LT5pZCBpcyBub3QgYXNzaWduZWQgdG8gc28gMCBhbmQg dGhlIGZyZWVfZ3Z0X2RldmljZQplbmRzIHVwIHJlbW92aW5nIElEIDAgd2hpY2ggY291bGQgYmUg cmF0aGVyIGJhZD8KClRoaXMgaXMgdGhlIF9leGFjdF8gcmVhc29uIHdoeSBvbmUgbmVlZHMgdG8g aW1wbGVtZW50IGEgcHJvcGVyIHRlYXJkb3duCnBhdGguCgo+ICsJZnJlZV9ndnRfZGV2aWNlKGd2 dCk7Cj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxf Z3Z0X2Rlc3Ryb3lfZGV2aWNlIC0gZGVzdHJveSBhIEdWVCBkZXZpY2UKPiArICogQGd2dDogaW50 ZWwgZ3Z0IGRldmljZQo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCB0aGUg ZHJpdmVyIHVubG9hZGluZyBzdGFnZSwgdG8gZGVzdHJveSBhCj4gKyAqIEdWVCBkZXZpY2UgYW5k IGZyZWUgdGhlIHJlbGF0ZWQgcmVzb3VyY2VzLgo+ICsgKgo+ICsgKi8KPiArdm9pZCBpbnRlbF9n dnRfZGVzdHJveV9kZXZpY2Uoc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICt7Cj4gKwkvKiBBbm90 aGVyIGRlLWluaXRpYWxpemF0aW9uIG9mIEdWVCBjb21wb25lbnRzIHdpbGwgYmUgaW50cm9kdWNl ZC4gKi8KPiArCWZyZWVfZ3Z0X2RldmljZShndnQpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50 ZWxfZ3Z0X2NyZWF0ZV9kZXZpY2UgLSBjcmVhdGUgYSBHVlQgZGV2aWNlCj4gKyAqIEBkZXZfcHJp djogZHJtIGk5MTUgcHJpdmF0ZSBkYXRhCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSwgdG8gY3JlYXRlIGEKPiArICogR1ZUIGRl dmljZSBhbmQgaW5pdGlhbGl6ZSBuZWNlc3NhcnkgR1ZUIGNvbXBvbmVudHMgZm9yIGl0Lgo+ICsg Kgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBwb2ludGVyIHRvIHRoZSBpbnRlbCBndnQgZGV2aWNlIHN0 cnVjdHVyZSwgZXJyb3IgcG9pbnRlciBpZiBmYWlsZWQuCj4gKyAqCj4gKyAqLwo+ICtzdHJ1Y3Qg aW50ZWxfZ3Z0ICppbnRlbF9ndnRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsKPiArCWludCByZXQ7 Cj4gKwo+ICsJcmV0ID0gaW5pdF9ndnRfaG9zdCgpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4g RVJSX1BUUihyZXQpOwo+ICsKPiArCWd2dF9kYmdfY29yZSgiY3JlYXRlIG5ldyBndnQgZGV2aWNl XG4iKTsKPiArCj4gKwlndnQgPSBhbGxvY19ndnRfZGV2aWNlKGRldl9wcml2KTsKPiArCWlmIChJ U19FUlIoZ3Z0KSkgewo+ICsJCXJldCA9IFBUUl9FUlIoZ3Z0KTsKPiArCQlnb3RvIG91dF9lcnI7 Cj4gKwl9Cj4gKwo+ICsJZ3Z0X2RiZ19jb3JlKCJpbml0IGd2dCBkZXZpY2UsIGlkICVkXG4iLCBn dnQtPmlkKTsKPiArCj4gKwlpbml0X2RldmljZV9pbmZvKGd2dCk7Cj4gKwkvKgo+ICsJwqAqIE90 aGVyIGluaXRpYWxpemF0aW9uIG9mIEdWVCBjb21wb25lbnRzIHdpbGwgYmUgY2FsbGVkIGhlcmUu Cj4gKwnCoCovCj4gKwlndnRfZGJnX2NvcmUoImd2dCBkZXZpY2UgY3JlYXRpb24gaXMgZG9uZSwg aWQgJWRcbiIsIGd2dC0+aWQpOwo+ICsKPiArCXJldHVybiBndnQ7Cj4gKwo+ICtvdXRfZXJyOgo+ ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvZ3Z0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmYwMjE0ODcKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4gQEAgLTAsMCArMSw3NSBA QAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC7CoMKgSU4gTk8g RVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg RlJPTSwKPiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKPiArICogU09GVFdBUkUuCj4gKyAqLwo+ ICsKPiArI2lmbmRlZiBfR1ZUX0hfCj4gKyNkZWZpbmUgX0dWVF9IXwo+ICsKPiArI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpOTE1X3B2aW5mby5oIgo+ICsKPiArI2luY2x1ZGUg ImRlYnVnLmgiCj4gKyNpbmNsdWRlICJoeXBlcmNhbGwuaCIKPiArCj4gKyNkZWZpbmUgR1ZUX01B WF9WR1BVIDgKPiArI2RlZmluZSBHVlRfQUxJR04oYWRkciwgc2l6ZSkgKChhZGRyKSAmICh+KCh0 eXBlb2YoYWRkcikpKHNpemUpIC0gMSkpKQoKVGhlcmUncyByb3VuZF9kb3duIGFuZCByb3VuZF91 cCBhbmQgd2hhdG5vdCBpbiBsaW51eC9rZXJuZWwuaCwgcGxlYXNlCnVzZSB0aG9zZSBvciBhZGQg YSBjb21tZW50IHdoYXQgc3VwZXIgc3BlY2lhbCB0aGlzIGFjaGlldmVzLgoKPiArCj4gK2VudW0g ewo+ICsJSU5URUxfR1ZUX0hZUEVSVklTT1JfWEVOID0gMCwKPiArCUlOVEVMX0dWVF9IWVBFUlZJ U09SX0tWTSwKPiArfTsKPiArCj4gK3N0cnVjdCBpbnRlbF9ndnRfaG9zdCB7Cj4gKwlib29sIGlu aXRpYWxpemVkOwo+ICsJaW50IGh5cGVydmlzb3JfdHlwZTsKPiArCXN0cnVjdCBtdXRleCBndnRf aWRyX2xvY2s7Cj4gKwlzdHJ1Y3QgaWRyIGd2dF9pZHI7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3Z0X21w dCAqbXB0Owo+ICt9Owo+ICsKPiArZXh0ZXJuIHN0cnVjdCBpbnRlbF9ndnRfaG9zdCBpbnRlbF9n dnRfaG9zdDsKPiArCj4gKy8qIERlc2NyaWJlIHBlci1wbGF0Zm9ybSBsaW1pdGF0aW9ucy4gKi8K PiArc3RydWN0IGludGVsX2d2dF9kZXZpY2VfaW5mbyB7Cj4gKwl1MzIgbWF4X3N1cHBvcnRfdmdw dXM7Cj4gKwkvKiBUaGlzIGRhdGEgc3RydWN0dXJlIHdpbGwgZ3JvdyBiaWdnZXIgaW4gR1ZUIGRl dmljZSBtb2RlbCBwYXRjaGVzICovCj4gK307Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfdmdwdSB7Cj4g KwlzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQ7Cj4gKwlpbnQgaWQ7Cj4gKwl1bnNpZ25lZCBsb25nIGhh bmRsZTsgLyogdkdQVSBoYW5kbGUgdXNlZCBieSBoeXBlcnZpc29yIE1QVCBtb2R1bGVzICovCj4g K307Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZ3Z0IHsKPiArCXN0cnVjdCBtdXRleCBsb2NrOwo+ICsJ aW50IGlkOwo+ICsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPiArCXN0 cnVjdCBpZHIgdmdwdV9pZHI7CS8qIHZHUFUgSURSIHBvb2wgKi8KPiArCj4gKwlzdHJ1Y3QgaW50 ZWxfZ3Z0X2RldmljZV9pbmZvIGRldmljZV9pbmZvOwo+ICt9Owo+ICsKPiArI2luY2x1ZGUgIm1w dC5oIgo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9oeXBlcmNhbGwuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjU0ZGY4Ygo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKPiBAQCAtMCww ICsxLDM4IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4g KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUu Cj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULsKg wqBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ICsgKiBTT0ZUV0FSRS4K PiArICovCj4gKwo+ICsjaWZuZGVmIF9HVlRfSFlQRVJDQUxMX0hfCj4gKyNkZWZpbmUgX0dWVF9I WVBFUkNBTExfSF8KPiArCj4gKy8qCj4gKyAqIFNwZWNpZmljIEdWVC1nIE1QVCBtb2R1bGVzIGZ1 bmN0aW9uIGNvbGxlY3Rpb25zLiBDdXJyZW50bHkgR1ZULWcgc3VwcG9ydHMKPiArICogYm90aCBY ZW4gYW5kIEtWTSBieSBwcm92aWRpbmcgZGVkaWNhdGVkIGh5cGVydmlzb3ItcmVsYXRlZCBNUFQg bW9kdWxlcy4KPiArICovCj4gK3N0cnVjdCBpbnRlbF9ndnRfbXB0IHsKPiArCWludCAoKmRldGVj dF9ob3N0KSh2b2lkKTsKPiArfTsKPiArCj4gK2V4dGVybiBzdHJ1Y3QgaW50ZWxfZ3Z0X21wdCB4 ZW5ndF9tcHQ7Cj4gK2V4dGVybiBzdHJ1Y3QgaW50ZWxfZ3Z0X21wdCBrdm1ndF9tcHQ7Cj4gKwo+ ICsjZW5kaWYgLyogX0dWVF9IWVBFUkNBTExfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L21wdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi43ODNmNGY4Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaAo+IEBAIC0wLDAgKzEs NDkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiAr ICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElO IE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HIEZST00sCj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCj4gKyAqIFNPRlRXQVJFLgo+ICsg Ki8KPiArCj4gKyNpZm5kZWYgX0dWVF9NUFRfSF8KPiArI2RlZmluZSBfR1ZUX01QVF9IXwo+ICsK PiArLyoqCj4gKyAqIERPQzogSHlwZXJ2aXNvciBTZXJ2aWNlIEFQSXMgZm9yIEdWVC1nIENvcmUg TG9naWMKPiArICoKPiArICogVGhpcyBpcyB0aGUgZ2x1ZSBsYXllciBiZXR3ZWVuIHNwZWNpZmlj IGh5cGVydmlzb3IgTVBUIG1vZHVsZXMgYW5kIEdWVC1nIGNvcmUKPiArICogbG9naWMuIEVhY2gg a2luZCBvZiBoeXBlcnZpc29yIE1QVCBtb2R1bGUgcHJvdmlkZXMgYSBjb2xsZWN0aW9uIG9mIGZ1 bmN0aW9uCj4gKyAqIGNhbGxiYWNrcyB2aWEgZ3Z0X2tlcm5lbF9kbSBhbmQgd2lsbCBiZSBhdHRh Y2hlZCB0byBHVlQgaG9zdCB3aGVuIGRyaXZlcgo+ICsgKiBsb2FkaW5nLiBHVlQtZyBjb3JlIGxv Z2ljIHdpbGwgY2FsbCB0aGVzZSBBUElzIHRvIHJlcXVlc3Qgc3BlY2lmaWMgc2VydmljZXMKPiAr ICogZnJvbSBoeXBlcnZpc29yLgo+ICsgKi8KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9ndnRfaHlw ZXJ2aXNvcl9kZXRlY3RfaG9zdCAtIGNoZWNrIGlmIEdWVC1nIGlzIHJ1bm5pbmcgd2l0aGluCj4g KyAqIGh5cGVydmlzb3IgaG9zdC9wcml2aWxnZWQgZG9tYWluCj4gKyAqCj4gKyAqIFJldHVybnM6 Cj4gKyAqIFplcm8gb24gc3VjY2VzcywgLUVOT0RFViBpZiBjdXJyZW50IGtlcm5lbCBpcyBydW5u aW5nIGluc2lkZSBhIFZNCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGludCBpbnRlbF9ndnRfaHlw ZXJ2aXNvcl9kZXRlY3RfaG9zdCh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gaW50ZWxfZ3Z0X2hvc3Qu bXB0LT5kZXRlY3RfaG9zdCgpOwo+ICt9Cj4gKwo+ICsjZW5kaWYgLyogX0dWVF9NUFRfSF8gKi8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBpbmRleCAwN2VkYWVkLi4wYmFmNjRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gQEAgLTM1LDYgKzM1LDcgQEAKPiDCoCNpbmNsdWRlICJp bnRlbF9kcnYuaCIKPiDCoCNpbmNsdWRlIAo+IMKgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNp bmNsdWRlICJpbnRlbF9ndnQuaCIKPiDCoCNpbmNsdWRlICJpOTE1X3ZncHUuaCIKPiDCoCNpbmNs dWRlICJpOTE1X3RyYWNlLmgiCj4gwqAjaW5jbHVkZSAKPiBAQCAtMTI0NCwxOCArMTI0NSwyMiBA QCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+IMKgCQlnb3RvIG91dF9nZ3R0Owo+IMKgCX0KPiDCoAo+ICsJcmV0ID0gaW50 ZWxfZ3Z0X2luaXQoZGV2X3ByaXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dF9nZ3R0Owo+ ICsKPiDCoAkvKiBXQVJOSU5HOiBBcHBhcmVudGx5IHdlIG11c3Qga2ljayBmYmRldiBkcml2ZXJz IGJlZm9yZSB2Z2Fjb24sCj4gwqAJwqAqIG90aGVyd2lzZSB0aGUgdmdhIGZiZGV2IGRyaXZlciBm YWxscyBvdmVyLiAqLwo+IMKgCXJldCA9IGk5MTVfa2lja19vdXRfZmlybXdhcmVfZmIoZGV2X3By aXYpOwo+IMKgCWlmIChyZXQpIHsKPiDCoAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVtb3ZlIGNv bmZsaWN0aW5nIGZyYW1lYnVmZmVyIGRyaXZlcnNcbiIpOwo+IC0JCWdvdG8gb3V0X2dndHQ7Cj4g KwkJZ290byBvdXRfZ3Z0Owo+IMKgCX0KPiDCoAo+IMKgCXJldCA9IGk5MTVfa2lja19vdXRfdmdh Y29uKGRldl9wcml2KTsKPiDCoAlpZiAocmV0KSB7Cj4gwqAJCURSTV9FUlJPUigiZmFpbGVkIHRv IHJlbW92ZSBjb25mbGljdGluZyBWR0EgY29uc29sZVxuIik7Cj4gLQkJZ290byBvdXRfZ2d0dDsK PiArCQlnb3RvIG91dF9ndnQ7Cj4gwqAJfQo+IMKgCj4gwqAJcGNpX3NldF9tYXN0ZXIoZGV2LT5w ZGV2KTsKPiBAQCAtMTI2Niw3ICsxMjcxLDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0 X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJaWYgKHJldCkgewo+ IMKgCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0IERNQSBtYXNrXG4iKTsKPiDCoAo+IC0JCQln b3RvIG91dF9nZ3R0Owo+ICsJCQlnb3RvIG91dF9ndnQ7Cj4gwqAJCX0KPiDCoAl9Cj4gwqAKPiBA QCAtMTI5Niw3ICsxMzAxLDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJCQnCoMKgwqDCoMKgYXBlcnR1cmVf c2l6ZSk7Cj4gwqAJaWYgKCFnZ3R0LT5tYXBwYWJsZSkgewo+IMKgCQlyZXQgPSAtRUlPOwo+IC0J CWdvdG8gb3V0X2dndHQ7Cj4gKwkJZ290byBvdXRfZ3Z0Owo+IMKgCX0KPiDCoAo+IMKgCWdndHQt Pm10cnIgPSBhcmNoX3BoeXNfd2NfYWRkKGdndHQtPm1hcHBhYmxlX2Jhc2UsCj4gQEAgLTEzMjks NiArMTMzNCw4IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAKPiDCoAlyZXR1cm4gMDsKPiDCoAo+ICtvdXRfZ3Z0 Ogo+ICsJaW50ZWxfZ3Z0X2NsZWFudXAoZGV2X3ByaXYpOwo+IMKgb3V0X2dndHQ6Cj4gwqAJaTkx NV9nZ3R0X2NsZWFudXBfaHcoZGV2KTsKPiDCoAo+IEBAIC0xNDg3LDYgKzE0OTQsOCBAQCBpbnQg aTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAKPiDCoAlpbnRl bF9mYmRldl9maW5pKGRldik7Cj4gwqAKPiArCWludGVsX2d2dF9jbGVhbnVwKGRldl9wcml2KTsK PiArCj4gwqAJcmV0ID0gaTkxNV9nZW1fc3VzcGVuZChkZXYpOwo+IMKgCWlmIChyZXQpIHsKPiDC oAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaWRsZSBoYXJkd2FyZTogJWRcbiIsIHJldCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZTRjOGUzNC4uYmRmNDk5ZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02MSw2ICs2MSw4IEBACj4gwqAjaW5jbHVkZSAiaTkxNV9n ZW1fZ3R0LmgiCj4gwqAjaW5jbHVkZSAiaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmgiCj4gwqAKPiAr I2luY2x1ZGUgImludGVsX2d2dC5oIgo+ICsKPiDCoC8qIEdlbmVyYWwgY3VzdG9taXphdGlvbjoK PiDCoCAqLwo+IMKgCj4gQEAgLTE3MzcsNiArMTczOSw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIHsKPiDCoAo+IMKgCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHZncHU7Cj4gwqAKPiArCXN0 cnVjdCBpbnRlbF9ndnQgKmd2dDsKClNhbWUgY3JpdGljaXNtIGFzIHdpdGggR1BVIHNjaGVkdWxl ciwgd2h5IG5vdCBkYXRhIG1lbWJlciBsaWtlIGFsbAphcm91bmQ/Cgo+ICsKPiDCoAlzdHJ1Y3Qg aW50ZWxfZ3VjIGd1YzsKPiDCoAo+IMKgCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwo+IEBAIC0yOTM4 LDYgKzI5NDIsMTIgQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoHU2NCBpbnRlbF91bmNvcmVfZWRy YW1fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgCj4gwqB2b2lk IGFzc2VydF9mb3JjZXdha2VzX2luYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfZ3Z0X2FjdGl2ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXJldHVybiBkZXZfcHJpdi0+Z3Z0 ID8gdHJ1ZSA6IGZhbHNlOwo+ICt9Cj4gKwo+IMKgc3RhdGljIGlubGluZSBib29sIGludGVsX3Zn cHVfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiDCoAly ZXR1cm4gZGV2X3ByaXYtPnZncHUuYWN0aXZlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BhcmFtcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMu Ywo+IGluZGV4IDVlMThjZjkuLmM5NjE1Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wYXJhbXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFy YW1zLmMKPiBAQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRf bW9zdGx5ID0gewo+IMKgCS5lbmFibGVfZHBfbXN0ID0gdHJ1ZSwKPiDCoAkuaW5qZWN0X2xvYWRf ZmFpbHVyZSA9IDAsCj4gwqAJLmVuYWJsZV9kcGNkX2JhY2tsaWdodCA9IGZhbHNlLAo+ICsJLmVu YWJsZV9ndnQgPSBmYWxzZSwKPiDCoH07Cj4gwqAKPiDCoG1vZHVsZV9wYXJhbV9uYW1lZChtb2Rl c2V0LCBpOTE1Lm1vZGVzZXQsIGludCwgMDQwMCk7Cj4gQEAgLTIyMiwzICsyMjMsNyBAQCBNT0RV TEVfUEFSTV9ERVNDKGluamVjdF9sb2FkX2ZhaWx1cmUsCj4gwqBtb2R1bGVfcGFyYW1fbmFtZWQo ZW5hYmxlX2RwY2RfYmFja2xpZ2h0LCBpOTE1LmVuYWJsZV9kcGNkX2JhY2tsaWdodCwgYm9vbCwg MDYwMCk7Cj4gwqBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9kcGNkX2JhY2tsaWdodCwKPiDCoAki RW5hYmxlIHN1cHBvcnQgZm9yIERQQ0QgYmFja2xpZ2h0IGNvbnRyb2wgKGRlZmF1bHQ6ZmFsc2Up Iik7Cj4gKwo+ICttb2R1bGVfcGFyYW1fbmFtZWQoZW5hYmxlX2d2dCwgaTkxNS5lbmFibGVfZ3Z0 LCBib29sLCAwNjAwKTsKPiArTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZ3Z0LAo+ICsJIkVuYWJs ZSBzdXBwb3J0IGZvciBJbnRlbCBHVlQtZyBncmFwaGljcyB2aXJ0dWFsaXphdGlvbiBob3N0IHN1 cHBvcnQoZGVmYXVsdDpmYWxzZSkiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wYXJhbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgKPiBp bmRleCAxMzIzMjYxLi4wYWQwMjBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGFyYW1zLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5o Cj4gQEAgLTYzLDYgKzYzLDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIHsKPiDCoAlib29sIG51Y2xl YXJfcGFnZWZsaXA7Cj4gwqAJYm9vbCBlbmFibGVfZHBfbXN0Owo+IMKgCWJvb2wgZW5hYmxlX2Rw Y2RfYmFja2xpZ2h0Owo+ICsJYm9vbCBlbmFibGVfZ3Z0Owo+IMKgfTsKPiDCoAo+IMKgZXh0ZXJu IHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3Z0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjg1NTZmNTgK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmMK PiBAQCAtMCwwICsxLDkwIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiAr ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICog U29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULsKgwqBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ICsgKiBT T0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUg ImludGVsX2d2dC5oIgo+ICsKPiArLyoqCj4gKyAqIERPQzogSW50ZWwgR1ZULWcgaG9zdCBzdXBw b3J0Cj4gKyAqCj4gKyAqIEludGVsIEdWVC1nIGlzIGEgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24g dGVjaG5vbG9neSB3aGljaCBzaGFyZXMgdGhlCj4gKyAqIEdQVSBhbW9uZyBtdWx0aXBsZSB2aXJ0 dWFsIG1hY2hpbmVzIG9uIGEgdGltZS1zaGFyaW5nIGJhc2lzLiBFYWNoCj4gKyAqIHZpcnR1YWwg bWFjaGluZSBpcyBwcmVzZW50ZWQgYSB2aXJ0dWFsIEdQVSAodkdQVSksIHdoaWNoIGhhcyBlcXVp dmFsZW50Cj4gKyAqIGZlYXR1cmVzIGFzIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIEdQVSAocEdQ VSksIHNvIGk5MTUgZHJpdmVyIGNhbiBydW4KPiArICogc2VhbWxlc3NseSBpbiBhIHZpcnR1YWwg bWFjaGluZS4gVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBlbmdsaWdodG1lbnRzCj4gKyAqIG9mIEdW VCBhbmQgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIHVzZWQgYnkgR1ZUIGluIGk5MTUgZHJpdmVy Lgo+ICsgKi8KPiArCj4gK3N0YXRpYyBib29sIGlzX3N1cHBvcnRlZF9kZXZpY2Uoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpZiAoSVNfQlJPQURXRUxMKGRldl9w cml2KSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArLyoq Cj4gKyAqIGludGVsX2d2dF9pbml0IC0gaW5pdGlhbGl6ZSBHVlQgY29tcG9uZW50cwo+ICsgKiBA ZGV2X3ByaXY6IGRybSBpOTE1IHByaXZhdGUgZGF0YQo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9u IGlzIGNhbGxlZCBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc3RhZ2UgdG8gY3JlYXRlIGEgR1ZUIGRl dmljZS4KPiArICoKPiArICogUmV0dXJuczoKPiArICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2 ZSBlcnJvciBjb2RlIGlmIGZhaWxlZC4KPiArICoKPiArICovCj4gK2ludCBpbnRlbF9ndnRfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWlmICghaTkxNS5l bmFibGVfZ3Z0KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiR1ZULWcgaXMgZGlzYWJsZWQgYnkg a2VybmVsIHBhcmFtc1xuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFpc19z dXBwb3J0ZWRfZGV2aWNlKGRldl9wcml2KSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIlVuc3Vw cG9ydGVkIGRldmljZS4gR1ZULWcgaXMgZGlzYWJsZWRcbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJ fQo+ICsKPiArCWRldl9wcml2LT5ndnQgPSBpbnRlbF9ndnRfY3JlYXRlX2RldmljZShkZXZfcHJp dik7Cj4gKwlpZiAoSVNfRVJSKGRldl9wcml2LT5ndnQpKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZF UigiR1ZULWcgaXMgZGlzYWJsZWRcbiIpOwo+ICsJCWRldl9wcml2LT5ndnQgPSBOVUxMOwo+ICsJ CXJldHVybiAwOwo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRl bF9ndnRfY2xlYW51cCAtIGNsZWFudXAgR1ZUIGNvbXBvbmVudHMgd2hlbiBpOTE1IGRyaXZlciBp cyB1bmxvYWRpbmcKPiArICogQGRldl9wcml2OiBkcm0gaTkxNSBwcml2YXRlICoKPiArICoKPiAr ICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGk5MTUgZHJpdmVyIHVubG9hZGluZyBz dGFnZSwgdG8gc2h1dGRvd24KPiArICogR1ZUIGNvbXBvbmVudHMgYW5kIHJlbGVhc2UgdGhlIHJl bGF0ZWQgcmVzb3VyY2VzLgo+ICsgKi8KPiArdm9pZCBpbnRlbF9ndnRfY2xlYW51cChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWlmICghaW50ZWxfZ3Z0X2FjdGl2 ZShkZXZfcHJpdikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWludGVsX2d2dF9kZXN0cm95X2Rldmlj ZShkZXZfcHJpdi0+Z3Z0KTsKPiArCWRldl9wcml2LT5ndnQgPSBOVUxMOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3Z0LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LmI5YjM2MWIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3Z0LmgKPiBAQCAtMCwwICsxLDQ2IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodChjKSAyMDEx LTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULsKgwqBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI RQo+ICsgKiBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9JTlRFTF9HVlRfSF8KPiAr I2RlZmluZSBfSU5URUxfR1ZUX0hfCj4gKwo+ICsjaWZkZWYgQ09ORklHX0RSTV9JOTE1X0dWVAo+ ICsjaW5jbHVkZSAiZ3Z0L2d2dC5oIgo+ICtleHRlcm4gaW50IGludGVsX2d2dF9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK2V4dGVybiB2b2lkIGludGVsX2d2dF9j bGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK2V4dGVybiBzdHJ1 Y3QgaW50ZWxfZ3Z0ICppbnRlbF9ndnRfY3JlYXRlX2RldmljZSgKPiArCQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICtleHRlcm4gdm9pZCBpbnRlbF9ndnRfZGVzdHJveV9k ZXZpY2Uoc3RydWN0IGludGVsX2d2dCAqZ3Z0KTsKPiArI2Vsc2UKPiArc3RydWN0IGludGVsX2d2 dCB7Cj4gK307CgpJIHRoaW5rIHRoaXMgbWlnaHQgbm90IGJlIHRoZSBiZXN0IGlkZWEuIEknZCBq dXN0IGhhdmUgdGhlIHN0cnVjdHVyZQpkZWNsYXJlZCBhbHdheXMsIGluIHRoaXMgaGVhZGVyIChi ZWNhdXNlIHdlJ3JlIGluIGludGVsX2d2dC5oIGFmdGVyCmFsbCwgd2hhdCBhIGJldHRlciBwbGFj ZSB0byBsb29rPykgYW5kIGhhdmUgaXQgYXMgYSBkYXRhIChub3QtcG9pbnRlcikKbWVtYmVyIGlu IHRoZSBkcm1faTkxNV9wcml2YXRlIHN0cnVjdC4KClJlZ2FyZHMsIEpvb25hcwoKPiArc3RhdGlj IGlubGluZSBpbnQgaW50ZWxfZ3Z0X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxf Z3Z0X2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gK30K PiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX0lOVEVMX0dWVF9IXyAqLwotLSAKSm9vbmFzIExh aHRpbmVuCk9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCkludGVsIENvcnBvcmF0aW9uCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=