From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 3/3] drm/amdgpu: cleanup adjust_mc_addr handling Date: Mon, 15 May 2017 10:46:16 +0800 Message-ID: <59191678.8060800@amd.com> References: <1494596880-3968-1-git-send-email-deathsimple@vodafone.de> <1494596880-3968-3-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1494596880-3968-3-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@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: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org dGhlIHNlcmllcyBpcyBSZXZpZXdlZC1ieTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1k LmNvbT4KCk9uIDIwMTflubQwNeaciDEy5pelIDIxOjQ4LCBDaHJpc3RpYW4gS8O2bmlnIHdyb3Rl Ogo+IEZyb206IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPgo+ IFJlbmFtZSBhZGp1c3RfbWNfYWRkciB0byBnZXRfdm1fcGRlLCBjaGVjayB0aGUgYWRkcmVzcyBi aXRzIGluIG9uZSBwbGFjZSBhbmQKPiBtb3ZlIHNldHRpbmcgdGhlIHZhbGlkIGJpdCBpbiB0aGVy ZSBhcyB3ZWxsLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1LmggICAgfCAgNSArKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3ZtLmMgfCAzNCArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jICB8ICA1ICstLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jICB8ICA2ICsrKysrKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyAgfCAgOCArKysrKysrLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYyAgfCAgOCArKysrKysrLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYyAgfCAxMCArKysrKystLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyB8ICA1ICstLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS91dmRfdjdfMC5jICB8IDEwICsrLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3ZjZV92NF8wLmMgIHwgIDUgKy0tLS0KPiAgIDEwIGZpbGVzIGNoYW5n ZWQsIDQ2IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgKPiBpbmRleCBmYWRlYjU1Li5iYzA4OWViIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1LmgKPiBAQCAtMzA5LDggKzMwOSw4IEBAIHN0cnVjdCBhbWRncHVf Z2FydF9mdW5jcyB7Cj4gICAJLyogc2V0IHB0ZSBmbGFncyBiYXNlZCBwZXIgYXNpYyAqLwo+ICAg CXVpbnQ2NF90ICgqZ2V0X3ZtX3B0ZV9mbGFncykoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4gICAJCQkJICAgICB1aW50MzJfdCBmbGFncyk7Cj4gLQkvKiBhZGp1c3QgbWMgYWRkciBpbiBm YiBmb3IgQVBVIGNhc2UgKi8KPiAtCXU2NCAoKmFkanVzdF9tY19hZGRyKShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdTY0IGFkZHIpOwo+ICsJLyogZ2V0IHRoZSBwZGUgZm9yIGEgZ2l2ZW4g bWMgYWRkciAqLwo+ICsJdTY0ICgqZ2V0X3ZtX3BkZSkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHU2NCBhZGRyKTsKPiAgIAl1aW50MzJfdCAoKmdldF9pbnZhbGlkYXRlX3JlcSkodW5zaWdu ZWQgaW50IHZtX2lkKTsKPiAgIH07Cj4gICAKPiBAQCAtMTgxNiw2ICsxODE2LDcgQEAgYW1kZ3B1 X2dldF9zZG1hX2luc3RhbmNlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKPiAgICNkZWZpbmUg YW1kZ3B1X2FzaWNfZ2V0X2NvbmZpZ19tZW1zaXplKGFkZXYpIChhZGV2KS0+YXNpY19mdW5jcy0+ Z2V0X2NvbmZpZ19tZW1zaXplKChhZGV2KSkKPiAgICNkZWZpbmUgYW1kZ3B1X2dhcnRfZmx1c2hf Z3B1X3RsYihhZGV2LCB2bWlkKSAoYWRldiktPmdhcnQuZ2FydF9mdW5jcy0+Zmx1c2hfZ3B1X3Rs YigoYWRldiksICh2bWlkKSkKPiAgICNkZWZpbmUgYW1kZ3B1X2dhcnRfc2V0X3B0ZV9wZGUoYWRl diwgcHQsIGlkeCwgYWRkciwgZmxhZ3MpIChhZGV2KS0+Z2FydC5nYXJ0X2Z1bmNzLT5zZXRfcHRl X3BkZSgoYWRldiksIChwdCksIChpZHgpLCAoYWRkciksIChmbGFncykpCj4gKyNkZWZpbmUgYW1k Z3B1X2dhcnRfZ2V0X3ZtX3BkZShhZGV2LCBhZGRyKSAoYWRldiktPmdhcnQuZ2FydF9mdW5jcy0+ Z2V0X3ZtX3BkZSgoYWRldiksIChhZGRyKSkKPiAgICNkZWZpbmUgYW1kZ3B1X3ZtX2NvcHlfcHRl KGFkZXYsIGliLCBwZSwgc3JjLCBjb3VudCkgKChhZGV2KS0+dm1fbWFuYWdlci52bV9wdGVfZnVu Y3MtPmNvcHlfcHRlKChpYiksIChwZSksIChzcmMpLCAoY291bnQpKSkKPiAgICNkZWZpbmUgYW1k Z3B1X3ZtX3dyaXRlX3B0ZShhZGV2LCBpYiwgcGUsIHZhbHVlLCBjb3VudCwgaW5jcikgKChhZGV2 KS0+dm1fbWFuYWdlci52bV9wdGVfZnVuY3MtPndyaXRlX3B0ZSgoaWIpLCAocGUpLCAodmFsdWUp LCAoY291bnQpLCAoaW5jcikpKQo+ICAgI2RlZmluZSBhbWRncHVfdm1fc2V0X3B0ZV9wZGUoYWRl diwgaWIsIHBlLCBhZGRyLCBjb3VudCwgaW5jciwgZmxhZ3MpICgoYWRldiktPnZtX21hbmFnZXIu dm1fcHRlX2Z1bmNzLT5zZXRfcHRlX3BkZSgoaWIpLCAocGUpLCAoYWRkciksIChjb3VudCksIChp bmNyKSwgKGZsYWdzKSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiBp bmRleCA4ODQyMGRjLi5jMTBmM2NlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92bS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3ZtLmMKPiBAQCAtNjgyLDE2ICs2ODIsNiBAQCBzdGF0aWMgYm9vbCBhbWRncHVfdm1fcmlu Z19oYXNfY29tcHV0ZV92bV9idWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+ICAgCXJldHVy biBmYWxzZTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdTY0IGFtZGdwdV92bV9hZGp1c3RfbWNfYWRk cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTY0IG1jX2FkZHIpCj4gLXsKPiAtCXU2NCBh ZGRyID0gbWNfYWRkcjsKPiAtCj4gLQlpZiAoYWRldi0+Z2FydC5nYXJ0X2Z1bmNzLT5hZGp1c3Rf bWNfYWRkcikKPiAtCQlhZGRyID0gYWRldi0+Z2FydC5nYXJ0X2Z1bmNzLT5hZGp1c3RfbWNfYWRk cihhZGV2LCBhZGRyKTsKPiAtCj4gLQlyZXR1cm4gYWRkcjsKPiAtfQo+IC0KPiAgIGJvb2wgYW1k Z3B1X3ZtX25lZWRfcGlwZWxpbmVfc3luYyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4gICAJ CQkJICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iKQo+ICAgewo+IEBAIC0xMDM0LDE5ICsxMDI0LDE3 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9sZXZlbChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKPiAgIAkJICAgIChjb3VudCA9PSBBTURHUFVfVk1fTUFYX1VQREFURV9TSVpFKSkg ewo+ICAgCj4gICAJCQlpZiAoY291bnQpIHsKPiAtCQkJCXVpbnQ2NF90IHB0X2FkZHIgPQo+IC0J CQkJCWFtZGdwdV92bV9hZGp1c3RfbWNfYWRkcihhZGV2LCBsYXN0X3B0KTsKPiArCQkJCXVpbnQ2 NF90IGVudHJ5Owo+ICAgCj4gKwkJCQllbnRyeSA9IGFtZGdwdV9nYXJ0X2dldF92bV9wZGUoYWRl diwgbGFzdF9wdCk7Cj4gICAJCQkJaWYgKHNoYWRvdykKPiAgIAkJCQkJYW1kZ3B1X3ZtX2RvX3Nl dF9wdGVzKCZwYXJhbXMsCj4gICAJCQkJCQkJICAgICAgbGFzdF9zaGFkb3csCj4gLQkJCQkJCQkg ICAgICBwdF9hZGRyLCBjb3VudCwKPiAtCQkJCQkJCSAgICAgIGluY3IsCj4gLQkJCQkJCQkgICAg ICBBTURHUFVfUFRFX1ZBTElEKTsKPiArCQkJCQkJCSAgICAgIGVudHJ5LCBjb3VudCwKPiArCQkJ CQkJCSAgICAgIGluY3IsIDApOwo+ICAgCj4gICAJCQkJYW1kZ3B1X3ZtX2RvX3NldF9wdGVzKCZw YXJhbXMsIGxhc3RfcGRlLAo+IC0JCQkJCQkgICAgICBwdF9hZGRyLCBjb3VudCwgaW5jciwKPiAt CQkJCQkJICAgICAgQU1ER1BVX1BURV9WQUxJRCk7Cj4gKwkJCQkJCSAgICAgIGVudHJ5LCBjb3Vu dCwgaW5jciwgMCk7Cj4gICAJCQl9Cj4gICAKPiAgIAkJCWNvdW50ID0gMTsKPiBAQCAtMTA1OSwx NCArMTA0NywxNiBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJfQo+ICAgCj4gICAJaWYgKGNvdW50KSB7Cj4gLQkJdWlu dDY0X3QgcHRfYWRkciA9IGFtZGdwdV92bV9hZGp1c3RfbWNfYWRkcihhZGV2LCBsYXN0X3B0KTsK PiArCQl1aW50NjRfdCBlbnRyeTsKPiArCj4gKwkJZW50cnkgPSBhbWRncHVfZ2FydF9nZXRfdm1f cGRlKGFkZXYsIGxhc3RfcHQpOwo+ICAgCj4gICAJCWlmICh2bS0+cm9vdC5iby0+c2hhZG93KQo+ IC0JCQlhbWRncHVfdm1fZG9fc2V0X3B0ZXMoJnBhcmFtcywgbGFzdF9zaGFkb3csIHB0X2FkZHIs Cj4gLQkJCQkJICAgICAgY291bnQsIGluY3IsIEFNREdQVV9QVEVfVkFMSUQpOwo+ICsJCQlhbWRn cHVfdm1fZG9fc2V0X3B0ZXMoJnBhcmFtcywgbGFzdF9zaGFkb3csIGVudHJ5LAo+ICsJCQkJCSAg ICAgIGNvdW50LCBpbmNyLCAwKTsKPiAgIAo+IC0JCWFtZGdwdV92bV9kb19zZXRfcHRlcygmcGFy YW1zLCBsYXN0X3BkZSwgcHRfYWRkciwKPiAtCQkJCSAgICAgIGNvdW50LCBpbmNyLCBBTURHUFVf UFRFX1ZBTElEKTsKPiArCQlhbWRncHVfdm1fZG9fc2V0X3B0ZXMoJnBhcmFtcywgbGFzdF9wZGUs IGVudHJ5LAo+ICsJCQkJICAgICAgY291bnQsIGluY3IsIDApOwo+ICAgCX0KPiAgIAo+ICAgCWlm IChwYXJhbXMuaWItPmxlbmd0aF9kdyA9PSAwKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n ZnhfdjlfMC5jCj4gaW5kZXggNmRjNzVkMi4uOWUyNDFkNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ2Z4X3Y5XzAuYwo+IEBAIC0zNzU5LDEwICszNzU5LDcgQEAgc3RhdGljIHZvaWQg Z2Z4X3Y5XzBfcmluZ19lbWl0X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiAg IAl1aW50MzJfdCByZXEgPSByaW5nLT5hZGV2LT5nYXJ0LmdhcnRfZnVuY3MtPmdldF9pbnZhbGlk YXRlX3JlcSh2bV9pZCk7Cj4gICAJdW5zaWduZWQgZW5nID0gcmluZy0+dm1faW52X2VuZzsKPiAg IAo+IC0JcGRfYWRkciA9IHJpbmctPmFkZXYtPmdhcnQuZ2FydF9mdW5jcy0+YWRqdXN0X21jX2Fk ZHIocmluZy0+YWRldiwgcGRfYWRkcik7Cj4gLQlwZF9hZGRyID0gcGRfYWRkciB8IDB4MTsgLyog dmFsaWQgYml0ICovCj4gLQkvKiBub3cgb25seSB1c2UgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9m IFBERSBhbmQgdmFsaWQgKi8KPiAtCUJVR19PTihwZF9hZGRyICYgMHhGRkZGMDAwMDAwMDAwMDNF VUxMKTsKPiArCXBkX2FkZHIgPSBhbWRncHVfZ2FydF9nZXRfdm1fcGRlKHJpbmctPmFkZXYsIHBk X2FkZHIpOwo+ICAgCj4gICAJZ2Z4X3Y5XzBfd3JpdGVfZGF0YV90b19yZWcocmluZywgdXNlcGZw LCB0cnVlLAo+ICAgCQkJCSAgIGh1Yi0+Y3R4MF9wdGJfYWRkcl9sbzMyICsgKDIgKiB2bV9pZCks Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jCj4gaW5kZXggMWU2MjYzYS4uNDQ1 ZjZmNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYwo+IEBAIC0zOTUs NiArMzk1LDExIEBAIHN0YXRpYyB1aW50NjRfdCBnbWNfdjZfMF9nZXRfdm1fcHRlX2ZsYWdzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCXJldHVybiBwdGVfZmxhZzsKPiAgIH0KPiAg IAo+ICtzdGF0aWMgdWludDY0X3QgZ21jX3Y2XzBfZ2V0X3ZtX3BkZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgdWludDY0X3QgYWRkcikKPiArewo+ICsJcmV0dXJuIGFkZHIgfCBBTURHUFVf UFRFX1ZBTElEOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgZ21jX3Y2XzBfc2V0X2ZhdWx0X2Vu YWJsZV9kZWZhdWx0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCQkJCQkgICAgICBi b29sIHZhbHVlKQo+ICAgewo+IEBAIC0xMTI3LDYgKzExMzIsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGFtZGdwdV9nYXJ0X2Z1bmNzIGdtY192Nl8wX2dhcnRfZnVuY3MgPSB7Cj4gICAJLmZsdXNo X2dwdV90bGIgPSBnbWNfdjZfMF9nYXJ0X2ZsdXNoX2dwdV90bGIsCj4gICAJLnNldF9wdGVfcGRl ID0gZ21jX3Y2XzBfZ2FydF9zZXRfcHRlX3BkZSwKPiAgIAkuc2V0X3BydCA9IGdtY192Nl8wX3Nl dF9wcnQsCj4gKwkuZ2V0X3ZtX3BkZSA9IGdtY192Nl8wX2dldF92bV9wZGUsCj4gICAJLmdldF92 bV9wdGVfZmxhZ3MgPSBnbWNfdjZfMF9nZXRfdm1fcHRlX2ZsYWdzCj4gICB9Owo+ICAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192N18wLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jCj4gaW5kZXggOTY3NTA1Yi4uYjlkODZlMSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYwo+IEBAIC00NzIsNiArNDcy LDExIEBAIHN0YXRpYyB1aW50NjRfdCBnbWNfdjdfMF9nZXRfdm1fcHRlX2ZsYWdzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAo+ICAgCXJldHVybiBwdGVfZmxhZzsKPiAgIH0KPiAgIAo+ICtz dGF0aWMgdWludDY0X3QgZ21jX3Y3XzBfZ2V0X3ZtX3BkZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgdWludDY0X3QgYWRkcikKPiArewo+ICsJcmV0dXJuIGFkZHIgfCBBTURHUFVfUFRFX1ZB TElEOwo+ICt9Cj4gKwo+ICAgLyoqCj4gICAgKiBnbWNfdjhfMF9zZXRfZmF1bHRfZW5hYmxlX2Rl ZmF1bHQgLSB1cGRhdGUgVk0gZmF1bHQgaGFuZGxpbmcKPiAgICAqCj4gQEAgLTEyOTMsNyArMTI5 OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2dhcnRfZnVuY3MgZ21jX3Y3XzBfZ2Fy dF9mdW5jcyA9IHsKPiAgIAkuZmx1c2hfZ3B1X3RsYiA9IGdtY192N18wX2dhcnRfZmx1c2hfZ3B1 X3RsYiwKPiAgIAkuc2V0X3B0ZV9wZGUgPSBnbWNfdjdfMF9nYXJ0X3NldF9wdGVfcGRlLAo+ICAg CS5zZXRfcHJ0ID0gZ21jX3Y3XzBfc2V0X3BydCwKPiAtCS5nZXRfdm1fcHRlX2ZsYWdzID0gZ21j X3Y3XzBfZ2V0X3ZtX3B0ZV9mbGFncwo+ICsJLmdldF92bV9wdGVfZmxhZ3MgPSBnbWNfdjdfMF9n ZXRfdm1fcHRlX2ZsYWdzLAo+ICsJLmdldF92bV9wZGUgPSBnbWNfdjdfMF9nZXRfdm1fcGRlCj4g ICB9Owo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFfc3JjX2Z1bmNzIGdt Y192N18wX2lycV9mdW5jcyA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZ21jX3Y4XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMK PiBpbmRleCAzYjVlYTBmLi5kZThiZmI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192OF8wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n bWNfdjhfMC5jCj4gQEAgLTY1Niw2ICs2NTYsMTEgQEAgc3RhdGljIHVpbnQ2NF90IGdtY192OF8w X2dldF92bV9wdGVfZmxhZ3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJcmV0dXJu IHB0ZV9mbGFnOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB1aW50NjRfdCBnbWNfdjhfMF9nZXRfdm1f cGRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50NjRfdCBhZGRyKQo+ICt7Cj4gKwly ZXR1cm4gYWRkciB8IEFNREdQVV9QVEVfVkFMSUQ7Cj4gK30KPiArCj4gICAvKioKPiAgICAqIGdt Y192OF8wX3NldF9mYXVsdF9lbmFibGVfZGVmYXVsdCAtIHVwZGF0ZSBWTSBmYXVsdCBoYW5kbGlu Zwo+ICAgICoKPiBAQCAtMTYxMiw3ICsxNjE3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRn cHVfZ2FydF9mdW5jcyBnbWNfdjhfMF9nYXJ0X2Z1bmNzID0gewo+ICAgCS5mbHVzaF9ncHVfdGxi ID0gZ21jX3Y4XzBfZ2FydF9mbHVzaF9ncHVfdGxiLAo+ICAgCS5zZXRfcHRlX3BkZSA9IGdtY192 OF8wX2dhcnRfc2V0X3B0ZV9wZGUsCj4gICAJLnNldF9wcnQgPSBnbWNfdjhfMF9zZXRfcHJ0LAo+ IC0JLmdldF92bV9wdGVfZmxhZ3MgPSBnbWNfdjhfMF9nZXRfdm1fcHRlX2ZsYWdzCj4gKwkuZ2V0 X3ZtX3B0ZV9mbGFncyA9IGdtY192OF8wX2dldF92bV9wdGVfZmxhZ3MsCj4gKwkuZ2V0X3ZtX3Bk ZSA9IGdtY192OF8wX2dldF92bV9wZGUKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYW1kZ3B1X2lycV9zcmNfZnVuY3MgZ21jX3Y4XzBfaXJxX2Z1bmNzID0gewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+IGluZGV4IDE5ZTEwMjcuLjUyMzE1N2EgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMKPiBAQCAtMzU4LDE3ICszNTgsMTkg QEAgc3RhdGljIHVpbnQ2NF90IGdtY192OV8wX2dldF92bV9wdGVfZmxhZ3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCj4gICAJcmV0dXJuIHB0ZV9mbGFnOwo+ICAgfQo+ICAgCj4gLXN0YXRp YyB1NjQgZ21jX3Y5XzBfYWRqdXN0X21jX2FkZHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IHU2NCBtY19hZGRyKQo+ICtzdGF0aWMgdTY0IGdtY192OV8wX2dldF92bV9wZGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHU2NCBhZGRyKQo+ICAgewo+IC0JcmV0dXJuIGFkZXYtPnZtX21h bmFnZXIudnJhbV9iYXNlX29mZnNldCArIG1jX2FkZHIgLSBhZGV2LT5tYy52cmFtX3N0YXJ0Owo+ ICsJYWRkciA9IGFkZXYtPnZtX21hbmFnZXIudnJhbV9iYXNlX29mZnNldCArIGFkZHIgLSBhZGV2 LT5tYy52cmFtX3N0YXJ0Owo+ICsJQlVHX09OKGFkZHIgJiAweEZGRkYwMDAwMDAwMDAwM0ZVTEwp Owo+ICsJcmV0dXJuIGFkZHIgfCBBTURHUFVfUFRFX1ZBTElEOwo+ICAgfQo+ICAgCj4gICBzdGF0 aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9nYXJ0X2Z1bmNzIGdtY192OV8wX2dhcnRfZnVuY3MgPSB7 Cj4gICAJLmZsdXNoX2dwdV90bGIgPSBnbWNfdjlfMF9nYXJ0X2ZsdXNoX2dwdV90bGIsCj4gICAJ LnNldF9wdGVfcGRlID0gZ21jX3Y5XzBfZ2FydF9zZXRfcHRlX3BkZSwKPiAtCS5nZXRfdm1fcHRl X2ZsYWdzID0gZ21jX3Y5XzBfZ2V0X3ZtX3B0ZV9mbGFncywKPiAtCS5hZGp1c3RfbWNfYWRkciA9 IGdtY192OV8wX2FkanVzdF9tY19hZGRyLAo+ICAgCS5nZXRfaW52YWxpZGF0ZV9yZXEgPSBnbWNf djlfMF9nZXRfaW52YWxpZGF0ZV9yZXEsCj4gKwkuZ2V0X3ZtX3B0ZV9mbGFncyA9IGdtY192OV8w X2dldF92bV9wdGVfZmxhZ3MsCj4gKwkuZ2V0X3ZtX3BkZSA9IGdtY192OV8wX2dldF92bV9wZGUK PiAgIH07Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGdtY192OV8wX3NldF9nYXJ0X2Z1bmNzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9zZG1hX3Y0XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRf MC5jCj4gaW5kZXggOTFjZjdlNi4uYWY5OGVkMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NkbWFfdjRfMC5jCj4gQEAgLTExNDMsMTAgKzExNDMsNyBAQCBzdGF0aWMgdm9pZCBzZG1h X3Y0XzBfcmluZ19lbWl0X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiAgIAl1 aW50MzJfdCByZXEgPSByaW5nLT5hZGV2LT5nYXJ0LmdhcnRfZnVuY3MtPmdldF9pbnZhbGlkYXRl X3JlcSh2bV9pZCk7Cj4gICAJdW5zaWduZWQgZW5nID0gcmluZy0+dm1faW52X2VuZzsKPiAgIAo+ IC0JcGRfYWRkciA9IHJpbmctPmFkZXYtPmdhcnQuZ2FydF9mdW5jcy0+YWRqdXN0X21jX2FkZHIo cmluZy0+YWRldiwgcGRfYWRkcik7Cj4gLQlwZF9hZGRyID0gcGRfYWRkciB8IDB4MTsgLyogdmFs aWQgYml0ICovCj4gLQkvKiBub3cgb25seSB1c2UgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIFBE RSBhbmQgdmFsaWQgKi8KPiAtCUJVR19PTihwZF9hZGRyICYgMHhGRkZGMDAwMDAwMDAwMDNFVUxM KTsKPiArCXBkX2FkZHIgPSBhbWRncHVfZ2FydF9nZXRfdm1fcGRlKHJpbmctPmFkZXYsIHBkX2Fk ZHIpOwo+ICAgCj4gICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgU0RNQV9QS1RfSEVBREVSX09Q KFNETUFfT1BfU1JCTV9XUklURSkgfAo+ICAgCQkJICBTRE1BX1BLVF9TUkJNX1dSSVRFX0hFQURF Ul9CWVRFX0VOKDB4ZikpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS91dmRfdjdfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYwo+IGlu ZGV4IDIyZjQyZjMuLmM4ZjRjMzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvdXZkX3Y3XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2ZF92 N18wLmMKPiBAQCAtMTMxNiwxMCArMTMxNiw3IEBAIHN0YXRpYyB2b2lkIHV2ZF92N18wX3Jpbmdf ZW1pdF92bV9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4gICAJdWludDMyX3QgZGF0 YTAsIGRhdGExLCBtYXNrOwo+ICAgCXVuc2lnbmVkIGVuZyA9IHJpbmctPnZtX2ludl9lbmc7Cj4g ICAKPiAtCXBkX2FkZHIgPSByaW5nLT5hZGV2LT5nYXJ0LmdhcnRfZnVuY3MtPmFkanVzdF9tY19h ZGRyKHJpbmctPmFkZXYsIHBkX2FkZHIpOwo+IC0JcGRfYWRkciA9IHBkX2FkZHIgfCAweDE7IC8q IHZhbGlkIGJpdCAqLwo+IC0JLyogbm93IG9ubHkgdXNlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBv ZiBQREUgYW5kIHZhbGlkICovCj4gLQlCVUdfT04ocGRfYWRkciAmIDB4RkZGRjAwMDAwMDAwMDAz RVVMTCk7Cj4gKwlwZF9hZGRyID0gYW1kZ3B1X2dhcnRfZ2V0X3ZtX3BkZShyaW5nLT5hZGV2LCBw ZF9hZGRyKTsKPiAgIAo+ICAgCWRhdGEwID0gKGh1Yi0+Y3R4MF9wdGJfYWRkcl9oaTMyICsgdm1f aWQgKiAyKSA8PCAyOwo+ICAgCWRhdGExID0gdXBwZXJfMzJfYml0cyhwZF9hZGRyKTsKPiBAQCAt MTM1OCwxMCArMTM1NSw3IEBAIHN0YXRpYyB2b2lkIHV2ZF92N18wX2VuY19yaW5nX2VtaXRfdm1f Zmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+ICAgCXVpbnQzMl90IHJlcSA9IHJpbmct PmFkZXYtPmdhcnQuZ2FydF9mdW5jcy0+Z2V0X2ludmFsaWRhdGVfcmVxKHZtX2lkKTsKPiAgIAl1 bnNpZ25lZCBlbmcgPSByaW5nLT52bV9pbnZfZW5nOwo+ICAgCj4gLQlwZF9hZGRyID0gcmluZy0+ YWRldi0+Z2FydC5nYXJ0X2Z1bmNzLT5hZGp1c3RfbWNfYWRkcihyaW5nLT5hZGV2LCBwZF9hZGRy KTsKPiAtCXBkX2FkZHIgPSBwZF9hZGRyIHwgMHgxOyAvKiB2YWxpZCBiaXQgKi8KPiAtCS8qIG5v dyBvbmx5IHVzZSBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgUERFIGFuZCB2YWxpZCAqLwo+IC0J QlVHX09OKHBkX2FkZHIgJiAweEZGRkYwMDAwMDAwMDAwM0VVTEwpOwo+ICsJcGRfYWRkciA9IGFt ZGdwdV9nYXJ0X2dldF92bV9wZGUocmluZy0+YWRldiwgcGRfYWRkcik7Cj4gICAKPiAgIAlhbWRn cHVfcmluZ193cml0ZShyaW5nLCBIRVZDX0VOQ19DTURfUkVHX1dSSVRFKTsKPiAgIAlhbWRncHVf cmluZ193cml0ZShyaW5nLAkoaHViLT5jdHgwX3B0Yl9hZGRyX2hpMzIgKyB2bV9pZCAqIDIpIDw8 IDIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y2VfdjRfMC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNlX3Y0XzAuYwo+IGluZGV4IDA3YjJhYzcu LmIxYmRhMGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNlX3Y0 XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZjZV92NF8wLmMKPiBAQCAt OTI2LDEwICs5MjYsNyBAQCBzdGF0aWMgdm9pZCB2Y2VfdjRfMF9lbWl0X3ZtX2ZsdXNoKHN0cnVj dCBhbWRncHVfcmluZyAqcmluZywKPiAgIAl1aW50MzJfdCByZXEgPSByaW5nLT5hZGV2LT5nYXJ0 LmdhcnRfZnVuY3MtPmdldF9pbnZhbGlkYXRlX3JlcSh2bV9pZCk7Cj4gICAJdW5zaWduZWQgZW5n ID0gcmluZy0+dm1faW52X2VuZzsKPiAgIAo+IC0JcGRfYWRkciA9IHJpbmctPmFkZXYtPmdhcnQu Z2FydF9mdW5jcy0+YWRqdXN0X21jX2FkZHIocmluZy0+YWRldiwgcGRfYWRkcik7Cj4gLQlwZF9h ZGRyID0gcGRfYWRkciB8IDB4MTsgLyogdmFsaWQgYml0ICovCj4gLQkvKiBub3cgb25seSB1c2Ug cGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIFBERSBhbmQgdmFsaWQgKi8KPiAtCUJVR19PTihwZF9h ZGRyICYgMHhGRkZGMDAwMDAwMDAwMDNFVUxMKTsKPiArCXBkX2FkZHIgPSBhbWRncHVfZ2FydF9n ZXRfdm1fcGRlKHJpbmctPmFkZXYsIHBkX2FkZHIpOwo+ICAgCj4gICAJYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgVkNFX0NNRF9SRUdfV1JJVEUpOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcs CShodWItPmN0eDBfcHRiX2FkZHJfaGkzMiArIHZtX2lkICogMikgPDwgMik7CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK