From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC PATCH] drm/i915: split GVT as separated module Date: Thu, 13 Sep 2018 15:47:22 +0300 Message-ID: <87in39zhr9.fsf@intel.com> References: <20180913052612.7147-1-zhenyuw@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180913052612.7147-1-zhenyuw@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhenyu Wang , intel-gfx@lists.freedesktop.org Cc: intel-gvt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxMyBTZXAgMjAxOCwgWmhlbnl1IFdhbmcgPHpoZW55dXdAbGludXguaW50ZWwuY29t PiB3cm90ZToKPiBKb29uYXMgcmVxdWVzdGVkIGlmIHdlIGNvdWxkIG1vdmUgR1ZUIGludG8gc2Vw YXJhdGVkIG1vZHVsZS4KPiBUaGVuIG9idmlvdXMgcmVxdWlyZW1lbnQgaXMgdG8gZXhwb3J0IGk5 MTUgZnVuY3Rpb25zIHRoYXQgR1ZUCj4gY3VycmVudGx5IHVzZS4gU28gdGhpcyBvbmUgYmxpbmRs eSB0cnlzIHRvIGV4cG9ydCBhbGwgb2YgdGhlbQo+IGZvciBwZW9wbGUgdG8gcmV2aWV3LiBTb21l IG9mIHRoZW0gYXJlIGFscmVhZHkgb25seSBmb3IgR1ZUIG5vdy4KPiBCdXQgbW9yZSBvdGhlcnMg bWlnaHQgbmVlZCBtb3JlIHRoaW5raW5nIG9uIHdoYXQgbWF5IGJldHRlciBmaXQuCj4KPiBXaXRo IHNlcGFyYXRlZCBtb2R1bGUsIHRoaXMgYWxzbyBjaGFuZ2VzIGhvdyBHVlQgbW9kdWxlIGxvYWRz IHdpdGgKPiBpOTE1LiBJbml0aWFsIGF0dGVtcHQgd2FzIHRvIHJlcXVlc3QgbG9hZGluZyBHVlQg bW9kdWxlIHdoZW4gaTkxNQo+IGluaXQsIGJ1dCBhcyBmb3IgZGVwZW5kZW5jZSBpc3N1ZSB0aGF0 IGNvdWxkbid0IHdvcmsuIFRoZW4gSSB0aGluayB3ZQo+IHNob3VsZCBqdXN0IGVuYWJsZSBHVlQg d2hlbiB1c2VyIHJlcXVlc3QgdG8gbG9hZCBpdC4gIFNvIHJlbW92ZWQgR1ZUCj4gaW5pdCBmcm9t IGk5MTUsIGFsc28gJ2VuYWJsZV9ndnQnIHBhcmFtZXRlciBhbmQgY2FsbCBHVlQgaW5pdCBmdW5j dGlvbgo+IHdoZW4gbW9kdWxlIGxvYWQuIEJ1dCBmb3IgR1ZUIGluaXQsIHdlIHN0aWxsIG5lZWQg c3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSBmb3IgdGFyZ2V0IGRldmljZSwgc28gdGhpcyBqdXN0 IGhhY2tzIGl0IHRvCj4gZXhwb3J0Li5NYXliZSB3ZSBjYW4gYWRkIHNvbWUgaW50ZXJmYWNlIHRv IGdldCB0aGF0IGZyb20gaTkxNT8KClNvbWUgZ2V0L3B1dCBpbnRlcmZhY2UgaW5kZWVkIHNlZW1z IG11Y2ggYmV0dGVyIHRoYW4gZXhwb3J0aW5nIGl0CmRpcmVjdGx5LgoKU29tZSBvdGhlciBjb21t ZW50cyBpbmxpbmUuCgo+IEFub3RoZXIgcHJvYmxlbSBmb3Igc2VwYXJhdGVkIG1vZHVsZSBpcyB0 aGF0IEdWVCB3YW50cyBhIGNsZWFuCj4gaW5pdGlhbCBNTUlPIHNuYXBzaG90IGZvciB2R1BVIGRl ZmF1bHQgc3RhdGUuIE5vdyBpbiB1cHN0cmVhbSB3ZQo+IHdpbGwgdGFrZSB0aGF0IHNuYXBzaG90 IGR1cmluZyBHVlQgaW5pdC4gRm9yIHNlcGFyYXRlZCBtb2R1bGUsIHdlCj4gbWlnaHQgbmVlZCBp OTE1IHRvIGR1bXAgaXQgZm9yIEdWVCB0aGVuIEdWVCBjb3VsZCBnZXQgaXQgd2hlbiBpbml0Lgo+ IFRoaXMgcGFydCBvZiBjaGFuZ2UgZm9yIGk5MTUgYW5kIEdWVCBpcyBub3QgaW5jbHVkZWQgaW4g dGhpcyBwYXRjaCB5ZXQuCj4KPiBDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5A bGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFpoZW55dSBXYW5nIDx6aGVueXV3QGxp bnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyAgICAg ICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAg ICAgICAgfCAgIDMgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICAgICAg ICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgICAgICAgICAgICB8 ICA0MCArKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgICAgICAg fCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICB8ICAx NyArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgfCAgIDYg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgfCAgMTEgKysK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgfCAgIDIgKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAgICB8ICAgMSArCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jIHwgICAyICsKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BhcmFtcy5jICAgICAgICB8ICAgMyAtCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGFyYW1zLmggICAgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVxdWVzdC5jICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuYyAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dnQuYyAgICAgICAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d2dC5oICAgICAgICAgIHwgIDUwIC0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYyAgICAgICB8ICAgMyArCj4gIDIxIGZpbGVzIGNoYW5nZWQsIDgy IGluc2VydGlvbnMoKyksIDIxOSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gaW5kZXgg MzNhNDU4YjdmMWZjLi5hMDUyNjFjYWJmNTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPiBAQCAt OTYsNyArOTYsNyBAQCBjb25maWcgRFJNX0k5MTVfVVNFUlBUUgo+ICAJICBJZiBpbiBkb3VidCwg c2F5ICJZIi4KPiAgCj4gIGNvbmZpZyBEUk1fSTkxNV9HVlQKPiAtICAgICAgICBib29sICJFbmFi bGUgSW50ZWwgR1ZULWcgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24gaG9zdCBzdXBwb3J0Igo+ICsg ICAgICAgIHRyaXN0YXRlICJFbmFibGUgSW50ZWwgR1ZULWcgZ3JhcGhpY3MgdmlydHVhbGl6YXRp b24gaG9zdCBzdXBwb3J0Igo+ICAgICAgICAgIGRlcGVuZHMgb24gRFJNX0k5MTUKPiAgICAgICAg ICBkZXBlbmRzIG9uIDY0QklUCj4gICAgICAgICAgZGVmYXVsdCBuCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKPiBpbmRleCA1Nzk0ZjEwMmY5YjguLmIzYWNkNDMxYzM1ZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gQEAgLTE4MiwxMCArMTgyLDcgQEAgaTkxNS15ICs9IGk5MTVfcGVyZi5vIFwKPiAg CSAgaTkxNV9vYV9jbmwubyBcCj4gIAkgIGk5MTVfb2FfaWNsLm8KPiAgCj4gLWlmZXEgKCQoQ09O RklHX0RSTV9JOTE1X0dWVCkseSkKPiAtaTkxNS15ICs9IGludGVsX2d2dC5vCj4gIGluY2x1ZGUg JChzcmMpL2d2dC9NYWtlZmlsZQo+IC1lbmRpZgoKSSB0aGluayB0aGlzIHNob3VsZCBoYXBwZW4g dmlhCgpvYmotJChDT05GSUdfRFJNX0k5MTVfR1ZUKSArPSBndnQvCgpDb250cmFzdCB3aXRoIGRy aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBhbmQKZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUu CgpBZGFwdCB0aGUgZ3Z0L01ha2VmaWxlIGFjY29yZGluZ2x5LCBpbnN0ZWFkIG9mIGJhc2luZyB0 aGVtIG9uIE1ha2VmaWxlCmluY2x1ZGVzLgoKPiAgCj4gICMgTFBFIEF1ZGlvIGZvciBWTFYgYW5k IENIVAo+ICBpOTE1LXkgKz0gaW50ZWxfbHBlX2F1ZGlvLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01h a2VmaWxlCj4gaW5kZXggYjAxNmRjNzUzZGI5Li5hMmUxZGU3NDVkNjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlCj4gQEAgLTYsNSArNiw2IEBAIEdWVF9TT1VSQ0UgOj0gZ3Z0Lm8g YXBlcnR1cmVfZ20ubyBoYW5kbGVycy5vIHZncHUubyB0cmFjZV9wb2ludHMubyBmaXJtd2FyZS5v IFwKPiAgCWZiX2RlY29kZXIubyBkbWFidWYubyBwYWdlX3RyYWNrLm8KPiAgCj4gIGNjZmxhZ3Mt eQkJCQkrPSAtSSQoc3JjKSAtSSQoc3JjKS8kKEdWVF9ESVIpCj4gLWk5MTUteQkJCQkJKz0gJChh ZGRwcmVmaXggJChHVlRfRElSKS8sICQoR1ZUX1NPVVJDRSkpCj4gK2k5MTVfZ3Z0LXkJCQkJOj0g JChhZGRwcmVmaXggJChHVlRfRElSKS8sICQoR1ZUX1NPVVJDRSkpCj4gK29iai0kKENPTkZJR19E Uk1fSTkxNV9HVlQpICAgICAgICAgICAgICArPSBpOTE1X2d2dC5vCj4gIG9iai0kKENPTkZJR19E Uk1fSTkxNV9HVlRfS1ZNR1QpCSs9ICQoR1ZUX0RJUikva3ZtZ3Qubwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Z3Z0LmMKPiBpbmRleCA2ZWY1YTdmYzcwZGYuLjJhNmJiYzg5ZTIwZiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmMKPiBAQCAtMzAsMTAgKzMwLDExIEBACj4gICAqCj4gICAqLwo+ICAKPiArI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gICNpbmNs dWRlIDx4ZW4veGVuLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cj4gLQo+ICsjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVk ZSAiZ3Z0LmgiCj4gICNpbmNsdWRlIDxsaW51eC92ZmlvLmg+Cj4gQEAgLTIyOCw3ICsyMjksNiBA QCBpbnQgaW50ZWxfZ3Z0X2luaXRfaG9zdCh2b2lkKQo+ICAKPiAgCWd2dF9kYmdfY29yZSgiUnVu bmluZyB3aXRoIGh5cGVydmlzb3IgJXMgaW4gaG9zdCBtb2RlXG4iLAo+ICAJCQlzdXBwb3J0ZWRf aHlwZXJ2aXNvcnNbaW50ZWxfZ3Z0X2hvc3QuaHlwZXJ2aXNvcl90eXBlXSk7Cj4gLQo+ICAJaW50 ZWxfZ3Z0X2hvc3QuaW5pdGlhbGl6ZWQgPSB0cnVlOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAt NDY3LDYgKzQ2Nyw0MiBAQCBpbnQgaW50ZWxfZ3Z0X2luaXRfZGV2aWNlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBp bnQgX19pbml0IGk5MTVfZ3Z0X2luaXQodm9pZCkKPiArewo+ICsJaWYgKCF0cnlfbW9kdWxlX2dl dChpOTE1X3ByaXZfZXhwb3J0LT5kcm0uZGV2LT5kcml2ZXItPm93bmVyKSkgewo+ICsJCWd2dF9l cnIoImdldCBpOTE1IG1vZHVsZSBmYWlsXG4iKTsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gKwkJ Cj4gKwlpZiAoaW50ZWxfZ3Z0X2luaXRfaG9zdCgpKSB7Cj4gKwkJZ3Z0X2VycigiaW5pdCBob3N0 IGZhaWxcbiIpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsJaWYgKGludGVsX2d2dF9pbml0X2Rl dmljZShpOTE1X3ByaXZfZXhwb3J0KSkgewo+ICsJCWd2dF9lcnIoImluaXQgZGV2aWNlIGZhaWxc biIpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsJCj4gKwlyZXR1cm4gMDsKPiArZXJyOgo+ICsJ bW9kdWxlX3B1dChpOTE1X3ByaXZfZXhwb3J0LT5kcm0uZGV2LT5kcml2ZXItPm93bmVyKTsKPiAr CXJldHVybiAtMTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19leGl0IGk5MTVfZ3Z0X2V4aXQo dm9pZCkKPiArewo+ICsJaWYgKCFpbnRlbF9ndnRfYWN0aXZlKGk5MTVfcHJpdl9leHBvcnQpKQo+ ICsJCXJldHVybjsKPiArCWludGVsX2d2dF9jbGVhbl9kZXZpY2UoaTkxNV9wcml2X2V4cG9ydCk7 Cj4gKwltb2R1bGVfcHV0KGk5MTVfcHJpdl9leHBvcnQtPmRybS5kZXYtPmRyaXZlci0+b3duZXIp Owo+ICt9Cj4gKwo+ICttb2R1bGVfaW5pdChpOTE1X2d2dF9pbml0KTsKPiArbW9kdWxlX2V4aXQo aTkxNV9ndnRfZXhpdCk7Cj4gKwo+ICAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfR1ZU X0tWTUdUKQo+ICBNT0RVTEVfU09GVERFUCgicHJlOiBrdm1ndCIpOwo+ICAjZW5kaWYKPiArCj4g K01PRFVMRV9MSUNFTlNFKCJHUEwgYW5kIGFkZGl0aW9uYWwgcmlnaHRzIik7Cj4gK01PRFVMRV9B VVRIT1IoIkludGVsIENvcnBvcmF0aW9uIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+IGluZGV4 IDMxZjZjZGJlNWM0Mi4uZjVlOTg2OWFlOTFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+ IEBAIC00ODAsNiArNDgwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX3ZncHVfd3JpdGVf cGNpX2JhcihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKPiAgCj4gIGludCBpbnRlbF9ndnRfaW5p dF92Z3B1X3R5cGVzKHN0cnVjdCBpbnRlbF9ndnQgKmd2dCk7Cj4gIHZvaWQgaW50ZWxfZ3Z0X2Ns ZWFuX3ZncHVfdHlwZXMoc3RydWN0IGludGVsX2d2dCAqZ3Z0KTsKPiArZXh0ZXJuIGludCBpbnRl bF9ndnRfaW5pdF9kZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAr ZXh0ZXJuIHZvaWQgaW50ZWxfZ3Z0X2NsZWFuX2RldmljZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ICtleHRlcm4gaW50IGludGVsX2d2dF9pbml0X2hvc3Qodm9pZCk7Cj4g IAo+ICBzdHJ1Y3QgaW50ZWxfdmdwdSAqaW50ZWxfZ3Z0X2NyZWF0ZV9pZGxlX3ZncHUoc3RydWN0 IGludGVsX2d2dCAqZ3Z0KTsKPiAgdm9pZCBpbnRlbF9ndnRfZGVzdHJveV9pZGxlX3ZncHUoc3Ry dWN0IGludGVsX3ZncHUgKnZncHUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDc3 YTRhMDFkZGMwOC4uNGFkOTY2NTRkOTgxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g QEAgLTEwNzIsOCArMTA3Miw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX29wdGlvbnMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWludGVsX3Nhbml0aXplX2Vu YWJsZV9wcGd0dChkZXZfcHJpdiwKPiAgCQkJCQkgICAgaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3Bw Z3R0KTsKPiAgCURSTV9ERUJVR19EUklWRVIoInBwZ3R0IG1vZGU6ICVpXG4iLCBpOTE1X21vZHBh cmFtcy5lbmFibGVfcHBndHQpOwo+IC0KPiAtCWludGVsX2d2dF9zYW5pdGl6ZV9vcHRpb25zKGRl dl9wcml2KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTExODgsMTggKzExODYsMTAgQEAgc3RhdGlj IGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiY2FuJ3QgZW5hYmxlIE1TSSIpOwo+ICAJfQo+ICAK PiAtCXJldCA9IGludGVsX2d2dF9pbml0KGRldl9wcml2KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290 byBlcnJfbXNpOwo+IC0KPiAgCWludGVsX29wcmVnaW9uX3NldHVwKGRldl9wcml2KTsKPiAgCj4g IAlyZXR1cm4gMDsKPiAgCj4gLWVycl9tc2k6Cj4gLQlpZiAocGRldi0+bXNpX2VuYWJsZWQpCj4g LQkJcGNpX2Rpc2FibGVfbXNpKHBkZXYpOwo+IC0JcG1fcW9zX3JlbW92ZV9yZXF1ZXN0KCZkZXZf cHJpdi0+cG1fcW9zKTsKPiAgZXJyX2dndHQ6Cj4gIAlpOTE1X2dndHRfY2xlYW51cF9odyhkZXZf cHJpdik7Cj4gIGVycl9wZXJmOgo+IEBAIC0xMzM1LDYgKzEzMjUsOSBAQCBzdGF0aWMgdm9pZCBp OTE1X3dlbGNvbWVfbWVzc2FnZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJCURSTV9JTkZPKCJEUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNIGVuYWJsZWRcbiIpOwo+ICB9 Cj4gIAo+ICtzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNV9wcml2X2V4cG9ydDsKPiArRVhQ T1JUX1NZTUJPTF9HUEwoaTkxNV9wcml2X2V4cG9ydCk7CgpJIHRoaW5rIHdlIHNob3VsZCBhdm9p ZCBleHBvcnRpbmcgdGhpcy4gSSBkb24ndCBrbm93IHdoYXQgdGhlIGJlc3QKYXBwcm9hY2ggd291 bGQgYmUsIGJ1dCBhdCBsZWFzdCBwcm92aWRpbmcgc29tZSBleHBvcnRlZCBnZXQvcHV0IGNhbGxz CnNlZW1zIGJldHRlci4gTWF5YmUgdGhlcmUgYXJlIGJldHRlciBpZGVhcyBhcyB3ZWxsLgoKPiAr Cj4gIC8qKgo+ICAgKiBpOTE1X2RyaXZlcl9sb2FkIC0gc2V0dXAgY2hpcCBhbmQgY3JlYXRlIGFu IGluaXRpYWwgY29uZmlnCj4gICAqIEBwZGV2OiBQQ0kgZGV2aWNlCj4gQEAgLTE0MTIsNiArMTQw NSw4IEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBz dHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQo+ICAKPiAgCWk5MTVfd2VsY29tZV9tZXNzYWdlcyhk ZXZfcHJpdik7Cj4gIAo+ICsJaTkxNV9wcml2X2V4cG9ydCA9IGRldl9wcml2Owo+ICsJCj4gIAly ZXR1cm4gMDsKPiAgCj4gIG91dF9jbGVhbnVwX2h3Ogo+IEBAIC0xNDQ2LDggKzE0NDEsNiBAQCB2 b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWRy bV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRldik7Cj4gIAo+IC0JaW50ZWxfZ3Z0X2NsZWFudXAo ZGV2X3ByaXYpOwo+IC0KPiAgCWludGVsX21vZGVzZXRfY2xlYW51cChkZXYpOwo+ICAKPiAgCWlu dGVsX2Jpb3NfY2xlYW51cChkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5k ZXggZTViOWQzYzc3MTM5Li5jNjM4OTY3OWIyYTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtNzksOCArNzksNiBAQAo+ICAjaW5jbHVkZSAiaTkxNV90aW1lbGluZS5oIgo+ICAj aW5jbHVkZSAiaTkxNV92bWEuaCIKPiAgCj4gLSNpbmNsdWRlICJpbnRlbF9ndnQuaCIKPiAtCj4g IC8qIEdlbmVyYWwgY3VzdG9taXphdGlvbjoKPiAgICovCj4gIAo+IEBAIC0xNTg0LDYgKzE1ODIs OCBAQCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgewo+ICAJdTggdm9sdGFnZV9sZXZlbDsKPiAg fTsKPiAgCj4gK3N0cnVjdCBpbnRlbF9ndnQ7Cj4gKwo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSBkcm07Cj4gIAo+IEBAIC0zODM4LDQgKzM4MzgsNiBA QCBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9od3NfY3NiX3dyaXRlX2luZGV4KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICAJCXJldHVybiBJOTE1X0hXU19DU0JfV1JJVEVfSU5ERVg7 Cj4gIH0KPiAgCj4gK2V4dGVybiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNV9wcml2X2V4 cG9ydDsKPiArCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDA0NTNl YjQyYTFhMy4uM2M5NDYwOTY5ZGZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAg LTcwMSw2ICs3MDEsNyBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfYWxsb2Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlyZXR1cm4ga21lbV9jYWNoZV96YWxsb2Mo ZGV2X3ByaXYtPm9iamVjdHMsIEdGUF9LRVJORUwpOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BM KGk5MTVfZ2VtX29iamVjdF9hbGxvYyk7Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX29iamVjdF9mcmVl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiBAQCAtMTAyOSw2ICsxMDMw LDcgQEAgaW50IGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3dyaXRlKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTkxNV9nZW1fb2JqX3By ZXBhcmVfc2htZW1fd3JpdGUpOwo+ICAKPiAgc3RhdGljIHZvaWQKPiAgc2htZW1fY2xmbHVzaF9z d2l6emxlZF9yYW5nZShjaGFyICphZGRyLCB1bnNpZ25lZCBsb25nIGxlbmd0aCwKPiBAQCAtMjcz MCw2ICsyNzMyLDcgQEAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCWxpc3RfYWRkKCZvYmotPm1tLmxpbmssICZpOTE1 LT5tbS51bmJvdW5kX2xpc3QpOwo+ICAJc3Bpbl91bmxvY2soJmk5MTUtPm1tLm9ial9sb2NrKTsK PiAgfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMpOwo+ ICAKPiAgc3RhdGljIGludCBfX19faTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICB7Cj4gQEAgLTI4OTYsNiArMjg5OSw3IEBAIHZvaWQg Kmk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIAlwdHIgPSBFUlJfUFRSKHJldCk7Cj4gIAlnb3RvIG91dF91bmxvY2s7Cj4gIH0KPiArRVhQ T1JUX1NZTUJPTF9HUEwoaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXApOwo+ICAKPiAgc3RhdGljIGlu dAo+ICBpOTE1X2dlbV9vYmplY3RfcHdyaXRlX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+IEBAIC0zOTk5LDYgKzQwMDMsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB3cml0ZSkKPiAg CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAr RVhQT1JUX1NZTUJPTF9HUEwoaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKTsKPiAg Cj4gIC8qKgo+ICAgKiBDaGFuZ2VzIHRoZSBjYWNoZS1sZXZlbCBvZiBhbiBvYmplY3QgYWNyb3Nz IGFsbCBWTUEuCj4gQEAgLTQzNjQsNiArNDM2OSw3IEBAIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9f Y3B1X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHdyaXRlKQo+ ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fY3B1X2RvbWFpbik7Cj4gIAo+ICAvKiBUaHJvdHRsZSBvdXIgcmVuZGVyaW5nIGJ5 IHdhaXRpbmcgdW50aWwgdGhlIHJpbmcgaGFzIGNvbXBsZXRlZCBvdXIgcmVxdWVzdHMKPiAgICog ZW1pdHRlZCBvdmVyIDIwIG1zZWMgYWdvLgo+IEBAIC00NDkzLDYgKzQ0OTksNyBAQCBpOTE1X2dl bV9vYmplY3RfZ2d0dF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCj4g IAlyZXR1cm4gdm1hOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVfZ2VtX29iamVjdF9n Z3R0X3Bpbik7Cj4gIAo+ICBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCBfX2J1 c3lfcmVhZF9mbGFnKHVuc2lnbmVkIGludCBpZCkKPiAgewo+IEBAIC00NzE0LDYgKzQ3MjEsNyBA QCB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCj4gIAo+ICAJaTkxNV9nZW1faW5mb19hZGRfb2JqKHRvX2k5MTUob2JqLT5iYXNlLmRldiks IG9iai0+YmFzZS5zaXplKTsKPiAgfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChpOTE1X2dlbV9vYmpl Y3RfaW5pdCk7Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rf b3BzIGk5MTVfZ2VtX29iamVjdF9vcHMgPSB7Cj4gIAkuZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1Rf SEFTX1NUUlVDVF9QQUdFIHwKPiBAQCAtNDgyMCw2ICs0ODI4LDcgQEAgaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQo+ICAJ aTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKPiAgCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gIH0K PiArRVhQT1JUX1NZTUJPTF9HUEwoaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSk7Cj4gIAo+ICBzdGF0 aWMgYm9vbCBkaXNjYXJkX2JhY2tpbmdfc3RvcmFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICB7Cj4gQEAgLTUwMTAsNiArNTAxOSw3IEBAIHZvaWQgX19pOTE1X2dlbV9vYmpl Y3RfcmVsZWFzZV91bmxlc3NfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Cj4gIAllbHNlCj4gIAkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICB9Cj4gK0VYUE9SVF9T WU1CT0xfR1BMKF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfdW5sZXNzX2FjdGl2ZSk7Cj4gIAo+ ICB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICB7Cj4gQEAgLTYxMTEsNiArNjEyMSw3IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgbikKPiAgCXNnID0gaTkx NV9nZW1fb2JqZWN0X2dldF9zZyhvYmosIG4sICZvZmZzZXQpOwo+ICAJcmV0dXJuIG50aF9wYWdl KHNnX3BhZ2Uoc2cpLCBvZmZzZXQpOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVfZ2Vt X29iamVjdF9nZXRfcGFnZSk7Cj4gIAo+ICAvKiBMaWtlIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZSgpLCBidXQgbWFyayB0aGUgcmV0dXJuZWQgcGFnZSBkaXJ0eSAqLwo+ICBzdHJ1Y3QgcGFnZSAq Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGYxNWEwMzk3 NzJkYi4uZDc3ZmFiYzg1NzFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+IEBAIC0xODUsNiArMTg1LDcgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3JlbGVh c2Uoc3RydWN0IGtyZWYgKnJlZikKPiAgCWlmIChsbGlzdF9hZGQoJmN0eC0+ZnJlZV9saW5rLCAm aTkxNS0+Y29udGV4dHMuZnJlZV9saXN0KSkKPiAgCQlxdWV1ZV93b3JrKGk5MTUtPndxLCAmaTkx NS0+Y29udGV4dHMuZnJlZV93b3JrKTsKPiAgfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChpOTE1X2dl bV9jb250ZXh0X3JlbGVhc2UpOwo+ICAKPiAgc3RhdGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICB7Cj4gQEAgLTQyMCw2ICs0MjEsNyBAQCBpOTE1 X2dlbV9jb250ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0dXJuIGN0eDsKPiAgfQo+ICtFWFBP UlRfU1lNQk9MX0dQTChpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9ndnQpOwo+ICAKPiAgc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gaW5kZXggODJlMmNhMTdhNDQxLi5hYzk4YjA5NDIyMGMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+IEBAIC0yNDQsNiArMjQ0 LDcgQEAgc3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAKPiAgCXJldHVybiBkcm1fZ2VtX2RtYWJ1Zl9leHBvcnQoZGV2LCAmZXhw X2luZm8pOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVfZ2VtX3ByaW1lX2V4cG9ydCk7 Cj4gIAo+ICBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZG1hYnVmKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9mZW5jZV9yZWcuYwo+IGluZGV4IGQ1NDhhYzA1Y2NkNy4uMjFiNzljMWY2MWQwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBAQCAtNDIw LDYgKzQyMCw3IEBAIGk5MTVfcmVzZXJ2ZV9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAlsaXN0X2RlbCgmZmVuY2UtPmxpbmspOwo+ICAJcmV0dXJuIGZlbmNlOwo+ ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVfcmVzZXJ2ZV9mZW5jZSk7Cj4gIAo+ICAvKioK PiAgICogaTkxNV91bnJlc2VydmVfZmVuY2UgLSBSZWNsYWltIGEgcmVzZXJ2ZWQgZmVuY2UKPiBA QCAtNDMzLDYgKzQzNCw3IEBAIHZvaWQgaTkxNV91bnJlc2VydmVfZmVuY2Uoc3RydWN0IGRybV9p OTE1X2ZlbmNlX3JlZyAqZmVuY2UpCj4gIAo+ICAJbGlzdF9hZGQoJmZlbmNlLT5saW5rLCAmZmVu Y2UtPmk5MTUtPm1tLmZlbmNlX2xpc3QpOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVf dW5yZXNlcnZlX2ZlbmNlKTsKPiAgCj4gIC8qKgo+ICAgKiBpOTE1X2dlbV9yZXZva2VfZmVuY2Vz IC0gcmV2b2tlIGZlbmNlIHN0YXRlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBp bmRleCA0MTM3YWY0YmQ4ZjUuLjgwYWJjZjIzNDkxYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gQEAgLTQxMDcsNiArNDEwNyw3IEBAIGludCBpOTE1X2dlbV9ndHRfaW5z ZXJ0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJCQkJCSAgIHNpemUsIGFsaWdu bWVudCwgY29sb3IsCj4gIAkJCQkJICAgc3RhcnQsIGVuZCwgRFJNX01NX0lOU0VSVF9FVklDVCk7 Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTkxNV9nZW1fZ3R0X2luc2VydCk7Cj4gIAo+ICAj aWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCj4gICNpbmNsdWRlICJzZWxm dGVzdHMvbW9ja19ndHQuYyIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBpbmRleCAy OTVlOTgxZTRhMzkuLjhmNTZjMjViNmQ3ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BhcmFtcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJh bXMuYwo+IEBAIC0xNzEsOSArMTcxLDYgQEAgaTkxNV9wYXJhbV9uYW1lZF91bnNhZmUoaW5qZWN0 X2xvYWRfZmFpbHVyZSwgdWludCwgMDQwMCwKPiAgaTkxNV9wYXJhbV9uYW1lZChlbmFibGVfZHBj ZF9iYWNrbGlnaHQsIGJvb2wsIDA2MDAsCj4gIAkiRW5hYmxlIHN1cHBvcnQgZm9yIERQQ0QgYmFj a2xpZ2h0IGNvbnRyb2wgKGRlZmF1bHQ6ZmFsc2UpIik7Cj4gIAo+IC1pOTE1X3BhcmFtX25hbWVk KGVuYWJsZV9ndnQsIGJvb2wsIDA0MDAsCj4gLQkiRW5hYmxlIHN1cHBvcnQgZm9yIEludGVsIEdW VC1nIGdyYXBoaWNzIHZpcnR1YWxpemF0aW9uIGhvc3Qgc3VwcG9ydChkZWZhdWx0OmZhbHNlKSIp Owo+IC0KPiAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9wcmludF9wYXJhbShzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKnAsCj4gIAkJCQkJIGNvbnN0IGNoYXIgKm5hbWUsCj4gIAkJCQkJIGNvbnN0 IGNoYXIgKnR5cGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFy YW1zLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oCj4gaW5kZXggNmM0ZDRh MjE0NzRiLi4xNmI4YWY2NTQ2YzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wYXJhbXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgK PiBAQCAtNjcsOCArNjcsNyBAQCBzdHJ1Y3QgZHJtX3ByaW50ZXI7Cj4gIAlwYXJhbShib29sLCB2 ZXJib3NlX3N0YXRlX2NoZWNrcywgdHJ1ZSkgXAo+ICAJcGFyYW0oYm9vbCwgbnVjbGVhcl9wYWdl ZmxpcCwgZmFsc2UpIFwKPiAgCXBhcmFtKGJvb2wsIGVuYWJsZV9kcF9tc3QsIHRydWUpIFwKPiAt CXBhcmFtKGJvb2wsIGVuYWJsZV9kcGNkX2JhY2tsaWdodCwgZmFsc2UpIFwKPiAtCXBhcmFtKGJv b2wsIGVuYWJsZV9ndnQsIGZhbHNlKQo+ICsJcGFyYW0oYm9vbCwgZW5hYmxlX2RwY2RfYmFja2xp Z2h0LCBmYWxzZSkKPiAgCj4gICNkZWZpbmUgTUVNQkVSKFQsIG1lbWJlciwgLi4uKSBUIG1lbWJl cjsKPiAgc3RydWN0IGk5MTVfcGFyYW1zIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu Ywo+IGluZGV4IDA5ZWQ0ODgzM2I1NC4uZDMxN2FiNTk4MjJjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtODM5LDYgKzgzOSw3IEBAIGk5MTVfcmVxdWVzdF9hbGxv YyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpCj4gIAlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAgCXJldHVybiBFUlJfUFRSKHJl dCk7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTkxNV9yZXF1ZXN0X2FsbG9jKTsKPiAgCj4g IHN0YXRpYyBpbnQKPiAgaTkxNV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVx dWVzdCAqdG8sIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZyb20pCj4gQEAgLTExNTEsNiArMTE1Miw3 IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ ICAJaWYgKHByZXYgJiYgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkKPiAgCQlpOTE1X3Jl cXVlc3RfcmV0aXJlX3VwdG8ocHJldik7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTkxNV9y ZXF1ZXN0X2FkZCk7Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb2NhbF9jbG9ja191cyh1 bnNpZ25lZCBpbnQgKmNwdSkKPiAgewo+IEBAIC0xNDE1LDYgKzE0MTcsNyBAQCBsb25nIGk5MTVf cmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICAKPiAgCXJldHVybiB0aW1l b3V0Owo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGk5MTVfcmVxdWVzdF93YWl0KTsKPiAgCj4g IHN0YXRpYyB2b2lkIHJpbmdfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5n KQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gaW5kZXggMzFlZmM5NzFhM2E4Li45ZDMz M2JhYjQwMzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtNzgzLDYgKzc4Myw3 IEBAIHZvaWQgaTkxNV92bWFfY2xvc2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIAkgKi8KPiAg CWxpc3RfYWRkX3RhaWwoJnZtYS0+Y2xvc2VkX2xpbmssICZ2bWEtPnZtLT5pOTE1LT5ndC5jbG9z ZWRfdm1hKTsKPiAgfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChpOTE1X3ZtYV9jbG9zZSk7Cj4gIAo+ ICB2b2lkIGk5MTVfdm1hX3Jlb3BlbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+IEBAIC0x MDI4LDYgKzEwMjksNyBAQCBpbnQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVf dm1hICp2bWEsCj4gIAlleHBvcnRfZmVuY2Uodm1hLCBycSwgZmxhZ3MpOwo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTkxNV92bWFfbW92ZV90b19hY3RpdmUpOwo+ICAK PiAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d2dC5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggYzIy YjNlMThhMGY1Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndnQuYwo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwxNDMgKzAsMCBAQAo+IC0vKgo+IC0gKiBD b3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgo+IC0gKgo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiAtICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAtICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+IC0g KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gLSAqIFNvZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4gLSAqIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MgSU4gVEhFCj4gLSAqIFNPRlRXQVJFLgo+IC0gKi8KPiAtCj4gLSNpbmNsdWRlICJp OTE1X2Rydi5oIgo+IC0jaW5jbHVkZSAiaW50ZWxfZ3Z0LmgiCj4gLQo+IC0vKioKPiAtICogRE9D OiBJbnRlbCBHVlQtZyBob3N0IHN1cHBvcnQKPiAtICoKPiAtICogSW50ZWwgR1ZULWcgaXMgYSBn cmFwaGljcyB2aXJ0dWFsaXphdGlvbiB0ZWNobm9sb2d5IHdoaWNoIHNoYXJlcyB0aGUKPiAtICog R1BVIGFtb25nIG11bHRpcGxlIHZpcnR1YWwgbWFjaGluZXMgb24gYSB0aW1lLXNoYXJpbmcgYmFz aXMuIEVhY2gKPiAtICogdmlydHVhbCBtYWNoaW5lIGlzIHByZXNlbnRlZCBhIHZpcnR1YWwgR1BV ICh2R1BVKSwgd2hpY2ggaGFzIGVxdWl2YWxlbnQKPiAtICogZmVhdHVyZXMgYXMgdGhlIHVuZGVy bHlpbmcgcGh5c2ljYWwgR1BVIChwR1BVKSwgc28gaTkxNSBkcml2ZXIgY2FuIHJ1bgo+IC0gKiBz ZWFtbGVzc2x5IGluIGEgdmlydHVhbCBtYWNoaW5lLgo+IC0gKgo+IC0gKiBUbyB2aXJ0dWFsaXpl IEdQVSByZXNvdXJjZXMgR1ZULWcgZHJpdmVyIGRlcGVuZHMgb24gaHlwZXJ2aXNvciB0ZWNobm9s b2d5Cj4gLSAqIGUuZyBLVk0vVkZJTy9tZGV2LCBYZW4sIGV0Yy4gdG8gcHJvdmlkZSByZXNvdXJj ZSBhY2Nlc3MgdHJhcHBpbmcgY2FwYWJpbGl0eQo+IC0gKiBhbmQgYmUgdmlydHVhbGl6ZWQgd2l0 aGluIEdWVC1nIGRldmljZSBtb2R1bGUuIE1vcmUgYXJjaGl0ZWN0dXJhbCBkZXNpZ24KPiAtICog ZG9jIGlzIGF2YWlsYWJsZSBvbiBodHRwczovLzAxLm9yZy9ncm91cC8yMjMwL2RvY3VtZW50YXRp b24tbGlzdC4KPiAtICovCj4gLQo+IC1zdGF0aWMgYm9vbCBpc19zdXBwb3J0ZWRfZGV2aWNlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0JaWYgKElTX0JST0FEV0VM TChkZXZfcHJpdikpCj4gLQkJcmV0dXJuIHRydWU7Cj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJp dikpCj4gLQkJcmV0dXJuIHRydWU7Cj4gLQlpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+IC0J CXJldHVybiB0cnVlOwo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+IC0JCXJldHVybiB0 cnVlOwo+IC0JcmV0dXJuIGZhbHNlOwo+IC19Cj4gLQo+IC0vKioKPiAtICogaW50ZWxfZ3Z0X3Nh bml0aXplX29wdGlvbnMgLSBzYW5pdGl6ZSBHVlQgcmVsYXRlZCBvcHRpb25zCj4gLSAqIEBkZXZf cHJpdjogZHJtIGk5MTUgcHJpdmF0ZSBkYXRhCj4gLSAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkIGF0IHRoZSBpOTE1IG9wdGlvbnMgc2FuaXRpemUgc3RhZ2UuCj4gLSAqLwo+IC12b2lk IGludGVsX2d2dF9zYW5pdGl6ZV9vcHRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAtewo+IC0JaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3Z0KQo+IC0JCXJldHVy bjsKPiAtCj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKSB7Cj4gLQkJRFJNX0lO Rk8oIkdWVC1nIGlzIGRpc2FibGVkIGZvciBndWVzdFxuIik7Cj4gLQkJZ290byBiYWlsOwo+IC0J fQo+IC0KPiAtCWlmICghaXNfc3VwcG9ydGVkX2RldmljZShkZXZfcHJpdikpIHsKPiAtCQlEUk1f SU5GTygiVW5zdXBwb3J0ZWQgZGV2aWNlLiBHVlQtZyBpcyBkaXNhYmxlZFxuIik7Cj4gLQkJZ290 byBiYWlsOwo+IC0JfQo+IC0KPiAtCXJldHVybjsKPiAtYmFpbDoKPiAtCWk5MTVfbW9kcGFyYW1z LmVuYWJsZV9ndnQgPSAwOwo+IC19Cj4gLQo+IC0vKioKPiAtICogaW50ZWxfZ3Z0X2luaXQgLSBp bml0aWFsaXplIEdWVCBjb21wb25lbnRzCj4gLSAqIEBkZXZfcHJpdjogZHJtIGk5MTUgcHJpdmF0 ZSBkYXRhCj4gLSAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBpbml0aWFs aXphdGlvbiBzdGFnZSB0byBjcmVhdGUgYSBHVlQgZGV2aWNlLgo+IC0gKgo+IC0gKiBSZXR1cm5z Ogo+IC0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgZmFpbGVkLgo+ IC0gKgo+IC0gKi8KPiAtaW50IGludGVsX2d2dF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAtewo+IC0JaW50IHJldDsKPiAtCj4gLQlpZiAoaTkxNV9pbmplY3RfbG9h ZF9mYWlsdXJlKCkpCj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gLQo+IC0JaWYgKCFpOTE1X21vZHBh cmFtcy5lbmFibGVfZ3Z0KSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiR1ZULWcgaXMgZGlzYWJs ZWQgYnkga2VybmVsIHBhcmFtc1xuIik7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9Cj4gLQo+IC0JaWYg KFVTRVNfR1VDX1NVQk1JU1NJT04oZGV2X3ByaXYpKSB7Cj4gLQkJRFJNX0VSUk9SKCJpOTE1IEdW VC1nIGxvYWRpbmcgZmFpbGVkIGR1ZSB0byBHcmFwaGljcyB2aXJ0dWFsaXphdGlvbiBpcyBub3Qg eWV0IHN1cHBvcnRlZCB3aXRoIEd1QyBzdWJtaXNzaW9uXG4iKTsKPiAtCQlyZXR1cm4gLUVJTzsK PiAtCX0KPiAtCj4gLQkvKgo+IC0JICogV2UncmUgbm90IGluIGhvc3Qgb3IgZmFpbCB0byBmaW5k IGEgTVBUIG1vZHVsZSwgZGlzYWJsZSBHVlQtZwo+IC0JICovCj4gLQlyZXQgPSBpbnRlbF9ndnRf aW5pdF9ob3N0KCk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiTm90IGlu IGhvc3Qgb3IgTVBUIG1vZHVsZXMgbm90IGZvdW5kXG4iKTsKPiAtCQlnb3RvIGJhaWw7Cj4gLQl9 Cj4gLQo+IC0JcmV0ID0gaW50ZWxfZ3Z0X2luaXRfZGV2aWNlKGRldl9wcml2KTsKPiAtCWlmIChy ZXQpIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsIHRvIGluaXQgR1ZUIGRldmljZVxuIik7 Cj4gLQkJZ290byBiYWlsOwo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC0KPiAtYmFpbDoKPiAt CWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndnQgPSAwOwo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4g LS8qKgo+IC0gKiBpbnRlbF9ndnRfY2xlYW51cCAtIGNsZWFudXAgR1ZUIGNvbXBvbmVudHMgd2hl biBpOTE1IGRyaXZlciBpcyB1bmxvYWRpbmcKPiAtICogQGRldl9wcml2OiBkcm0gaTkxNSBwcml2 YXRlICoKPiAtICoKPiAtICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGk5MTUgZHJp dmVyIHVubG9hZGluZyBzdGFnZSwgdG8gc2h1dGRvd24KPiAtICogR1ZUIGNvbXBvbmVudHMgYW5k IHJlbGVhc2UgdGhlIHJlbGF0ZWQgcmVzb3VyY2VzLgo+IC0gKi8KPiAtdm9pZCBpbnRlbF9ndnRf Y2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWlmICgh aW50ZWxfZ3Z0X2FjdGl2ZShkZXZfcHJpdikpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWludGVsX2d2 dF9jbGVhbl9kZXZpY2UoZGV2X3ByaXYpOwo+IC19Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d2dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmgK PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCA2MWIyNDY0NzAyODIuLjAwMDAwMDAw MDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5oCj4gKysrIC9kZXYv bnVsbAo+IEBAIC0xLDUwICswLDAgQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0KGMpIDIwMTEtMjAx NiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAtICoKPiAtICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKPiAtICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiAtICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiAtICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gLSAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gLSAqCj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAtICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ IC0gKiBTb2Z0d2FyZS4KPiAtICoKPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAtICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+IC0gKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ IC0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+IC0gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+IC0g KiBTT0ZUV0FSRS4KPiAtICovCj4gLQo+IC0jaWZuZGVmIF9JTlRFTF9HVlRfSF8KPiAtI2RlZmlu ZSBfSU5URUxfR1ZUX0hfCj4gLQo+IC1zdHJ1Y3QgaW50ZWxfZ3Z0Owo+IC0KPiAtI2lmZGVmIENP TkZJR19EUk1fSTkxNV9HVlQKPiAtaW50IGludGVsX2d2dF9pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaW50ZWxfZ3Z0X2NsZWFudXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtaW50IGludGVsX2d2dF9pbml0X2RldmljZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12b2lkIGludGVsX2d2dF9jbGVhbl9k ZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtaW50IGludGVsX2d2 dF9pbml0X2hvc3Qodm9pZCk7Cj4gLXZvaWQgaW50ZWxfZ3Z0X3Nhbml0aXplX29wdGlvbnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtI2Vsc2UKPiAtc3RhdGljIGlubGlu ZSBpbnQgaW50ZWxfZ3Z0X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IC17Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3Z0X2Ns ZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IC17Cj4gLX0KPiAtCj4g LXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndnRfc2FuaXRpemVfb3B0aW9ucyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtfQo+IC0jZW5kaWYKPiAtCj4gLSNlbmRp ZiAvKiBfSU5URUxfR1ZUX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwo+IGluZGV4IGQ0MGY1NWE4ZGMzNC4uOTQ2YWIxYmY5MjE0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xODgyLDYgKzE4ODIsNyBAQCB1MzIg KmludGVsX3JpbmdfYmVnaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGludCBu dW1fZHdvcmRzKQo+ICAKPiAgCXJldHVybiBjczsKPiAgfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChp bnRlbF9yaW5nX2JlZ2luKTsKPiAgCj4gIC8qIEFsaWduIHRoZSByaW5nIHRhaWwgdG8gYSBjYWNo ZWxpbmUgYm91bmRhcnkgKi8KPiAgaW50IGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3Bt LmMKPiBpbmRleCA0ODBkYWRiMTA0N2IuLmM0YzU4OWMzOGM2MCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBAQCAtNDAyMCw2ICs0MDIwLDcgQEAgdm9pZCBp bnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAlhdG9taWNfaW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAgCWFz c2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9H UEwoaW50ZWxfcnVudGltZV9wbV9nZXQpOwo+ICAKPiAgLyoqCj4gICAqIGludGVsX3J1bnRpbWVf cG1fZ2V0X2lmX2luX3VzZSAtIGdyYWIgYSBydW50aW1lIHBtIHJlZmVyZW5jZSBpZiBkZXZpY2Ug aW4gdXNlCj4gQEAgLTQxMDMsNiArNDEwNCw3IEBAIHZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcG1fcnVudGltZV9tYXJrX2xh c3RfYnVzeShrZGV2KTsKPiAgCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGtkZXYpOwo+ICB9 Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGludGVsX3J1bnRpbWVfcG1fcHV0KTsKPiAgCj4gIC8qKgo+ ICAgKiBpbnRlbF9ydW50aW1lX3BtX2VuYWJsZSAtIGVuYWJsZSBydW50aW1lIHBtCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCAyMGYyZjVhZDljM2YuLjcwYWJlZGZjYjJm NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTY0NCw2ICs2NDQs NyBAQCB2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCV9faW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYs IGZ3X2RvbWFpbnMpOwo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPnVuY29y ZS5sb2NrLCBpcnFmbGFncyk7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9HUEwoaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9nZXQpOwo+ICAKPiAgLyoqCj4gICAqIGludGVsX3VuY29yZV9mb3JjZXdha2Vf dXNlcl9nZXQgLSBjbGFpbSBmb3JjZXdha2Ugb24gYmVoYWxmIG9mIHVzZXJzcGFjZQo+IEBAIC03 NTYsNiArNzU3LDcgQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlfX2ludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0 KGRldl9wcml2LCBmd19kb21haW5zKTsKPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9w cml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGlu dGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KTsKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dF9fbG9ja2VkIC0gZ3JhYiBmb3JjZXdha2UgZG9tYWluIHJlZmVyZW5jZXMK PiBAQCAtMjM4MCw2ICsyMzgyLDcgQEAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlyZXR1cm4gZndfZG9tYWlu czsKPiAgfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9y ZWcpOwo+ICAKPiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQo+ICAj aW5jbHVkZSAic2VsZnRlc3RzL21vY2tfdW5jb3JlLmMiCgotLSAKSmFuaSBOaWt1bGEsIEludGVs IE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK