From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leo Liu Subject: Re: [PATCH 1/2] drm/amdgpu/sdma: simplify sdma instance setup Date: Fri, 29 Jun 2018 12:52:40 -0400 Message-ID: <4487ebe1-8046-a678-1f79-3280f707ee17@amd.com> References: <20180625174235.29172-1-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-GB 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: Alex Deucher , amd-gfx list Cc: Alex Deucher TG9va3MgZ29vZCB0byBtZS4gQm90aCBwYXRjaGVzIGFyZQoKUmV2aWV3ZWQtYnk6IExlbyBMaXUg PGxlby5saXVAYW1kLmNvbT4KCgpPbiAwNi8yOS8yMDE4IDEwOjU4IEFNLCBBbGV4IERldWNoZXIg d3JvdGU6Cj4gUGluZyBvbiB0aGlzIHNlcmllcz8KPgo+IE9uIE1vbiwgSnVuIDI1LCAyMDE4IGF0 IDE6NDIgUE0sIEFsZXggRGV1Y2hlciA8YWxleGRldWNoZXJAZ21haWwuY29tPiB3cm90ZToKPj4g U2V0IHRoZSBtZSBpbnN0YW5jZSBpbiBlYXJseSBpbml0IGFuZCB1c2UgdGhhdCByYXRoZXIgdGhh bgo+PiBjYWxjdWxhdGluZyB0aGUgaW5zdGFuY2UgYmFzZWQgb24gdGhlIHJpbmcgcG9pbnRlci4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQu Y29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfc2RtYS5jICB8 IDEyICsrKysrKy0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJf NC5jIHwgMTIgKysrKysrLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2Rt YV92M18wLmMgfCAxNCArKysrKystLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NkbWFfdjRfMC5jIHwgMjMgKysrKysrKysrKystLS0tLS0tLS0tLS0KPj4gICA0IGZpbGVz IGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX3NkbWEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1hLmMKPj4gaW5kZXggYTc1NzYyNTVjYzMwLi5kYmQ1NTNh OGQ1ODQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1h LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX3NkbWEuYwo+PiBAQCAt MTc3LDkgKzE3Nyw4IEBAIHN0YXRpYyB1aW50NjRfdCBjaWtfc2RtYV9yaW5nX2dldF9ycHRyKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZykKPj4gICBzdGF0aWMgdWludDY0X3QgY2lrX3NkbWFfcmlu Z19nZXRfd3B0cihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCj4+ICAgewo+PiAgICAgICAgICBz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+IC0gICAgICAgdTMyIG1l ID0gKHJpbmcgPT0gJmFkZXYtPnNkbWEuaW5zdGFuY2VbMF0ucmluZykgPyAwIDogMTsKPj4KPj4g LSAgICAgICByZXR1cm4gKFJSRUczMihtbVNETUEwX0dGWF9SQl9XUFRSICsgc2RtYV9vZmZzZXRz W21lXSkgJiAweDNmZmZjKSA+PiAyOwo+PiArICAgICAgIHJldHVybiAoUlJFRzMyKG1tU0RNQTBf R0ZYX1JCX1dQVFIgKyBzZG1hX29mZnNldHNbcmluZy0+bWVdKSAmIDB4M2ZmZmMpID4+IDI7Cj4+ ICAgfQo+Pgo+PiAgIC8qKgo+PiBAQCAtMTkyLDkgKzE5MSw4IEBAIHN0YXRpYyB1aW50NjRfdCBj aWtfc2RtYV9yaW5nX2dldF93cHRyKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKPj4gICBzdGF0 aWMgdm9pZCBjaWtfc2RtYV9yaW5nX3NldF93cHRyKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykK Pj4gICB7Cj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRl djsKPj4gLSAgICAgICB1MzIgbWUgPSAocmluZyA9PSAmYWRldi0+c2RtYS5pbnN0YW5jZVswXS5y aW5nKSA/IDAgOiAxOwo+Pgo+PiAtICAgICAgIFdSRUczMihtbVNETUEwX0dGWF9SQl9XUFRSICsg c2RtYV9vZmZzZXRzW21lXSwKPj4gKyAgICAgICBXUkVHMzIobW1TRE1BMF9HRlhfUkJfV1BUUiAr IHNkbWFfb2Zmc2V0c1tyaW5nLT5tZV0sCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAobG93 ZXJfMzJfYml0cyhyaW5nLT53cHRyKSA8PCAyKSAmIDB4M2ZmZmMpOwo+PiAgIH0KPj4KPj4gQEAg LTI0OCw3ICsyNDYsNyBAQCBzdGF0aWMgdm9pZCBjaWtfc2RtYV9yaW5nX2VtaXRfaGRwX2ZsdXNo KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg U0RNQV9QT0xMX1JFR19NRU1fRVhUUkFfRlVOQygzKSk7IC8qID09ICovCj4+ICAgICAgICAgIHUz MiByZWZfYW5kX21hc2s7Cj4+Cj4+IC0gICAgICAgaWYgKHJpbmcgPT0gJnJpbmctPmFkZXYtPnNk bWEuaW5zdGFuY2VbMF0ucmluZykKPj4gKyAgICAgICBpZiAocmluZy0+bWUgPT0gMCkKPj4gICAg ICAgICAgICAgICAgICByZWZfYW5kX21hc2sgPSBHUFVfSERQX0ZMVVNIX0RPTkVfX1NETUEwX01B U0s7Cj4+ICAgICAgICAgIGVsc2UKPj4gICAgICAgICAgICAgICAgICByZWZfYW5kX21hc2sgPSBH UFVfSERQX0ZMVVNIX0RPTkVfX1NETUExX01BU0s7Cj4+IEBAIC0xMjkwLDggKzEyODgsMTAgQEAg c3RhdGljIHZvaWQgY2lrX3NkbWFfc2V0X3JpbmdfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCj4+ICAgewo+PiAgICAgICAgICBpbnQgaTsKPj4KPj4gLSAgICAgICBmb3IgKGkgPSAw OyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspCj4+ICsgICAgICAgZm9yIChpID0g MDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7Cj4+ICAgICAgICAgICAgICAg ICAgYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5yaW5nLmZ1bmNzID0gJmNpa19zZG1hX3JpbmdfZnVu Y3M7Cj4+ICsgICAgICAgICAgICAgICBhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnJpbmcubWUgPSBp Owo+PiArICAgICAgIH0KPj4gICB9Cj4+Cj4+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVf aXJxX3NyY19mdW5jcyBjaWtfc2RtYV90cmFwX2lycV9mdW5jcyA9IHsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJfNC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvc2RtYV92Ml80LmMKPj4gaW5kZXggYzcxOTBjMzljNGY1Li5jZWU0ZmFlNzZk MjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJfNC5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJfNC5jCj4+IEBAIC0y MDIsOCArMjAyLDcgQEAgc3RhdGljIHVpbnQ2NF90IHNkbWFfdjJfNF9yaW5nX2dldF9ycHRyKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZykKPj4gICBzdGF0aWMgdWludDY0X3Qgc2RtYV92Ml80X3Jp bmdfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+PiAgIHsKPj4gICAgICAgICAg c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiAtICAgICAgIGludCBt ZSA9IChyaW5nID09ICZyaW5nLT5hZGV2LT5zZG1hLmluc3RhbmNlWzBdLnJpbmcpID8gMCA6IDE7 Cj4+IC0gICAgICAgdTMyIHdwdHIgPSBSUkVHMzIobW1TRE1BMF9HRlhfUkJfV1BUUiArIHNkbWFf b2Zmc2V0c1ttZV0pID4+IDI7Cj4+ICsgICAgICAgdTMyIHdwdHIgPSBSUkVHMzIobW1TRE1BMF9H RlhfUkJfV1BUUiArIHNkbWFfb2Zmc2V0c1tyaW5nLT5tZV0pID4+IDI7Cj4+Cj4+ICAgICAgICAg IHJldHVybiB3cHRyOwo+PiAgIH0KPj4gQEAgLTIxOCw5ICsyMTcsOCBAQCBzdGF0aWMgdWludDY0 X3Qgc2RtYV92Ml80X3JpbmdfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+PiAg IHN0YXRpYyB2b2lkIHNkbWFfdjJfNF9yaW5nX3NldF93cHRyKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZykKPj4gICB7Cj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmlu Zy0+YWRldjsKPj4gLSAgICAgICBpbnQgbWUgPSAocmluZyA9PSAmcmluZy0+YWRldi0+c2RtYS5p bnN0YW5jZVswXS5yaW5nKSA/IDAgOiAxOwo+Pgo+PiAtICAgICAgIFdSRUczMihtbVNETUEwX0dG WF9SQl9XUFRSICsgc2RtYV9vZmZzZXRzW21lXSwgbG93ZXJfMzJfYml0cyhyaW5nLT53cHRyKSA8 PCAyKTsKPj4gKyAgICAgICBXUkVHMzIobW1TRE1BMF9HRlhfUkJfV1BUUiArIHNkbWFfb2Zmc2V0 c1tyaW5nLT5tZV0sIGxvd2VyXzMyX2JpdHMocmluZy0+d3B0cikgPDwgMik7Cj4+ICAgfQo+Pgo+ PiAgIHN0YXRpYyB2b2lkIHNkbWFfdjJfNF9yaW5nX2luc2VydF9ub3Aoc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLCB1aW50MzJfdCBjb3VudCkKPj4gQEAgLTI3Myw3ICsyNzEsNyBAQCBzdGF0aWMg dm9pZCBzZG1hX3YyXzRfcmluZ19lbWl0X2hkcF9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcpCj4+ICAgewo+PiAgICAgICAgICB1MzIgcmVmX2FuZF9tYXNrID0gMDsKPj4KPj4gLSAgICAg ICBpZiAocmluZyA9PSAmcmluZy0+YWRldi0+c2RtYS5pbnN0YW5jZVswXS5yaW5nKQo+PiArICAg ICAgIGlmIChyaW5nLT5tZSA9PSAwKQo+PiAgICAgICAgICAgICAgICAgIHJlZl9hbmRfbWFzayA9 IFJFR19TRVRfRklFTEQocmVmX2FuZF9tYXNrLCBHUFVfSERQX0ZMVVNIX0RPTkUsIFNETUEwLCAx KTsKPj4gICAgICAgICAgZWxzZQo+PiAgICAgICAgICAgICAgICAgIHJlZl9hbmRfbWFzayA9IFJF R19TRVRfRklFTEQocmVmX2FuZF9tYXNrLCBHUFVfSERQX0ZMVVNIX0RPTkUsIFNETUExLCAxKTsK Pj4gQEAgLTEyMTMsOCArMTIxMSwxMCBAQCBzdGF0aWMgdm9pZCBzZG1hX3YyXzRfc2V0X3Jpbmdf ZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ICAgewo+PiAgICAgICAgICBpbnQg aTsKPj4KPj4gLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2Vz OyBpKyspCj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNl czsgaSsrKSB7Cj4+ICAgICAgICAgICAgICAgICAgYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5yaW5n LmZ1bmNzID0gJnNkbWFfdjJfNF9yaW5nX2Z1bmNzOwo+PiArICAgICAgICAgICAgICAgYWRldi0+ c2RtYS5pbnN0YW5jZVtpXS5yaW5nLm1lID0gaTsKPj4gKyAgICAgICB9Cj4+ICAgfQo+Pgo+PiAg IHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVuY3Mgc2RtYV92Ml80X3RyYXBf aXJxX2Z1bmNzID0gewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv c2RtYV92M18wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YzXzAuYwo+PiBp bmRleCBhYTlhYjI5OWZkMzIuLjk5NjE2ZGQ5NTk0ZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvc2RtYV92M18wLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvc2RtYV92M18wLmMKPj4gQEAgLTM2NSw5ICszNjUsNyBAQCBzdGF0aWMgdWludDY0 X3Qgc2RtYV92M18wX3JpbmdfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+PiAg ICAgICAgICAgICAgICAgIC8qIFhYWCBjaGVjayBpZiBzd2FwcGluZyBpcyBuZWNlc3Nhcnkgb24g QkUgKi8KPj4gICAgICAgICAgICAgICAgICB3cHRyID0gcmluZy0+YWRldi0+d2Iud2JbcmluZy0+ d3B0cl9vZmZzXSA+PiAyOwo+PiAgICAgICAgICB9IGVsc2Ugewo+PiAtICAgICAgICAgICAgICAg aW50IG1lID0gKHJpbmcgPT0gJnJpbmctPmFkZXYtPnNkbWEuaW5zdGFuY2VbMF0ucmluZykgPyAw IDogMTsKPj4gLQo+PiAtICAgICAgICAgICAgICAgd3B0ciA9IFJSRUczMihtbVNETUEwX0dGWF9S Ql9XUFRSICsgc2RtYV9vZmZzZXRzW21lXSkgPj4gMjsKPj4gKyAgICAgICAgICAgICAgIHdwdHIg PSBSUkVHMzIobW1TRE1BMF9HRlhfUkJfV1BUUiArIHNkbWFfb2Zmc2V0c1tyaW5nLT5tZV0pID4+ IDI7Cj4+ICAgICAgICAgIH0KPj4KPj4gICAgICAgICAgcmV0dXJuIHdwdHI7Cj4+IEBAIC0zOTQs OSArMzkyLDcgQEAgc3RhdGljIHZvaWQgc2RtYV92M18wX3Jpbmdfc2V0X3dwdHIoc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nKQo+Pgo+PiAgICAgICAgICAgICAgICAgIFdSSVRFX09OQ0UoKndiLCAo bG93ZXJfMzJfYml0cyhyaW5nLT53cHRyKSA8PCAyKSk7Cj4+ICAgICAgICAgIH0gZWxzZSB7Cj4+ IC0gICAgICAgICAgICAgICBpbnQgbWUgPSAocmluZyA9PSAmcmluZy0+YWRldi0+c2RtYS5pbnN0 YW5jZVswXS5yaW5nKSA/IDAgOiAxOwo+PiAtCj4+IC0gICAgICAgICAgICAgICBXUkVHMzIobW1T RE1BMF9HRlhfUkJfV1BUUiArIHNkbWFfb2Zmc2V0c1ttZV0sIGxvd2VyXzMyX2JpdHMocmluZy0+ d3B0cikgPDwgMik7Cj4+ICsgICAgICAgICAgICAgICBXUkVHMzIobW1TRE1BMF9HRlhfUkJfV1BU UiArIHNkbWFfb2Zmc2V0c1tyaW5nLT5tZV0sIGxvd2VyXzMyX2JpdHMocmluZy0+d3B0cikgPDwg Mik7Cj4+ICAgICAgICAgIH0KPj4gICB9Cj4+Cj4+IEBAIC00NTAsNyArNDQ2LDcgQEAgc3RhdGlj IHZvaWQgc2RtYV92M18wX3JpbmdfZW1pdF9oZHBfZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nKQo+PiAgIHsKPj4gICAgICAgICAgdTMyIHJlZl9hbmRfbWFzayA9IDA7Cj4+Cj4+IC0gICAg ICAgaWYgKHJpbmcgPT0gJnJpbmctPmFkZXYtPnNkbWEuaW5zdGFuY2VbMF0ucmluZykKPj4gKyAg ICAgICBpZiAocmluZy0+bWUgPT0gMCkKPj4gICAgICAgICAgICAgICAgICByZWZfYW5kX21hc2sg PSBSRUdfU0VUX0ZJRUxEKHJlZl9hbmRfbWFzaywgR1BVX0hEUF9GTFVTSF9ET05FLCBTRE1BMCwg MSk7Cj4+ICAgICAgICAgIGVsc2UKPj4gICAgICAgICAgICAgICAgICByZWZfYW5kX21hc2sgPSBS RUdfU0VUX0ZJRUxEKHJlZl9hbmRfbWFzaywgR1BVX0hEUF9GTFVTSF9ET05FLCBTRE1BMSwgMSk7 Cj4+IEBAIC0xNjU1LDggKzE2NTEsMTAgQEAgc3RhdGljIHZvaWQgc2RtYV92M18wX3NldF9yaW5n X2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiAgIHsKPj4gICAgICAgICAgaW50 IGk7Cj4+Cj4+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNl czsgaSsrKQo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0YW5j ZXM7IGkrKykgewo+PiAgICAgICAgICAgICAgICAgIGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucmlu Zy5mdW5jcyA9ICZzZG1hX3YzXzBfcmluZ19mdW5jczsKPj4gKyAgICAgICAgICAgICAgIGFkZXYt PnNkbWEuaW5zdGFuY2VbaV0ucmluZy5tZSA9IGk7Cj4+ICsgICAgICAgfQo+PiAgIH0KPj4KPj4g ICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFfc3JjX2Z1bmNzIHNkbWFfdjNfMF90cmFw X2lycV9mdW5jcyA9IHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3NkbWFfdjRfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMKPj4g aW5kZXggY2E1M2IzZmJhNDIyLi41NzJjYTYzY2Y2NzYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L3NkbWFfdjRfMC5jCj4+IEBAIC0yOTYsMTMgKzI5NiwxMiBAQCBzdGF0aWMgdWlu dDY0X3Qgc2RtYV92NF8wX3JpbmdfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+ PiAgICAgICAgICAgICAgICAgIERSTV9ERUJVRygid3B0ci9kb29yYmVsbCBiZWZvcmUgc2hpZnQg PT0gMHglMDE2bGx4XG4iLCB3cHRyKTsKPj4gICAgICAgICAgfSBlbHNlIHsKPj4gICAgICAgICAg ICAgICAgICB1MzIgbG93Yml0LCBoaWdoYml0Owo+PiAtICAgICAgICAgICAgICAgaW50IG1lID0g KHJpbmcgPT0gJmFkZXYtPnNkbWEuaW5zdGFuY2VbMF0ucmluZykgPyAwIDogMTsKPj4KPj4gLSAg ICAgICAgICAgICAgIGxvd2JpdCA9IFJSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRl diwgbWUsIG1tU0RNQTBfR0ZYX1JCX1dQVFIpKSA+PiAyOwo+PiAtICAgICAgICAgICAgICAgaGln aGJpdCA9IFJSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgbWUsIG1tU0RNQTBf R0ZYX1JCX1dQVFJfSEkpKSA+PiAyOwo+PiArICAgICAgICAgICAgICAgbG93Yml0ID0gUlJFRzMy KHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCByaW5nLT5tZSwgbW1TRE1BMF9HRlhfUkJf V1BUUikpID4+IDI7Cj4+ICsgICAgICAgICAgICAgICBoaWdoYml0ID0gUlJFRzMyKHNkbWFfdjRf MF9nZXRfcmVnX29mZnNldChhZGV2LCByaW5nLT5tZSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9ISSkp ID4+IDI7Cj4+Cj4+ICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJ3cHRyIFslaV1oaWdoPT0g MHglMDh4IGxvdz09MHglMDh4XG4iLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1lLCBoaWdoYml0LCBsb3diaXQpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJpbmctPm1lLCBoaWdoYml0LCBsb3diaXQpOwo+PiAgICAgICAgICAgICAgICAgIHdwdHIgPSBo aWdoYml0Owo+PiAgICAgICAgICAgICAgICAgIHdwdHIgPSB3cHRyIDw8IDMyOwo+PiAgICAgICAg ICAgICAgICAgIHdwdHIgfD0gbG93Yml0Owo+PiBAQCAtMzM5LDE3ICszMzgsMTUgQEAgc3RhdGlj IHZvaWQgc2RtYV92NF8wX3Jpbmdfc2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nLT5kb29yYmVsbF9pbmRleCwg cmluZy0+d3B0ciA8PCAyKTsKPj4gICAgICAgICAgICAgICAgICBXRE9PUkJFTEw2NChyaW5nLT5k b29yYmVsbF9pbmRleCwgcmluZy0+d3B0ciA8PCAyKTsKPj4gICAgICAgICAgfSBlbHNlIHsKPj4g LSAgICAgICAgICAgICAgIGludCBtZSA9IChyaW5nID09ICZyaW5nLT5hZGV2LT5zZG1hLmluc3Rh bmNlWzBdLnJpbmcpID8gMCA6IDE7Cj4+IC0KPj4gICAgICAgICAgICAgICAgICBEUk1fREVCVUco Ik5vdCB1c2luZyBkb29yYmVsbCAtLSAiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJtbVNETUElaV9HRlhfUkJfV1BUUiA9PSAweCUwOHggIgo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAibW1TRE1BJWlfR0ZYX1JCX1dQVFJfSEkgPT0gMHglMDh4XG4iLAo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJpbmctPm1lLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsb3dlcl8zMl9iaXRzKHJpbmctPndwdHIgPDwgMiksCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlu Zy0+bWUsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyXzMyX2JpdHMo cmluZy0+d3B0ciA8PCAyKSk7Cj4+IC0gICAgICAgICAgICAgICBXUkVHMzIoc2RtYV92NF8wX2dl dF9yZWdfb2Zmc2V0KGFkZXYsIG1lLCBtbVNETUEwX0dGWF9SQl9XUFRSKSwgbG93ZXJfMzJfYml0 cyhyaW5nLT53cHRyIDw8IDIpKTsKPj4gLSAgICAgICAgICAgICAgIFdSRUczMihzZG1hX3Y0XzBf Z2V0X3JlZ19vZmZzZXQoYWRldiwgbWUsIG1tU0RNQTBfR0ZYX1JCX1dQVFJfSEkpLCB1cHBlcl8z Ml9iaXRzKHJpbmctPndwdHIgPDwgMikpOwo+PiArICAgICAgICAgICAgICAgV1JFRzMyKHNkbWFf djRfMF9nZXRfcmVnX29mZnNldChhZGV2LCByaW5nLT5tZSwgbW1TRE1BMF9HRlhfUkJfV1BUUiks IGxvd2VyXzMyX2JpdHMocmluZy0+d3B0ciA8PCAyKSk7Cj4+ICsgICAgICAgICAgICAgICBXUkVH MzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIHJpbmctPm1lLCBtbVNETUEwX0dGWF9S Ql9XUFRSX0hJKSwgdXBwZXJfMzJfYml0cyhyaW5nLT53cHRyIDw8IDIpKTsKPj4gICAgICAgICAg fQo+PiAgIH0KPj4KPj4gQEAgLTQzMCw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBf cmluZ19lbWl0X2hkcF9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCj4+ICAgICAgICAg IHUzMiByZWZfYW5kX21hc2sgPSAwOwo+PiAgICAgICAgICBjb25zdCBzdHJ1Y3QgbmJpb19oZHBf Zmx1c2hfcmVnICpuYmlvX2hmX3JlZyA9IGFkZXYtPm5iaW9fZnVuY3MtPmhkcF9mbHVzaF9yZWc7 Cj4+Cj4+IC0gICAgICAgaWYgKHJpbmcgPT0gJnJpbmctPmFkZXYtPnNkbWEuaW5zdGFuY2VbMF0u cmluZykKPj4gKyAgICAgICBpZiAocmluZy0+bWUgPT0gMCkKPj4gICAgICAgICAgICAgICAgICBy ZWZfYW5kX21hc2sgPSBuYmlvX2hmX3JlZy0+cmVmX2FuZF9tYXNrX3NkbWEwOwo+PiAgICAgICAg ICBlbHNlCj4+ICAgICAgICAgICAgICAgICAgcmVmX2FuZF9tYXNrID0gbmJpb19oZl9yZWctPnJl Zl9hbmRfbWFza19zZG1hMTsKPj4gQEAgLTE2NTEsOCArMTY0OCwxMCBAQCBzdGF0aWMgdm9pZCBz ZG1hX3Y0XzBfc2V0X3JpbmdfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ICAg ewo+PiAgICAgICAgICBpbnQgaTsKPj4KPj4gLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWRldi0+ c2RtYS5udW1faW5zdGFuY2VzOyBpKyspCj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGFkZXYt PnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7Cj4+ICAgICAgICAgICAgICAgICAgYWRldi0+c2Rt YS5pbnN0YW5jZVtpXS5yaW5nLmZ1bmNzID0gJnNkbWFfdjRfMF9yaW5nX2Z1bmNzOwo+PiArICAg ICAgICAgICAgICAgYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5yaW5nLm1lID0gaTsKPj4gKyAgICAg ICB9Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVu Y3Mgc2RtYV92NF8wX3RyYXBfaXJxX2Z1bmNzID0gewo+PiAtLQo+PiAyLjEzLjYKPj4KPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFp bGluZyBsaXN0Cj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=