From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 07/13] drm/amdgpu: take ownership of per-pipe configuration Date: Fri, 3 Feb 2017 23:51:36 -0500 Message-ID: <20170204045142.5596-8-andresx7@gmail.com> References: <20170204045142.5596-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170204045142.5596-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, jay-gJmSnxjMpeIFV7jr3Ov9Ew@public.gmane.org, Felix.Kuehling-5C7GfCeVMHo@public.gmane.org, Andres Rodriguez , John.Bridgman-5C7GfCeVMHo@public.gmane.org TWFrZSBhbWRncHUgdGhlIG93bmVyIG9mIGFsbCBwZXItcGlwZSBzdGF0ZSBvZiB0aGUgSFFEcy4K ClRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgdXMgdG8gc3BsaXQgdGhlIHF1ZXVlcyBiZXR3ZWVuIGtm ZCBhbmQgYW1kZ3B1CndpdGggYSBxdWV1ZSBncmFudWxhcml0eSBpbnN0ZWFkIG9mIHBpcGUgZ3Jh bnVsYXJpdHkuCgpUaGlzIHBhdGNoIGZpeGVzIGtmZCBhbGxvY2F0aW5nIGFuIEhEUF9FT1AgcmVn aW9uIGZvciBpdHMgMyBwaXBlcyB3aGljaApnb2VzIHVudXNlZC4KClNpZ25lZC1vZmYtYnk6IEFu ZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jICB8IDEzICstLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMgIHwgIDEgKwogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYyAgICAgICAgICAgICAgfCAyOCArKysr KysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyAgICAgICAg ICAgICAgfCAzMyArKysrKysrKysrKy0tLS0tCiAuLi4vZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9k ZXZpY2VfcXVldWVfbWFuYWdlci5jICB8IDQ1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDYgZmls ZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaAppbmRleCA5NzQwODAwLi5lZWZmZDAwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaApAQCAtNzc2LDkgKzc3Niw5IEBAIHN0cnVjdCBhbWRncHVfcmxj IHsKIHN0cnVjdCBhbWRncHVfbWVjIHsKIAlzdHJ1Y3QgYW1kZ3B1X2JvCSpocGRfZW9wX29iajsK IAl1NjQJCQlocGRfZW9wX2dwdV9hZGRyOwotCXUzMiBudW1fcGlwZTsKIAl1MzIgbnVtX21lYzsK LQl1MzIgbnVtX3F1ZXVlOworCXUzMiBudW1fcGlwZV9wZXJfbWVjOworCXUzMiBudW1fcXVldWVf cGVyX3BpcGU7CiB9OwogCiBzdHJ1Y3QgYW1kZ3B1X2tpcSB7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYwppbmRleCAwMzhiN2VhLi45MTBm OWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk X2dmeF92Ny5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRf Z2Z4X3Y3LmMKQEAgLTI0NCwxOCArMjQ0LDcgQEAgc3RhdGljIGludCBrZ2Rfc2V0X3Bhc2lkX3Zt aWRfbWFwcGluZyhzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1bnNpZ25lZCBpbnQgcGFzaWQsCiBzdGF0 aWMgaW50IGtnZF9pbml0X3BpcGVsaW5lKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQzMl90IHBp cGVfaWQsCiAJCQkJdWludDMyX3QgaHBkX3NpemUsIHVpbnQ2NF90IGhwZF9ncHVfYWRkcikKIHsK LQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGdldF9hbWRncHVfZGV2aWNlKGtnZCk7Ci0K LQl1aW50MzJfdCBtZWMgPSAoKytwaXBlX2lkIC8gQ0lLX1BJUEVfUEVSX01FQykgKyAxOwotCXVp bnQzMl90IHBpcGUgPSAocGlwZV9pZCAlIENJS19QSVBFX1BFUl9NRUMpOwotCi0JbG9ja19zcmJt KGtnZCwgbWVjLCBwaXBlLCAwLCAwKTsKLQlXUkVHMzIobW1DUF9IUERfRU9QX0JBU0VfQUREUiwg bG93ZXJfMzJfYml0cyhocGRfZ3B1X2FkZHIgPj4gOCkpOwotCVdSRUczMihtbUNQX0hQRF9FT1Bf QkFTRV9BRERSX0hJLCB1cHBlcl8zMl9iaXRzKGhwZF9ncHVfYWRkciA+PiA4KSk7Ci0JV1JFRzMy KG1tQ1BfSFBEX0VPUF9WTUlELCAwKTsKLQlXUkVHMzIobW1DUF9IUERfRU9QX0NPTlRST0wsIGhw ZF9zaXplKTsKLQl1bmxvY2tfc3JibShrZ2QpOwotCisJLyogYW1kZ3B1IG93bnMgdGhlIHBlci1w aXBlIHN0YXRlICovCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jCmluZGV4IDJlY2VmM2QuLjU4NDMzNjggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjgu YwpAQCAtMjA2LDYgKzIwNiw3IEBAIHN0YXRpYyBpbnQga2dkX3NldF9wYXNpZF92bWlkX21hcHBp bmcoc3RydWN0IGtnZF9kZXYgKmtnZCwgdW5zaWduZWQgaW50IHBhc2lkLAogc3RhdGljIGludCBr Z2RfaW5pdF9waXBlbGluZShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCBwaXBlX2lkLAog CQkJCXVpbnQzMl90IGhwZF9zaXplLCB1aW50NjRfdCBocGRfZ3B1X2FkZHIpCiB7CisJLyogYW1k Z3B1IG93bnMgdGhlIHBlci1waXBlIHN0YXRlICovCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCmluZGV4IDY1NjUzYjMuLmNjOThkNzEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwpAQCAtMjc5OCw2ICsyNzk4LDcgQEAgc3RhdGlj IGludCBnZnhfdjdfMF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlp bnQgcjsKIAl1MzIgKmhwZDsKKwlzaXplX3QgbWVjX2hwZF9zaXplOwogCiAJLyoKIAkgKiBLVjog ICAgMiBNRUMsIDQgUGlwZXMvTUVDLCA4IFF1ZXVlcy9QaXBlIC0gNjQgUXVldWVzIHRvdGFsCkBA IC0yODA1LDEzICsyODA2LDI2IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y3XzBfbWVjX2luaXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJICogTm9uZXRoZWxlc3MsIHdlIGFzc2lnbiBvbmx5IDEg cGlwZSBiZWNhdXNlIGFsbCBvdGhlciBwaXBlcyB3aWxsCiAJICogYmUgaGFuZGxlZCBieSBLRkQK IAkgKi8KLQlhZGV2LT5nZngubWVjLm51bV9tZWMgPSAxOwotCWFkZXYtPmdmeC5tZWMubnVtX3Bp cGUgPSAxOwotCWFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlID0gYWRldi0+Z2Z4Lm1lYy5udW1fbWVj ICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZSAqIDg7CisJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUp IHsKKwljYXNlIENISVBfS0FWRVJJOgorCQlhZGV2LT5nZngubWVjLm51bV9tZWMgPSAyOworCQli cmVhazsKKwljYXNlIENISVBfQk9OQUlSRToKKwljYXNlIENISVBfSEFXQUlJOgorCWNhc2UgQ0hJ UF9LQUJJTkk6CisJY2FzZSBDSElQX01VTExJTlM6CisJZGVmYXVsdDoKKwkJYWRldi0+Z2Z4Lm1l Yy5udW1fbWVjID0gMTsKKwkJYnJlYWs7CisJfQorCWFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVy X21lYyA9IDQ7CisJYWRldi0+Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGUgPSA4OwogCisJbWVj X2hwZF9zaXplID0gYWRldi0+Z2Z4Lm1lYy5udW1fbWVjICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlw ZV9wZXJfbWVjCisJCSogR0ZYN19NRUNfSFBEX1NJWkUgKiAyOwogCWlmIChhZGV2LT5nZngubWVj LmhwZF9lb3Bfb2JqID09IE5VTEwpIHsKIAkJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwKLQkJ CQkgICAgIGFkZXYtPmdmeC5tZWMubnVtX21lYyAqIGFkZXYtPmdmeC5tZWMubnVtX3BpcGUgKiBH Rlg3X01FQ19IUERfU0laRSAqIDIsCisJCQkJICAgICBtZWNfaHBkX3NpemUsCiAJCQkJICAgICBQ QUdFX1NJWkUsIHRydWUsCiAJCQkJICAgICBBTURHUFVfR0VNX0RPTUFJTl9HVFQsIDAsIE5VTEws IE5VTEwsCiAJCQkJICAgICAmYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7CkBAIC0yODQxLDcg KzI4NTUsNyBAQCBzdGF0aWMgaW50IGdmeF92N18wX21lY19pbml0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogCX0KIAogCS8qIGNsZWFyIG1lbW9yeS4gIE5vdCBzdXJlIGlmIHRoaXMgaXMg cmVxdWlyZWQgb3Igbm90ICovCi0JbWVtc2V0KGhwZCwgMCwgYWRldi0+Z2Z4Lm1lYy5udW1fbWVj ICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZSAqIEdGWDdfTUVDX0hQRF9TSVpFICogMik7CisJbWVt c2V0KGhwZCwgMCwgbWVjX2hwZF9zaXplKTsKIAogCWFtZGdwdV9ib19rdW5tYXAoYWRldi0+Z2Z4 Lm1lYy5ocGRfZW9wX29iaik7CiAJYW1kZ3B1X2JvX3VucmVzZXJ2ZShhZGV2LT5nZngubWVjLmhw ZF9lb3Bfb2JqKTsKQEAgLTMxNzksOSArMzE5Myw5IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y3XzBfY3Bf Y29tcHV0ZV9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJdG1wIHw9ICgxIDw8 IDIzKTsKIAlXUkVHMzIobW1DUF9DUEZfREVCVUcsIHRtcCk7CiAKLQkvKiBpbml0IHRoZSBwaXBl cyAqLworCS8qIGluaXQgYWxsIHBpcGVzIChldmVuIHRoZSBvbmVzIHdlIGRvbid0IG93bikgKi8K IAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+Z2Z4Lm1lYy5udW1fbWVjOyBpKyspCi0JCWZvciAoaiA9 IDA7IGogPCBhZGV2LT5nZngubWVjLm51bV9waXBlOyBqKyspCisJCWZvciAoaiA9IDA7IGogPCBh ZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWM7IGorKykKIAkJCWdmeF92N18wX2NvbXB1dGVf cGlwZV9pbml0KGFkZXYsIGksIGopOwogCiAJLyogaW5pdCB0aGUgcXVldWVzICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwppbmRleCA0ZDQwZjU3Li42NTg4MDU0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKQEAgLTE0MjQsMTggKzE0MjQsMzMgQEAgc3Rh dGljIGludCBnZnhfdjhfMF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsK IAlpbnQgcjsKIAl1MzIgKmhwZDsKKwlzaXplX3QgbWVjX2hwZF9zaXplOwogCi0JLyoKLQkgKiB3 ZSBhc3NpZ24gb25seSAxIHBpcGUgYmVjYXVzZSBhbGwgb3RoZXIgcGlwZXMgd2lsbAotCSAqIGJl IGhhbmRsZWQgYnkgS0ZECi0JICovCi0JYWRldi0+Z2Z4Lm1lYy5udW1fbWVjID0gMTsKLQlhZGV2 LT5nZngubWVjLm51bV9waXBlID0gMTsKLQlhZGV2LT5nZngubWVjLm51bV9xdWV1ZSA9IGFkZXYt PmdmeC5tZWMubnVtX21lYyAqIGFkZXYtPmdmeC5tZWMubnVtX3BpcGUgKiA4OworCXN3aXRjaCAo YWRldi0+YXNpY190eXBlKSB7CisJY2FzZSBDSElQX0ZJSkk6CisJY2FzZSBDSElQX1RPTkdBOgor CWNhc2UgQ0hJUF9QT0xBUklTMTE6CisJY2FzZSBDSElQX1BPTEFSSVMxMjoKKwljYXNlIENISVBf UE9MQVJJUzEwOgorCWNhc2UgQ0hJUF9DQVJSSVpPOgorCQlhZGV2LT5nZngubWVjLm51bV9tZWMg PSAyOworCQlicmVhazsKKwljYXNlIENISVBfVE9QQVo6CisJY2FzZSBDSElQX1NUT05FWToKKwlk ZWZhdWx0OgorCQlhZGV2LT5nZngubWVjLm51bV9tZWMgPSAxOworCQlicmVhazsKKwl9CisKKwlh ZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMgPSA0OworCWFkZXYtPmdmeC5tZWMubnVtX3F1 ZXVlX3Blcl9waXBlID0gODsKKworCS8qIG9ubHkgMSBwaXBlIG9mIHRoZSBmaXJzdCBNRUMgaXMg b3duZWQgYnkgYW1kZ3B1ICovCisJbWVjX2hwZF9zaXplID0gMSAqIDEgKiBhZGV2LT5nZngubWVj Lm51bV9xdWV1ZV9wZXJfcGlwZSAqIEdGWDhfTUVDX0hQRF9TSVpFOwogCiAJaWYgKGFkZXYtPmdm eC5tZWMuaHBkX2VvcF9vYmogPT0gTlVMTCkgewogCQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2 LAotCQkJCSAgICAgYWRldi0+Z2Z4Lm1lYy5udW1fcXVldWUgKiBHRlg4X01FQ19IUERfU0laRSwK KwkJCQkgICAgIG1lY19ocGRfc2l6ZSwKIAkJCQkgICAgIFBBR0VfU0laRSwgdHJ1ZSwKIAkJCQkg ICAgIEFNREdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgTlVMTCwgTlVMTCwKIAkJCQkgICAgICZhZGV2 LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKQEAgLTE0NjQsNyArMTQ3OSw3IEBAIHN0YXRpYyBpbnQg Z2Z4X3Y4XzBfbWVjX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCXJldHVybiBy OwogCX0KIAotCW1lbXNldChocGQsIDAsIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlICogR0ZYOF9N RUNfSFBEX1NJWkUpOworCW1lbXNldChocGQsIDAsIG1lY19ocGRfc2l6ZSk7CiAKIAlhbWRncHVf Ym9fa3VubWFwKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwogCWFtZGdwdV9ib191bnJlc2Vy dmUoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jCmluZGV4IGY0OWM1NTEuLmMw NjRkZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2Vf cXVldWVfbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZp Y2VfcXVldWVfbWFuYWdlci5jCkBAIC00NzIsNTUgKzQ3MiwxMCBAQCBzZXRfcGFzaWRfdm1pZF9t YXBwaW5nKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLCB1bnNpZ25lZCBpbnQgcGFz aWQsCiBpbnQgaW5pdF9waXBlbGluZXMoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0s CiAJCQl1bnNpZ25lZCBpbnQgcGlwZXNfbnVtLCB1bnNpZ25lZCBpbnQgZmlyc3RfcGlwZSkKIHsK LQl2b2lkICpocGRwdHI7Ci0Jc3RydWN0IG1xZF9tYW5hZ2VyICptcWQ7Ci0JdW5zaWduZWQgaW50 IGksIGVyciwgaW54OwotCXVpbnQ2NF90IHBpcGVfaHBkX2FkZHI7Ci0KIAlCVUdfT04oIWRxbSB8 fCAhZHFtLT5kZXYpOwogCiAJcHJfZGVidWcoImtmZDogSW4gZnVuYyAlc1xuIiwgX19mdW5jX18p OwogCi0JLyoKLQkgKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBIUERzLiBUaGlzIGlzIGhhcmR3 YXJlLW93bmVkIHBlci1waXBlIGRhdGEuCi0JICogVGhlIGRyaXZlciBuZXZlciBhY2Nlc3NlcyB0 aGlzIG1lbW9yeSBhZnRlciB6ZXJvaW5nIGl0LgotCSAqIEl0IGRvZXNuJ3QgZXZlbiBoYXZlIHRv IGJlIHNhdmVkL3Jlc3RvcmVkIG9uIHN1c3BlbmQvcmVzdW1lCi0JICogYmVjYXVzZSBpdCBjb250 YWlucyBubyBkYXRhIHdoZW4gdGhlcmUgYXJlIG5vIGFjdGl2ZSBxdWV1ZXMuCi0JICovCi0KLQll cnIgPSBrZmRfZ3R0X3NhX2FsbG9jYXRlKGRxbS0+ZGV2LCBDSUtfSFBEX0VPUF9CWVRFUyAqIHBp cGVzX251bSwKLQkJCQkJJmRxbS0+cGlwZWxpbmVfbWVtKTsKLQotCWlmIChlcnIpIHsKLQkJcHJf ZXJyKCJrZmQ6IGVycm9yIGFsbG9jYXRlIHZpZG1lbSBudW0gcGlwZXM6ICVkXG4iLAotCQkJcGlw ZXNfbnVtKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCi0JaHBkcHRyID0gZHFtLT5waXBlbGlu ZV9tZW0tPmNwdV9wdHI7Ci0JZHFtLT5waXBlbGluZXNfYWRkciA9IGRxbS0+cGlwZWxpbmVfbWVt LT5ncHVfYWRkcjsKLQotCW1lbXNldChocGRwdHIsIDAsIENJS19IUERfRU9QX0JZVEVTICogcGlw ZXNfbnVtKTsKLQotCW1xZCA9IGRxbS0+b3BzLmdldF9tcWRfbWFuYWdlcihkcW0sIEtGRF9NUURf VFlQRV9DT01QVVRFKTsKLQlpZiAobXFkID09IE5VTEwpIHsKLQkJa2ZkX2d0dF9zYV9mcmVlKGRx bS0+ZGV2LCBkcW0tPnBpcGVsaW5lX21lbSk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCWZv ciAoaSA9IDA7IGkgPCBwaXBlc19udW07IGkrKykgewotCQlpbnggPSBpICsgZmlyc3RfcGlwZTsK LQkJLyoKLQkJICogSFBEIGJ1ZmZlciBvbiBHVFQgaXMgYWxsb2NhdGVkIGJ5IGFtZGtmZCwgbm8g bmVlZCB0byB3YXN0ZQotCQkgKiBzcGFjZSBpbiBHVFQgZm9yIHBpcGVsaW5lcyB3ZSBkb24ndCBp bml0aWFsaXplCi0JCSAqLwotCQlwaXBlX2hwZF9hZGRyID0gZHFtLT5waXBlbGluZXNfYWRkciAr IGkgKiBDSUtfSFBEX0VPUF9CWVRFUzsKLQkJcHJfZGVidWcoImtmZDogcGlwZWxpbmUgYWRkcmVz cyAlbGxYXG4iLCBwaXBlX2hwZF9hZGRyKTsKLQkJLyogPSBsb2cyKGJ5dGVzLzQpLTEgKi8KLQkJ ZHFtLT5kZXYtPmtmZDJrZ2QtPmluaXRfcGlwZWxpbmUoZHFtLT5kZXYtPmtnZCwgaW54LAotCQkJ CUNJS19IUERfRU9QX0JZVEVTX0xPRzIgLSAzLCBwaXBlX2hwZF9hZGRyKTsKLQl9Ci0KIAlyZXR1 cm4gMDsKIH0KIAotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=