From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.glisse@gmail.com Subject: [PATCH 14/18] drm/radeon: rip out the ib pool Date: Fri, 4 May 2012 18:43:55 -0400 Message-ID: <1336171439-7672-15-git-send-email-j.glisse@gmail.com> References: <1336171439-7672-1-git-send-email-j.glisse@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f177.google.com (mail-qc0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTP id E70A7A0D7B for ; Fri, 4 May 2012 15:44:34 -0700 (PDT) Received: by mail-qc0-f177.google.com with SMTP id u28so2491993qcs.36 for ; Fri, 04 May 2012 15:44:34 -0700 (PDT) In-Reply-To: <1336171439-7672-1-git-send-email-j.glisse@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: Jerome Glisse , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogSmVyb21lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgoKSXQgaXNuJ3QgbmVjZXNz YXJ5IGFueSBtb3JlIGFuZCB0aGUgc3ViYWxsb2NhdG9yIHNlZW1zIHRvIHBlcmZvcm0KZXZlbiBi ZXR0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxkZWF0aHNpbXBsZUB2b2Rh Zm9uZS5kZT4KU2lnbmVkLW9mZi1ieTogSmVyb21lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggICAgICAgICAgIHwgICAxNyAr LS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jICAgIHwgICAgMSAtCiBk cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nYXJ0LmMgICAgICB8ICAgMTIgKy0KIGRyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3JpbmcuYyAgICAgIHwgIDI0MSArKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc2VtYXBob3Jl LmMgfCAgICAyICstCiA1IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDIwMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaAppbmRleCA5MzdkYjAyLi4yNDIyMGQxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTYxNiw3ICs2MTYsNiBAQCB2b2lkIHJhZGVvbl9p cnFfa21zX3BmbGlwX2lycV9wdXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRj KTsKIAogc3RydWN0IHJhZGVvbl9pYiB7CiAJc3RydWN0IHJhZGVvbl9zYV9ibwkqc2FfYm87Ci0J dW5zaWduZWQJCWlkeDsKIAl1aW50MzJfdAkJbGVuZ3RoX2R3OwogCXVpbnQ2NF90CQlncHVfYWRk cjsKIAl1aW50MzJfdAkJKnB0cjsKQEAgLTYyNSwxOCArNjI0LDYgQEAgc3RydWN0IHJhZGVvbl9p YiB7CiAJYm9vbAkJCWlzX2NvbnN0X2liOwogfTsKIAotLyoKLSAqIGxvY2tpbmcgLQotICogbXV0 ZXggcHJvdGVjdHMgc2NoZWR1bGVkX2licywgcmVhZHksIGFsbG9jX2JtCi0gKi8KLXN0cnVjdCBy YWRlb25faWJfcG9vbCB7Ci0Jc3RydWN0IHJhZGVvbl9tdXRleAkJbXV0ZXg7Ci0Jc3RydWN0IHJh ZGVvbl9zYV9tYW5hZ2VyCXNhX21hbmFnZXI7Ci0Jc3RydWN0IHJhZGVvbl9pYgkJaWJzW1JBREVP Tl9JQl9QT09MX1NJWkVdOwotCWJvb2wJCQkJcmVhZHk7Ci0JdW5zaWduZWQJCQloZWFkX2lkOwot fTsKLQogc3RydWN0IHJhZGVvbl9yaW5nIHsKIAlzdHJ1Y3QgcmFkZW9uX2JvCSpyaW5nX29iajsK IAl2b2xhdGlsZSB1aW50MzJfdAkqcmluZzsKQEAgLTc3OCw3ICs3NjUsNiBAQCBzdHJ1Y3Qgc2lf cmxjIHsKIGludCByYWRlb25faWJfZ2V0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQg cmluZywKIAkJICBzdHJ1Y3QgcmFkZW9uX2liICoqaWIsIHVuc2lnbmVkIHNpemUpOwogdm9pZCBy YWRlb25faWJfZnJlZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9p YiAqKmliKTsKLWJvb2wgcmFkZW9uX2liX3RyeV9mcmVlKHN0cnVjdCByYWRlb25fZGV2aWNlICpy ZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICppYik7CiBpbnQgcmFkZW9uX2liX3NjaGVkdWxlKHN0cnVj dCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICppYik7CiBpbnQgcmFkZW9u X2liX3Bvb2xfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldik7CiB2b2lkIHJhZGVvbl9p Yl9wb29sX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpOwpAQCAtMTUwNCw3ICsxNDkw LDggQEAgc3RydWN0IHJhZGVvbl9kZXZpY2UgewogCXdhaXRfcXVldWVfaGVhZF90CQlmZW5jZV9x dWV1ZTsKIAlzdHJ1Y3QgbXV0ZXgJCQlyaW5nX2xvY2s7CiAJc3RydWN0IHJhZGVvbl9yaW5nCQly aW5nW1JBREVPTl9OVU1fUklOR1NdOwotCXN0cnVjdCByYWRlb25faWJfcG9vbAkJaWJfcG9vbDsK Kwlib29sCQkJCWliX3Bvb2xfcmVhZHk7CisJc3RydWN0IHJhZGVvbl9zYV9tYW5hZ2VyCXJpbmdf dG1wX2JvOwogCXN0cnVjdCByYWRlb25faXJxCQlpcnE7CiAJc3RydWN0IHJhZGVvbl9hc2ljCQkq YXNpYzsKIAlzdHJ1Y3QgcmFkZW9uX2dlbQkJZ2VtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9kZXZpY2UuYwppbmRleCA5ZTI4MDYwLi4zMjUzZThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9kZXZpY2UuYwpAQCAtNzI0LDcgKzcyNCw2IEBAIGludCByYWRlb25fZGV2aWNlX2lu aXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsCiAJLyogbXV0ZXggaW5pdGlhbGl6YXRpb24g YXJlIGFsbCBkb25lIGhlcmUgc28gd2UKIAkgKiBjYW4gcmVjYWxsIGZ1bmN0aW9uIHdpdGhvdXQg aGF2aW5nIGxvY2tpbmcgaXNzdWVzICovCiAJcmFkZW9uX211dGV4X2luaXQoJnJkZXYtPmNzX211 dGV4KTsKLQlyYWRlb25fbXV0ZXhfaW5pdCgmcmRldi0+aWJfcG9vbC5tdXRleCk7CiAJbXV0ZXhf aW5pdCgmcmRldi0+cmluZ19sb2NrKTsKIAltdXRleF9pbml0KCZyZGV2LT5kY19od19pMmNfbXV0 ZXgpOwogCWlmIChyZGV2LT5mYW1pbHkgPj0gQ0hJUF9SNjAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2FydC5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fZ2FydC5jCmluZGV4IDUzZGJhOGUuLjhlOWVmMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2dhcnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9nYXJ0LmMKQEAgLTQzMiw4ICs0MzIsOCBAQCByZXRyeV9pZDoKIAlyZGV2LT52bV9t YW5hZ2VyLnVzZV9iaXRtYXAgfD0gMSA8PCBpZDsKIAl2bS0+aWQgPSBpZDsKIAlsaXN0X2FkZF90 YWlsKCZ2bS0+bGlzdCwgJnJkZXYtPnZtX21hbmFnZXIubHJ1X3ZtKTsKLQlyZXR1cm4gcmFkZW9u X3ZtX2JvX3VwZGF0ZV9wdGUocmRldiwgdm0sIHJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlci5ibywK LQkJCQkgICAgICAgJnJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlci5iby0+dGJvLm1lbSk7CisJcmV0 dXJuIHJhZGVvbl92bV9ib191cGRhdGVfcHRlKHJkZXYsIHZtLCByZGV2LT5yaW5nX3RtcF9iby5i bywKKwkJCQkgICAgICAgJnJkZXYtPnJpbmdfdG1wX2JvLmJvLT50Ym8ubWVtKTsKIH0KIAogLyog b2JqZWN0IGhhdmUgdG8gYmUgcmVzZXJ2ZWQgKi8KQEAgLTYzMSw3ICs2MzEsNyBAQCBpbnQgcmFk ZW9uX3ZtX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25fdm0g KnZtKQogCS8qIG1hcCB0aGUgaWIgcG9vbCBidWZmZXIgYXQgMCBpbiB2aXJ0dWFsIGFkZHJlc3Mg c3BhY2UsIHNldAogCSAqIHJlYWQgb25seQogCSAqLwotCXIgPSByYWRlb25fdm1fYm9fYWRkKHJk ZXYsIHZtLCByZGV2LT5pYl9wb29sLnNhX21hbmFnZXIuYm8sIDAsCisJciA9IHJhZGVvbl92bV9i b19hZGQocmRldiwgdm0sIHJkZXYtPnJpbmdfdG1wX2JvLmJvLCAwLAogCQkJICAgICBSQURFT05f Vk1fUEFHRV9SRUFEQUJMRSB8IFJBREVPTl9WTV9QQUdFX1NOT09QRUQpOwogCXJldHVybiByOwog fQpAQCAtNjQ4LDEyICs2NDgsMTIgQEAgdm9pZCByYWRlb25fdm1fZmluaShzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl92bSAqdm0pCiAJcmFkZW9uX211dGV4X3VubG9j aygmcmRldi0+Y3NfbXV0ZXgpOwogCiAJLyogcmVtb3ZlIGFsbCBibyAqLwotCXIgPSByYWRlb25f Ym9fcmVzZXJ2ZShyZGV2LT5pYl9wb29sLnNhX21hbmFnZXIuYm8sIGZhbHNlKTsKKwlyID0gcmFk ZW9uX2JvX3Jlc2VydmUocmRldi0+cmluZ190bXBfYm8uYm8sIGZhbHNlKTsKIAlpZiAoIXIpIHsK LQkJYm9fdmEgPSByYWRlb25fYm9fdmEocmRldi0+aWJfcG9vbC5zYV9tYW5hZ2VyLmJvLCB2bSk7 CisJCWJvX3ZhID0gcmFkZW9uX2JvX3ZhKHJkZXYtPnJpbmdfdG1wX2JvLmJvLCB2bSk7CiAJCWxp c3RfZGVsX2luaXQoJmJvX3ZhLT5ib19saXN0KTsKIAkJbGlzdF9kZWxfaW5pdCgmYm9fdmEtPnZt X2xpc3QpOwotCQlyYWRlb25fYm9fdW5yZXNlcnZlKHJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlci5i byk7CisJCXJhZGVvbl9ib191bnJlc2VydmUocmRldi0+cmluZ190bXBfYm8uYm8pOwogCQlrZnJl ZShib192YSk7CiAJfQogCWlmICghbGlzdF9lbXB0eSgmdm0tPnZhKSkgewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fcmluZy5jCmluZGV4IDJlZWQyNTEuLmM3MGEzYjcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3JpbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9yaW5nLmMKQEAgLTI0LDYgKzI0LDcgQEAKICAqIEF1dGhvcnM6IERhdmUg QWlybGllCiAgKiAgICAgICAgICBBbGV4IERldWNoZXIKICAqICAgICAgICAgIEplcm9tZSBHbGlz c2UKKyAqICAgICAgICAgIENocmlzdGlhbiBLw7ZuaWcKICAqLwogI2luY2x1ZGUgPGxpbnV4L3Nl cV9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgpAQCAtMzMsOCArMzQsMTAgQEAKICNp bmNsdWRlICJyYWRlb24uaCIKICNpbmNsdWRlICJhdG9tLmgiCiAKLWludCByYWRlb25fZGVidWdm c19pYl9pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTsKLWludCByYWRlb25fZGVidWdm c19yaW5nX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25fcmlu ZyAqcmluZyk7CisvKgorICogSUIuCisgKi8KK2ludCByYWRlb25fZGVidWdmc19zYV9pbml0KHN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTsKIAogdTMyIHJhZGVvbl9nZXRfaWJfdmFsdWUoc3Ry dWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsIGludCBpZHgpCiB7CkBAIC02MSwxMDYgKzY0LDM3IEBA IHUzMiByYWRlb25fZ2V0X2liX3ZhbHVlKHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwLCBpbnQg aWR4KQogCXJldHVybiBpZHhfdmFsdWU7CiB9CiAKLXZvaWQgcmFkZW9uX3Jpbmdfd3JpdGUoc3Ry dWN0IHJhZGVvbl9yaW5nICpyaW5nLCB1aW50MzJfdCB2KQotewotI2lmIERSTV9ERUJVR19DT0RF Ci0JaWYgKHJpbmctPmNvdW50X2R3IDw9IDApIHsKLQkJRFJNX0VSUk9SKCJyYWRlb246IHdyaXR0 aW5nIG1vcmUgZHdvcmQgdG8gcmluZyB0aGFuIGV4cGVjdGVkICFcbiIpOwotCX0KLSNlbmRpZgot CXJpbmctPnJpbmdbcmluZy0+d3B0cisrXSA9IHY7Ci0JcmluZy0+d3B0ciAmPSByaW5nLT5wdHJf bWFzazsKLQlyaW5nLT5jb3VudF9kdy0tOwotCXJpbmctPnJpbmdfZnJlZV9kdy0tOwotfQotCi0v KgotICogSUIuCi0gKi8KLWJvb2wgcmFkZW9uX2liX3RyeV9mcmVlKHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICppYikKLXsKLQlib29sIGRvbmUgPSBmYWxzZTsK LQotCS8qIG9ubHkgZnJlZSBpYiB3aGljaCBoYXZlIGJlZW4gZW1pdGVkICovCi0JaWYgKGliLT5m ZW5jZSAmJiBpYi0+ZmVuY2UtPnNlcSA8IFJBREVPTl9GRU5DRV9OT1RFTUlURURfU0VRKSB7Ci0J CWlmIChyYWRlb25fZmVuY2Vfc2lnbmFsZWQoaWItPmZlbmNlKSkgewotCQkJcmFkZW9uX2ZlbmNl X3VucmVmKCZpYi0+ZmVuY2UpOwotCQkJcmFkZW9uX3NhX2JvX2ZyZWUocmRldiwgJmliLT5zYV9i bywgTlVMTCk7Ci0JCQlkb25lID0gdHJ1ZTsKLQkJfQotCX0KLQlyZXR1cm4gZG9uZTsKLX0KLQog aW50IHJhZGVvbl9pYl9nZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5nLAog CQkgIHN0cnVjdCByYWRlb25faWIgKippYiwgdW5zaWduZWQgc2l6ZSkKIHsKLQlzdHJ1Y3QgcmFk ZW9uX2ZlbmNlICpmZW5jZTsKLQl1bnNpZ25lZCBjcmV0cnkgPSAwOwotCWludCByID0gMCwgaSwg aWR4OwotCi0JKmliID0gTlVMTDsKLQkvKiBhbGlnbiBzaXplIG9uIDI1NiBieXRlcyAqLwotCXNp emUgPSBBTElHTihzaXplLCAyNTYpOwotCi0JciA9IHJhZGVvbl9mZW5jZV9jcmVhdGUocmRldiwg JmZlbmNlLCByaW5nKTsKLQlpZiAocikgewotCQlkZXZfZXJyKHJkZXYtPmRldiwgImZhaWxlZCB0 byBjcmVhdGUgZmVuY2UgZm9yIG5ldyBJQlxuIik7Ci0JCXJldHVybiByOwotCX0KKwlpbnQgcjsK IAotCXJhZGVvbl9tdXRleF9sb2NrKCZyZGV2LT5pYl9wb29sLm11dGV4KTsKLQlpZHggPSByZGV2 LT5pYl9wb29sLmhlYWRfaWQ7Ci1yZXRyeToKLQlpZiAoY3JldHJ5ID4gNSkgewotCQlkZXZfZXJy KHJkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgYW4gaWIgYWZ0ZXIgNSByZXRyeVxuIik7Ci0JCXJh ZGVvbl9tdXRleF91bmxvY2soJnJkZXYtPmliX3Bvb2wubXV0ZXgpOwotCQlyYWRlb25fZmVuY2Vf dW5yZWYoJmZlbmNlKTsKKwkqaWIgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFkZW9uX2liKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCppYiA9PSBOVUxMKSB7CiAJCXJldHVybiAtRU5PTUVNOwogCX0K LQljcmV0cnkrKzsKLQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX0lCX1BPT0xfU0laRTsgaSsrKSB7 Ci0JCXJhZGVvbl9pYl90cnlfZnJlZShyZGV2LCAmcmRldi0+aWJfcG9vbC5pYnNbaWR4XSk7Ci0J CWlmIChyZGV2LT5pYl9wb29sLmlic1tpZHhdLmZlbmNlID09IE5VTEwpIHsKLQkJCXIgPSByYWRl b25fc2FfYm9fbmV3KHJkZXYsICZyZGV2LT5pYl9wb29sLnNhX21hbmFnZXIsCi0JCQkJCSAgICAg JnJkZXYtPmliX3Bvb2wuaWJzW2lkeF0uc2FfYm8sCi0JCQkJCSAgICAgc2l6ZSwgMjU2LCBmYWxz ZSk7Ci0JCQlpZiAoIXIpIHsKLQkJCQkqaWIgPSAmcmRldi0+aWJfcG9vbC5pYnNbaWR4XTsKLQkJ CQkoKmliKS0+cHRyID0gcmFkZW9uX3NhX2JvX2NwdV9hZGRyKCgqaWIpLT5zYV9ibyk7Ci0JCQkJ KCppYiktPmdwdV9hZGRyID0gcmFkZW9uX3NhX2JvX2dwdV9hZGRyKCgqaWIpLT5zYV9ibyk7Ci0J CQkJKCppYiktPmZlbmNlID0gZmVuY2U7Ci0JCQkJKCppYiktPnZtX2lkID0gMDsKLQkJCQkoKmli KS0+aXNfY29uc3RfaWIgPSBmYWxzZTsKLQkJCQkvKiBpYiBhcmUgbW9zdCBsaWtlbHkgdG8gYmUg YWxsb2NhdGVkIGluIGEgcmluZyBmYXNoaW9uCi0JCQkJICogdGh1cyByZGV2LT5pYl9wb29sLmhl YWRfaWQgc2hvdWxkIGJlIHRoZSBpZCBvZiB0aGUKLQkJCQkgKiBvbGRlc3QgaWIKLQkJCQkgKi8K LQkJCQlyZGV2LT5pYl9wb29sLmhlYWRfaWQgPSAoMSArIGlkeCk7Ci0JCQkJcmRldi0+aWJfcG9v bC5oZWFkX2lkICY9IChSQURFT05fSUJfUE9PTF9TSVpFIC0gMSk7Ci0JCQkJcmFkZW9uX211dGV4 X3VubG9jaygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCX0K LQkJaWR4ID0gKGlkeCArIDEpICYgKFJBREVPTl9JQl9QT09MX1NJWkUgLSAxKTsKKwlyID0gcmFk ZW9uX3NhX2JvX25ldyhyZGV2LCAmcmRldi0+cmluZ190bXBfYm8sICYoKmliKS0+c2FfYm8sIHNp emUsIDI1NiwgdHJ1ZSk7CisJaWYgKHIpIHsKKwkJZGV2X2VycihyZGV2LT5kZXYsICJmYWlsZWQg dG8gZ2V0IGEgbmV3IElCICglZClcbiIsIHIpOworCQlrZnJlZSgqaWIpOworCQkqaWIgPSBOVUxM OworCQlyZXR1cm4gcjsKIAl9Ci0JLyogdGhpcyBzaG91bGQgYmUgcmFyZSBldmVudCwgaWUgYWxs IGliIHNjaGVkdWxlZCBub25lIHNpZ25hbGVkIHlldC4KLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwg UkFERU9OX0lCX1BPT0xfU0laRTsgaSsrKSB7Ci0JCXN0cnVjdCByYWRlb25fZmVuY2UgKmZlbmNl ID0gcmRldi0+aWJfcG9vbC5pYnNbaWR4XS5mZW5jZTsKLQkJaWYgKGZlbmNlICYmIGZlbmNlLT5z ZXEgPCBSQURFT05fRkVOQ0VfTk9URU1JVEVEX1NFUSkgewotCQkJciA9IHJhZGVvbl9mZW5jZV93 YWl0KGZlbmNlLCBmYWxzZSk7Ci0JCQlpZiAoIXIpIHsKLQkJCQlnb3RvIHJldHJ5OwotCQkJfQot CQkJLyogYW4gZXJyb3IgaGFwcGVuZWQgKi8KLQkJCWJyZWFrOwotCQl9Ci0JCWlkeCA9IChpZHgg KyAxKSAmIChSQURFT05fSUJfUE9PTF9TSVpFIC0gMSk7CisJciA9IHJhZGVvbl9mZW5jZV9jcmVh dGUocmRldiwgJigqaWIpLT5mZW5jZSwgcmluZyk7CisJaWYgKHIpIHsKKwkJZGV2X2VycihyZGV2 LT5kZXYsICJmYWlsZWQgdG8gY3JlYXRlIGZlbmNlIGZvciBuZXcgSUIgKCVkKVxuIiwgcik7CisJ CXJhZGVvbl9zYV9ib19mcmVlKHJkZXYsICYoKmliKS0+c2FfYm8sIE5VTEwpOworCQlrZnJlZSgq aWIpOworCQkqaWIgPSBOVUxMOworCQlyZXR1cm4gcjsKIAl9Ci0JcmFkZW9uX211dGV4X3VubG9j aygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JcmFkZW9uX2ZlbmNlX3VucmVmKCZmZW5jZSk7Ci0J cmV0dXJuIHI7CisKKwkoKmliKS0+cHRyID0gcmFkZW9uX3NhX2JvX2NwdV9hZGRyKCgqaWIpLT5z YV9ibyk7CisJKCppYiktPmdwdV9hZGRyID0gcmFkZW9uX3NhX2JvX2dwdV9hZGRyKCgqaWIpLT5z YV9ibyk7CisJKCppYiktPnZtX2lkID0gMDsKKwkoKmliKS0+aXNfY29uc3RfaWIgPSBmYWxzZTsK KworCXJldHVybiAwOwogfQogCiB2b2lkIHJhZGVvbl9pYl9mcmVlKHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICoqaWIpCkBAIC0xNzEsMTIgKzEwNSw5IEBAIHZv aWQgcmFkZW9uX2liX2ZyZWUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRl b25faWIgKippYikKIAlpZiAodG1wID09IE5VTEwpIHsKIAkJcmV0dXJuOwogCX0KLQlyYWRlb25f bXV0ZXhfbG9jaygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JaWYgKHRtcC0+ZmVuY2UgJiYgdG1w LT5mZW5jZS0+c2VxID09IFJBREVPTl9GRU5DRV9OT1RFTUlURURfU0VRKSB7Ci0JCXJhZGVvbl9z YV9ib19mcmVlKHJkZXYsICZ0bXAtPnNhX2JvLCBOVUxMKTsKLQkJcmFkZW9uX2ZlbmNlX3VucmVm KCZ0bXAtPmZlbmNlKTsKLQl9Ci0JcmFkZW9uX211dGV4X3VubG9jaygmcmRldi0+aWJfcG9vbC5t dXRleCk7CisJcmFkZW9uX3NhX2JvX2ZyZWUocmRldiwgJnRtcC0+c2FfYm8sIHRtcC0+ZmVuY2Up OworCXJhZGVvbl9mZW5jZV91bnJlZigmdG1wLT5mZW5jZSk7CisJa2ZyZWUodG1wKTsKIH0KIAog aW50IHJhZGVvbl9pYl9zY2hlZHVsZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0 IHJhZGVvbl9pYiAqaWIpCkBAIC0xODYsMTQgKzExNywxNCBAQCBpbnQgcmFkZW9uX2liX3NjaGVk dWxlKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICppYikKIAog CWlmICghaWItPmxlbmd0aF9kdyB8fCAhcmluZy0+cmVhZHkpIHsKIAkJLyogVE9ETzogTm90aGlu Z3MgaW4gdGhlIGliIHdlIHNob3VsZCByZXBvcnQuICovCi0JCURSTV9FUlJPUigicmFkZW9uOiBj b3VsZG4ndCBzY2hlZHVsZSBJQigldSkuXG4iLCBpYi0+aWR4KTsKKwkJZGV2X2VycihyZGV2LT5k ZXYsICJjb3VsZG4ndCBzY2hlZHVsZSBpYlxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAog CS8qIDY0IGR3b3JkcyBzaG91bGQgYmUgZW5vdWdoIGZvciBmZW5jZSB0b28gKi8KIAlyID0gcmFk ZW9uX3JpbmdfbG9jayhyZGV2LCByaW5nLCA2NCk7CiAJaWYgKHIpIHsKLQkJRFJNX0VSUk9SKCJy YWRlb246IHNjaGVkdWxpbmcgSUIgZmFpbGVkICglZCkuXG4iLCByKTsKKwkJZGV2X2VycihyZGV2 LT5kZXYsICJzY2hlZHVsaW5nIElCIGZhaWxlZCAoJWQpLlxuIiwgcik7CiAJCXJldHVybiByOwog CX0KIAlyYWRlb25fcmluZ19pYl9leGVjdXRlKHJkZXYsIGliLT5mZW5jZS0+cmluZywgaWIpOwpA QCAtMjA0LDYzICsxMzUsNDAgQEAgaW50IHJhZGVvbl9pYl9zY2hlZHVsZShzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9pYiAqaWIpCiAKIGludCByYWRlb25faWJfcG9v bF9pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogewotCWludCBpLCByOworCWludCBy OwogCi0JcmFkZW9uX211dGV4X2xvY2soJnJkZXYtPmliX3Bvb2wubXV0ZXgpOwotCWlmIChyZGV2 LT5pYl9wb29sLnJlYWR5KSB7Ci0JCXJhZGVvbl9tdXRleF91bmxvY2soJnJkZXYtPmliX3Bvb2wu bXV0ZXgpOworCWlmIChyZGV2LT5pYl9wb29sX3JlYWR5KSB7CiAJCXJldHVybiAwOwogCX0KLQot CXIgPSByYWRlb25fc2FfYm9fbWFuYWdlcl9pbml0KHJkZXYsICZyZGV2LT5pYl9wb29sLnNhX21h bmFnZXIsCisJciA9IHJhZGVvbl9zYV9ib19tYW5hZ2VyX2luaXQocmRldiwgJnJkZXYtPnJpbmdf dG1wX2JvLAogCQkJCSAgICAgIFJBREVPTl9JQl9QT09MX1NJWkUqNjQqMTAyNCwKIAkJCQkgICAg ICBSQURFT05fR0VNX0RPTUFJTl9HVFQpOwogCWlmIChyKSB7Ci0JCXJhZGVvbl9tdXRleF91bmxv Y2soJnJkZXYtPmliX3Bvb2wubXV0ZXgpOwogCQlyZXR1cm4gcjsKIAl9Ci0KLQlmb3IgKGkgPSAw OyBpIDwgUkFERU9OX0lCX1BPT0xfU0laRTsgaSsrKSB7Ci0JCXJkZXYtPmliX3Bvb2wuaWJzW2ld LmZlbmNlID0gTlVMTDsKLQkJcmRldi0+aWJfcG9vbC5pYnNbaV0uaWR4ID0gaTsKLQkJcmRldi0+ aWJfcG9vbC5pYnNbaV0ubGVuZ3RoX2R3ID0gMDsKLQkJcmRldi0+aWJfcG9vbC5pYnNbaV0uc2Ff Ym8gPSBOVUxMOwotCX0KLQlyZGV2LT5pYl9wb29sLmhlYWRfaWQgPSAwOwotCXJkZXYtPmliX3Bv b2wucmVhZHkgPSB0cnVlOwotCURSTV9JTkZPKCJyYWRlb246IGliIHBvb2wgcmVhZHkuXG4iKTsK LQotCWlmIChyYWRlb25fZGVidWdmc19pYl9pbml0KHJkZXYpKSB7Ci0JCURSTV9FUlJPUigiRmFp bGVkIHRvIHJlZ2lzdGVyIGRlYnVnZnMgZmlsZSBmb3IgSUIgIVxuIik7CisJcmRldi0+aWJfcG9v bF9yZWFkeSA9IHRydWU7CisJaWYgKHJhZGVvbl9kZWJ1Z2ZzX3NhX2luaXQocmRldikpIHsKKwkJ ZGV2X2VycihyZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgZGVidWdmcyBmaWxlIGZvciBT QVxuIik7CiAJfQotCXJhZGVvbl9tdXRleF91bmxvY2soJnJkZXYtPmliX3Bvb2wubXV0ZXgpOwog CXJldHVybiAwOwogfQogCiB2b2lkIHJhZGVvbl9pYl9wb29sX2Zpbmkoc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYpCiB7Ci0JdW5zaWduZWQgaTsKLQotCXJhZGVvbl9tdXRleF9sb2NrKCZyZGV2 LT5pYl9wb29sLm11dGV4KTsKLQlpZiAocmRldi0+aWJfcG9vbC5yZWFkeSkgewotCQlmb3IgKGkg PSAwOyBpIDwgUkFERU9OX0lCX1BPT0xfU0laRTsgaSsrKSB7Ci0JCQlyYWRlb25fc2FfYm9fZnJl ZShyZGV2LCAmcmRldi0+aWJfcG9vbC5pYnNbaV0uc2FfYm8sIE5VTEwpOwotCQkJcmFkZW9uX2Zl bmNlX3VucmVmKCZyZGV2LT5pYl9wb29sLmlic1tpXS5mZW5jZSk7Ci0JCX0KLQkJcmFkZW9uX3Nh X2JvX21hbmFnZXJfZmluaShyZGV2LCAmcmRldi0+aWJfcG9vbC5zYV9tYW5hZ2VyKTsKLQkJcmRl di0+aWJfcG9vbC5yZWFkeSA9IGZhbHNlOworCWlmIChyZGV2LT5pYl9wb29sX3JlYWR5KSB7CisJ CXJhZGVvbl9zYV9ib19tYW5hZ2VyX2ZpbmkocmRldiwgJnJkZXYtPnJpbmdfdG1wX2JvKTsKKwkJ cmRldi0+aWJfcG9vbF9yZWFkeSA9IGZhbHNlOwogCX0KLQlyYWRlb25fbXV0ZXhfdW5sb2NrKCZy ZGV2LT5pYl9wb29sLm11dGV4KTsKIH0KIAogaW50IHJhZGVvbl9pYl9wb29sX3N0YXJ0KHN0cnVj dCByYWRlb25fZGV2aWNlICpyZGV2KQogewotCXJldHVybiByYWRlb25fc2FfYm9fbWFuYWdlcl9z dGFydChyZGV2LCAmcmRldi0+aWJfcG9vbC5zYV9tYW5hZ2VyKTsKKwlyZXR1cm4gcmFkZW9uX3Nh X2JvX21hbmFnZXJfc3RhcnQocmRldiwgJnJkZXYtPnJpbmdfdG1wX2JvKTsKIH0KIAogaW50IHJh ZGVvbl9pYl9wb29sX3N1c3BlbmQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiB7Ci0JcmV0 dXJuIHJhZGVvbl9zYV9ib19tYW5hZ2VyX3N1c3BlbmQocmRldiwgJnJkZXYtPmliX3Bvb2wuc2Ff bWFuYWdlcik7CisJcmV0dXJuIHJhZGVvbl9zYV9ib19tYW5hZ2VyX3N1c3BlbmQocmRldiwgJnJk ZXYtPnJpbmdfdG1wX2JvKTsKIH0KIAogaW50IHJhZGVvbl9pYl9yaW5nX3Rlc3RzKHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2KQpAQCAtMjk2LDYgKzIwNCwyMSBAQCBpbnQgcmFkZW9uX2liX3Jp bmdfdGVzdHMoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiAvKgogICogUmluZy4KICAqLwor aW50IHJhZGVvbl9kZWJ1Z2ZzX3JpbmdfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwg c3RydWN0IHJhZGVvbl9yaW5nICpyaW5nKTsKKwordm9pZCByYWRlb25fcmluZ193cml0ZShzdHJ1 Y3QgcmFkZW9uX3JpbmcgKnJpbmcsIHVpbnQzMl90IHYpCit7CisjaWYgRFJNX0RFQlVHX0NPREUK KwlpZiAocmluZy0+Y291bnRfZHcgPD0gMCkgeworCQlEUk1fRVJST1IoInJhZGVvbjogd3JpdHRp bmcgbW9yZSBkd29yZCB0byByaW5nIHRoYW4gZXhwZWN0ZWQgIVxuIik7CisJfQorI2VuZGlmCisJ cmluZy0+cmluZ1tyaW5nLT53cHRyKytdID0gdjsKKwlyaW5nLT53cHRyICY9IHJpbmctPnB0cl9t YXNrOworCXJpbmctPmNvdW50X2R3LS07CisJcmluZy0+cmluZ19mcmVlX2R3LS07Cit9CisKIGlu dCByYWRlb25fcmluZ19pbmRleChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJh ZGVvbl9yaW5nICpyaW5nKQogewogCS8qIHIxeHgtcjV4eCBvbmx5IGhhcyBDUCByaW5nICovCkBA IC01NzcsMzcgKzUwMCwxMyBAQCBzdGF0aWMgc3RydWN0IGRybV9pbmZvX2xpc3QgcmFkZW9uX2Rl YnVnZnNfcmluZ19pbmZvX2xpc3RbXSA9IHsKIAl7InJhZGVvbl9yaW5nX2NwMiIsIHJhZGVvbl9k ZWJ1Z2ZzX3JpbmdfaW5mbywgMCwgJmNheW1hbl9yaW5nX3R5cGVfY3AyX2luZGV4fSwKIH07CiAK LXN0YXRpYyBpbnQgcmFkZW9uX2RlYnVnZnNfaWJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmRhdGEpCi17Ci0Jc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRybV9p bmZvX25vZGUgKikgbS0+cHJpdmF0ZTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+ bWlub3ItPmRldjsKLQlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IGRldi0+ZGV2X3ByaXZh dGU7Ci0Jc3RydWN0IHJhZGVvbl9pYiAqaWIgPSAmcmRldi0+aWJfcG9vbC5pYnNbKigodW5zaWdu ZWQqKW5vZGUtPmluZm9fZW50LT5kYXRhKV07Ci0JdW5zaWduZWQgaTsKLQotCWlmIChpYiA9PSBO VUxMKSB7Ci0JCXJldHVybiAwOwotCX0KLQlzZXFfcHJpbnRmKG0sICJJQiAlMDR1XG4iLCBpYi0+ aWR4KTsKLQlzZXFfcHJpbnRmKG0sICJJQiBmZW5jZSAlcFxuIiwgaWItPmZlbmNlKTsKLQlzZXFf cHJpbnRmKG0sICJJQiBzaXplICUwNXUgZHdvcmRzXG4iLCBpYi0+bGVuZ3RoX2R3KTsKLQlmb3Ig KGkgPSAwOyBpIDwgaWItPmxlbmd0aF9kdzsgaSsrKSB7Ci0JCXNlcV9wcmludGYobSwgIlslMDV1 XT0weCUwOFhcbiIsIGksIGliLT5wdHJbaV0pOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGlj IHN0cnVjdCBkcm1faW5mb19saXN0IHJhZGVvbl9kZWJ1Z2ZzX2liX2xpc3RbUkFERU9OX0lCX1BP T0xfU0laRV07Ci1zdGF0aWMgY2hhciByYWRlb25fZGVidWdmc19pYl9uYW1lc1tSQURFT05fSUJf UE9PTF9TSVpFXVszMl07Ci1zdGF0aWMgdW5zaWduZWQgcmFkZW9uX2RlYnVnZnNfaWJfaWR4W1JB REVPTl9JQl9QT09MX1NJWkVdOwotCiBzdGF0aWMgaW50IHJhZGVvbl9kZWJ1Z2ZzX3NhX2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faW5mb19ub2Rl ICpub2RlID0gKHN0cnVjdCBkcm1faW5mb19ub2RlICopIG0tPnByaXZhdGU7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7CiAJc3RydWN0IHJhZGVvbl9kZXZpY2Ug KnJkZXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JcmFkZW9uX3NhX2JvX2R1bXBfZGVidWdfaW5m bygmcmRldi0+aWJfcG9vbC5zYV9tYW5hZ2VyLCBtKTsKKwlyYWRlb25fc2FfYm9fZHVtcF9kZWJ1 Z19pbmZvKCZyZGV2LT5yaW5nX3RtcF9ibywgbSk7CiAKIAlyZXR1cm4gMDsKIApAQCAtNjM5LDI2 ICs1MzgsMTAgQEAgaW50IHJhZGVvbl9kZWJ1Z2ZzX3JpbmdfaW5pdChzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9yaW5nICpyaW4KIAlyZXR1cm4gMDsKIH0KIAotaW50 IHJhZGVvbl9kZWJ1Z2ZzX2liX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCitpbnQg cmFkZW9uX2RlYnVnZnNfc2FfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsKICNp ZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKLQl1bnNpZ25lZCBpOwotCWludCByOwotCi0JciA9 IHJhZGVvbl9kZWJ1Z2ZzX2FkZF9maWxlcyhyZGV2LCByYWRlb25fZGVidWdmc19zYV9saXN0LCAx KTsKLQlpZiAocikKLQkJcmV0dXJuIHI7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX0lCX1BP T0xfU0laRTsgaSsrKSB7Ci0JCXNwcmludGYocmFkZW9uX2RlYnVnZnNfaWJfbmFtZXNbaV0sICJy YWRlb25faWJfJTA0dSIsIGkpOwotCQlyYWRlb25fZGVidWdmc19pYl9pZHhbaV0gPSBpOwotCQly YWRlb25fZGVidWdmc19pYl9saXN0W2ldLm5hbWUgPSByYWRlb25fZGVidWdmc19pYl9uYW1lc1tp XTsKLQkJcmFkZW9uX2RlYnVnZnNfaWJfbGlzdFtpXS5zaG93ID0gJnJhZGVvbl9kZWJ1Z2ZzX2li X2luZm87Ci0JCXJhZGVvbl9kZWJ1Z2ZzX2liX2xpc3RbaV0uZHJpdmVyX2ZlYXR1cmVzID0gMDsK LQkJcmFkZW9uX2RlYnVnZnNfaWJfbGlzdFtpXS5kYXRhID0gJnJhZGVvbl9kZWJ1Z2ZzX2liX2lk eFtpXTsKLQl9Ci0JcmV0dXJuIHJhZGVvbl9kZWJ1Z2ZzX2FkZF9maWxlcyhyZGV2LCByYWRlb25f ZGVidWdmc19pYl9saXN0LAotCQkJCQlSQURFT05fSUJfUE9PTF9TSVpFKTsKKwlyZXR1cm4gcmFk ZW9uX2RlYnVnZnNfYWRkX2ZpbGVzKHJkZXYsIHJhZGVvbl9kZWJ1Z2ZzX3NhX2xpc3QsIDEpOwog I2Vsc2UKIAlyZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fc2VtYXBob3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9z ZW1hcGhvcmUuYwppbmRleCAxYmM1NTEzLi5lMmFjZTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9zZW1hcGhvcmUuYwpAQCAtNDEsNyArNDEsNyBAQCBpbnQgcmFkZW9uX3NlbWFw aG9yZV9jcmVhdGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsCiAJaWYgKCpzZW1hcGhvcmUg PT0gTlVMTCkgewogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JciA9IHJhZGVvbl9zYV9ib19uZXco cmRldiwgJnJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlciwKKwlyID0gcmFkZW9uX3NhX2JvX25ldyhy ZGV2LCAmcmRldi0+cmluZ190bXBfYm8sCiAJCQkgICAgICYoKnNlbWFwaG9yZSktPnNhX2JvLCA4 LCA4LCB0cnVlKTsKIAlpZiAocikgewogCQlrZnJlZSgqc2VtYXBob3JlKTsKLS0gCjEuNy43LjYK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==