From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 7/8] drm/amdgpu: activate paging queue on SDMA v4 Date: Tue, 9 Oct 2018 17:40:14 +0800 Message-ID: <20181009094013.GG8763@hr-amur2> References: <20181008133521.3237-1-christian.koenig@amd.com> <20181008133521.3237-7-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181008133521.3237-7-christian.koenig-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gTW9uLCBPY3QgMDgsIDIwMTggYXQgMDM6MzU6MjBQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBJbXBsZW1lbnQgYWxsIHRoZSBuZWNlc3Nhcnkgc3R1ZmYgdG8gZ2V0IHRob3Nl IGV4dHJhIHJpbmdzIHdvcmtpbmcuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5p ZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKUmV2aWV3ZWQtYnk6IEh1YW5nIFJ1aSA8cmF5 Lmh1YW5nQGFtZC5jb20+CgpXZSBoYXZlIGZvdXIgcXVldWUgYXJjaGl0ZWN0dXJlLCBjdXJyZW50 bHksIGlmIGluY2x1ZGUgcGFnZSBxdWV1ZSwgd2Ugb25seQp1c2UgdHdvLCBpcyB0aGVyZSBhbnkg dXNlIGNhc2UgdGhhdCB3ZSBuZWVkIGFsc28gYWN0aXZhdGUgcmxjMC9ybGMxPwoKVGhhbmtzLApS YXkKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jIHwgMzI0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMjc0 IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NkbWFfdjRfMC5jCj4gaW5kZXggNTUzODRiYWQ3YTcwLi5hMzYyOTA0ZDczZjcgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYwo+IEBAIC00MjcsNiArNDI3LDU3 IEBAIHN0YXRpYyB2b2lkIHNkbWFfdjRfMF9yaW5nX3NldF93cHRyKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZykKPiAgCX0KPiAgfQo+ICAKPiArLyoqCj4gKyAqIHNkbWFfdjRfMF9wYWdlX3Jpbmdf Z2V0X3dwdHIgLSBnZXQgdGhlIGN1cnJlbnQgd3JpdGUgcG9pbnRlcgo+ICsgKgo+ICsgKiBAcmlu ZzogYW1kZ3B1IHJpbmcgcG9pbnRlcgo+ICsgKgo+ICsgKiBHZXQgdGhlIGN1cnJlbnQgd3B0ciBm cm9tIHRoZSBoYXJkd2FyZSAoVkVHQTEwKykuCj4gKyAqLwo+ICtzdGF0aWMgdWludDY0X3Qgc2Rt YV92NF8wX3BhZ2VfcmluZ19nZXRfd3B0cihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCj4gK3sK PiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKPiArCXU2NCB3cHRy Owo+ICsKPiArCWlmIChyaW5nLT51c2VfZG9vcmJlbGwpIHsKPiArCQkvKiBYWFggY2hlY2sgaWYg c3dhcHBpbmcgaXMgbmVjZXNzYXJ5IG9uIEJFICovCj4gKwkJd3B0ciA9IFJFQURfT05DRSgqKCh1 NjQgKikmYWRldi0+d2Iud2JbcmluZy0+d3B0cl9vZmZzXSkpOwo+ICsJfSBlbHNlIHsKPiArCQl3 cHRyID0gUlJFRzMyX1NETUEocmluZy0+bWUsIG1tU0RNQTBfUEFHRV9SQl9XUFRSX0hJKTsKPiAr CQl3cHRyID0gd3B0ciA8PCAzMjsKPiArCQl3cHRyIHw9IFJSRUczMl9TRE1BKHJpbmctPm1lLCBt bVNETUEwX1BBR0VfUkJfV1BUUik7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHdwdHIgPj4gMjsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIHNkbWFfdjRfMF9yaW5nX3NldF93cHRyIC0gY29tbWl0IHRoZSB3 cml0ZSBwb2ludGVyCj4gKyAqCj4gKyAqIEByaW5nOiBhbWRncHUgcmluZyBwb2ludGVyCj4gKyAq Cj4gKyAqIFdyaXRlIHRoZSB3cHRyIGJhY2sgdG8gdGhlIGhhcmR3YXJlIChWRUdBMTArKS4KPiAr ICovCj4gK3N0YXRpYyB2b2lkIHNkbWFfdjRfMF9wYWdlX3Jpbmdfc2V0X3dwdHIoc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nKQo+ICt7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJp bmctPmFkZXY7Cj4gKwo+ICsJaWYgKHJpbmctPnVzZV9kb29yYmVsbCkgewo+ICsJCXU2NCAqd2Ig PSAodTY0ICopJmFkZXYtPndiLndiW3JpbmctPndwdHJfb2Zmc107Cj4gKwo+ICsJCS8qIFhYWCBj aGVjayBpZiBzd2FwcGluZyBpcyBuZWNlc3Nhcnkgb24gQkUgKi8KPiArCQlXUklURV9PTkNFKCp3 YiwgKHJpbmctPndwdHIgPDwgMikpOwo+ICsJCVdET09SQkVMTDY0KHJpbmctPmRvb3JiZWxsX2lu ZGV4LCByaW5nLT53cHRyIDw8IDIpOwo+ICsJfSBlbHNlIHsKPiArCQl1aW50NjRfdCB3cHRyID0g cmluZy0+d3B0ciA8PCAyOwo+ICsKPiArCQlXUkVHMzJfU0RNQShyaW5nLT5tZSwgbW1TRE1BMF9Q QUdFX1JCX1dQVFIsCj4gKwkJCSAgICBsb3dlcl8zMl9iaXRzKHdwdHIpKTsKPiArCQlXUkVHMzJf U0RNQShyaW5nLT5tZSwgbW1TRE1BMF9QQUdFX1JCX1dQVFJfSEksCj4gKwkJCSAgICB1cHBlcl8z Ml9iaXRzKHdwdHIpKTsKPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgc2RtYV92NF8wX3Jp bmdfaW5zZXJ0X25vcChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGNvdW50KQo+ ICB7Cj4gIAlzdHJ1Y3QgYW1kZ3B1X3NkbWFfaW5zdGFuY2UgKnNkbWEgPSBhbWRncHVfZ2V0X3Nk bWFfaW5zdGFuY2UocmluZyk7Cj4gQEAgLTU5Nyw2ICs2NDgsMzUgQEAgc3RhdGljIHZvaWQgc2Rt YV92NF8wX3JsY19zdG9wKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAJLyogWFhYIHRv ZG8gKi8KPiAgfQo+ICAKPiArLyoqCj4gKyAqIHNkbWFfdjRfMF9wYWdlX3N0b3AgLSBzdG9wIHRo ZSBwYWdlIGFzeW5jIGRtYSBlbmdpbmVzCj4gKyAqCj4gKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNl IHBvaW50ZXIKPiArICoKPiArICogU3RvcCB0aGUgcGFnZSBhc3luYyBkbWEgcmluZyBidWZmZXJz IChWRUdBMTApLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgc2RtYV92NF8wX3BhZ2Vfc3RvcChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArewo+ICsJc3RydWN0IGFtZGdwdV9yaW5nICpzZG1h MCA9ICZhZGV2LT5zZG1hLmluc3RhbmNlWzBdLnBhZ2U7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnNkbWExID0gJmFkZXYtPnNkbWEuaW5zdGFuY2VbMV0ucGFnZTsKPiArCXUzMiByYl9jbnRsLCBp Yl9jbnRsOwo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVt X2luc3RhbmNlczsgaSsrKSB7Cj4gKwkJcmJfY250bCA9IFJSRUczMl9TRE1BKGksIG1tU0RNQTBf UEFHRV9SQl9DTlRMKTsKPiArCQlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1B MF9QQUdFX1JCX0NOVEwsCj4gKwkJCQkJUkJfRU5BQkxFLCAwKTsKPiArCQlXUkVHMzJfU0RNQShp LCBtbVNETUEwX1BBR0VfUkJfQ05UTCwgcmJfY250bCk7Cj4gKwkJaWJfY250bCA9IFJSRUczMl9T RE1BKGksIG1tU0RNQTBfUEFHRV9JQl9DTlRMKTsKPiArCQlpYl9jbnRsID0gUkVHX1NFVF9GSUVM RChpYl9jbnRsLCBTRE1BMF9QQUdFX0lCX0NOVEwsCj4gKwkJCQkJSUJfRU5BQkxFLCAwKTsKPiAr CQlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfSUJfQ05UTCwgaWJfY250bCk7Cj4gKwl9Cj4g Kwo+ICsJc2RtYTAtPnJlYWR5ID0gZmFsc2U7Cj4gKwlzZG1hMS0+cmVhZHkgPSBmYWxzZTsKPiAr fQo+ICsKPiAgLyoqCj4gICAqIHNkbWFfdl8wX2N0eF9zd2l0Y2hfZW5hYmxlIC0gc3RvcCB0aGUg YXN5bmMgZG1hIGVuZ2luZXMgY29udGV4dCBzd2l0Y2gKPiAgICoKPiBAQCAtNjY0LDYgKzc0NCw3 IEBAIHN0YXRpYyB2b2lkIHNkbWFfdjRfMF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIGJvb2wgZW5hYmxlKQo+ICAJaWYgKGVuYWJsZSA9PSBmYWxzZSkgewo+ICAJCXNkbWFfdjRf MF9nZnhfc3RvcChhZGV2KTsKPiAgCQlzZG1hX3Y0XzBfcmxjX3N0b3AoYWRldik7Cj4gKwkJc2Rt YV92NF8wX3BhZ2Vfc3RvcChhZGV2KTsKPiAgCX0KPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgYWRl di0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKPiBAQCAtNjczLDYgKzc1NCwyMyBAQCBzdGF0 aWMgdm9pZCBzZG1hX3Y0XzBfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29s IGVuYWJsZSkKPiAgCX0KPiAgfQo+ICAKPiArLyoqCj4gKyAqIHNkbWFfdjRfMF9yYl9jbnRsIC0g Z2V0IHBhcmFtZXRlcnMgZm9yIHJiX2NudGwKPiArICovCj4gK3N0YXRpYyB1aW50MzJfdCBzZG1h X3Y0XzBfcmJfY250bChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJiX2NudGwp Cj4gK3sKPiArCS8qIFNldCByaW5nIGJ1ZmZlciBzaXplIGluIGR3b3JkcyAqLwo+ICsJdWludDMy X3QgcmJfYnVmc3ogPSBvcmRlcl9iYXNlXzIocmluZy0+cmluZ19zaXplIC8gNCk7Cj4gKwo+ICsJ cmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsIFJCX1NJ WkUsIHJiX2J1ZnN6KTsKPiArI2lmZGVmIF9fQklHX0VORElBTgo+ICsJcmJfY250bCA9IFJFR19T RVRfRklFTEQocmJfY250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsIFJCX1NXQVBfRU5BQkxFLCAxKTsK PiArCXJiX2NudGwgPSBSRUdfU0VUX0ZJRUxEKHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLAo+ ICsJCQkJUlBUUl9XUklURUJBQ0tfU1dBUF9FTkFCTEUsIDEpOwo+ICsjZW5kaWYKPiArCXJldHVy biByYl9jbnRsOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogc2RtYV92NF8wX2dmeF9yZXN1bWUgLSBz ZXR1cCBhbmQgc3RhcnQgdGhlIGFzeW5jIGRtYSBlbmdpbmVzCj4gICAqCj4gQEAgLTY4Niw3ICs3 ODQsNiBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfZ2Z4X3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgdW5zaWduZWQgaW50IGkpCj4gIHsKPiAgCXN0cnVjdCBhbWRncHVfcmluZyAq cmluZyA9ICZhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnJpbmc7Cj4gIAl1MzIgcmJfY250bCwgaWJf Y250bCwgd3B0cl9wb2xsX2NudGw7Cj4gLQl1MzIgcmJfYnVmc3o7Cj4gIAl1MzIgd2Jfb2Zmc2V0 Owo+ICAJdTMyIGRvb3JiZWxsOwo+ICAJdTMyIGRvb3JiZWxsX29mZnNldDsKPiBAQCAtNjk0LDE1 ICs3OTEsOCBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfZ2Z4X3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdW5zaWduZWQgaW50IGkpCj4gIAo+ICAJd2Jfb2Zmc2V0ID0gKHJpbmct PnJwdHJfb2ZmcyAqIDQpOwo+ICAKPiAtCS8qIFNldCByaW5nIGJ1ZmZlciBzaXplIGluIGR3b3Jk cyAqLwo+IC0JcmJfYnVmc3ogPSBvcmRlcl9iYXNlXzIocmluZy0+cmluZ19zaXplIC8gNCk7Cj4g IAlyYl9jbnRsID0gUlJFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfQ05UTCk7Cj4gLQlyYl9j bnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwgUkJfU0laRSwg cmJfYnVmc3opOwo+IC0jaWZkZWYgX19CSUdfRU5ESUFOCj4gLQlyYl9jbnRsID0gUkVHX1NFVF9G SUVMRChyYl9jbnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwgUkJfU1dBUF9FTkFCTEUsIDEpOwo+IC0J cmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsCj4gLQkJ CQlSUFRSX1dSSVRFQkFDS19TV0FQX0VOQUJMRSwgMSk7Cj4gLSNlbmRpZgo+ICsJcmJfY250bCA9 IHNkbWFfdjRfMF9yYl9jbnRsKHJpbmcsIHJiX2NudGwpOwo+ICAJV1JFRzMyX1NETUEoaSwgbW1T RE1BMF9HRlhfUkJfQ05UTCwgcmJfY250bCk7Cj4gIAo+ICAJLyogSW5pdGlhbGl6ZSB0aGUgcmlu ZyBidWZmZXIncyByZWFkIGFuZCB3cml0ZSBwb2ludGVycyAqLwo+IEBAIC03MTcsNyArODA3LDgg QEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX2dmeF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVuc2lnbmVkIGludCBpKQo+ICAJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJf UlBUUl9BRERSX0xPLAo+ICAJICAgICAgIGxvd2VyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIg KyB3Yl9vZmZzZXQpICYgMHhGRkZGRkZGQyk7Cj4gIAo+IC0JcmJfY250bCA9IFJFR19TRVRfRklF TEQocmJfY250bCwgU0RNQTBfR0ZYX1JCX0NOVEwsIFJQVFJfV1JJVEVCQUNLX0VOQUJMRSwgMSk7 Cj4gKwlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwK PiArCQkJCVJQVFJfV1JJVEVCQUNLX0VOQUJMRSwgMSk7Cj4gIAo+ICAJV1JFRzMyX1NETUEoaSwg bW1TRE1BMF9HRlhfUkJfQkFTRSwgcmluZy0+Z3B1X2FkZHIgPj4gOCk7Cj4gIAlXUkVHMzJfU0RN QShpLCBtbVNETUEwX0dGWF9SQl9CQVNFX0hJLCByaW5nLT5ncHVfYWRkciA+PiA0MCk7Cj4gQEAg LTczMCwxMyArODIxLDExIEBAIHN0YXRpYyB2b2lkIHNkbWFfdjRfMF9nZnhfcmVzdW1lKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBpbnQgaSkKPiAgCWRvb3JiZWxsID0gUlJF RzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfRE9PUkJFTEwpOwo+ICAJZG9vcmJlbGxfb2Zmc2V0ID0g UlJFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfRE9PUkJFTExfT0ZGU0VUKTsKPiAgCj4gLQlpZiAo cmluZy0+dXNlX2Rvb3JiZWxsKSB7Cj4gLQkJZG9vcmJlbGwgPSBSRUdfU0VUX0ZJRUxEKGRvb3Ji ZWxsLCBTRE1BMF9HRlhfRE9PUkJFTEwsIEVOQUJMRSwgMSk7Cj4gLQkJZG9vcmJlbGxfb2Zmc2V0 ID0gUkVHX1NFVF9GSUVMRChkb29yYmVsbF9vZmZzZXQsIFNETUEwX0dGWF9ET09SQkVMTF9PRkZT RVQsCj4gLQkJCQlPRkZTRVQsIHJpbmctPmRvb3JiZWxsX2luZGV4KTsKPiAtCX0gZWxzZSB7Cj4g LQkJZG9vcmJlbGwgPSBSRUdfU0VUX0ZJRUxEKGRvb3JiZWxsLCBTRE1BMF9HRlhfRE9PUkJFTEws IEVOQUJMRSwgMCk7Cj4gLQl9Cj4gKwlkb29yYmVsbCA9IFJFR19TRVRfRklFTEQoZG9vcmJlbGws IFNETUEwX0dGWF9ET09SQkVMTCwgRU5BQkxFLAo+ICsJCQkJIHJpbmctPnVzZV9kb29yYmVsbCk7 Cj4gKwlkb29yYmVsbF9vZmZzZXQgPSBSRUdfU0VUX0ZJRUxEKGRvb3JiZWxsX29mZnNldCwKPiAr CQkJCQlTRE1BMF9HRlhfRE9PUkJFTExfT0ZGU0VULAo+ICsJCQkJCU9GRlNFVCwgcmluZy0+ZG9v cmJlbGxfaW5kZXgpOwo+ICAJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfRE9PUkJFTEwsIGRv b3JiZWxsKTsKPiAgCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfR0ZYX0RPT1JCRUxMX09GRlNFVCwg ZG9vcmJlbGxfb2Zmc2V0KTsKPiAgCWFkZXYtPm5iaW9fZnVuY3MtPnNkbWFfZG9vcmJlbGxfcmFu Z2UoYWRldiwgaSwgcmluZy0+dXNlX2Rvb3JiZWxsLAo+IEBAIC03NTQsMTAgKzg0Myw5IEBAIHN0 YXRpYyB2b2lkIHNkbWFfdjRfMF9nZnhfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1bnNpZ25lZCBpbnQgaSkKPiAgCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfR0ZYX1JCX1dQVFJf UE9MTF9BRERSX0hJLAo+ICAJCSAgICB1cHBlcl8zMl9iaXRzKHdwdHJfZ3B1X2FkZHIpKTsKPiAg CXdwdHJfcG9sbF9jbnRsID0gUlJFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9QT0xM X0NOVEwpOwo+IC0JaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkKPiAtCQl3cHRyX3BvbGxfY250 bCA9IFJFR19TRVRfRklFTEQod3B0cl9wb2xsX2NudGwsIFNETUEwX0dGWF9SQl9XUFRSX1BPTExf Q05UTCwgRjMyX1BPTExfRU5BQkxFLCAxKTsKPiAtCWVsc2UKPiAtCQl3cHRyX3BvbGxfY250bCA9 IFJFR19TRVRfRklFTEQod3B0cl9wb2xsX2NudGwsIFNETUEwX0dGWF9SQl9XUFRSX1BPTExfQ05U TCwgRjMyX1BPTExfRU5BQkxFLCAwKTsKPiArCXdwdHJfcG9sbF9jbnRsID0gUkVHX1NFVF9GSUVM RCh3cHRyX3BvbGxfY250bCwKPiArCQkJCSAgICAgICBTRE1BMF9HRlhfUkJfV1BUUl9QT0xMX0NO VEwsCj4gKwkJCQkgICAgICAgRjMyX1BPTExfRU5BQkxFLCBhbWRncHVfc3Jpb3ZfdmYoYWRldikp Owo+ICAJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9QT0xMX0NOVEwsIHdwdHJf cG9sbF9jbnRsKTsKPiAgCj4gIAkvKiBlbmFibGUgRE1BIFJCICovCj4gQEAgLTc3NSw2ICs4NjMs OTkgQEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX2dmeF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHVuc2lnbmVkIGludCBpKQo+ICAJcmluZy0+cmVhZHkgPSB0cnVlOwo+ICB9Cj4g IAo+ICsvKioKPiArICogc2RtYV92NF8wX3BhZ2VfcmVzdW1lIC0gc2V0dXAgYW5kIHN0YXJ0IHRo ZSBhc3luYyBkbWEgZW5naW5lcwo+ICsgKgo+ICsgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2lu dGVyCj4gKyAqIEBpOiBpbnN0YW5jZSB0byByZXN1bWUKPiArICoKPiArICogU2V0IHVwIHRoZSBw YWdlIERNQSByaW5nIGJ1ZmZlcnMgYW5kIGVuYWJsZSB0aGVtIChWRUdBMTApLgo+ICsgKiBSZXR1 cm5zIDAgZm9yIHN1Y2Nlc3MsIGVycm9yIGZvciBmYWlsdXJlLgo+ICsgKi8KPiArc3RhdGljIHZv aWQgc2RtYV92NF8wX3BhZ2VfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNp Z25lZCBpbnQgaSkKPiArewo+ICsJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gJmFkZXYtPnNk bWEuaW5zdGFuY2VbaV0ucGFnZTsKPiArCXUzMiByYl9jbnRsLCBpYl9jbnRsLCB3cHRyX3BvbGxf Y250bDsKPiArCXUzMiB3Yl9vZmZzZXQ7Cj4gKwl1MzIgZG9vcmJlbGw7Cj4gKwl1MzIgZG9vcmJl bGxfb2Zmc2V0Owo+ICsJdTY0IHdwdHJfZ3B1X2FkZHI7Cj4gKwo+ICsJd2Jfb2Zmc2V0ID0gKHJp bmctPnJwdHJfb2ZmcyAqIDQpOwo+ICsKPiArCXJiX2NudGwgPSBSUkVHMzJfU0RNQShpLCBtbVNE TUEwX1BBR0VfUkJfQ05UTCk7Cj4gKwlyYl9jbnRsID0gc2RtYV92NF8wX3JiX2NudGwocmluZywg cmJfY250bCk7Cj4gKwlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfUkJfQ05UTCwgcmJfY250 bCk7Cj4gKwo+ICsJLyogSW5pdGlhbGl6ZSB0aGUgcmluZyBidWZmZXIncyByZWFkIGFuZCB3cml0 ZSBwb2ludGVycyAqLwo+ICsJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX1JQVFIsIDAp Owo+ICsJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX1JQVFJfSEksIDApOwo+ICsJV1JF RzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX1dQVFIsIDApOwo+ICsJV1JFRzMyX1NETUEoaSwg bW1TRE1BMF9QQUdFX1JCX1dQVFJfSEksIDApOwo+ICsKPiArCS8qIHNldCB0aGUgd2IgYWRkcmVz cyB3aGV0aGVyIGl0J3MgZW5hYmxlZCBvciBub3QgKi8KPiArCVdSRUczMl9TRE1BKGksIG1tU0RN QTBfUEFHRV9SQl9SUFRSX0FERFJfSEksCj4gKwkgICAgICAgdXBwZXJfMzJfYml0cyhhZGV2LT53 Yi5ncHVfYWRkciArIHdiX29mZnNldCkgJiAweEZGRkZGRkZGKTsKPiArCVdSRUczMl9TRE1BKGks IG1tU0RNQTBfUEFHRV9SQl9SUFRSX0FERFJfTE8sCj4gKwkgICAgICAgbG93ZXJfMzJfYml0cyhh ZGV2LT53Yi5ncHVfYWRkciArIHdiX29mZnNldCkgJiAweEZGRkZGRkZDKTsKPiArCj4gKwlyYl9j bnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9QQUdFX1JCX0NOVEwsCj4gKwkJCQlS UFRSX1dSSVRFQkFDS19FTkFCTEUsIDEpOwo+ICsKPiArCVdSRUczMl9TRE1BKGksIG1tU0RNQTBf UEFHRV9SQl9CQVNFLCByaW5nLT5ncHVfYWRkciA+PiA4KTsKPiArCVdSRUczMl9TRE1BKGksIG1t U0RNQTBfUEFHRV9SQl9CQVNFX0hJLCByaW5nLT5ncHVfYWRkciA+PiA0MCk7Cj4gKwo+ICsJcmlu Zy0+d3B0ciA9IDA7Cj4gKwo+ICsJLyogYmVmb3JlIHByb2dyYW1pbmcgd3B0ciB0byBhIGxlc3Mg dmFsdWUsIG5lZWQgc2V0IG1pbm9yX3B0cl91cGRhdGUgZmlyc3QgKi8KPiArCVdSRUczMl9TRE1B KGksIG1tU0RNQTBfUEFHRV9NSU5PUl9QVFJfVVBEQVRFLCAxKTsKPiArCj4gKwlkb29yYmVsbCA9 IFJSRUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9ET09SQkVMTCk7Cj4gKwlkb29yYmVsbF9vZmZz ZXQgPSBSUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfRE9PUkJFTExfT0ZGU0VUKTsKPiArCj4g Kwlkb29yYmVsbCA9IFJFR19TRVRfRklFTEQoZG9vcmJlbGwsIFNETUEwX1BBR0VfRE9PUkJFTEws IEVOQUJMRSwKPiArCQkJCSByaW5nLT51c2VfZG9vcmJlbGwpOwo+ICsJZG9vcmJlbGxfb2Zmc2V0 ID0gUkVHX1NFVF9GSUVMRChkb29yYmVsbF9vZmZzZXQsCj4gKwkJCQkJU0RNQTBfUEFHRV9ET09S QkVMTF9PRkZTRVQsCj4gKwkJCQkJT0ZGU0VULCByaW5nLT5kb29yYmVsbF9pbmRleCk7Cj4gKwlX UkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfRE9PUkJFTEwsIGRvb3JiZWxsKTsKPiArCVdSRUcz Ml9TRE1BKGksIG1tU0RNQTBfUEFHRV9ET09SQkVMTF9PRkZTRVQsIGRvb3JiZWxsX29mZnNldCk7 Cj4gKwkvKiBUT0RPOiBlbmFibGUgZG9vcmJlbGwgc3VwcG9ydCAqLwo+ICsJLyphZGV2LT5uYmlv X2Z1bmNzLT5zZG1hX2Rvb3JiZWxsX3JhbmdlKGFkZXYsIGksIHJpbmctPnVzZV9kb29yYmVsbCwK PiArCQkJCQkgICAgICByaW5nLT5kb29yYmVsbF9pbmRleCk7Ki8KPiArCj4gKwlzZG1hX3Y0XzBf cmluZ19zZXRfd3B0cihyaW5nKTsKPiArCj4gKwkvKiBzZXQgbWlub3JfcHRyX3VwZGF0ZSB0byAw IGFmdGVyIHdwdHIgcHJvZ3JhbWVkICovCj4gKwlXUkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0Vf TUlOT1JfUFRSX1VQREFURSwgMCk7Cj4gKwo+ICsJLyogc2V0dXAgdGhlIHdwdHIgc2hhZG93IHBv bGxpbmcgKi8KPiArCXdwdHJfZ3B1X2FkZHIgPSBhZGV2LT53Yi5ncHVfYWRkciArIChyaW5nLT53 cHRyX29mZnMgKiA0KTsKPiArCVdSRUczMl9TRE1BKGksIG1tU0RNQTBfUEFHRV9SQl9XUFRSX1BP TExfQUREUl9MTywKPiArCQkgICAgbG93ZXJfMzJfYml0cyh3cHRyX2dwdV9hZGRyKSk7Cj4gKwlX UkVHMzJfU0RNQShpLCBtbVNETUEwX1BBR0VfUkJfV1BUUl9QT0xMX0FERFJfSEksCj4gKwkJICAg IHVwcGVyXzMyX2JpdHMod3B0cl9ncHVfYWRkcikpOwo+ICsJd3B0cl9wb2xsX2NudGwgPSBSUkVH MzJfU0RNQShpLCBtbVNETUEwX1BBR0VfUkJfV1BUUl9QT0xMX0NOVEwpOwo+ICsJd3B0cl9wb2xs X2NudGwgPSBSRUdfU0VUX0ZJRUxEKHdwdHJfcG9sbF9jbnRsLAo+ICsJCQkJICAgICAgIFNETUEw X1BBR0VfUkJfV1BUUl9QT0xMX0NOVEwsCj4gKwkJCQkgICAgICAgRjMyX1BPTExfRU5BQkxFLCBh bWRncHVfc3Jpb3ZfdmYoYWRldikpOwo+ICsJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JC X1dQVFJfUE9MTF9DTlRMLCB3cHRyX3BvbGxfY250bCk7Cj4gKwo+ICsJLyogZW5hYmxlIERNQSBS QiAqLwo+ICsJcmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250bCwgU0RNQTBfUEFHRV9SQl9D TlRMLCBSQl9FTkFCTEUsIDEpOwo+ICsJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9QQUdFX1JCX0NO VEwsIHJiX2NudGwpOwo+ICsKPiArCWliX2NudGwgPSBSUkVHMzJfU0RNQShpLCBtbVNETUEwX1BB R0VfSUJfQ05UTCk7Cj4gKwlpYl9jbnRsID0gUkVHX1NFVF9GSUVMRChpYl9jbnRsLCBTRE1BMF9Q QUdFX0lCX0NOVEwsIElCX0VOQUJMRSwgMSk7Cj4gKyNpZmRlZiBfX0JJR19FTkRJQU4KPiArCWli X2NudGwgPSBSRUdfU0VUX0ZJRUxEKGliX2NudGwsIFNETUEwX1BBR0VfSUJfQ05UTCwgSUJfU1dB UF9FTkFCTEUsIDEpOwo+ICsjZW5kaWYKPiArCS8qIGVuYWJsZSBETUEgSUJzICovCj4gKwlXUkVH MzJfU0RNQShpLCBtbVNETUEwX1BBR0VfSUJfQ05UTCwgaWJfY250bCk7Cj4gKwo+ICsJcmluZy0+ cmVhZHkgPSB0cnVlOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZAo+ICBzZG1hX3Y0XzFfdXBkYXRl X3Bvd2VyX2dhdGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCj4g IHsKPiBAQCAtOTMyLDYgKzExMTMsNyBAQCBzdGF0aWMgaW50IHNkbWFfdjRfMF9zdGFydChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgCj4gIAkJV1JFRzMyX1NETUEoaSwgbW1TRE1BMF9T RU1fV0FJVF9GQUlMX1RJTUVSX0NOVEwsIDApOwo+ICAJCXNkbWFfdjRfMF9nZnhfcmVzdW1lKGFk ZXYsIGkpOwo+ICsJCXNkbWFfdjRfMF9wYWdlX3Jlc3VtZShhZGV2LCBpKTsKPiAgCj4gIAkJLyog c2V0IHV0YyBsMSBlbmFibGUgZmxhZyBhbHdheXMgdG8gMSAqLwo+ICAJCXRlbXAgPSBSUkVHMzJf U0RNQShpLCBtbVNETUEwX0NOVEwpOwo+IEBAIC0xMzM3LDYgKzE1MTksMTkgQEAgc3RhdGljIGlu dCBzZG1hX3Y0XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCj4gIAkJCQkgICAgIEFNREdQVV9TRE1B X0lSUV9UUkFQMSk7Cj4gIAkJaWYgKHIpCj4gIAkJCXJldHVybiByOwo+ICsKPiArCQlyaW5nID0g JmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucGFnZTsKPiArCQlyaW5nLT5yaW5nX29iaiA9IE5VTEw7 Cj4gKwkJcmluZy0+dXNlX2Rvb3JiZWxsID0gZmFsc2U7Cj4gKwo+ICsJCXNwcmludGYocmluZy0+ bmFtZSwgInBhZ2UlZCIsIGkpOwo+ICsJCXIgPSBhbWRncHVfcmluZ19pbml0KGFkZXYsIHJpbmcs IDEwMjQsCj4gKwkJCQkgICAgICZhZGV2LT5zZG1hLnRyYXBfaXJxLAo+ICsJCQkJICAgICAoaSA9 PSAwKSA/Cj4gKwkJCQkgICAgIEFNREdQVV9TRE1BX0lSUV9UUkFQMCA6Cj4gKwkJCQkgICAgIEFN REdQVV9TRE1BX0lSUV9UUkFQMSk7Cj4gKwkJaWYgKHIpCj4gKwkJCXJldHVybiByOwo+ICAJfQo+ ICAKPiAgCXJldHVybiByOwo+IEBAIC0xMzQ3LDggKzE1NDIsMTAgQEAgc3RhdGljIGludCBzZG1h X3Y0XzBfc3dfZmluaSh2b2lkICpoYW5kbGUpCj4gIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPiAgCWludCBpOwo+ICAKPiAtCWZv ciAoaSA9IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7IGkrKykKPiArCWZvciAoaSA9 IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7IGkrKykgewo+ICAJCWFtZGdwdV9yaW5n X2ZpbmkoJmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucmluZyk7Cj4gKwkJYW1kZ3B1X3JpbmdfZmlu aSgmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5wYWdlKTsKPiArCX0KPiAgCj4gIAlmb3IgKGkgPSAw OyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKPiAgCQlyZWxlYXNlX2Zpcm13 YXJlKGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncpOwo+IEBAIC0xNDYyLDM5ICsxNjU5LDMyIEBA IHN0YXRpYyBpbnQgc2RtYV92NF8wX3Byb2Nlc3NfdHJhcF9pcnEoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCj4gIAkJCQkgICAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKnNvdXJjZSwKPiAg CQkJCSAgICAgIHN0cnVjdCBhbWRncHVfaXZfZW50cnkgKmVudHJ5KQo+ICB7Cj4gKwl1aW50MzJf dCBpbnN0YW5jZTsKPiArCj4gIAlEUk1fREVCVUcoIklIOiBTRE1BIHRyYXBcbiIpOwo+ICAJc3dp dGNoIChlbnRyeS0+Y2xpZW50X2lkKSB7Cj4gIAljYXNlIFNPQzE1X0lIX0NMSUVOVElEX1NETUEw Ogo+IC0JCXN3aXRjaCAoZW50cnktPnJpbmdfaWQpIHsKPiAtCQljYXNlIDA6Cj4gLQkJCWFtZGdw dV9mZW5jZV9wcm9jZXNzKCZhZGV2LT5zZG1hLmluc3RhbmNlWzBdLnJpbmcpOwo+IC0JCQlicmVh azsKPiAtCQljYXNlIDE6Cj4gLQkJCS8qIFhYWCBjb21wdXRlICovCj4gLQkJCWJyZWFrOwo+IC0J CWNhc2UgMjoKPiAtCQkJLyogWFhYIGNvbXB1dGUgKi8KPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSAz Ogo+IC0JCQkvKiBYWFggcGFnZSBxdWV1ZSovCj4gLQkJCWJyZWFrOwo+IC0JCX0KPiArCQlpbnN0 YW5jZSA9IDA7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFNPQzE1X0lIX0NMSUVOVElEX1NETUExOgo+ IC0JCXN3aXRjaCAoZW50cnktPnJpbmdfaWQpIHsKPiAtCQljYXNlIDA6Cj4gLQkJCWFtZGdwdV9m ZW5jZV9wcm9jZXNzKCZhZGV2LT5zZG1hLmluc3RhbmNlWzFdLnJpbmcpOwo+IC0JCQlicmVhazsK PiAtCQljYXNlIDE6Cj4gLQkJCS8qIFhYWCBjb21wdXRlICovCj4gLQkJCWJyZWFrOwo+IC0JCWNh c2UgMjoKPiAtCQkJLyogWFhYIGNvbXB1dGUgKi8KPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSAzOgo+ IC0JCQkvKiBYWFggcGFnZSBxdWV1ZSovCj4gLQkJCWJyZWFrOwo+IC0JCX0KPiArCQlpbnN0YW5j ZSA9IDE7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsK PiArCXN3aXRjaCAoZW50cnktPnJpbmdfaWQpIHsKPiArCWNhc2UgMDoKPiArCQlhbWRncHVfZmVu Y2VfcHJvY2VzcygmYWRldi0+c2RtYS5pbnN0YW5jZVtpbnN0YW5jZV0ucmluZyk7Cj4gKwkJYnJl YWs7Cj4gKwljYXNlIDE6Cj4gKwkJLyogWFhYIGNvbXB1dGUgKi8KPiArCQlicmVhazsKPiArCWNh c2UgMjoKPiArCQkvKiBYWFggY29tcHV0ZSAqLwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAzOgo+ICsJ CWFtZGdwdV9mZW5jZV9wcm9jZXNzKCZhZGV2LT5zZG1hLmluc3RhbmNlW2luc3RhbmNlXS5wYWdl KTsKPiAgCQlicmVhazsKPiAgCX0KPiAgCXJldHVybiAwOwo+IEBAIC0xNzIyLDYgKzE5MTIsMzgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyBzZG1hX3Y0XzBfcmluZ19m dW5jcyA9IHsKPiAgCS5lbWl0X3JlZ193cml0ZV9yZWdfd2FpdCA9IGFtZGdwdV9yaW5nX2VtaXRf cmVnX3dyaXRlX3JlZ193YWl0X2hlbHBlciwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYW1kZ3B1X3JpbmdfZnVuY3Mgc2RtYV92NF8wX3BhZ2VfcmluZ19mdW5jcyA9IHsKPiArCS50 eXBlID0gQU1ER1BVX1JJTkdfVFlQRV9TRE1BLAo+ICsJLmFsaWduX21hc2sgPSAweGYsCj4gKwku bm9wID0gU0RNQV9QS1RfTk9QX0hFQURFUl9PUChTRE1BX09QX05PUCksCj4gKwkuc3VwcG9ydF82 NGJpdF9wdHJzID0gdHJ1ZSwKPiArCS52bWh1YiA9IEFNREdQVV9NTUhVQiwKPiArCS5nZXRfcnB0 ciA9IHNkbWFfdjRfMF9yaW5nX2dldF9ycHRyLAo+ICsJLmdldF93cHRyID0gc2RtYV92NF8wX3Bh Z2VfcmluZ19nZXRfd3B0ciwKPiArCS5zZXRfd3B0ciA9IHNkbWFfdjRfMF9wYWdlX3Jpbmdfc2V0 X3dwdHIsCj4gKwkuZW1pdF9mcmFtZV9zaXplID0KPiArCQk2ICsgLyogc2RtYV92NF8wX3Jpbmdf ZW1pdF9oZHBfZmx1c2ggKi8KPiArCQkzICsgLyogaGRwIGludmFsaWRhdGUgKi8KPiArCQk2ICsg Lyogc2RtYV92NF8wX3JpbmdfZW1pdF9waXBlbGluZV9zeW5jICovCj4gKwkJLyogc2RtYV92NF8w X3JpbmdfZW1pdF92bV9mbHVzaCAqLwo+ICsJCVNPQzE1X0ZMVVNIX0dQVV9UTEJfTlVNX1dSRUcg KiAzICsKPiArCQlTT0MxNV9GTFVTSF9HUFVfVExCX05VTV9SRUdfV0FJVCAqIDYgKwo+ICsJCTEw ICsgMTAgKyAxMCwgLyogc2RtYV92NF8wX3JpbmdfZW1pdF9mZW5jZSB4MyBmb3IgdXNlciBmZW5j ZSwgdm0gZmVuY2UgKi8KPiArCS5lbWl0X2liX3NpemUgPSA3ICsgNiwgLyogc2RtYV92NF8wX3Jp bmdfZW1pdF9pYiAqLwo+ICsJLmVtaXRfaWIgPSBzZG1hX3Y0XzBfcmluZ19lbWl0X2liLAo+ICsJ LmVtaXRfZmVuY2UgPSBzZG1hX3Y0XzBfcmluZ19lbWl0X2ZlbmNlLAo+ICsJLmVtaXRfcGlwZWxp bmVfc3luYyA9IHNkbWFfdjRfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYywKPiArCS5lbWl0X3Zt X2ZsdXNoID0gc2RtYV92NF8wX3JpbmdfZW1pdF92bV9mbHVzaCwKPiArCS5lbWl0X2hkcF9mbHVz aCA9IHNkbWFfdjRfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoLAo+ICsJLnRlc3RfcmluZyA9IHNkbWFf djRfMF9yaW5nX3Rlc3RfcmluZywKPiArCS50ZXN0X2liID0gc2RtYV92NF8wX3JpbmdfdGVzdF9p YiwKPiArCS5pbnNlcnRfbm9wID0gc2RtYV92NF8wX3JpbmdfaW5zZXJ0X25vcCwKPiArCS5wYWRf aWIgPSBzZG1hX3Y0XzBfcmluZ19wYWRfaWIsCj4gKwkuZW1pdF93cmVnID0gc2RtYV92NF8wX3Jp bmdfZW1pdF93cmVnLAo+ICsJLmVtaXRfcmVnX3dhaXQgPSBzZG1hX3Y0XzBfcmluZ19lbWl0X3Jl Z193YWl0LAo+ICsJLmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0ID0gYW1kZ3B1X3JpbmdfZW1pdF9y ZWdfd3JpdGVfcmVnX3dhaXRfaGVscGVyLAo+ICt9Owo+ICsKPiAgc3RhdGljIHZvaWQgc2RtYV92 NF8wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICB7Cj4gIAlp bnQgaTsKPiBAQCAtMTcyOSw2ICsxOTUxLDggQEAgc3RhdGljIHZvaWQgc2RtYV92NF8wX3NldF9y aW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAJZm9yIChpID0gMDsgaSA8 IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7Cj4gIAkJYWRldi0+c2RtYS5pbnN0YW5j ZVtpXS5yaW5nLmZ1bmNzID0gJnNkbWFfdjRfMF9yaW5nX2Z1bmNzOwo+ICAJCWFkZXYtPnNkbWEu aW5zdGFuY2VbaV0ucmluZy5tZSA9IGk7Cj4gKwkJYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5wYWdl LmZ1bmNzID0gJnNkbWFfdjRfMF9wYWdlX3JpbmdfZnVuY3M7Cj4gKwkJYWRldi0+c2RtYS5pbnN0 YW5jZVtpXS5wYWdlLm1lID0gaTsKPiAgCX0KPiAgfQo+ICAKPiAtLSAKPiAyLjE0LjEKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZngg bWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==