From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 07/25] drm/amdgpu: take ownership of per-pipe configuration v2 Date: Tue, 4 Apr 2017 18:05:33 -0400 Message-ID: <20170404220551.8669-8-andresx7@gmail.com> References: <20170404220551.8669-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-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: andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org TWFrZSBhbWRncHUgdGhlIG93bmVyIG9mIGFsbCBwZXItcGlwZSBzdGF0ZSBvZiB0aGUgSFFEcy4K ClRoaXMgY2hhbmdlIHdpbGwgYWxsb3cgdXMgdG8gc3BsaXQgdGhlIHF1ZXVlcyBiZXR3ZWVuIGtm ZCBhbmQgYW1kZ3B1CndpdGggYSBxdWV1ZSBncmFudWxhcml0eSBpbnN0ZWFkIG9mIHBpcGUgZ3Jh bnVsYXJpdHkuCgpUaGlzIHBhdGNoIGZpeGVzIGtmZCBhbGxvY2F0aW5nIGFuIEhEUF9FT1AgcmVn aW9uIGZvciBpdHMgMyBwaXBlcyB3aGljaApnb2VzIHVudXNlZC4KCnYyOiBzdXBwb3J0IGZvciBn Zng5CgpSZXZpZXdlZC1ieTogRWR3YXJkIE8nQ2FsbGFnaGFuIDxmdW5mdW5jdG9yQGZvbGtsb3Jl MTk4NC5uZXQ+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFt ZC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgICAg ICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92 Ny5jICB8IDEzICstLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRr ZmRfZ2Z4X3Y4LmMgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAu YyAgICAgICAgICAgICAgfCAyOCArKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZ2Z4X3Y4XzAuYyAgICAgICAgICAgICAgfCAzMyArKysrKysrKysrKy0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jICAgICAgICAgICAgICB8IDI0ICsrKysr KysrLS0tLQogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIu YyAgfCA0NSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDY1IGluc2Vy dGlvbnMoKyksIDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgK aW5kZXggMjRlNjIyOS4uYjkyZjZjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgK QEAgLTkwNCwyMyArOTA0LDIzIEBAIHN0cnVjdCBhbWRncHVfcmxjIHsKIAogCXUzMiAqcmVnaXN0 ZXJfbGlzdF9mb3JtYXQ7CiAJdTMyICpyZWdpc3Rlcl9yZXN0b3JlOwogfTsKIAogc3RydWN0IGFt ZGdwdV9tZWMgewogCXN0cnVjdCBhbWRncHVfYm8JKmhwZF9lb3Bfb2JqOwogCXU2NAkJCWhwZF9l b3BfZ3B1X2FkZHI7CiAJc3RydWN0IGFtZGdwdV9ibwkqbWVjX2Z3X29iajsKIAl1NjQJCQltZWNf ZndfZ3B1X2FkZHI7Ci0JdTMyIG51bV9waXBlOwogCXUzMiBudW1fbWVjOwotCXUzMiBudW1fcXVl dWU7CisJdTMyIG51bV9waXBlX3Blcl9tZWM7CisJdTMyIG51bV9xdWV1ZV9wZXJfcGlwZTsKIAl2 b2lkCQkJKm1xZF9iYWNrdXBbQU1ER1BVX01BWF9DT01QVVRFX1JJTkdTICsgMV07CiB9OwogCiBz dHJ1Y3QgYW1kZ3B1X2tpcSB7CiAJdTY0CQkJZW9wX2dwdV9hZGRyOwogCXN0cnVjdCBhbWRncHVf Ym8JKmVvcF9vYmo7CiAJc3RydWN0IGFtZGdwdV9yaW5nCXJpbmc7CiAJc3RydWN0IGFtZGdwdV9p cnFfc3JjCWlycTsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYW1ka2ZkX2dmeF92Ny5jCmluZGV4IDAzOGI3ZWEuLjkxMGY5ZDMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYwpAQCAtMjM3LDMy ICsyMzcsMjEgQEAgc3RhdGljIGludCBrZ2Rfc2V0X3Bhc2lkX3ZtaWRfbWFwcGluZyhzdHJ1Y3Qg a2dkX2RldiAqa2dkLCB1bnNpZ25lZCBpbnQgcGFzaWQsCiAKIAkvKiBNYXBwaW5nIHZtaWQgdG8g cGFzaWQgYWxzbyBmb3IgSUggYmxvY2sgKi8KIAlXUkVHMzIobW1JSF9WTUlEXzBfTFVUICsgdm1p ZCwgcGFzaWRfbWFwcGluZyk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBrZ2RfaW5p dF9waXBlbGluZShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCBwaXBlX2lkLAogCQkJCXVp bnQzMl90IGhwZF9zaXplLCB1aW50NjRfdCBocGRfZ3B1X2FkZHIpCiB7Ci0Jc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2QpOwotCi0JdWludDMyX3QgbWVj ID0gKCsrcGlwZV9pZCAvIENJS19QSVBFX1BFUl9NRUMpICsgMTsKLQl1aW50MzJfdCBwaXBlID0g KHBpcGVfaWQgJSBDSUtfUElQRV9QRVJfTUVDKTsKLQotCWxvY2tfc3JibShrZ2QsIG1lYywgcGlw ZSwgMCwgMCk7Ci0JV1JFRzMyKG1tQ1BfSFBEX0VPUF9CQVNFX0FERFIsIGxvd2VyXzMyX2JpdHMo aHBkX2dwdV9hZGRyID4+IDgpKTsKLQlXUkVHMzIobW1DUF9IUERfRU9QX0JBU0VfQUREUl9ISSwg dXBwZXJfMzJfYml0cyhocGRfZ3B1X2FkZHIgPj4gOCkpOwotCVdSRUczMihtbUNQX0hQRF9FT1Bf Vk1JRCwgMCk7Ci0JV1JFRzMyKG1tQ1BfSFBEX0VPUF9DT05UUk9MLCBocGRfc2l6ZSk7Ci0JdW5s b2NrX3NyYm0oa2dkKTsKLQorCS8qIGFtZGdwdSBvd25zIHRoZSBwZXItcGlwZSBzdGF0ZSAqLwog CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGtnZF9pbml0X2ludGVycnVwdHMoc3RydWN0IGtn ZF9kZXYgKmtnZCwgdWludDMyX3QgcGlwZV9pZCkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGdldF9hbWRncHVfZGV2aWNlKGtnZCk7CiAJdWludDMyX3QgbWVjOwogCXVpbnQzMl90 IHBpcGU7CiAKIAltZWMgPSAocGlwZV9pZCAvIENJS19QSVBFX1BFUl9NRUMpICsgMTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jCmluZGV4 IDJlY2VmM2QuLjU4NDMzNjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2FtZGtmZF9nZnhfdjguYwpAQCAtMTk5LDIwICsxOTksMjEgQEAgc3RhdGljIGludCBr Z2Rfc2V0X3Bhc2lkX3ZtaWRfbWFwcGluZyhzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1bnNpZ25lZCBp bnQgcGFzaWQsCiAKIAkvKiBNYXBwaW5nIHZtaWQgdG8gcGFzaWQgYWxzbyBmb3IgSUggYmxvY2sg Ki8KIAlXUkVHMzIobW1JSF9WTUlEXzBfTFVUICsgdm1pZCwgcGFzaWRfbWFwcGluZyk7CiAKIAly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBrZ2RfaW5pdF9waXBlbGluZShzdHJ1Y3Qga2dkX2Rl diAqa2dkLCB1aW50MzJfdCBwaXBlX2lkLAogCQkJCXVpbnQzMl90IGhwZF9zaXplLCB1aW50NjRf dCBocGRfZ3B1X2FkZHIpCiB7CisJLyogYW1kZ3B1IG93bnMgdGhlIHBlci1waXBlIHN0YXRlICov CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQga2dkX2luaXRfaW50ZXJydXB0cyhzdHJ1Y3Qg a2dkX2RldiAqa2dkLCB1aW50MzJfdCBwaXBlX2lkKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsKIAl1aW50MzJfdCBtZWM7CiAJdWludDMy X3QgcGlwZTsKIAogCW1lYyA9ICgrK3BpcGVfaWQgLyBWSV9QSVBFX1BFUl9NRUMpICsgMTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCmluZGV4IDYyOWUzZmIuLjMzNDAwMTIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwpAQCAtMjgyMSwzNCArMjgyMSw0OCBA QCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9tZWNfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAogCQlhbWRncHVfYm9fdW5yZWYoJmFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwogCQlh ZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqID0gTlVMTDsKIAl9CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4 X3Y3XzBfbWVjX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IHI7CiAJ dTMyICpocGQ7CisJc2l6ZV90IG1lY19ocGRfc2l6ZTsKIAogCS8qCiAJICogS1Y6ICAgIDIgTUVD LCA0IFBpcGVzL01FQywgOCBRdWV1ZXMvUGlwZSAtIDY0IFF1ZXVlcyB0b3RhbAogCSAqIENJL0tC OiAxIE1FQywgNCBQaXBlcy9NRUMsIDggUXVldWVzL1BpcGUgLSAzMiBRdWV1ZXMgdG90YWwKIAkg KiBOb25ldGhlbGVzcywgd2UgYXNzaWduIG9ubHkgMSBwaXBlIGJlY2F1c2UgYWxsIG90aGVyIHBp cGVzIHdpbGwKIAkgKiBiZSBoYW5kbGVkIGJ5IEtGRAogCSAqLwotCWFkZXYtPmdmeC5tZWMubnVt X21lYyA9IDE7Ci0JYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZSA9IDE7Ci0JYWRldi0+Z2Z4Lm1lYy5u dW1fcXVldWUgPSBhZGV2LT5nZngubWVjLm51bV9tZWMgKiBhZGV2LT5nZngubWVjLm51bV9waXBl ICogODsKKwlzd2l0Y2ggKGFkZXYtPmFzaWNfdHlwZSkgeworCWNhc2UgQ0hJUF9LQVZFUkk6CisJ CWFkZXYtPmdmeC5tZWMubnVtX21lYyA9IDI7CisJCWJyZWFrOworCWNhc2UgQ0hJUF9CT05BSVJF OgorCWNhc2UgQ0hJUF9IQVdBSUk6CisJY2FzZSBDSElQX0tBQklOSToKKwljYXNlIENISVBfTVVM TElOUzoKKwlkZWZhdWx0OgorCQlhZGV2LT5nZngubWVjLm51bV9tZWMgPSAxOworCQlicmVhazsK Kwl9CisJYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJfbWVjID0gNDsKKwlhZGV2LT5nZngubWVj Lm51bV9xdWV1ZV9wZXJfcGlwZSA9IDg7CiAKKwltZWNfaHBkX3NpemUgPSBhZGV2LT5nZngubWVj Lm51bV9tZWMgKiBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMKKwkJKiBHRlg3X01FQ19I UERfU0laRSAqIDI7CiAJaWYgKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmogPT0gTlVMTCkgewog CQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LAotCQkJCSAgICAgYWRldi0+Z2Z4Lm1lYy5udW1f bWVjICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZSAqIEdGWDdfTUVDX0hQRF9TSVpFICogMiwKKwkJ CQkgICAgIG1lY19ocGRfc2l6ZSwKIAkJCQkgICAgIFBBR0VfU0laRSwgdHJ1ZSwKIAkJCQkgICAg IEFNREdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgTlVMTCwgTlVMTCwKIAkJCQkgICAgICZhZGV2LT5n ZngubWVjLmhwZF9lb3Bfb2JqKTsKIAkJaWYgKHIpIHsKIAkJCWRldl93YXJuKGFkZXYtPmRldiwg IiglZCkgY3JlYXRlIEhEUCBFT1AgYm8gZmFpbGVkXG4iLCByKTsKIAkJCXJldHVybiByOwogCQl9 CiAJfQogCiAJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmos IGZhbHNlKTsKQEAgLTI4NjQsMjEgKzI4NzgsMjEgQEAgc3RhdGljIGludCBnZnhfdjdfMF9tZWNf aW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBh bWRncHVfYm9fa21hcChhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqLCAodm9pZCAqKikmaHBkKTsK IAlpZiAocikgewogCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIG1hcCBIRFAgRU9QIGJvIGZh aWxlZFxuIiwgcik7CiAJCWdmeF92N18wX21lY19maW5pKGFkZXYpOwogCQlyZXR1cm4gcjsKIAl9 CiAKIAkvKiBjbGVhciBtZW1vcnkuICBOb3Qgc3VyZSBpZiB0aGlzIGlzIHJlcXVpcmVkIG9yIG5v dCAqLwotCW1lbXNldChocGQsIDAsIGFkZXYtPmdmeC5tZWMubnVtX21lYyAqIGFkZXYtPmdmeC5t ZWMubnVtX3BpcGUgKiBHRlg3X01FQ19IUERfU0laRSAqIDIpOworCW1lbXNldChocGQsIDAsIG1l Y19ocGRfc2l6ZSk7CiAKIAlhbWRncHVfYm9fa3VubWFwKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9v YmopOwogCWFtZGdwdV9ib191bnJlc2VydmUoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7CiAK IAlyZXR1cm4gMDsKIH0KIAogc3RydWN0IGhxZF9yZWdpc3RlcnMKIHsKIAl1MzIgY3BfbXFkX2Jh c2VfYWRkcjsKQEAgLTMyMDIsMjMgKzMyMTYsMjMgQEAgc3RhdGljIGludCBnZnhfdjdfMF9jcF9j b21wdXRlX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlpbnQgciwgaSwg ajsKIAl1MzIgdG1wOwogCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZzsKIAogCS8qIGZpeCB1cCBj aGlja2VuIGJpdHMgKi8KIAl0bXAgPSBSUkVHMzIobW1DUF9DUEZfREVCVUcpOwogCXRtcCB8PSAo MSA8PCAyMyk7CiAJV1JFRzMyKG1tQ1BfQ1BGX0RFQlVHLCB0bXApOwogCi0JLyogaW5pdCB0aGUg cGlwZXMgKi8KKwkvKiBpbml0IGFsbCBwaXBlcyAoZXZlbiB0aGUgb25lcyB3ZSBkb24ndCBvd24p ICovCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5tZWMubnVtX21lYzsgaSsrKQotCQlmb3Ig KGogPSAwOyBqIDwgYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZTsgaisrKQorCQlmb3IgKGogPSAwOyBq IDwgYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJfbWVjOyBqKyspCiAJCQlnZnhfdjdfMF9jb21w dXRlX3BpcGVfaW5pdChhZGV2LCBpLCBqKTsKIAogCS8qIGluaXQgdGhlIHF1ZXVlcyAqLwogCWZv ciAoaSA9IDA7IGkgPCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7IGkrKykgewogCQlyID0g Z2Z4X3Y3XzBfY29tcHV0ZV9xdWV1ZV9pbml0KGFkZXYsIGkpOwogCQlpZiAocikgewogCQkJZ2Z4 X3Y3XzBfY3BfY29tcHV0ZV9maW5pKGFkZXYpOwogCQkJcmV0dXJuIHI7CiAJCX0KIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwppbmRleCBlMWM5MWU0Li44NmNkY2I4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKQEAgLTE0MTQsMzIgKzE0MTQsNDcgQEAg c3RhdGljIHZvaWQgZ2Z4X3Y4XzBfa2lxX2ZyZWVfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsCiAJYW1kZ3B1X3diX2ZyZWUocmluZy0+YWRldiwgcmluZy0+YWRldi0+dmlydC5yZWdfdmFs X29mZnMpOwogCWFtZGdwdV9yaW5nX2ZpbmkocmluZyk7CiB9CiAKICNkZWZpbmUgR0ZYOF9NRUNf SFBEX1NJWkUgMjA0OAogCiBzdGF0aWMgaW50IGdmeF92OF8wX21lY19pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCWludCByOwogCXUzMiAqaHBkOworCXNpemVfdCBtZWNfaHBk X3NpemU7CiAKLQkvKgotCSAqIHdlIGFzc2lnbiBvbmx5IDEgcGlwZSBiZWNhdXNlIGFsbCBvdGhl ciBwaXBlcyB3aWxsCi0JICogYmUgaGFuZGxlZCBieSBLRkQKLQkgKi8KLQlhZGV2LT5nZngubWVj Lm51bV9tZWMgPSAxOwotCWFkZXYtPmdmeC5tZWMubnVtX3BpcGUgPSAxOwotCWFkZXYtPmdmeC5t ZWMubnVtX3F1ZXVlID0gYWRldi0+Z2Z4Lm1lYy5udW1fbWVjICogYWRldi0+Z2Z4Lm1lYy5udW1f cGlwZSAqIDg7CisJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsKKwljYXNlIENISVBfRklKSToK KwljYXNlIENISVBfVE9OR0E6CisJY2FzZSBDSElQX1BPTEFSSVMxMToKKwljYXNlIENISVBfUE9M QVJJUzEyOgorCWNhc2UgQ0hJUF9QT0xBUklTMTA6CisJY2FzZSBDSElQX0NBUlJJWk86CisJCWFk ZXYtPmdmeC5tZWMubnVtX21lYyA9IDI7CisJCWJyZWFrOworCWNhc2UgQ0hJUF9UT1BBWjoKKwlj YXNlIENISVBfU1RPTkVZOgorCWRlZmF1bHQ6CisJCWFkZXYtPmdmeC5tZWMubnVtX21lYyA9IDE7 CisJCWJyZWFrOworCX0KKworCWFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYyA9IDQ7CisJ YWRldi0+Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGUgPSA4OworCisJLyogb25seSAxIHBpcGUg b2YgdGhlIGZpcnN0IE1FQyBpcyBvd25lZCBieSBhbWRncHUgKi8KKwltZWNfaHBkX3NpemUgPSAx ICogMSAqIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9waXBlICogR0ZYOF9NRUNfSFBEX1NJ WkU7CiAKIAlpZiAoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaiA9PSBOVUxMKSB7CiAJCXIgPSBh bWRncHVfYm9fY3JlYXRlKGFkZXYsCi0JCQkJICAgICBhZGV2LT5nZngubWVjLm51bV9xdWV1ZSAq IEdGWDhfTUVDX0hQRF9TSVpFLAorCQkJCSAgICAgbWVjX2hwZF9zaXplLAogCQkJCSAgICAgUEFH RV9TSVpFLCB0cnVlLAogCQkJCSAgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLCBOVUxMLCBO VUxMLAogCQkJCSAgICAgJmFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwogCQlpZiAocikgewog CQkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSBjcmVhdGUgSERQIEVPUCBibyBmYWlsZWRcbiIs IHIpOwogCQkJcmV0dXJuIHI7CiAJCX0KIAl9CiAKIAlyID0gYW1kZ3B1X2JvX3Jlc2VydmUoYWRl di0+Z2Z4Lm1lYy5ocGRfZW9wX29iaiwgZmFsc2UpOwpAQCAtMTQ1NCwyMSArMTQ2OSwyMSBAQCBz dGF0aWMgaW50IGdmeF92OF8wX21lY19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog CQlnZnhfdjhfMF9tZWNfZmluaShhZGV2KTsKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBhbWRncHVf Ym9fa21hcChhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqLCAodm9pZCAqKikmaHBkKTsKIAlpZiAo cikgewogCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIG1hcCBIRFAgRU9QIGJvIGZhaWxlZFxu Iiwgcik7CiAJCWdmeF92OF8wX21lY19maW5pKGFkZXYpOwogCQlyZXR1cm4gcjsKIAl9CiAKLQlt ZW1zZXQoaHBkLCAwLCBhZGV2LT5nZngubWVjLm51bV9xdWV1ZSAqIEdGWDhfTUVDX0hQRF9TSVpF KTsKKwltZW1zZXQoaHBkLCAwLCBtZWNfaHBkX3NpemUpOwogCiAJYW1kZ3B1X2JvX2t1bm1hcChh ZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKIAlhbWRncHVfYm9fdW5yZXNlcnZlKGFkZXYtPmdm eC5tZWMuaHBkX2VvcF9vYmopOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92 OF8wX2tpcV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBhbWRn cHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djlfMC5jCmluZGV4IDY2OWJiOTguLjFhN2I3NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y5XzAuYwpAQCAtNDc2LDM0ICs0NzYsNDIgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y5XzBfbWVj X2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAKICNkZWZpbmUgTUVDX0hQRF9TSVpF IDIwNDgKIAogc3RhdGljIGludCBnZnhfdjlfMF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKIHsKIAlpbnQgcjsKIAl1MzIgKmhwZDsKIAljb25zdCBfX2xlMzIgKmZ3X2RhdGE7 CiAJdW5zaWduZWQgZndfc2l6ZTsKIAl1MzIgKmZ3OworCXNpemVfdCBtZWNfaHBkX3NpemU7CiAK IAljb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICptZWNfaGRyOwogCi0JLyoK LQkgKiB3ZSBhc3NpZ24gb25seSAxIHBpcGUgYmVjYXVzZSBhbGwgb3RoZXIgcGlwZXMgd2lsbAot CSAqIGJlIGhhbmRsZWQgYnkgS0ZECi0JICovCi0JYWRldi0+Z2Z4Lm1lYy5udW1fbWVjID0gMTsK LQlhZGV2LT5nZngubWVjLm51bV9waXBlID0gMTsKLQlhZGV2LT5nZngubWVjLm51bV9xdWV1ZSA9 IGFkZXYtPmdmeC5tZWMubnVtX21lYyAqIGFkZXYtPmdmeC5tZWMubnVtX3BpcGUgKiA4OworCXN3 aXRjaCAoYWRldi0+YXNpY190eXBlKSB7CisJY2FzZSBDSElQX1ZFR0ExMDoKKwkJYWRldi0+Z2Z4 Lm1lYy5udW1fbWVjID0gMjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYWRldi0+Z2Z4Lm1lYy5u dW1fbWVjID0gMTsKKwkJYnJlYWs7CisJfQorCisJYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJf bWVjID0gNDsKKwlhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZSA9IDg7CisKKwkvKiBv bmx5IDEgcGlwZSBvZiB0aGUgZmlyc3QgTUVDIGlzIG93bmVkIGJ5IGFtZGdwdSAqLworCW1lY19o cGRfc2l6ZSA9IDEgKiAxICogYWRldi0+Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGUgKiBNRUNf SFBEX1NJWkU7CiAKIAlpZiAoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaiA9PSBOVUxMKSB7CiAJ CXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsCi0JCQkJICAgICBhZGV2LT5nZngubWVjLm51bV9x dWV1ZSAqIE1FQ19IUERfU0laRSwKKwkJCQkgICAgIG1lY19ocGRfc2l6ZSwKIAkJCQkgICAgIFBB R0VfU0laRSwgdHJ1ZSwKIAkJCQkgICAgIEFNREdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgTlVMTCwg TlVMTCwKIAkJCQkgICAgICZhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKIAkJaWYgKHIpIHsK IAkJCWRldl93YXJuKGFkZXYtPmRldiwgIiglZCkgY3JlYXRlIEhEUCBFT1AgYm8gZmFpbGVkXG4i LCByKTsKIAkJCXJldHVybiByOwogCQl9CiAJfQogCiAJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFk ZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmosIGZhbHNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKaW5kZXggZjQ5YzU1MS4u YzA2NGRlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rldmlj ZV9xdWV1ZV9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rl dmljZV9xdWV1ZV9tYW5hZ2VyLmMKQEAgLTQ2NSw2OSArNDY1LDI0IEBAIHNldF9wYXNpZF92bWlk X21hcHBpbmcoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHVuc2lnbmVkIGludCBw YXNpZCwKIAkJQVRDX1ZNSURfUEFTSURfTUFQUElOR19WQUxJRDsKIAogCXJldHVybiBkcW0tPmRl di0+a2ZkMmtnZC0+c2V0X3Bhc2lkX3ZtaWRfbWFwcGluZygKIAkJCQkJCWRxbS0+ZGV2LT5rZ2Qs IHBhc2lkX21hcHBpbmcsCiAJCQkJCQl2bWlkKTsKIH0KIAogaW50IGluaXRfcGlwZWxpbmVzKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCQkJdW5zaWduZWQgaW50IHBpcGVzX251 bSwgdW5zaWduZWQgaW50IGZpcnN0X3BpcGUpCiB7Ci0Jdm9pZCAqaHBkcHRyOwotCXN0cnVjdCBt cWRfbWFuYWdlciAqbXFkOwotCXVuc2lnbmVkIGludCBpLCBlcnIsIGlueDsKLQl1aW50NjRfdCBw aXBlX2hwZF9hZGRyOwotCiAJQlVHX09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsKIAogCXByX2RlYnVn KCJrZmQ6IEluIGZ1bmMgJXNcbiIsIF9fZnVuY19fKTsKIAotCS8qCi0JICogQWxsb2NhdGUgbWVt b3J5IGZvciB0aGUgSFBEcy4gVGhpcyBpcyBoYXJkd2FyZS1vd25lZCBwZXItcGlwZSBkYXRhLgot CSAqIFRoZSBkcml2ZXIgbmV2ZXIgYWNjZXNzZXMgdGhpcyBtZW1vcnkgYWZ0ZXIgemVyb2luZyBp dC4KLQkgKiBJdCBkb2Vzbid0IGV2ZW4gaGF2ZSB0byBiZSBzYXZlZC9yZXN0b3JlZCBvbiBzdXNw ZW5kL3Jlc3VtZQotCSAqIGJlY2F1c2UgaXQgY29udGFpbnMgbm8gZGF0YSB3aGVuIHRoZXJlIGFy ZSBubyBhY3RpdmUgcXVldWVzLgotCSAqLwotCi0JZXJyID0ga2ZkX2d0dF9zYV9hbGxvY2F0ZShk cW0tPmRldiwgQ0lLX0hQRF9FT1BfQllURVMgKiBwaXBlc19udW0sCi0JCQkJCSZkcW0tPnBpcGVs aW5lX21lbSk7Ci0KLQlpZiAoZXJyKSB7Ci0JCXByX2Vycigia2ZkOiBlcnJvciBhbGxvY2F0ZSB2 aWRtZW0gbnVtIHBpcGVzOiAlZFxuIiwKLQkJCXBpcGVzX251bSk7Ci0JCXJldHVybiAtRU5PTUVN OwotCX0KLQotCWhwZHB0ciA9IGRxbS0+cGlwZWxpbmVfbWVtLT5jcHVfcHRyOwotCWRxbS0+cGlw ZWxpbmVzX2FkZHIgPSBkcW0tPnBpcGVsaW5lX21lbS0+Z3B1X2FkZHI7Ci0KLQltZW1zZXQoaHBk cHRyLCAwLCBDSUtfSFBEX0VPUF9CWVRFUyAqIHBpcGVzX251bSk7Ci0KLQltcWQgPSBkcW0tPm9w cy5nZXRfbXFkX21hbmFnZXIoZHFtLCBLRkRfTVFEX1RZUEVfQ09NUFVURSk7Ci0JaWYgKG1xZCA9 PSBOVUxMKSB7Ci0JCWtmZF9ndHRfc2FfZnJlZShkcW0tPmRldiwgZHFtLT5waXBlbGluZV9tZW0p OwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgcGlwZXNfbnVtOyBp KyspIHsKLQkJaW54ID0gaSArIGZpcnN0X3BpcGU7Ci0JCS8qCi0JCSAqIEhQRCBidWZmZXIgb24g R1RUIGlzIGFsbG9jYXRlZCBieSBhbWRrZmQsIG5vIG5lZWQgdG8gd2FzdGUKLQkJICogc3BhY2Ug aW4gR1RUIGZvciBwaXBlbGluZXMgd2UgZG9uJ3QgaW5pdGlhbGl6ZQotCQkgKi8KLQkJcGlwZV9o cGRfYWRkciA9IGRxbS0+cGlwZWxpbmVzX2FkZHIgKyBpICogQ0lLX0hQRF9FT1BfQllURVM7Ci0J CXByX2RlYnVnKCJrZmQ6IHBpcGVsaW5lIGFkZHJlc3MgJWxsWFxuIiwgcGlwZV9ocGRfYWRkcik7 Ci0JCS8qID0gbG9nMihieXRlcy80KS0xICovCi0JCWRxbS0+ZGV2LT5rZmQya2dkLT5pbml0X3Bp cGVsaW5lKGRxbS0+ZGV2LT5rZ2QsIGlueCwKLQkJCQlDSUtfSFBEX0VPUF9CWVRFU19MT0cyIC0g MywgcGlwZV9ocGRfYWRkcik7Ci0JfQotCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIGlu aXRfaW50ZXJydXB0cyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIHsKIAl1bnNp Z25lZCBpbnQgaTsKIAogCUJVR19PTihkcW0gPT0gTlVMTCk7CiAKIAlmb3IgKGkgPSAwIDsgaSA8 IGdldF9waXBlc19udW0oZHFtKSA7IGkrKykKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngK