From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: [PATCH 1/2] drm/ast: Support reading configuration values Date: Thu, 16 Feb 2017 20:09:00 +1100 Message-ID: <1487236140.23576.66.camel@kernel.crashing.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4161C6EA76 for ; Thu, 16 Feb 2017 09:42:39 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: airlied@redhat.com, eich@suse.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogUnVzc2VsbCBDdXJyZXkgPHJ1c2N1ckBydXNzZWxsLmNjPgoKVGhlIGFzdCBkcml2ZXIg Y29uZmlndXJlcyBhIHdpbmRvdyB0byBlbmFibGUgYWNjZXNzIGludG8gQk1DIG1lbW9yeSBzcGFj ZQppbiBvcmRlciB0byByZWFkIHNvbWUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuICBJZiB0aGlz IHdpbmRvdyBpcwpkaXNhYmxlZCwgd2hpY2ggaXQgY2FuIGJlIGZyb20gdGhlIEJNQyBzaWRlLCB0 aGUgYXN0IGRyaXZlciBjYW4ndApmdW5jdGlvbi4gIENsb3NpbmcgdGhpcyB3aW5kb3cgaXMgYSBu ZWNlc3NpdHkgZm9yIHNlY3VyaXR5IGlmIGEgbWFjaGluZSdzCmhvc3Qgc2lkZSBhbmQgQk1DIHNp ZGUgYXJlIGNvbnRyb2xsZWQgYnkgZGlmZmVyZW50IHBhcnRpZXM7IGkuZS4gYSBjbG91ZApwcm92 aWRlciBvZmZlcmluZyBtYWNoaW5lcyAiYmFyZSBtZXRhbCIuCgpBIHJlY2VudCBwYXRjaCBmcm9t IEFzcGVlZCB0cmllcyB0byBkZXRlY3Qgd2hldGhlciB0aGF0IHdpbmRvdyBpcwplbmFibGVkIGFu ZCB1c2VzIGRlZmF1bHQgdmFsdWVzIGlmIG5vdC4gVW5mb3J0dW5hdGVseSB0aGlzIHdvbid0IHdv cmsKb24gc3lzdGVtcyBzdWNoIGFzIFBPV0VSIG1hY2hpbmVzIHRoYXQgaGF2ZSBzdHJvbmcgUENJ ZSBlcnJvciBoYW5kbGluZwphcyB0aGUgYXR0ZW1wdCBhdCBkZXRlY3Rpb24gd2lsbCBjYXVzZSBh IFBDSWUgYWJvcnQgaWYgdGhlIHdpbmRvdyBpcwpjbG9zZWQuCgpUbyB3b3JrIGFyb3VuZCB0aGlz LCBlbmFibGUgcmVhZGluZyB0aGVzZSBjb25maWd1cmF0aW9uIHZhbHVlcyBmcm9tIHRoZQpkZXZp Y2UgdHJlZSBpbnN0ZWFkIG9mIHRocm91Z2ggdGhlIHdpbmRvdyBpbnRvIEJNQyBtZW1vcnkgaWYg dGhlCmNvcnJlc3BvbmRpbmcgRFQgcHJvcGVydGllcyBhcmUgYXZhaWxhYmxlLiBJZiBub3QsIHRo ZSBkcml2ZXIgZGVmYXVsdHMKdG8gdGhlIGV4aXN0aW5nIHRlc3Qgd2hpY2ggaSBjbGVhbmVkIHVw IGEgbGl0dGxlIGJpdC4KClNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwgQ3VycmV5IDxydXNjdXJAcnVz c2VsbC5jYz4KU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVuaEBrZXJu ZWwuY3Jhc2hpbmcub3JnPgotLQp2Mi4gW0JlbkhdCiAgICAtIFJld29ya2VkIG9uIHRvcCBvZiBB c3BlZWQgUDJBIHBhdGNoCiAgICAtIENsZWFudXAgb3ZlcmFsbCBkZXRlY3Rpb24gdmlhIGEgImNv bmZpZ19tb2RlIiBhbmQgbG9nIHRoZQogICAgICBzZWxlY3RlZCBtb2RlIGZvciBkaWFnbm9zdGlj cyBwdXJwb3NlcwogICAgLSBBZGQgYSBwcm9wZXJ0eSBmb3IgdGhlIFNDVSBzdHJhcHMKLS0tCiBk cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X21haW4uYyB8IDIwOCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIHwgICA3ICstCiAzIGZpbGVzIGNo YW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry di5oCmluZGV4IDdhYmRhOTQuLjNiZWRjZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oCkBAIC0xMTMs NyArMTEzLDExIEBAIHN0cnVjdCBhc3RfcHJpdmF0ZSB7CiAJc3RydWN0IHR0bV9ib19rbWFwX29i aiBjYWNoZV9rbWFwOwogCWludCBuZXh0X2N1cnNvcjsKIAlib29sIHN1cHBvcnRfd2lkZV9zY3Jl ZW47Ci0JYm9vbCBEaXNhYmxlUDJBOworCWVudW0geworCQlhc3RfdXNlX3AyYSwKKwkJYXN0X3Vz ZV9kdCwKKwkJYXN0X3VzZV9kZWZhdWx0cworCX0gY29uZmlnX21vZGU7CiAKIAllbnVtIGFzdF90 eF9jaGlwIHR4X2NoaXBfdHlwZTsKIAl1OCBkcDUwMV9tYXhjbGs7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWlu LmMKaW5kZXggNTMzZTc2Mi4uZDQyYTRmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfbWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwpAQCAtNjUs MTAgKzY1LDQzIEBAIHVpbnQ4X3QgYXN0X2dldF9pbmRleF9yZWdfbWFzayhzdHJ1Y3QgYXN0X3By aXZhdGUgKmFzdCwKIAogc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQogeworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBk ZXYtPnBkZXYtPmRldi5vZl9ub2RlOwogCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKLQl1aW50MzJfdCBkYXRhLCBqcmVnOworCXVpbnQzMl90IGRhdGEsIGpyZWcs IHNjdV9yZXY7CiAJYXN0X29wZW5fa2V5KGFzdCk7CiAKKworCS8qIENoZWNrIGlmIHdlIGhhdmUg ZGV2aWNlLXRyZWUgcHJvcGVydGllcyAqLworCWlmIChucCAmJiAhb2ZfcHJvcGVydHlfcmVhZF91 MzIobnAsICJhc3Qsc2N1LXJldmlzaW9uLWlkIiwgJnNjdV9yZXYpKSB7CisJCS8qIFdlIGRvLCBk aXNhYmxlIFAyQSBhY2Nlc3MgKi8KKwkJYXN0LT5jb25maWdfbW9kZSA9IGFzdF91c2VfZHQ7CisJ CURSTV9JTkZPKCJVc2luZyBkZXZpY2UtdHJlZSBmb3IgY29uZmlndXJhdGlvblxuIik7CisJfSBl bHNlIHsKKwkJLyoKKwkJICogQ2hlY2sgaWYgUDJBIGFjY2VzcyB3b3Jrcy4gVGhpcyB3aWxsIHRy aWdnZXIgYSBQQ0llIGFib3J0CisJCSAqIGlmIGl0IGRvZXNuJ3Qgc28gaXQncyBub3QgcmVjb21t ZW5kZWQgb24gcGxhdGZvcm1zIHdoZXJlCisJCSAqIHRoaXMgaXMgYSBmYXRhbCBlcnJvci4gVGhv c2Ugc2hvdWxkIHVzZSB0aGUgZGV2aWNlLXRyZWUKKwkJICogb3IgQXNwZWVkIHNob3VsZCBjb21l IHVwIHdpdGggYSBkaWZmZXJlbnQgbWVjaGFuaXNtLgorCQkgKi8KKwkJZGF0YSA9IGFzdF9yZWFk MzIoYXN0LCAweGYwMDQpOworCQlpZiAoZGF0YSA9PSAweEZGRkZGRkZGKSB7CisJCQlhc3QtPmNv bmZpZ19tb2RlID0gYXN0X3VzZV9kZWZhdWx0czsKKwkJCXNjdV9yZXYgPSAweGZmZmZmZmZmOwor CQkJRFJNX0lORk8oIlAyQSBicmlkZ2UgZGlzYWJsZWQsIHVzaW5nIGRlZmF1bHQiCisJCQkJICIg Y29uZmlndXJhdGlvblxuIik7CisJCX0gZWxzZSB7CisJCQkvKiBQMkEgd29ya3MsIGdyYWIgc2ls aWNvbiByZXZpc2lvbiAqLworCQkJYXN0LT5jb25maWdfbW9kZSA9IGFzdF91c2VfcDJhOworCisJ CQlEUk1fSU5GTygiVXNpbmcgUDJBIGJyaWRnZSBmb3IgY29uZmlndXJhdGlvblxuIik7CisKKwkJ CS8qIFJlYWQgU0NVN2MgKHNpbGljb24gcmV2aXNpb24gcmVnaXN0ZXIpICovCisJCQlhc3Rfd3Jp dGUzMihhc3QsIDB4ZjAwNCwgMHgxZTZlMDAwMCk7CisJCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAw MCwgMHgxKTsKKwkJCXNjdV9yZXYgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMjA3Yyk7CisJCX0KKwl9 CisKIAlpZiAoZGV2LT5wZGV2LT5kZXZpY2UgPT0gUENJX0NISVBfQVNUMTE4MCkgewogCQlhc3Qt PmNoaXAgPSBBU1QxMTAwOwogCQlEUk1fSU5GTygiQVNUIDExODAgZGV0ZWN0ZWRcbiIpOwpAQCAt ODAsMTIgKzExMyw3IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGJvb2wgKm5lZWRfcG9zdCkKIAkJCWFzdC0+Y2hpcCA9IEFTVDIzMDA7CiAJCQlE Uk1fSU5GTygiQVNUIDIzMDAgZGV0ZWN0ZWRcbiIpOwogCQl9IGVsc2UgaWYgKGRldi0+cGRldi0+ cmV2aXNpb24gPj0gMHgxMCkgewotCQkJdWludDMyX3QgZGF0YTsKLQkJCWFzdF93cml0ZTMyKGFz dCwgMHhmMDA0LCAweDFlNmUwMDAwKTsKLQkJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEp OwotCi0JCQlkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4MTIwN2MpOwotCQkJc3dpdGNoIChkYXRh ICYgMHgwMzAwKSB7CisJCQlzd2l0Y2ggKHNjdV9yZXYgJiAweDAzMDApIHsKIAkJCWNhc2UgMHgw MjAwOgogCQkJCWFzdC0+Y2hpcCA9IEFTVDExMDA7CiAJCQkJRFJNX0lORk8oIkFTVCAxMTAwIGRl dGVjdGVkXG4iKTsKQEAgLTEyNCwxMiArMTUyLDYgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2No aXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQogCX0gZWxzZQogCQkq bmVlZF9wb3N0ID0gZmFsc2U7CiAKLQkvKiBDaGVjayBQMkEgQWNjZXNzICovCi0JYXN0LT5EaXNh YmxlUDJBID0gdHJ1ZTsKLQlkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4ZjAwNCk7Ci0JaWYgKGRh dGEgIT0gMHhGRkZGRkZGRikKLQkJYXN0LT5EaXNhYmxlUDJBID0gZmFsc2U7Ci0KIAkvKiBDaGVj ayBpZiB3ZSBzdXBwb3J0IHdpZGUgc2NyZWVuICovCiAJc3dpdGNoIChhc3QtPmNoaXApIHsKIAlj YXNlIEFTVDExODA6CkBAIC0xNDYsMTcgKzE2OCwxMiBAQCBzdGF0aWMgaW50IGFzdF9kZXRlY3Rf Y2hpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICpuZWVkX3Bvc3QpCiAJCQlhc3QtPnN1 cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVlOwogCQllbHNlIHsKIAkJCWFzdC0+c3VwcG9ydF93aWRl X3NjcmVlbiA9IGZhbHNlOwotCQkJaWYgKGFzdC0+RGlzYWJsZVAyQSA9PSBmYWxzZSkgewotCQkJ CS8qIFJlYWQgU0NVN2MgKHNpbGljb24gcmV2aXNpb24gcmVnaXN0ZXIpICovCi0JCQkJYXN0X3dy aXRlMzIoYXN0LCAweGYwMDQsIDB4MWU2ZTAwMDApOwotCQkJCWFzdF93cml0ZTMyKGFzdCwgMHhm MDAwLCAweDEpOwotCQkJCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMjA3Yyk7Ci0JCQkJZGF0 YSAmPSAweDMwMDsKLQkJCQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgJiYgZGF0YSA9PSAweDAp IC8qIGFzdDEzMDAgKi8KLQkJCQkJYXN0LT5zdXBwb3J0X3dpZGVfc2NyZWVuID0gdHJ1ZTsKLQkJ CQlpZiAoYXN0LT5jaGlwID09IEFTVDI0MDAgJiYgZGF0YSA9PSAweDEwMCkgLyogYXN0MTQwMCAq LwotCQkJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVlOwotCQkJfQorCQkJaWYgKGFz dC0+Y2hpcCA9PSBBU1QyMzAwICYmCisJCQkgICAgKHNjdV9yZXYgJiAweDMwMCkgPT0gMHgwKSAv KiBhc3QxMzAwICovCisJCQkJYXN0LT5zdXBwb3J0X3dpZGVfc2NyZWVuID0gdHJ1ZTsKKwkJCWlm IChhc3QtPmNoaXAgPT0gQVNUMjQwMCAmJgorCQkJICAgIChzY3VfcmV2ICYgMHgzMDApID09IDB4 MTAwKSAvKiBhc3QxNDAwICovCisJCQkJYXN0LT5zdXBwb3J0X3dpZGVfc2NyZWVuID0gdHJ1ZTsK IAkJfQogCQlicmVhazsKIAl9CkBAIC0yMjAsODUgKzIzNywxMDAgQEAgc3RhdGljIGludCBhc3Rf ZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQogCiBz dGF0aWMgaW50IGFzdF9nZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CisJ c3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+cGRldi0+ZGV2Lm9mX25vZGU7CiAJc3RydWN0 IGFzdF9wcml2YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRlOwotCXVpbnQzMl90IGRhdGEsIGRh dGEyOwotCXVpbnQzMl90IGRlbnVtLCBudW0sIGRpdiwgcmVmX3BsbDsKKwl1aW50MzJfdCBtY3Jf Y2ZnLCBtY3Jfc2N1X21wbGwsIG1jcl9zY3Vfc3RyYXA7CisJdWludDMyX3QgZGVudW0sIG51bSwg ZGl2LCByZWZfcGxsLCBkc2VsOwogCi0JaWYgKGFzdC0+RGlzYWJsZVAyQSkKLQl7CisJc3dpdGNo KGFzdC0+Y29uZmlnX21vZGUpIHsKKwljYXNlIGFzdF91c2VfZGVmYXVsdHM6CiAJCWFzdC0+ZHJh bV9idXNfd2lkdGggPSAxNjsKIAkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gxNjsKIAkJ YXN0LT5tY2xrID0gMzk2OwotCX0KLQllbHNlCi0JeworCQlyZXR1cm4gMDsKKwljYXNlIGFzdF91 c2VfZHQ6CisJCS8qCisJCSAqIElmIHNvbWUgcHJvcGVydGllcyBhcmUgbWlzc2luZywgdXNlIHJl YXNvbmFibGUKKwkJICogZGVmYXVsdHMgZm9yIEFTVDI0MDAKKwkJICovCisJCWlmIChvZl9wcm9w ZXJ0eV9yZWFkX3UzMihucCwgImFzdCxtY3ItY29uZmlndXJhdGlvbiIsICZtY3JfY2ZnKSkKKwkJ CW1jcl9jZmcgPSAweDAwMDAwNTc3OworCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJh c3QsYXN0LG1jci1zY3UtbXBsbCIsCisJCQkJCSAmbWNyX3NjdV9tcGxsKSkKKwkJCW1jcl9zY3Vf bXBsbCA9IDB4MDAwMDUwQzA7CisJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFzdCxh c3QsbWNyLXNjdS1zdHJhcCIsCisJCQkJCSAmbWNyX3NjdV9zdHJhcCkpCisJCQltY3Jfc2N1X3N0 cmFwID0gMDsKKwkJYnJlYWs7CisJY2FzZSBhc3RfdXNlX3AyYToKIAkJYXN0X3dyaXRlMzIoYXN0 LCAweGYwMDQsIDB4MWU2ZTAwMDApOwogCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAwMCwgMHgxKTsK LQkJZGF0YSA9IGFzdF9yZWFkMzIoYXN0LCAweDEwMDA0KTsKLQotCQlpZiAoZGF0YSAmIDB4NDAp Ci0JCQlhc3QtPmRyYW1fYnVzX3dpZHRoID0gMTY7Ci0JCWVsc2UKLQkJCWFzdC0+ZHJhbV9idXNf d2lkdGggPSAzMjsKKwkJbWNyX2NmZyA9IGFzdF9yZWFkMzIoYXN0LCAweDEwMDA0KTsKKwkJbWNy X3NjdV9tcGxsID0gYXN0X3JlYWQzMihhc3QsIDB4MTAxMjApOworCQltY3Jfc2N1X3N0cmFwID0g YXN0X3JlYWQzMihhc3QsIDB4MTAxNzApOworCQlicmVhazsKKwl9CiAKLQkJaWYgKGFzdC0+Y2hp cCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7Ci0JCQlzd2l0Y2ggKGRhdGEg JiAweDAzKSB7Ci0JCQljYXNlIDA6Ci0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJN eDE2OwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCWNhc2UgMToKLQkJCQlhc3QtPmRyYW1f dHlwZSA9IEFTVF9EUkFNXzFHeDE2OwotCQkJCWJyZWFrOwotCQkJY2FzZSAyOgotCQkJCWFzdC0+ ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIDM6Ci0JCQkJ YXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKLQkJCQlicmVhazsKLQkJCX0KLQkJfSBl bHNlIHsKLQkJCXN3aXRjaCAoZGF0YSAmIDB4MGMpIHsKLQkJCWNhc2UgMDoKLQkJCWNhc2UgNDoK LQkJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14MTY7Ci0JCQkJYnJlYWs7Ci0JCQlj YXNlIDg6Ci0JCQkJaWYgKGRhdGEgJiAweDQwKQotCQkJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9E UkFNXzFHeDE2OwotCQkJCWVsc2UKLQkJCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJN eDMyOwotCQkJCWJyZWFrOwotCQkJY2FzZSAweGM6Ci0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1Rf RFJBTV8xR3gzMjsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQorCWlmIChtY3JfY2ZnICYgMHg0MCkK KwkJYXN0LT5kcmFtX2J1c193aWR0aCA9IDE2OworCWVsc2UKKwkJYXN0LT5kcmFtX2J1c193aWR0 aCA9IDMyOwogCi0JCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDEyMCk7Ci0JCWRhdGEyID0g YXN0X3JlYWQzMihhc3QsIDB4MTAxNzApOwotCQlpZiAoZGF0YTIgJiAweDIwMDApCi0JCQlyZWZf cGxsID0gMTQzMTg7Ci0JCWVsc2UKLQkJCXJlZl9wbGwgPSAxMjAwMDsKLQotCQlkZW51bSA9IGRh dGEgJiAweDFmOwotCQludW0gPSAoZGF0YSAmIDB4M2ZlMCkgPj4gNTsKLQkJZGF0YSA9IChkYXRh ICYgMHhjMDAwKSA+PiAxNDsKLQkJc3dpdGNoIChkYXRhKSB7Ci0JCWNhc2UgMzoKLQkJCWRpdiA9 IDB4NDsKKwlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDAp IHsKKwkJc3dpdGNoIChtY3JfY2ZnICYgMHgwMykgeworCQljYXNlIDA6CisJCQlhc3QtPmRyYW1f dHlwZSA9IEFTVF9EUkFNXzUxMk14MTY7CiAJCQlicmVhazsKLQkJY2FzZSAyOgorCQlkZWZhdWx0 OgogCQljYXNlIDE6Ci0JCQlkaXYgPSAweDI7CisJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFN XzFHeDE2OwogCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlkaXYgPSAweDE7CisJCWNhc2UgMjoK KwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7CisJCQlicmVhazsKKwkJY2FzZSAz OgorCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKKwkJCWJyZWFrOworCQl9CisJ fSBlbHNlIHsKKwkJc3dpdGNoIChtY3JfY2ZnICYgMHgwYykgeworCQljYXNlIDA6CisJCWNhc2Ug NDoKKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fNTEyTXgxNjsKKwkJCWJyZWFrOworCQlj YXNlIDg6CisJCQlpZiAobWNyX2NmZyAmIDB4NDApCisJCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1Rf RFJBTV8xR3gxNjsKKwkJCWVsc2UKKwkJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14 MzI7CisJCQlicmVhazsKKwkJY2FzZSAweGM6CisJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFN XzFHeDMyOwogCQkJYnJlYWs7CiAJCX0KLQkJYXN0LT5tY2xrID0gcmVmX3BsbCAqIChudW0gKyAy KSAvIChkZW51bSArIDIpICogKGRpdiAqIDEwMDApOwogCX0KKworCWlmIChtY3Jfc2N1X3N0cmFw ICYgMHgyMDAwKQorCQlyZWZfcGxsID0gMTQzMTg7CisJZWxzZQorCQlyZWZfcGxsID0gMTIwMDA7 CisKKwlkZW51bSA9IG1jcl9zY3VfbXBsbCAmIDB4MWY7CisJbnVtID0gKG1jcl9zY3VfbXBsbCAm IDB4M2ZlMCkgPj4gNTsKKwlkc2VsID0gKG1jcl9zY3VfbXBsbCAmIDB4YzAwMCkgPj4gMTQ7CisJ c3dpdGNoIChkc2VsKSB7CisJY2FzZSAzOgorCQlkaXYgPSAweDQ7CisJCWJyZWFrOworCWNhc2Ug MjoKKwljYXNlIDE6CisJCWRpdiA9IDB4MjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGl2ID0g MHgxOworCQlicmVhazsKKwl9CisJYXN0LT5tY2xrID0gcmVmX3BsbCAqIChudW0gKyAyKSAvIChk ZW51bSArIDIpICogKGRpdiAqIDEwMDApOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9w b3N0LmMKaW5kZXggNTMzMWVlMS4uNzE5NzYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfcG9zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYwpAQCAt Mzc5LDE3ICszNzksMTQgQEAgdm9pZCBhc3RfcG9zdF9ncHUoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAlhc3Rfb3Blbl9rZXkoYXN0KTsKIAlhc3Rfc2V0X2RlZl9leHRfcmVnKGRldik7CiAKLQlp ZiAoYXN0LT5EaXNhYmxlUDJBID09IGZhbHNlKQotCXsKKwlpZiAoYXN0LT5jb25maWdfbW9kZSA9 PSBhc3RfdXNlX3AyYSkgewogCQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlw ID09IEFTVDI0MDApCiAJCQlhc3RfaW5pdF9kcmFtXzIzMDAoZGV2KTsKIAkJZWxzZQogCQkJYXN0 X2luaXRfZHJhbV9yZWcoZGV2KTsKIAogCQlhc3RfaW5pdF8zcmR0eChkZXYpOwotCX0KLQllbHNl Ci0JeworCX0gZWxzZSB7CiAJCWlmIChhc3QtPnR4X2NoaXBfdHlwZSAhPSBBU1RfVFhfTk9ORSkK IAkJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGEzLCAw eGNmLCAweDgwKTsJLyogRW5hYmxlIERWTyAqLwogCX0KCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK