From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 19/25] drm/amdgpu: add framework for HW specific priority settings v6 Date: Tue, 4 Apr 2017 18:05:45 -0400 Message-ID: <20170404220551.8669-20-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 QWRkIGFuIGluaXRpYWwgZnJhbWV3b3JrIGZvciBjaGFuZ2luZyB0aGUgSFcgcHJpb3JpdGllcyBv ZiByaW5ncy4gVGhlCmZyYW1ld29yayBhbGxvd3MgcmVxdWVzdGluZyBwcmlvcml0eSBjaGFuZ2Vz IGZvciB0aGUgbGlmZXRpbWUgb2YgYW4KYW1kZ3B1X2pvYi4gQWZ0ZXIgdGhlIGpvYiBjb21wbGV0 ZXMgdGhlIHByaW9yaXR5IHdpbGwgZGVjYXkgdG8gdGhlIG5leHQKbG93ZXN0IHByaW9yaXR5IGZv ciB3aGljaCBhIHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQuCgpBIG5ldyByaW5nIGZ1bmN0aW9uIHNl dF9wcmlvcml0eSgpIGNhbiBub3cgYmUgcG9wdWxhdGVkIHRvIHRha2UgY2FyZSBvZgp0aGUgSFcg c3BlY2lmaWMgcHJvZ3JhbW1pbmcgc2VxdWVuY2UgZm9yIHByaW9yaXR5IGNoYW5nZXMuCgp2Mjog c2V0IHByaW9yaXR5IGJlZm9yZSBlbWl0dGluZyBJQiwgYW5kIHRha2UgYSByZWYgb24gYW1kZ3B1 X2pvYgp2MzogdXNlIEFNRF9TQ0hFRF9QUklPUklUWV8qIGluc3RlYWQgb2YgQU1ER1BVX0NUWF9Q UklPUklUWV8qCnY0OiBwbHVnIGFtZGdwdV9yaW5nX3Jlc3RvcmVfcHJpb3JpdHlfY2IgaW50byBh bWRncHVfam9iX2ZyZWVfY2IKdjU6IHVzZSBhdG9taWMgZm9yIHRyYWNraW5nIGpvYiBwcmlvcml0 aWVzIGluc3RlYWQgb2YgbGFzdF9qb2IKdjY6IHJlbmFtZSBhbWRncHVfcmluZ19wcmlvcml0eV9b Z2V0L3B1dF0oKSBhbmQgYWxpZ24gcGFyYW1ldGVycwoKU2lnbmVkLW9mZi1ieTogQW5kcmVzIFJv ZHJpZ3VleiA8YW5kcmVzeDdAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jdHguYyAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfam9iLmMgICAgICAgfCAgNyArKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yaW5nLmMgICAgICB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCAgICAgIHwgMTUgKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmggfCAgNyArKysKIDUg ZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jCmluZGV4IDllZGNmN2YuLjU2YTJkMjcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMKQEAgLTI1LDIxICsyNSwyMSBA QAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAKIHN0YXRpYyBp bnQgYW1kZ3B1X2N0eF9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgZW51 bSBhbWRfc2NoZWRfcHJpb3JpdHkgcHJpb3JpdHksCiAJCQkgICBzdHJ1Y3QgYW1kZ3B1X2N0eCAq Y3R4KQogewogCXVuc2lnbmVkIGksIGo7CiAJaW50IHI7CiAKLQlpZiAocHJpb3JpdHkgPCAwIHx8 IHByaW9yaXR5ID49IEFNRF9TQ0hFRF9NQVhfUFJJT1JJVFkpCisJaWYgKHByaW9yaXR5IDwgMCB8 fCBwcmlvcml0eSA+PSBBTURfU0NIRURfUFJJT1JJVFlfTUFYKQogCQlyZXR1cm4gLUVJTlZBTDsK IAogCWlmIChwcmlvcml0eSA9PSBBTURfU0NIRURfUFJJT1JJVFlfSElHSCAmJiAhY2FwYWJsZShD QVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIC1FQUNDRVM7CiAKIAltZW1zZXQoY3R4LCAwLCBzaXpl b2YoKmN0eCkpOwogCWN0eC0+YWRldiA9IGFkZXY7CiAJa3JlZl9pbml0KCZjdHgtPnJlZmNvdW50 KTsKIAlzcGluX2xvY2tfaW5pdCgmY3R4LT5yaW5nX2xvY2spOwogCWN0eC0+ZmVuY2VzID0ga2Nh bGxvYyhhbWRncHVfc2NoZWRfam9icyAqIEFNREdQVV9NQVhfUklOR1MsCkBAIC0yMTUsMjEgKzIx NSwyMSBAQCBpbnQgYW1kZ3B1X2N0eF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCWVudW0gYW1kX3NjaGVkX3ByaW9yaXR5IHByaW9yaXR5OwogCiAJdW5pb24gZHJt X2FtZGdwdV9jdHggKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRy aXZlcl9wcml2OwogCiAJciA9IDA7CiAJaWQgPSBhcmdzLT5pbi5jdHhfaWQ7CiAJcHJpb3JpdHkg PSBhbWRncHVfdG9fc2NoZWRfcHJpb3JpdHkoYXJncy0+aW4ucHJpb3JpdHkpOwogCi0JaWYgKHBy aW9yaXR5ID49IEFNRF9TQ0hFRF9NQVhfUFJJT1JJVFkpCisJaWYgKHByaW9yaXR5ID49IEFNRF9T Q0hFRF9QUklPUklUWV9NQVgpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJc3dpdGNoIChhcmdzLT5p bi5vcCkgewogCWNhc2UgQU1ER1BVX0NUWF9PUF9BTExPQ19DVFg6CiAJCXIgPSBhbWRncHVfY3R4 X2FsbG9jKGFkZXYsIGZwcml2LCBwcmlvcml0eSwgJmlkKTsKIAkJYXJncy0+b3V0LmFsbG9jLmN0 eF9pZCA9IGlkOwogCQlicmVhazsKIAljYXNlIEFNREdQVV9DVFhfT1BfRlJFRV9DVFg6CiAJCXIg PSBhbWRncHVfY3R4X2ZyZWUoZnByaXYsIGlkKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfam9iLmMKaW5kZXggODZhMTI0Mi4uYWM5MGRmYyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYwpAQCAtODgsMjAgKzg4LDIxIEBAIHZvaWQgYW1k Z3B1X2pvYl9mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iKQogCWYgPSBqb2It PmJhc2Uuc19mZW5jZSA/ICZqb2ItPmJhc2Uuc19mZW5jZS0+ZmluaXNoZWQgOiBqb2ItPmZlbmNl OwogCiAJZm9yIChpID0gMDsgaSA8IGpvYi0+bnVtX2liczsgKytpKQogCQlhbWRncHVfaWJfZnJl ZShqb2ItPmFkZXYsICZqb2ItPmlic1tpXSwgZik7CiB9CiAKIHN0YXRpYyB2b2lkIGFtZGdwdV9q b2JfZnJlZV9jYihzdHJ1Y3QgYW1kX3NjaGVkX2pvYiAqc19qb2IpCiB7CiAJc3RydWN0IGFtZGdw dV9qb2IgKmpvYiA9IGNvbnRhaW5lcl9vZihzX2pvYiwgc3RydWN0IGFtZGdwdV9qb2IsIGJhc2Up OwogCisJYW1kZ3B1X3JpbmdfcHJpb3JpdHlfcHV0KGpvYi0+cmluZywgYW1kX3NjaGVkX2dldF9q b2JfcHJpb3JpdHkoc19qb2IpKTsKIAlkbWFfZmVuY2VfcHV0KGpvYi0+ZmVuY2UpOwogCWFtZGdw dV9zeW5jX2ZyZWUoJmpvYi0+c3luYyk7CiAJa2ZyZWUoam9iKTsKIH0KIAogdm9pZCBhbWRncHVf am9iX2ZyZWUoc3RydWN0IGFtZGdwdV9qb2IgKmpvYikKIHsKIAlhbWRncHVfam9iX2ZyZWVfcmVz b3VyY2VzKGpvYik7CiAKIAlkbWFfZmVuY2VfcHV0KGpvYi0+ZmVuY2UpOwpAQCAtMTYyLDI4ICsx NjMsMzQgQEAgc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKmFtZGdwdV9qb2JfcnVuKHN0cnVjdCBh bWRfc2NoZWRfam9iICpzY2hlZF9qb2IpCiAJaW50IHI7CiAKIAlpZiAoIXNjaGVkX2pvYikgewog CQlEUk1fRVJST1IoImpvYiBpcyBudWxsXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCWpvYiA9 IHRvX2FtZGdwdV9qb2Ioc2NoZWRfam9iKTsKIAogCUJVR19PTihhbWRncHVfc3luY19wZWVrX2Zl bmNlKCZqb2ItPnN5bmMsIE5VTEwpKTsKIAorCXIgPSBhbWRncHVfcmluZ19wcmlvcml0eV9nZXQo am9iLT5yaW5nLAorCQkJCSAgICAgYW1kX3NjaGVkX2dldF9qb2JfcHJpb3JpdHkoJmpvYi0+YmFz ZSkpOworCWlmIChyKQorCQlEUk1fRVJST1IoIkZhaWxlZCB0byBzZXQgam9iIHByaW9yaXR5ICgl ZClcbiIsIHIpOworCiAJdHJhY2VfYW1kZ3B1X3NjaGVkX3J1bl9qb2Ioam9iKTsKIAlyID0gYW1k Z3B1X2liX3NjaGVkdWxlKGpvYi0+cmluZywgam9iLT5udW1faWJzLCBqb2ItPmlicywgam9iLCAm ZmVuY2UpOwogCWlmIChyKQogCQlEUk1fRVJST1IoIkVycm9yIHNjaGVkdWxpbmcgSUJzICglZClc biIsIHIpOwogCiAJLyogaWYgZ3B1IHJlc2V0LCBodyBmZW5jZSB3aWxsIGJlIHJlcGxhY2VkIGhl cmUgKi8KIAlkbWFfZmVuY2VfcHV0KGpvYi0+ZmVuY2UpOwogCWpvYi0+ZmVuY2UgPSBkbWFfZmVu Y2VfZ2V0KGZlbmNlKTsKKwogCWFtZGdwdV9qb2JfZnJlZV9yZXNvdXJjZXMoam9iKTsKIAlyZXR1 cm4gZmVuY2U7CiB9CiAKIGNvbnN0IHN0cnVjdCBhbWRfc2NoZWRfYmFja2VuZF9vcHMgYW1kZ3B1 X3NjaGVkX29wcyA9IHsKIAkuZGVwZW5kZW5jeSA9IGFtZGdwdV9qb2JfZGVwZW5kZW5jeSwKIAku cnVuX2pvYiA9IGFtZGdwdV9qb2JfcnVuLAogCS50aW1lZG91dF9qb2IgPSBhbWRncHVfam9iX3Rp bWVkb3V0LAogCS5mcmVlX2pvYiA9IGFtZGdwdV9qb2JfZnJlZV9jYgogfTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5jCmluZGV4IDJiNDUyYjAuLmIxYWY5NTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwpAQCAtMTkzLDM1ICsxOTMsMTA2 IEBAIHZvaWQgYW1kZ3B1X3JpbmdfY29tbWl0KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKICAq Lwogdm9pZCBhbWRncHVfcmluZ191bmRvKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKIHsKIAly aW5nLT53cHRyID0gcmluZy0+d3B0cl9vbGQ7CiAKIAlpZiAocmluZy0+ZnVuY3MtPmVuZF91c2Up CiAJCXJpbmctPmZ1bmNzLT5lbmRfdXNlKHJpbmcpOwogfQogCiAvKioKKyAqIGFtZGdwdV9yaW5n X3ByaW9yaXR5X3B1dCAtIHJlc3RvcmUgYSByaW5nJ3MgcHJpb3JpdHkKKyAqCisgKiBAcmluZzog YW1kZ3B1X3Jpbmcgc3RydWN0dXJlIGhvbGRpbmcgdGhlIGluZm9ybWF0aW9uCisgKiBAcHJpb3Jp dHk6IHRhcmdldCBwcmlvcml0eQorICoKKyAqIFJlbGVhc2UgYSByZXF1ZXN0IGZvciBleGVjdXRp bmcgYXQgQHByaW9yaXR5CisgKi8KK3ZvaWQgYW1kZ3B1X3JpbmdfcHJpb3JpdHlfcHV0KHN0cnVj dCBhbWRncHVfcmluZyAqcmluZywKKwkJCSAgICAgIGVudW0gYW1kX3NjaGVkX3ByaW9yaXR5IHBy aW9yaXR5KQoreworCWludCBpOworCisJaWYgKCFyaW5nLT5mdW5jcy0+c2V0X3ByaW9yaXR5KQor CQlyZXR1cm47CisKKwlpZiAoYXRvbWljX2RlY19yZXR1cm4oJnJpbmctPm51bV9qb2JzW3ByaW9y aXR5XSkgPiAwKQorCQlyZXR1cm47CisKKwkvKiBubyBuZWVkIHRvIHJlc3RvcmUgaWYgdGhlIGpv YiBpcyBhbHJlYWR5IGF0IHRoZSBsb3dlc3QgcHJpb3JpdHkgKi8KKwlpZiAocHJpb3JpdHkgPT0g QU1EX1NDSEVEX1BSSU9SSVRZX05PUk1BTCkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrKCZyaW5n LT5wcmlvcml0eV9sb2NrKTsKKwkvKiBzb21ldGhpbmcgaGlnaGVyIHByaW8gaXMgZXhlY3V0aW5n LCBubyBuZWVkIHRvIGRlY2F5ICovCisJaWYgKHJpbmctPnByaW9yaXR5ID4gcHJpb3JpdHkpCisJ CWdvdG8gb3V0X3VubG9jazsKKworCS8qIGRlY2F5IHByaW9yaXR5IHRvIHRoZSBuZXh0IGxldmVs IHdpdGggYSBqb2IgYXZhaWxhYmxlICovCisJZm9yIChpID0gcHJpb3JpdHk7IGkgPj0gQU1EX1ND SEVEX1BSSU9SSVRZX01JTjsgaS0tKSB7CisJCWlmIChpID09IEFNRF9TQ0hFRF9QUklPUklUWV9O T1JNQUwKKwkJCQl8fCBhdG9taWNfcmVhZCgmcmluZy0+bnVtX2pvYnNbaV0pKSB7CisJCQlyaW5n LT5wcmlvcml0eSA9IGk7CisJCQlyaW5nLT5mdW5jcy0+c2V0X3ByaW9yaXR5KHJpbmcsIGkpOwor CQkJYnJlYWs7CisJCX0KKwl9CisKK291dF91bmxvY2s6CisJc3Bpbl91bmxvY2soJnJpbmctPnBy aW9yaXR5X2xvY2spOworfQorCisvKioKKyAqIGFtZGdwdV9yaW5nX3ByaW9yaXR5X2dldCAtIGNo YW5nZSB0aGUgcmluZydzIHByaW9yaXR5CisgKgorICogQHJpbmc6IGFtZGdwdV9yaW5nIHN0cnVj dHVyZSBob2xkaW5nIHRoZSBpbmZvcm1hdGlvbgorICogQHByaW9yaXR5OiB0YXJnZXQgcHJpb3Jp dHkKKyAqCisgKiBSZXF1ZXN0IGEgcmluZydzIHByaW9yaXR5IHRvIGJlIHJhaXNlZCB0byBAcHJp b3JpdHkgKHJlZmNvdW50ZWQpLgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG90aGVy d2lzZQorICovCitpbnQgYW1kZ3B1X3JpbmdfcHJpb3JpdHlfZ2V0KHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZywKKwkJCSAgICAgZW51bSBhbWRfc2NoZWRfcHJpb3JpdHkgcHJpb3JpdHkpCit7CisJ aWYgKCFyaW5nLT5mdW5jcy0+c2V0X3ByaW9yaXR5KQorCQlyZXR1cm4gMDsKKworCWF0b21pY19p bmMoJnJpbmctPm51bV9qb2JzW3ByaW9yaXR5XSk7CisKKwlzcGluX2xvY2soJnJpbmctPnByaW9y aXR5X2xvY2spOworCWlmIChwcmlvcml0eSA8PSByaW5nLT5wcmlvcml0eSkKKwkJZ290byBvdXRf dW5sb2NrOworCisJcmluZy0+cHJpb3JpdHkgPSBwcmlvcml0eTsKKwlyaW5nLT5mdW5jcy0+c2V0 X3ByaW9yaXR5KHJpbmcsIHByaW9yaXR5KTsKKworb3V0X3VubG9jazoKKwlzcGluX3VubG9jaygm cmluZy0+cHJpb3JpdHlfbG9jayk7CisJcmV0dXJuIDA7Cit9CisKKy8qKgogICogYW1kZ3B1X3Jp bmdfaW5pdCAtIGluaXQgZHJpdmVyIHJpbmcgc3RydWN0LgogICoKICAqIEBhZGV2OiBhbWRncHVf ZGV2aWNlIHBvaW50ZXIKICAqIEByaW5nOiBhbWRncHVfcmluZyBzdHJ1Y3R1cmUgaG9sZGluZyBy aW5nIGluZm9ybWF0aW9uCiAgKiBAbWF4X25kdzogbWF4aW11bSBudW1iZXIgb2YgZHcgZm9yIHJp bmcgYWxsb2MKICAqIEBub3A6IG5vcCBwYWNrZXQgZm9yIHRoaXMgcmluZwogICoKICAqIEluaXRp YWxpemUgdGhlIGRyaXZlciBpbmZvcm1hdGlvbiBmb3IgdGhlIHNlbGVjdGVkIHJpbmcgKGFsbCBh c2ljcykuCiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJyb3Igb24gZmFpbHVyZS4KICAqLwog aW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBh bWRncHVfcmluZyAqcmluZywKIAkJICAgICB1bnNpZ25lZCBtYXhfZHcsIHN0cnVjdCBhbWRncHVf aXJxX3NyYyAqaXJxX3NyYywKIAkJICAgICB1bnNpZ25lZCBpcnFfdHlwZSkKIHsKLQlpbnQgcjsK KwlpbnQgciwgaTsKIAogCWlmIChyaW5nLT5hZGV2ID09IE5VTEwpIHsKIAkJaWYgKGFkZXYtPm51 bV9yaW5ncyA+PSBBTURHUFVfTUFYX1JJTkdTKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJcmlu Zy0+YWRldiA9IGFkZXY7CiAJCXJpbmctPmlkeCA9IGFkZXYtPm51bV9yaW5ncysrOwogCQlhZGV2 LT5yaW5nc1tyaW5nLT5pZHhdID0gcmluZzsKIAkJciA9IGFtZGdwdV9mZW5jZV9kcml2ZXJfaW5p dF9yaW5nKHJpbmcsCiAJCQlhbWRncHVfc2NoZWRfaHdfc3VibWlzc2lvbik7CkBAIC0yOTMsMjMg KzM2NCwyOCBAQCBpbnQgYW1kZ3B1X3JpbmdfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAogCQkJCQkgICAgJnJpbmctPmdwdV9hZGRyLAog CQkJCQkgICAgKHZvaWQgKiopJnJpbmctPnJpbmcpOwogCQlpZiAocikgewogCQkJZGV2X2Vycihh ZGV2LT5kZXYsICIoJWQpIHJpbmcgY3JlYXRlIGZhaWxlZFxuIiwgcik7CiAJCQlyZXR1cm4gcjsK IAkJfQogCQlhbWRncHVfcmluZ19jbGVhcl9yaW5nKHJpbmcpOwogCX0KIAogCXJpbmctPm1heF9k dyA9IG1heF9kdzsKKwlyaW5nLT5wcmlvcml0eSA9IEFNRF9TQ0hFRF9QUklPUklUWV9OT1JNQUw7 CisJc3Bpbl9sb2NrX2luaXQoJnJpbmctPnByaW9yaXR5X2xvY2spOwogCUlOSVRfTElTVF9IRUFE KCZyaW5nLT5scnVfbGlzdCk7CiAJYW1kZ3B1X3JpbmdfbHJ1X3RvdWNoKGFkZXYsIHJpbmcpOwog CisJZm9yIChpID0gMDsgaSA8IEFNRF9TQ0hFRF9QUklPUklUWV9NQVg7ICsraSkKKwkJYXRvbWlj X3NldCgmcmluZy0+bnVtX2pvYnNbaV0sIDApOworCiAJaWYgKGFtZGdwdV9kZWJ1Z2ZzX3Jpbmdf aW5pdChhZGV2LCByaW5nKSkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWdpc3RlciBkZWJ1 Z2ZzIGZpbGUgZm9yIHJpbmdzICFcbiIpOwogCX0KIAlyZXR1cm4gMDsKIH0KIAogLyoqCiAgKiBh bWRncHVfcmluZ19maW5pIC0gdGVhciBkb3duIHRoZSBkcml2ZXIgcmluZyBzdHJ1Y3QuCiAgKgog ICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yaW5nLmgKaW5kZXggNDFhYjc2Ny4uZThiYTcwOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCkBAIC0xNywyMCArMTcsMjEgQEAKICAqIFRIRSBDT1BZ UklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUgogICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICAqIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqCiAgKiBBdXRob3JzOiBDaHJpc3RpYW4gS8O2bmlnCiAg Ki8KICNpZm5kZWYgX19BTURHUFVfUklOR19IX18KICNkZWZpbmUgX19BTURHUFVfUklOR19IX18K IAorI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+CiAjaW5jbHVkZSAiZ3B1X3NjaGVkdWxlci5o IgogCiAvKiBtYXggbnVtYmVyIG9mIHJpbmdzICovCiAjZGVmaW5lIEFNREdQVV9NQVhfUklOR1MJ CTE4CiAjZGVmaW5lIEFNREdQVV9NQVhfR0ZYX1JJTkdTCQkxCiAjZGVmaW5lIEFNREdQVV9NQVhf Q09NUFVURV9SSU5HUwk4CiAjZGVmaW5lIEFNREdQVV9NQVhfVkNFX1JJTkdTCQkzCiAjZGVmaW5l IEFNREdQVV9NQVhfVVZEX0VOQ19SSU5HUwkyCiAKIC8qIHNvbWUgc3BlY2lhbCB2YWx1ZXMgZm9y IHRoZSBvd25lciBmaWVsZCAqLwpAQCAtNDcsMjAgKzQ4LDIxIEBAIGVudW0gYW1kZ3B1X3Jpbmdf dHlwZSB7CiAJQU1ER1BVX1JJTkdfVFlQRV9VVkQsCiAJQU1ER1BVX1JJTkdfVFlQRV9WQ0UsCiAJ QU1ER1BVX1JJTkdfVFlQRV9LSVEsCiAJQU1ER1BVX1JJTkdfVFlQRV9VVkRfRU5DCiB9OwogCiBz dHJ1Y3QgYW1kZ3B1X2RldmljZTsKIHN0cnVjdCBhbWRncHVfcmluZzsKIHN0cnVjdCBhbWRncHVf aWI7CiBzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlcjsKK3N0cnVjdCBhbWRncHVfam9iOwogCiAvKgog ICogRmVuY2VzLgogICovCiBzdHJ1Y3QgYW1kZ3B1X2ZlbmNlX2RyaXZlciB7CiAJdWludDY0X3QJ CQlncHVfYWRkcjsKIAl2b2xhdGlsZSB1aW50MzJfdAkJKmNwdV9hZGRyOwogCS8qIHN5bmNfc2Vx IGlzIHByb3RlY3RlZCBieSByaW5nIGVtaXNzaW9uIGxvY2sgKi8KIAl1aW50MzJfdAkJCXN5bmNf c2VxOwogCWF0b21pY190CQkJbGFzdF9zZXE7CkBAIC0xMzQsMjAgKzEzNiwyMyBAQCBzdHJ1Y3Qg YW1kZ3B1X3JpbmdfZnVuY3MgewogCXZvaWQgKCpwYWRfaWIpKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgc3RydWN0IGFtZGdwdV9pYiAqaWIpOwogCXVuc2lnbmVkICgqaW5pdF9jb25kX2V4ZWMp KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7CiAJdm9pZCAoKnBhdGNoX2NvbmRfZXhlYykoc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1bnNpZ25lZCBvZmZzZXQpOwogCS8qIG5vdGUgdXNhZ2Ug Zm9yIGNsb2NrIGFuZCBwb3dlciBnYXRpbmcgKi8KIAl2b2lkICgqYmVnaW5fdXNlKShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpOwogCXZvaWQgKCplbmRfdXNlKShzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcpOwogCXZvaWQgKCplbWl0X3N3aXRjaF9idWZmZXIpIChzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcpOwogCXZvaWQgKCplbWl0X2NudHhjbnRsKSAoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n LCB1aW50MzJfdCBmbGFncyk7CiAJdm9pZCAoKmVtaXRfcnJlZykoc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCB1aW50MzJfdCByZWcpOwogCXZvaWQgKCplbWl0X3dyZWcpKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOworCS8qIHByaW9yaXR5IGZ1 bmN0aW9ucyAqLworCXZvaWQgKCpzZXRfcHJpb3JpdHkpIChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsCisJCQkgICAgICBlbnVtIGFtZF9zY2hlZF9wcmlvcml0eSBwcmlvcml0eSk7CiB9OwogCiBz dHJ1Y3QgYW1kZ3B1X3JpbmcgewogCXN0cnVjdCBhbWRncHVfZGV2aWNlCQkqYWRldjsKIAljb25z dCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MJKmZ1bmNzOwogCXN0cnVjdCBhbWRncHVfZmVuY2Vf ZHJpdmVyCWZlbmNlX2RydjsKIAlzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIJc2NoZWQ7CiAJc3Ry dWN0IGxpc3RfaGVhZAkJbHJ1X2xpc3Q7CiAKIAlzdHJ1Y3QgYW1kZ3B1X2JvCSpyaW5nX29iajsK QEAgLTE3MiwzMiArMTc3LDQyIEBAIHN0cnVjdCBhbWRncHVfcmluZyB7CiAJdWludDY0X3QgICAg ICAgICAgICAgICAgZW9wX2dwdV9hZGRyOwogCXUzMgkJCWRvb3JiZWxsX2luZGV4OwogCWJvb2wJ CQl1c2VfZG9vcmJlbGw7CiAJdW5zaWduZWQJCXdwdHJfb2ZmczsKIAl1bnNpZ25lZAkJZmVuY2Vf b2ZmczsKIAl1aW50NjRfdAkJY3VycmVudF9jdHg7CiAJY2hhcgkJCW5hbWVbMTZdOwogCXVuc2ln bmVkCQljb25kX2V4ZV9vZmZzOwogCXU2NAkJCWNvbmRfZXhlX2dwdV9hZGRyOwogCXZvbGF0aWxl IHUzMgkJKmNvbmRfZXhlX2NwdV9hZGRyOworCisJYXRvbWljX3QJCW51bV9qb2JzW0FNRF9TQ0hF RF9QUklPUklUWV9NQVhdOworCXNwaW5sb2NrX3QJCXByaW9yaXR5X2xvY2s7CisJLyogcHJvdGVj dGVkIGJ5IHByaW9yaXR5X2xvY2sgKi8KKwlpbnQJCQlwcmlvcml0eTsKKwogI2lmIGRlZmluZWQo Q09ORklHX0RFQlVHX0ZTKQogCXN0cnVjdCBkZW50cnkgKmVudDsKICNlbmRpZgogfTsKIAogaW50 IGFtZGdwdV9yaW5nX2lzX3ZhbGlkX2luZGV4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJICAgICAgIGludCBod19pcCwgaW50IHJpbmcpOwogaW50IGFtZGdwdV9yaW5nX2FsbG9jKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgbmR3KTsKIHZvaWQgYW1kZ3B1X3Jpbmdf aW5zZXJ0X25vcChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGNvdW50KTsKIHZv aWQgYW1kZ3B1X3JpbmdfZ2VuZXJpY19wYWRfaWIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBz dHJ1Y3QgYW1kZ3B1X2liICppYik7CiB2b2lkIGFtZGdwdV9yaW5nX2NvbW1pdChzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcpOwogdm9pZCBhbWRncHVfcmluZ191bmRvKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZyk7CitpbnQgYW1kZ3B1X3JpbmdfcHJpb3JpdHlfZ2V0KHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZywKKwkJCSAgICAgZW51bSBhbWRfc2NoZWRfcHJpb3JpdHkgcHJpb3JpdHkpOwordm9p ZCBhbWRncHVfcmluZ19wcmlvcml0eV9wdXQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAorCQkJ ICAgICAgZW51bSBhbWRfc2NoZWRfcHJpb3JpdHkgcHJpb3JpdHkpOwogaW50IGFtZGdwdV9yaW5n X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZywKIAkJICAgICB1bnNpZ25lZCByaW5nX3NpemUsIHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqaXJx X3NyYywKIAkJICAgICB1bnNpZ25lZCBpcnFfdHlwZSk7CiB2b2lkIGFtZGdwdV9yaW5nX2Zpbmko c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKIGludCBhbWRncHVfcmluZ19scnVfZ2V0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgaHdfaXAsCiAJCQlzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KipyaW5nKTsKIHZvaWQgYW1kZ3B1X3JpbmdfbHJ1X3RvdWNoKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwogc3RhdGljIGlubGluZSB2b2lkIGFt ZGdwdV9yaW5nX2NsZWFyX3Jpbmcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQogewogCWludCBp ID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyL2dwdV9zY2hl ZHVsZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuaApp bmRleCBlMjY2ZTFlLi5hMzNmNmVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Nj aGVkdWxlci9ncHVfc2NoZWR1bGVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVs ZXIvZ3B1X3NjaGVkdWxlci5oCkBAIC0xNTIsMTEgKzE1MiwxOCBAQCB2b2lkIGFtZF9zY2hlZF9m ZW5jZV9zbGFiX2Zpbmkodm9pZCk7CiBzdHJ1Y3QgYW1kX3NjaGVkX2ZlbmNlICphbWRfc2NoZWRf ZmVuY2VfY3JlYXRlKAogCXN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICpzX2VudGl0eSwgdm9pZCAq b3duZXIpOwogdm9pZCBhbWRfc2NoZWRfZmVuY2Vfc2NoZWR1bGVkKHN0cnVjdCBhbWRfc2NoZWRf ZmVuY2UgKmZlbmNlKTsKIHZvaWQgYW1kX3NjaGVkX2ZlbmNlX2ZpbmlzaGVkKHN0cnVjdCBhbWRf c2NoZWRfZmVuY2UgKmZlbmNlKTsKIGludCBhbWRfc2NoZWRfam9iX2luaXQoc3RydWN0IGFtZF9z Y2hlZF9qb2IgKmpvYiwKIAkJICAgICAgIHN0cnVjdCBhbWRfZ3B1X3NjaGVkdWxlciAqc2NoZWQs CiAJCSAgICAgICBzdHJ1Y3QgYW1kX3NjaGVkX2VudGl0eSAqZW50aXR5LAogCQkgICAgICAgdm9p ZCAqb3duZXIpOwogdm9pZCBhbWRfc2NoZWRfaHdfam9iX3Jlc2V0KHN0cnVjdCBhbWRfZ3B1X3Nj aGVkdWxlciAqc2NoZWQpOwogdm9pZCBhbWRfc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdCBhbWRf Z3B1X3NjaGVkdWxlciAqc2NoZWQpOworCitzdGF0aWMgaW5saW5lIGVudW0gYW1kX3NjaGVkX3By aW9yaXR5CithbWRfc2NoZWRfZ2V0X2pvYl9wcmlvcml0eShzdHJ1Y3QgYW1kX3NjaGVkX2pvYiAq am9iKQoreworCXJldHVybiAoam9iLT5zX2VudGl0eS0+cnEgLSBqb2ItPnNjaGVkLT5zY2hlZF9y cSk7Cit9CisKICNlbmRpZgotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo=