From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak S Subject: Re: [PATCH v5 4/4] drm/i915/bdw: Pin the ringbuffer backing object to GGTT on-demand Date: Tue, 18 Nov 2014 12:09:54 +0530 Message-ID: <546AE9BA.4080504@intel.com> References: <1414576373-25121-4-git-send-email-thomas.daniel@intel.com> <1415874536-459-1-git-send-email-thomas.daniel@intel.com> <546AE90E.8060505@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 9A3C06E157 for ; Sun, 16 Nov 2014 22:43:16 -0800 (PST) In-Reply-To: <546AE90E.8060505@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIFR1ZXNkYXkgMTggTm92ZW1iZXIgMjAxNCAxMjowNyBQTSwgRGVlcGFrIFMgd3JvdGU6Cj4K PiBPbiBUaHVyc2RheSAxMyBOb3ZlbWJlciAyMDE0IDAzOjU4IFBNLCBUaG9tYXMgRGFuaWVsIHdy b3RlOgo+PiBTYW1lIGFzIHdpdGggdGhlIGNvbnRleHQsIHBpbm5pbmcgdG8gR0dUVCByZWdhcmRs ZXNzIGlzIGhhcm1mdWwgKGl0Cj4+IGJhZGx5IGZyYWdtZW50cyB0aGUgR0dUVCBhbmQgY2FuIGV2 ZW4gZXhoYXVzdCBpdCkuCj4+Cj4+IFVuZm9ydHVuYXRlbHksIHRoaXMgY2FzZSBpcyBhbHNvIG1v cmUgY29tcGxleCB0aGFuIHRoZSBwcmV2aW91cyBvbmUKPj4gYmVjYXVzZSB3ZSBuZWVkIHRvIG1h cCBhbmQgYWNjZXNzIHRoZSByaW5nYnVmZmVyIGluIHNldmVyYWwgcGxhY2VzCj4+IGFsb25nIHRo ZSBleGVjYnVmZmVyIHBhdGggKGFuZCB3ZSBjYW5ub3QgbWFrZSBkbyBieSBsZWF2aW5nIHRoZQo+ PiBkZWZhdWx0IHJpbmdidWZmZXIgcGlubmVkLCBhcyBiZWZvcmUpLiBBbHNvLCB0aGUgY29udGV4 dCBvYmplY3QKPj4gaXRzZWxmIGNvbnRhaW5zIGEgcG9pbnRlciB0byB0aGUgcmluZ2J1ZmZlciBh ZGRyZXNzIHRoYXQgd2UgaGF2ZSB0bwo+PiBrZWVwIHVwZGF0ZWQgaWYgd2UgYXJlIGdvaW5nIHRv IGFsbG93IHRoZSByaW5nYnVmZmVyIHRvIG1vdmUgYXJvdW5kLgo+Pgo+PiB2MjogU2FtZSBhcyB3 aXRoIHRoZSBjb250ZXh0IHBpbm5pbmcsIHdlIGNhbm5vdCByZWFsbHkgZG8gaXQgZHVyaW5nCj4+ IGFuIGludGVycnVwdC4gQWxzbywgcGluIHRoZSBkZWZhdWx0IHJpbmdidWZmZXJzIG9iamVjdHMg cmVnYXJkbGVzcwo+PiAobWFrZXMgZXJyb3IgY2FwdHVyZSBhIGxvdCBlYXNpZXIpLgo+Pgo+PiB2 MzogUmViYXNlZC4gVGFrZSBhIHBpbiByZWZlcmVuY2Ugb2YgdGhlIHJpbmdidWZmZXIgZm9yIGVh Y2ggaXRlbQo+PiBpbiB0aGUgZXhlY2xpc3QgcmVxdWVzdCBxdWV1ZSBiZWNhdXNlIHRoZSBoYXJk d2FyZSBtYXkgc3RpbGwgYmUgdXNpbmcKPj4gdGhlIHJpbmdidWZmZXIgYWZ0ZXIgdGhlIE1JX1VT RVJfSU5URVJSVVBUIHRvIG5vdGlmeSB0aGUgc2Vxbm8gdXBkYXRlCj4+IGlzIGV4ZWN1dGVkLiAg VGhlIHJpbmdidWZmZXIgbXVzdCByZW1haW4gcGlubmVkIHVudGlsIHRoZSBjb250ZXh0IHNhdmUK Pj4gaXMgY29tcGxldGUuICBObyBsb25nZXIgcGluIGFuZCB1bnBpbiByaW5nYnVmZmVyIGluCj4+ IHBvcHVsYXRlX2xyX2NvbnRleHQoKSAtIHRoaXMgdHJhbnNpZW50IGFkZHJlc3MgaXMgbWVhbmlu Z2xlc3MgYW5kIHRoZQo+PiBwaW5uaW5nIGNhbiBjYXVzZSBhIHNsZWVwIHdoaWxlIGF0b21pYy4K Pj4KPj4gdjQ6IE1vdmVkIHJpbmdidWZmZXIgcGluIGFuZCB1bnBpbiBpbnRvIHRoZSBscl9jb250 ZXh0X3BpbiBmdW5jdGlvbnMuCj4+IERvd25ncmFkZWQgcGlubmluZyBjaGVjayBCVUdfT05zIHRv IFdBUk5fT05zLgo+Pgo+PiB2NTogUmVpbnN0YXRlZCBXQVJOX09OcyBmb3IgdW5leHBlY3RlZCBl eGVjbGlzdCBzdGF0ZXMuICBSZW1vdmVkIHVudXNlZAo+PiB2YXJpYWJsZS4KPj4KPj4gSXNzdWU6 IFZJWi00Mjc3Cj4+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRl bC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBEYW5pZWwgPHRob21hcy5kYW5pZWxAaW50 ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgfCAgMTAyIAo+PiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICA4NSAKPj4gKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggfCAgICAzICsKPj4gICAzIGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCA2MiBk ZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IGluZGV4IGY3 ZmEwZjcuLmNhMjBmOTEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IEBAIC0y MDIsNiArMjAyLDkgQEAgZW51bSB7Cj4+ICAgfTsKPj4gICAjZGVmaW5lIEdFTjhfQ1RYX0lEX1NI SUZUIDMyCj4+ICAgK3N0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9waW4oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPj4gKyAgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7 Cj4+ICsKPj4gICAvKioKPj4gICAgKiBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKCkg LSBzYW5pdGl6ZSBpOTE1LmVuYWJsZV9leGVjbGlzdHMKPj4gICAgKiBAZGV2OiBEUk0gZGV2aWNl Lgo+PiBAQCAtMzM5LDcgKzM0Miw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRl KHN0cnVjdCAKPj4gaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiAgICAgICBzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGZsYWdzKTsKPj4gICB9Cj4+ICAgLXN0 YXRpYyBpbnQgZXhlY2xpc3RzX2N0eF93cml0ZV90YWlsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0IAo+PiAqY3R4X29iaiwgdTMyIHRhaWwpCj4+ICtzdGF0aWMgaW50IGV4ZWNsaXN0c191cGRh dGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAKPj4gKmN0eF9vYmosCj4+ICsg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpyaW5nX29iaiwK Pj4gKyAgICAgICAgICAgICAgICAgICAgdTMyIHRhaWwpCj4+ICAgewo+PiAgICAgICBzdHJ1Y3Qg cGFnZSAqcGFnZTsKPj4gICAgICAgdWludDMyX3QgKnJlZ19zdGF0ZTsKPj4gQEAgLTM0OCw2ICsz NTMsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jdHhfd3JpdGVfdGFpbChzdHJ1Y3QgCj4+IGRy bV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmosIHUzMiB0YWkKPj4gICAgICAgcmVnX3N0YXRlID0g a21hcF9hdG9taWMocGFnZSk7Cj4+ICAgICAgICAgcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0g PSB0YWlsOwo+PiArICAgIHJlZ19zdGF0ZVtDVFhfUklOR19CVUZGRVJfU1RBUlQrMV0gPSAKPj4g aTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KHJpbmdfb2JqKTsKPj4gICAgICAgICBrdW5tYXBfYXRv bWljKHJlZ19zdGF0ZSk7Cj4+ICAgQEAgLTM1OCwyMSArMzY0LDI1IEBAIHN0YXRpYyBpbnQgZXhl Y2xpc3RzX3N1Ym1pdF9jb250ZXh0KHN0cnVjdCAKPj4gaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ PiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKnRvMCwgdTMyIHRh aWwwLAo+PiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKnRvMSwg dTMyIHRhaWwxKQo+PiAgIHsKPj4gLSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4 X29iajA7Cj4+ICsgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmowID0gdG8w LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwo+PiArICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmMCA9IHRvMC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOwo+PiAgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajEgPSBOVUxMOwo+PiArICAgIHN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmMSA9IE5VTEw7Cj4+ICAgLSAgICBjdHhfb2JqMCA9IHRv MC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKPj4gICAgICAgQlVHX09OKCFjdHhfb2JqMCk7Cj4+ ICAgICAgIFdBUk5fT04oIWk5MTVfZ2VtX29ial9pc19waW5uZWQoY3R4X29iajApKTsKPj4gKyAg ICBXQVJOX09OKCFpOTE1X2dlbV9vYmpfaXNfcGlubmVkKHJpbmdidWYwLT5vYmopKTsKPj4gICAt ICAgIGV4ZWNsaXN0c19jdHhfd3JpdGVfdGFpbChjdHhfb2JqMCwgdGFpbDApOwo+PiArICAgIGV4 ZWNsaXN0c191cGRhdGVfY29udGV4dChjdHhfb2JqMCwgcmluZ2J1ZjAtPm9iaiwgdGFpbDApOwo+ PiAgICAgICAgIGlmICh0bzEpIHsKPj4gKyAgICAgICAgcmluZ2J1ZjEgPSB0bzEtPmVuZ2luZVty aW5nLT5pZF0ucmluZ2J1ZjsKPj4gICAgICAgICAgIGN0eF9vYmoxID0gdG8xLT5lbmdpbmVbcmlu Zy0+aWRdLnN0YXRlOwo+PiAgICAgICAgICAgQlVHX09OKCFjdHhfb2JqMSk7Cj4+ICAgICAgICAg ICBXQVJOX09OKCFpOTE1X2dlbV9vYmpfaXNfcGlubmVkKGN0eF9vYmoxKSk7Cj4+ICsgICAgICAg IFdBUk5fT04oIWk5MTVfZ2VtX29ial9pc19waW5uZWQocmluZ2J1ZjEtPm9iaikpOwo+PiAgIC0g ICAgICAgIGV4ZWNsaXN0c19jdHhfd3JpdGVfdGFpbChjdHhfb2JqMSwgdGFpbDEpOwo+PiArICAg ICAgICBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoY3R4X29iajEsIHJpbmdidWYxLT5vYmosIHRh aWwxKTsKPj4gICAgICAgfQo+PiAgICAgICAgIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHJpbmcsIGN0 eF9vYmowLCBjdHhfb2JqMSk7Cj4+IEBAIC01MjQsNiArNTM0LDEwIEBAIHN0YXRpYyBpbnQgZXhl Y2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IAo+PiBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ ICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gICAgICAgcmVxLT5jdHggPSB0bzsKPj4gICAg ICAgaTkxNV9nZW1fY29udGV4dF9yZWZlcmVuY2UocmVxLT5jdHgpOwo+PiArCj4+ICsgICAgaWYg KHRvICE9IHJpbmctPmRlZmF1bHRfY29udGV4dCkKPj4gKyAgICAgICAgaW50ZWxfbHJfY29udGV4 dF9waW4ocmluZywgdG8pOwo+PiArCj4+ICAgICAgIHJlcS0+cmluZyA9IHJpbmc7Cj4+ICAgICAg IHJlcS0+dGFpbCA9IHRhaWw7Cj4+ICAgQEAgLTU0NCw3ICs1NTgsNyBAQCBzdGF0aWMgaW50IGV4 ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHN0cnVjdCAKPj4gaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ PiAgICAgICAgICAgICBpZiAodG8gPT0gdGFpbF9yZXEtPmN0eCkgewo+PiAgICAgICAgICAgICAg IFdBUk4odGFpbF9yZXEtPmVsc3Bfc3VibWl0dGVkICE9IDAsCj4+IC0gICAgICAgICAgICAgICAg ICJNb3JlIHRoYW4gMiBhbHJlYWR5LXN1Ym1pdHRlZCByZXFzIHF1ZXVlZFxuIik7Cj4+ICsgICAg ICAgICAgICAgICAgIk1vcmUgdGhhbiAyIGFscmVhZHktc3VibWl0dGVkIHJlcXMgcXVldWVkXG4i KTsKPj4gICAgICAgICAgICAgICBsaXN0X2RlbCgmdGFpbF9yZXEtPmV4ZWNsaXN0X2xpbmspOwo+ PiAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnRhaWxfcmVxLT5leGVjbGlzdF9saW5rLAo+ PiAgICAgICAgICAgICAgICAgICAmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7Cj4+ IEBAIC03MzIsNiArNzQ2LDEyIEBAIHZvaWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0 cyhzdHJ1Y3QgCj4+IGludGVsX2VuZ2luZV9jcyAqcmluZykKPj4gICAgICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcmluZy0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOwo+PiAgICAgICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHRtcCwgJnJldGlyZWRfbGlzdCwgCj4+IGV4ZWNsaXN0 X2xpbmspIHsKPj4gKyAgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4 Owo+PiArICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Cj4+ICsg ICAgICAgICAgICAgICAgY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwo+PiArCj4+ICsgICAg ICAgIGlmIChjdHhfb2JqICYmIChjdHggIT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KSkKPj4gKyAg ICAgICAgICAgIGludGVsX2xyX2NvbnRleHRfdW5waW4ocmluZywgY3R4KTsKPj4gICAgICAgICAg IGludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPj4gICAgICAgICAgIGk5MTVfZ2VtX2Nv bnRleHRfdW5yZWZlcmVuY2UocmVxLT5jdHgpOwo+PiAgICAgICAgICAgbGlzdF9kZWwoJnJlcS0+ ZXhlY2xpc3RfbGluayk7Cj4+IEBAIC04MDMsNiArODIzLDcgQEAgc3RhdGljIGludCBpbnRlbF9s cl9jb250ZXh0X3BpbihzdHJ1Y3QgCj4+IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAgICAg ICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4+ICAgewo+PiAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsK Pj4gKyAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGN0eC0+ZW5naW5lW3Jp bmctPmlkXS5yaW5nYnVmOwo+PiAgICAgICBpbnQgcmV0ID0gMDsKPj4gV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+PiBAQCAtODEwLDIxICs4MzEs MzUgQEAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1Y3QgCj4+IGludGVsX2Vu Z2luZV9jcyAqcmluZywKPj4gICAgICAgICAgIHJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3Bpbihj dHhfb2JqLAo+PiAgICAgICAgICAgICAgICAgICBHRU44X0xSX0NPTlRFWFRfQUxJR04sIDApOwo+ PiAgICAgICAgICAgaWYgKHJldCkKPj4gLSAgICAgICAgICAgIGN0eC0+ZW5naW5lW3JpbmctPmlk XS51bnBpbl9jb3VudCA9IDA7Cj4+ICsgICAgICAgICAgICBnb3RvIHJlc2V0X3VucGluX2NvdW50 Owo+PiArCj4+ICsgICAgICAgIHJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2Jq KHJpbmctPmRldiwgcmluZ2J1Zik7Cj4+ICsgICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAg ICBnb3RvIHVucGluX2N0eF9vYmo7Cj4+ICAgICAgIH0KPj4gICAgICAgICByZXR1cm4gcmV0Owo+ PiArCj4+ICt1bnBpbl9jdHhfb2JqOgo+PiArICAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGlu KGN0eF9vYmopOwo+PiArcmVzZXRfdW5waW5fY291bnQ6Cj4+ICsgICAgY3R4LT5lbmdpbmVbcmlu Zy0+aWRdLnVucGluX2NvdW50ID0gMDsKPj4gKwo+PiArICAgIHJldHVybiByZXQ7Cj4+ICAgfQo+ PiAgICAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4+ICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+PiAgIHsKPj4g ICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBjdHgtPmVuZ2luZVty aW5nLT5pZF0uc3RhdGU7Cj4+ICsgICAgc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYg PSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKPj4gICAgICAgICBpZiAoY3R4X29iaikg ewo+PiBXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJnJpbmctPmRldi0+c3RydWN0X211dGV4KSk7 Cj4KPiBXaXRoIHBpbiBzcGVjaWZpYyBtdXRleCBmcm9tIHByZXZpb3VzIHBhdGNoIHNldCByZW1v dmVkCgpPb3BzIFRoaXMgY29tbWVudCB3YXMgZm9yIHByZXZpb3VzIHBhdGNoIGluIHRoZSBzZXJp ZXMgOiggU2luY2UgaSByZXZpZXdlZCB0aGUgcGF0Y2ggb2ZmbGluZSwgY29tbWVudHMgZ290IG1p eGVkIDopCkFueXdheXMgeW91IHBhdGNoIGxvb2tzIGZpbmUsICBSZXZpZXdlZC1ieTogRGVlcGFr IFM8ZGVlcGFrLnNAbGludXguaW50ZWwuY29tPgoKPiBSZXZpZXdlZC1ieTogRGVlcGFrIFM8ZGVl cGFrLnNAbGludXguaW50ZWwuY29tPgo+Cj4+IC0gICAgICAgIGlmICgtLWN0eC0+ZW5naW5lW3Jp bmctPmlkXS51bnBpbl9jb3VudCA9PSAwKQo+PiArICAgICAgICBpZiAoLS1jdHgtPmVuZ2luZVty aW5nLT5pZF0udW5waW5fY291bnQgPT0gMCkgewo+PiArICAgICAgICAgICAgaW50ZWxfdW5waW5f cmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+ICAgICAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0 X2dndHRfdW5waW4oY3R4X29iaik7Cj4+ICsgICAgICAgIH0KPj4gICAgICAgfQo+PiAgIH0KPj4g ICBAQCAtMTU0MSw3ICsxNTc2LDYgQEAgcG9wdWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxf Y29udGV4dCAKPj4gKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCj4+ICAg ewo+PiAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+PiAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAt ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpyaW5nX29iaiA9IHJpbmdidWYtPm9iajsK Pj4gICAgICAgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gY3R4LT5wcGd0dDsKPj4gICAg ICAgc3RydWN0IHBhZ2UgKnBhZ2U7Cj4+ICAgICAgIHVpbnQzMl90ICpyZWdfc3RhdGU7Cj4+IEBA IC0xNTg3LDcgKzE2MjEsOSBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsIAo+PiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X28KPj4gICAgICAg cmVnX3N0YXRlW0NUWF9SSU5HX1RBSUxdID0gUklOR19UQUlMKHJpbmctPm1taW9fYmFzZSk7Cj4+ ICAgICAgIHJlZ19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gMDsKPj4gICAgICAgcmVnX3N0YXRl W0NUWF9SSU5HX0JVRkZFUl9TVEFSVF0gPSBSSU5HX1NUQVJUKHJpbmctPm1taW9fYmFzZSk7Cj4+ IC0gICAgcmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsxXSA9IAo+PiBpOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXQocmluZ19vYmopOwo+PiArICAgIC8qIFJpbmcgYnVmZmVyIHN0YXJ0IGFk ZHJlc3MgaXMgbm90IGtub3duIHVudGlsIHRoZSBidWZmZXIgaXMgCj4+IHBpbm5lZC4KPj4gKyAg ICAgKiBJdCBpcyB3cml0dGVuIHRvIHRoZSBjb250ZXh0IGltYWdlIGluIGV4ZWNsaXN0c191cGRh dGVfY29udGV4dCgpCj4+ICsgICAgICovCj4+ICAgICAgIHJlZ19zdGF0ZVtDVFhfUklOR19CVUZG RVJfQ09OVFJPTF0gPSBSSU5HX0NUTChyaW5nLT5tbWlvX2Jhc2UpOwo+PiAgICAgICByZWdfc3Rh dGVbQ1RYX1JJTkdfQlVGRkVSX0NPTlRST0wrMV0gPQo+PiAgICAgICAgICAgICAgICgocmluZ2J1 Zi0+c2l6ZSAtIFBBR0VfU0laRSkgJiBSSU5HX05SX1BBR0VTKSB8IAo+PiBSSU5HX1ZBTElEOwo+ PiBAQCAtMTY2OSwxMCArMTcwNSwxMiBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1 Y3QgCj4+IGludGVsX2NvbnRleHQgKmN0eCkKPj4gICAgICAgICAgICAgICAgICAgICAgIGN0eC0+ ZW5naW5lW2ldLnJpbmdidWY7Cj4+ICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyA9IHJpbmdidWYtPnJpbmc7Cj4+ICAgKyAgICAgICAgICAgIGlmIChjdHggPT0gcmlu Zy0+ZGVmYXVsdF9jb250ZXh0KSB7Cj4+ICsgICAgICAgICAgICAgICAgaW50ZWxfdW5waW5fcmlu Z2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+ICsgICAgICAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0 X2dndHRfdW5waW4oY3R4X29iaik7Cj4+ICsgICAgICAgICAgICB9Cj4+ICAgICAgICAgICAgICAg aW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihyaW5nYnVmKTsKPj4gICAgICAgICAgICAgICBr ZnJlZShyaW5nYnVmKTsKPj4gLSAgICAgICAgICAgIGlmIChjdHggPT0gcmluZy0+ZGVmYXVsdF9j b250ZXh0KQo+PiAtICAgICAgICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGN0 eF9vYmopOwo+PiAgICAgICAgICAgICAgIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZjdHhf b2JqLT5iYXNlKTsKPj4gICAgICAgICAgIH0KPj4gICAgICAgfQo+PiBAQCAtMTc3MCwxMSArMTgw OCw4IEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgCj4+IGlu dGVsX2NvbnRleHQgKmN0eCwKPj4gICAgICAgaWYgKCFyaW5nYnVmKSB7Cj4+ICAgICAgICAgICBE Uk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1ZmZlciAlc1xuIiwKPj4g ICAgICAgICAgICAgICAgICAgcmluZy0+bmFtZSk7Cj4+IC0gICAgICAgIGlmIChpc19nbG9iYWxf ZGVmYXVsdF9jdHgpCj4+IC0gICAgICAgICAgICBpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihj dHhfb2JqKTsKPj4gLSAgICAgICAgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmN0eF9vYmot PmJhc2UpOwo+PiAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKPj4gLSAgICAgICAgcmV0dXJuIHJl dDsKPj4gKyAgICAgICAgZ290byBlcnJvcl91bnBpbl9jdHg7Cj4+ICAgICAgIH0KPj4gICAgICAg ICByaW5nYnVmLT5yaW5nID0gcmluZzsKPj4gQEAgLTE3ODcsMjIgKzE4MjIsMzAgQEAgaW50IGlu dGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCAKPj4gaW50ZWxfY29udGV4dCAq Y3R4LAo+PiAgICAgICByaW5nYnVmLT5zcGFjZSA9IHJpbmdidWYtPnNpemU7Cj4+ICAgICAgIHJp bmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4+ICAgLSAgICAvKiBUT0RPOiBGb3Igbm93 IHdlIHB1dCB0aGlzIGluIHRoZSBtYXBwYWJsZSByZWdpb24gc28gdGhhdCB3ZSAKPj4gY2FuIHJl dXNlCj4+IC0gICAgICogdGhlIGV4aXN0aW5nIHJpbmdidWZmZXIgY29kZSB3aGljaCBpb3JlbWFw cyBpdC4gV2hlbiB3ZSBzdGFydAo+PiAtICAgICAqIGNyZWF0aW5nIG1hbnkgY29udGV4dHMsIHRo aXMgd2lsbCBubyBsb25nZXIgd29yayBhbmQgd2UgbXVzdCAKPj4gc3dpdGNoCj4+IC0gICAgICog dG8gYSBrbWFwaXNoIGludGVyZmFjZS4KPj4gLSAgICAgKi8KPj4gLSAgICByZXQgPSBpbnRlbF9h bGxvY19yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+PiAtICAgIGlmIChyZXQpIHsKPj4g LSAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIGFsbG9jYXRlIHJpbmdidWZmZXIg b2JqICVzOiAlZFxuIiwKPj4gKyAgICBpZiAocmluZ2J1Zi0+b2JqID09IE5VTEwpIHsKPj4gKyAg ICAgICAgcmV0ID0gaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooZGV2LCByaW5nYnVmKTsKPj4g KyAgICAgICAgaWYgKHJldCkgewo+PiArICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigKPj4g KyAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIHJpbmdidWZmZXIgb2JqICVzOiAl ZFxuIiwKPj4gICAgICAgICAgICAgICAgICAgcmluZy0+bmFtZSwgcmV0KTsKPj4gLSAgICAgICAg Z290byBlcnJvcjsKPj4gKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZnJlZV9yYnVmOwo+PiArICAg ICAgICB9Cj4+ICsKPj4gKyAgICAgICAgaWYgKGlzX2dsb2JhbF9kZWZhdWx0X2N0eCkgewo+PiAr ICAgICAgICAgICAgcmV0ID0gaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmooZGV2LCBy aW5nYnVmKTsKPj4gKyAgICAgICAgICAgIGlmIChyZXQpIHsKPj4gKyAgICAgICAgICAgICAgICBE Uk1fRVJST1IoCj4+ICsgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcGluIGFuZCBtYXAg cmluZ2J1ZmZlciAlczogJWRcbiIsCj4+ICsgICAgICAgICAgICAgICAgICAgIHJpbmctPm5hbWUs IHJldCk7Cj4+ICsgICAgICAgICAgICAgICAgZ290byBlcnJvcl9kZXN0cm95X3JidWY7Cj4+ICsg ICAgICAgICAgICB9Cj4+ICsgICAgICAgIH0KPj4gKwo+PiAgICAgICB9Cj4+ICAgICAgICAgcmV0 ID0gcG9wdWxhdGVfbHJfY29udGV4dChjdHgsIGN0eF9vYmosIHJpbmcsIHJpbmdidWYpOwo+PiAg ICAgICBpZiAocmV0KSB7Cj4+ICAgICAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8g cG9wdWxhdGUgTFJDOiAlZFxuIiwgcmV0KTsKPj4gLSAgICAgICAgaW50ZWxfZGVzdHJveV9yaW5n YnVmZmVyX29iaihyaW5nYnVmKTsKPj4gICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+ICAgICAgIH0K Pj4gICBAQCAtMTgyMyw3ICsxODY2LDYgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRf Y3JlYXRlKHN0cnVjdCAKPj4gaW50ZWxfY29udGV4dCAqY3R4LAo+PiAgICAgICAgICAgICAgIERS TV9FUlJPUigiSW5pdCByZW5kZXIgc3RhdGUgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPj4gICAgICAg ICAgICAgICBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZiA9IE5VTEw7Cj4+ICAgICAgICAg ICAgICAgY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlID0gTlVMTDsKPj4gLSAgICAgICAgICAg IGludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+ICAgICAgICAgICAgICAg Z290byBlcnJvcjsKPj4gICAgICAgICAgIH0KPj4gICAgICAgICAgIGN0eC0+cmNzX2luaXRpYWxp emVkID0gdHJ1ZTsKPj4gQEAgLTE4MzIsNyArMTg3NCwxMyBAQCBpbnQgaW50ZWxfbHJfY29udGV4 dF9kZWZlcnJlZF9jcmVhdGUoc3RydWN0IAo+PiBpbnRlbF9jb250ZXh0ICpjdHgsCj4+ICAgICAg IHJldHVybiAwOwo+PiAgICAgZXJyb3I6Cj4+ICsgICAgaWYgKGlzX2dsb2JhbF9kZWZhdWx0X2N0 eCkKPj4gKyAgICAgICAgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+ICtl cnJvcl9kZXN0cm95X3JidWY6Cj4+ICsgICAgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihy aW5nYnVmKTsKPj4gK2Vycm9yX2ZyZWVfcmJ1ZjoKPj4gICAgICAga2ZyZWUocmluZ2J1Zik7Cj4+ ICtlcnJvcl91bnBpbl9jdHg6Cj4+ICAgICAgIGlmIChpc19nbG9iYWxfZGVmYXVsdF9jdHgpCj4+ ICAgICAgICAgICBpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihjdHhfb2JqKTsKPj4gICAgICAg ZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmN0eF9vYmotPmJhc2UpOwo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIAo+PiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+PiBpbmRleCBhOGY3MmU4Li4wYzRhYWIx IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+IEBAIC0x NzIxLDEzICsxNzIxLDQyIEBAIHN0YXRpYyBpbnQgaW5pdF9waHlzX3N0YXR1c19wYWdlKHN0cnVj dCAKPj4gaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgICAgICByZXR1cm4gMDsKPj4gICB9Cj4+ ICAgLXZvaWQgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZikKPj4gK3ZvaWQgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICAgewo+PiAtICAgIGlmICghcmluZ2J1Zi0+ b2JqKQo+PiAtICAgICAgICByZXR1cm47Cj4+IC0KPj4gICAgICAgaW91bm1hcChyaW5nYnVmLT52 aXJ0dWFsX3N0YXJ0KTsKPj4gKyAgICByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ID0gTlVMTDsKPj4g ICAgICAgaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4ocmluZ2J1Zi0+b2JqKTsKPj4gK30KPj4g Kwo+PiAraW50IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZikKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4+ICsgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiA9IHJpbmdidWYtPm9iajsKPj4gKyAgICBpbnQgcmV0Owo+PiArCj4+ICsgICAgcmV0ID0gaTkx NV9nZW1fb2JqX2dndHRfcGluKG9iaiwgUEFHRV9TSVpFLCBQSU5fTUFQUEFCTEUpOwo+PiArICAg IGlmIChyZXQpCj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4gKyAgICByZXQgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0cnVlKTsKPj4gKyAgICBpZiAocmV0 KSB7Cj4+ICsgICAgICAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Cj4+ICsgICAg ICAgIHJldHVybiByZXQ7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgcmluZ2J1Zi0+dmlydHVhbF9z dGFydCA9IGlvcmVtYXBfd2MoZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9iYXNlICsKPj4gKyAgICAg ICAgICAgIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopLCByaW5nYnVmLT5zaXplKTsKPj4g KyAgICBpZiAocmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9PSBOVUxMKSB7Cj4+ICsgICAgICAgIGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Cj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFM Owo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICt2b2lkIGlu dGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYpCj4+ICt7Cj4+ICAgICAgIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZyaW5nYnVmLT5v YmotPmJhc2UpOwo+PiAgICAgICByaW5nYnVmLT5vYmogPSBOVUxMOwo+PiAgIH0KPj4gQEAgLTE3 MzUsMTIgKzE3NjQsNyBAQCB2b2lkIGludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooc3RydWN0 IAo+PiBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+PiAgIGludCBpbnRlbF9hbGxvY19yaW5n YnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4gICB7Cj4+IC0gICAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiAgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+PiAtICAgIGludCByZXQ7Cj4+IC0KPj4gLSAg ICBpZiAocmluZ2J1Zi0+b2JqKQo+PiAtICAgICAgICByZXR1cm4gMDsKPj4gICAgICAgICBvYmog PSBOVUxMOwo+PiAgICAgICBpZiAoIUhBU19MTEMoZGV2KSkKPj4gQEAgLTE3NTMsMzAgKzE3Nzcs OSBAQCBpbnQgaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooc3RydWN0IAo+PiBkcm1fZGV2aWNl ICpkZXYsCj4+ICAgICAgIC8qIG1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQ VSBzaWRlIGJ5IGRlZmF1bHQgKi8KPj4gICAgICAgb2JqLT5ndF9ybyA9IDE7Cj4+ICAgLSAgICBy ZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCBQQUdFX1NJWkUsIFBJTl9NQVBQQUJMRSk7 Cj4+IC0gICAgaWYgKHJldCkKPj4gLSAgICAgICAgZ290byBlcnJfdW5yZWY7Cj4+IC0KPj4gLSAg ICByZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0cnVlKTsKPj4g LSAgICBpZiAocmV0KQo+PiAtICAgICAgICBnb3RvIGVycl91bnBpbjsKPj4gLQo+PiAtICAgIHJp bmdidWYtPnZpcnR1YWxfc3RhcnQgPQo+PiAtICAgICAgICBpb3JlbWFwX3djKGRldl9wcml2LT5n dHQubWFwcGFibGVfYmFzZSArIAo+PiBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSwKPj4g LSAgICAgICAgICAgICAgICByaW5nYnVmLT5zaXplKTsKPj4gLSAgICBpZiAocmluZ2J1Zi0+dmly dHVhbF9zdGFydCA9PSBOVUxMKSB7Cj4+IC0gICAgICAgIHJldCA9IC1FSU5WQUw7Cj4+IC0gICAg ICAgIGdvdG8gZXJyX3VucGluOwo+PiAtICAgIH0KPj4gLQo+PiAgICAgICByaW5nYnVmLT5vYmog PSBvYmo7Cj4+IC0gICAgcmV0dXJuIDA7Cj4+ICAgLWVycl91bnBpbjoKPj4gLSAgICBpOTE1X2dl bV9vYmplY3RfZ2d0dF91bnBpbihvYmopOwo+PiAtZXJyX3VucmVmOgo+PiAtICAgIGRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+PiAtICAgIHJldHVybiByZXQ7Cj4+ICsg ICAgcmV0dXJuIDA7Cj4+ICAgfQo+PiAgICAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+IEBAIC0xODEzLDEwICsxODE2LDIxIEBAIHN0 YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgCj4+IGRybV9kZXZpY2UgKmRl diwKPj4gICAgICAgICAgICAgICBnb3RvIGVycm9yOwo+PiAgICAgICB9Cj4+ICAgLSAgICByZXQg PSBpbnRlbF9hbGxvY19yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+PiAtICAgIGlmIChy ZXQpIHsKPj4gLSAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1ZmZl ciAlczogJWRcbiIsIAo+PiByaW5nLT5uYW1lLCByZXQpOwo+PiAtICAgICAgICBnb3RvIGVycm9y Owo+PiArICAgIGlmIChyaW5nYnVmLT5vYmogPT0gTlVMTCkgewo+PiArICAgICAgICByZXQgPSBp bnRlbF9hbGxvY19yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+PiArICAgICAgICBpZiAo cmV0KSB7Cj4+ICsgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSByaW5n YnVmZmVyICVzOiAlZFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgcmluZy0+bmFtZSwgcmV0 KTsKPj4gKyAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAg ICAgICByZXQgPSBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYp Owo+PiArICAgICAgICBpZiAocmV0KSB7Cj4+ICsgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxl ZCB0byBwaW4gYW5kIG1hcCByaW5nYnVmZmVyICVzOiAlZFxuIiwKPj4gKyAgICAgICAgICAgICAg ICAgICAgcmluZy0+bmFtZSwgcmV0KTsKPj4gKyAgICAgICAgICAgIGludGVsX2Rlc3Ryb3lfcmlu Z2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+ICsgICAgICAgICAgICBnb3RvIGVycm9yOwo+PiArICAg ICAgICB9Cj4+ICAgICAgIH0KPj4gICAgICAgICAvKiBXb3JrYXJvdW5kIGFuIGVycmF0dW0gb24g dGhlIGk4MzAgd2hpY2ggY2F1c2VzIGEgaGFuZyBpZgo+PiBAQCAtMTg1NCw2ICsxODY4LDcgQEAg dm9pZCBpbnRlbF9jbGVhbnVwX3JpbmdfYnVmZmVyKHN0cnVjdCAKPj4gaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQo+PiAgICAgICBpbnRlbF9zdG9wX3JpbmdfYnVmZmVyKHJpbmcpOwo+PiAgICAgICBX QVJOX09OKCFJU19HRU4yKHJpbmctPmRldikgJiYgKEk5MTVfUkVBRF9NT0RFKHJpbmcpICYgCj4+ IE1PREVfSURMRSkgPT0gMCk7Cj4+ICAgKyAgICBpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihy aW5nYnVmKTsKPj4gICAgICAgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihyaW5nYnVmKTsK Pj4gICAgICAgcmluZy0+cHJlYWxsb2NhdGVkX2xhenlfcmVxdWVzdCA9IE5VTEw7Cj4+ICAgICAg IHJpbmctPm91dHN0YW5kaW5nX2xhenlfc2Vxbm8gPSAwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiBpbmRleCA4YzAwMmQyLi4zNjU4NTRhZCAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiBAQCAtMzgyLDYgKzM4 Miw5IEBAIGludGVsX3dyaXRlX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgCj4+ ICpyaW5nLAo+PiAgICNkZWZpbmUgSTkxNV9HRU1fSFdTX1NDUkFUQ0hfSU5ERVggICAgMHgzMAo+ PiAgICNkZWZpbmUgSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiAoSTkxNV9HRU1fSFdTX1NDUkFU Q0hfSU5ERVggPDwgCj4+IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKQo+PiAgICt2b2lkIGlu dGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm KTsKPj4gK2ludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYpOwo+PiAgIHZvaWQgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4+ICAgaW50IGludGVsX2FsbG9jX3Jpbmdi dWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPgo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=