From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: [PATCH 2/7] drm/i915: move FBC code out of i915_gem_stolen.c Date: Wed, 1 Jul 2015 17:15:21 -0300 Message-ID: <1435781726-7282-3-git-send-email-przanoni@gmail.com> References: <1435781726-7282-1-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f52.google.com (mail-qg0-f52.google.com [209.85.192.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0FD6B6E1F5 for ; Wed, 1 Jul 2015 13:16:07 -0700 (PDT) Received: by qgat90 with SMTP id t90so5198824qga.0 for ; Wed, 01 Jul 2015 13:16:06 -0700 (PDT) In-Reply-To: <1435781726-7282-1-git-send-email-przanoni@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CgpXaXRoIHRoZSBh YnN0cmFjdGlvbnMgY3JlYXRlZCBieSB0aGUgbGFzdCBwYXRjaCwgd2UgY2FuIG1vdmUgdGhpcyBj b2RlCmFuZCB0aGUgb25seSB0aGluZyBpbnNpZGUgaW50ZWxfZmJjLmMgdGhhdCBrbm93cyBhYm91 dCBkZXZfcHJpdi0+bW0gaXMKdGhlIGNvZGUgdGhhdCByZWFkcyBzdG9sZW5fYmFzZS4KCldlIGFs c28gaGFkIHRvIG1vdmUgYSBjYWxsIHRvIGk5MTVfZ2VtX3N0b2xlbl9jbGVhbnVwX2NvbXByZXNz aW9uKCkKLSBub3cgY2FsbGVkIGludGVsX2ZiY19jbGVhbnVwX2NmYigpIC0gb3V0c2lkZSBpOTE1 X2dlbV9zdG9sZW4uYy4KClJlcXVlc3RlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlA aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgIHwgICAyIC0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTI2IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg ICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgICB8IDEyOCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTI3IGlu c2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRl eCBjNTM0OWZhLi4xYWU5ZTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTExMjAsNiAr MTEyMCw3IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKIAlpOTE1X2dlbV9jb250ZXh0X2Zp bmkoZGV2KTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpbnRlbF9mYmNf Y2xlYW51cF9jZmIoZGV2KTsKIAlpOTE1X2dlbV9jbGVhbnVwX3N0b2xlbihkZXYpOwogCiAJaW50 ZWxfY3NyX3Vjb2RlX2ZpbmkoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGI5ZGUz NzQuLmM5NTUwMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzExNCw4ICszMTE0LDYg QEAgaW50IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCQkJdW5zaWduZWQgYWxpZ25tZW50KTsKIHZvaWQgaTkxNV9nZW1fc3Rv bGVuX3JlbW92ZV9ub2RlKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSk7CiBpbnQgaTkxNV9nZW1f aW5pdF9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci1pbnQgaTkxNV9nZW1fc3RvbGVu X3NldHVwX2NvbXByZXNzaW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBpbnQg ZmJfY3BwKTsKLXZvaWQgaTkxNV9nZW1fc3RvbGVuX2NsZWFudXBfY29tcHJlc3Npb24oc3RydWN0 IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfc3RvbGVuKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgogaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNpemUpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCA2YjQzMjM0Li4wNjE5Nzg2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtMTY3LDEzMSArMTY3 LDYgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaTkxNV9zdG9sZW5fdG9fcGh5c2ljYWwoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gYmFzZTsKIH0KIAotc3RhdGljIGludCBmaW5kX2Nv bXByZXNzaW9uX3RocmVzaG9sZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCSAgICAgIHN0 cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKLQkJCQkgICAgICBpbnQgc2l6ZSwKLQkJCQkgICAgICBp bnQgZmJfY3BwKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Ci0JaW50IGNvbXByZXNzaW9uX3RocmVzaG9sZCA9IDE7Ci0JaW50IHJldDsK LQotCS8qIEhBQ0s6IFRoaXMgY29kZSBkZXBlbmRzIG9uIHdoYXQgd2Ugd2lsbCBkbyBpbiAqX2Vu YWJsZV9mYmMuIElmIHRoYXQKLQkgKiBjb2RlIGNoYW5nZXMsIHRoaXMgY29kZSBuZWVkcyB0byBj aGFuZ2UgYXMgd2VsbC4KLQkgKgotCSAqIFRoZSBlbmFibGVfZmJjIGNvZGUgd2lsbCBhdHRlbXB0 IHRvIHVzZSBvbmUgb2Ygb3VyIDIgY29tcHJlc3Npb24KLQkgKiB0aHJlc2hvbGRzLCB0aGVyZWZv cmUsIGluIHRoYXQgY2FzZSwgd2Ugb25seSBoYXZlIDEgcmVzb3J0LgotCSAqLwotCi0JLyogVHJ5 IHRvIG92ZXItYWxsb2NhdGUgdG8gcmVkdWNlIHJlYWxsb2NhdGlvbnMgYW5kIGZyYWdtZW50YXRp b24uICovCi0JcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBub2Rl LCBzaXplIDw8PSAxLCA0MDk2KTsKLQlpZiAocmV0ID09IDApCi0JCXJldHVybiBjb21wcmVzc2lv bl90aHJlc2hvbGQ7Ci0KLWFnYWluOgotCS8qIEhXJ3MgYWJpbGl0eSB0byBsaW1pdCB0aGUgQ0ZC IGlzIDE6NCAqLwotCWlmIChjb21wcmVzc2lvbl90aHJlc2hvbGQgPiA0IHx8Ci0JICAgIChmYl9j cHAgPT0gMiAmJiBjb21wcmVzc2lvbl90aHJlc2hvbGQgPT0gMikpCi0JCXJldHVybiAwOwotCi0J cmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBub2RlLCBzaXplID4+ PSAxLCA0MDk2KTsKLQlpZiAocmV0ICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQpIHsKLQkJ cmV0dXJuIDA7Ci0JfSBlbHNlIGlmIChyZXQpIHsKLQkJY29tcHJlc3Npb25fdGhyZXNob2xkIDw8 PSAxOwotCQlnb3RvIGFnYWluOwotCX0gZWxzZSB7Ci0JCXJldHVybiBjb21wcmVzc2lvbl90aHJl c2hvbGQ7Ci0JfQotfQotCi1zdGF0aWMgaW50IGk5MTVfc2V0dXBfY29tcHJlc3Npb24oc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IHNpemUsIGludCBmYl9jcHApCi17Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgZHJtX21t X25vZGUgKnVuaW5pdGlhbGl6ZWRfdmFyKGNvbXByZXNzZWRfbGxiKTsKLQlpbnQgcmV0OwotCi0J cmV0ID0gZmluZF9jb21wcmVzc2lvbl90aHJlc2hvbGQoZGV2LCAmZGV2X3ByaXYtPmZiYy5jb21w cmVzc2VkX2ZiLAotCQkJCQkgc2l6ZSwgZmJfY3BwKTsKLQlpZiAoIXJldCkKLQkJZ290byBlcnJf bGxiOwotCWVsc2UgaWYgKHJldCA+IDEpIHsKLQkJRFJNX0lORk8oIlJlZHVjaW5nIHRoZSBjb21w cmVzc2VkIGZyYW1lYnVmZmVyIHNpemUuIFRoaXMgbWF5IGxlYWQgdG8gbGVzcyBwb3dlciBzYXZp bmdzIHRoYW4gYSBub24tcmVkdWNlZC1zaXplLiBUcnkgdG8gaW5jcmVhc2Ugc3RvbGVuIG1lbW9y eSBzaXplIGlmIGF2YWlsYWJsZSBpbiBCSU9TLlxuIik7Ci0KLQl9Ci0KLQlkZXZfcHJpdi0+ZmJj LnRocmVzaG9sZCA9IHJldDsKLQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUp Ci0JCUk5MTVfV1JJVEUoSUxLX0RQRkNfQ0JfQkFTRSwgZGV2X3ByaXYtPmZiYy5jb21wcmVzc2Vk X2ZiLnN0YXJ0KTsKLQllbHNlIGlmIChJU19HTTQ1KGRldikpIHsKLQkJSTkxNV9XUklURShEUEZD X0NCX0JBU0UsIGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5zdGFydCk7Ci0JfSBlbHNlIHsK LQkJY29tcHJlc3NlZF9sbGIgPSBremFsbG9jKHNpemVvZigqY29tcHJlc3NlZF9sbGIpLCBHRlBf S0VSTkVMKTsKLQkJaWYgKCFjb21wcmVzc2VkX2xsYikKLQkJCWdvdG8gZXJyX2ZiOwotCi0JCXJl dCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgY29tcHJlc3NlZF9sbGIs Ci0JCQkJCQkgIDQwOTYsIDQwOTYpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJfZmI7Ci0KLQkJ ZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2xsYiA9IGNvbXByZXNzZWRfbGxiOwotCi0JCUk5MTVf V1JJVEUoRkJDX0NGQl9CQVNFLAotCQkJICAgZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgZGV2 X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiLnN0YXJ0KTsKLQkJSTkxNV9XUklURShGQkNfTExfQkFT RSwKLQkJCSAgIGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArIGNvbXByZXNzZWRfbGxiLT5zdGFy dCk7Ci0JfQotCi0JZGV2X3ByaXYtPmZiYy51bmNvbXByZXNzZWRfc2l6ZSA9IHNpemU7Ci0KLQlE Uk1fREVCVUdfS01TKCJyZXNlcnZlZCAlZCBieXRlcyBvZiBjb250aWd1b3VzIHN0b2xlbiBzcGFj ZSBmb3IgRkJDXG4iLAotCQkgICAgICBzaXplKTsKLQotCXJldHVybiAwOwotCi1lcnJfZmI6Ci0J a2ZyZWUoY29tcHJlc3NlZF9sbGIpOwotCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZSgmZGV2 X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiKTsKLWVycl9sbGI6Ci0JcHJfaW5mb19vbmNlKCJkcm06 IG5vdCBlbm91Z2ggc3RvbGVuIHNwYWNlIGZvciBjb21wcmVzc2VkIGJ1ZmZlciAobmVlZCAlZCBt b3JlIGJ5dGVzKSwgZGlzYWJsaW5nLiBIaW50OiB5b3UgbWF5IGJlIGFibGUgdG8gaW5jcmVhc2Ug c3RvbGVuIG1lbW9yeSBzaXplIGluIHRoZSBCSU9TIHRvIGF2b2lkIHRoaXMuXG4iLCBzaXplKTsK LQlyZXR1cm4gLUVOT1NQQzsKLX0KLQotaW50IGk5MTVfZ2VtX3N0b2xlbl9zZXR1cF9jb21wcmVz c2lvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc2l6ZSwgaW50IGZiX2NwcCkKLXsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0J aWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQotCQlyZXR1cm4g LUVOT0RFVjsKLQotCWlmIChzaXplIDw9IGRldl9wcml2LT5mYmMudW5jb21wcmVzc2VkX3NpemUp Ci0JCXJldHVybiAwOwotCi0JLyogUmVsZWFzZSBhbnkgY3VycmVudCBibG9jayAqLwotCWk5MTVf Z2VtX3N0b2xlbl9jbGVhbnVwX2NvbXByZXNzaW9uKGRldik7Ci0KLQlyZXR1cm4gaTkxNV9zZXR1 cF9jb21wcmVzc2lvbihkZXYsIHNpemUsIGZiX2NwcCk7Ci19Ci0KLXZvaWQgaTkxNV9nZW1fc3Rv bGVuX2NsZWFudXBfY29tcHJlc3Npb24oc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0JaWYg KGRldl9wcml2LT5mYmMudW5jb21wcmVzc2VkX3NpemUgPT0gMCkKLQkJcmV0dXJuOwotCi0JaTkx NV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKCZkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIpOwot Ci0JaWYgKGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9sbGIpIHsKLQkJaTkxNV9nZW1fc3RvbGVu X3JlbW92ZV9ub2RlKGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9sbGIpOwotCQlrZnJlZShkZXZf cHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxiKTsKLQl9Ci0KLQlkZXZfcHJpdi0+ZmJjLnVuY29tcHJl c3NlZF9zaXplID0gMDsKLX0KLQogdm9pZCBpOTE1X2dlbV9jbGVhbnVwX3N0b2xlbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC0yOTksNyArMTc0LDYgQEAgdm9pZCBpOTE1X2dlbV9jbGVh bnVwX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmICghZHJtX21tX2luaXRpYWxp emVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKIAkJcmV0dXJuOwogCi0JaTkxNV9nZW1fc3RvbGVu X2NsZWFudXBfY29tcHJlc3Npb24oZGV2KTsKIAlkcm1fbW1fdGFrZWRvd24oJmRldl9wcml2LT5t bS5zdG9sZW4pOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDNmMGE4OTAuLjgy YWJiZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMjU4LDYgKzEyNTgsNyBAQCB2 b2lkIGludGVsX2ZiY19pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIHZvaWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJICAgICB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cyk7CiBjb25zdCBjaGFyICpp bnRlbF9ub19mYmNfcmVhc29uX3N0cihlbnVtIG5vX2ZiY19yZWFzb24gcmVhc29uKTsKK3ZvaWQg aW50ZWxfZmJjX2NsZWFudXBfY2ZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiAvKiBpbnRl bF9oZG1pLmMgKi8KIHZvaWQgaW50ZWxfaGRtaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBoZG1pX3JlZywgZW51bSBwb3J0IHBvcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwpp bmRleCA5ZTU1YjliLi5hOTFiZjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwpAQCAtNTE1 LDYgKzUxNSwxMjggQEAgc3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqaW50ZWxfZmJjX2ZpbmRfY3J0 YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIGNydGM7CiB9CiAK K3N0YXRpYyBpbnQgZmluZF9jb21wcmVzc2lvbl90aHJlc2hvbGQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKKwkJCQkgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCisJCQkJICAgICAgaW50 IHNpemUsCisJCQkJICAgICAgaW50IGZiX2NwcCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBjb21wcmVzc2lvbl90aHJlc2hv bGQgPSAxOworCWludCByZXQ7CisKKwkvKiBIQUNLOiBUaGlzIGNvZGUgZGVwZW5kcyBvbiB3aGF0 IHdlIHdpbGwgZG8gaW4gKl9lbmFibGVfZmJjLiBJZiB0aGF0CisJICogY29kZSBjaGFuZ2VzLCB0 aGlzIGNvZGUgbmVlZHMgdG8gY2hhbmdlIGFzIHdlbGwuCisJICoKKwkgKiBUaGUgZW5hYmxlX2Zi YyBjb2RlIHdpbGwgYXR0ZW1wdCB0byB1c2Ugb25lIG9mIG91ciAyIGNvbXByZXNzaW9uCisJICog dGhyZXNob2xkcywgdGhlcmVmb3JlLCBpbiB0aGF0IGNhc2UsIHdlIG9ubHkgaGF2ZSAxIHJlc29y dC4KKwkgKi8KKworCS8qIFRyeSB0byBvdmVyLWFsbG9jYXRlIHRvIHJlZHVjZSByZWFsbG9jYXRp b25zIGFuZCBmcmFnbWVudGF0aW9uLiAqLworCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRf bm9kZShkZXZfcHJpdiwgbm9kZSwgc2l6ZSA8PD0gMSwgNDA5Nik7CisJaWYgKHJldCA9PSAwKQor CQlyZXR1cm4gY29tcHJlc3Npb25fdGhyZXNob2xkOworCithZ2FpbjoKKwkvKiBIVydzIGFiaWxp dHkgdG8gbGltaXQgdGhlIENGQiBpcyAxOjQgKi8KKwlpZiAoY29tcHJlc3Npb25fdGhyZXNob2xk ID4gNCB8fAorCSAgICAoZmJfY3BwID09IDIgJiYgY29tcHJlc3Npb25fdGhyZXNob2xkID09IDIp KQorCQlyZXR1cm4gMDsKKworCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZf cHJpdiwgbm9kZSwgc2l6ZSA+Pj0gMSwgNDA5Nik7CisJaWYgKHJldCAmJiBJTlRFTF9JTkZPKGRl diktPmdlbiA8PSA0KSB7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAocmV0KSB7CisJCWNvbXBy ZXNzaW9uX3RocmVzaG9sZCA8PD0gMTsKKwkJZ290byBhZ2FpbjsKKwl9IGVsc2UgeworCQlyZXR1 cm4gY29tcHJlc3Npb25fdGhyZXNob2xkOworCX0KK30KKworc3RhdGljIGludCBpbnRlbF9mYmNf YWxsb2NfY2ZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBpbnQgZmJfY3BwKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJc3RydWN0IGRybV9tbV9ub2RlICp1bmluaXRpYWxpemVkX3Zhcihjb21wcmVzc2VkX2xsYik7 CisJaW50IHJldDsKKworCXJldCA9IGZpbmRfY29tcHJlc3Npb25fdGhyZXNob2xkKGRldiwgJmRl dl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYiwKKwkJCQkJIHNpemUsIGZiX2NwcCk7CisJaWYgKCFy ZXQpCisJCWdvdG8gZXJyX2xsYjsKKwllbHNlIGlmIChyZXQgPiAxKSB7CisJCURSTV9JTkZPKCJS ZWR1Y2luZyB0aGUgY29tcHJlc3NlZCBmcmFtZWJ1ZmZlciBzaXplLiBUaGlzIG1heSBsZWFkIHRv IGxlc3MgcG93ZXIgc2F2aW5ncyB0aGFuIGEgbm9uLXJlZHVjZWQtc2l6ZS4gVHJ5IHRvIGluY3Jl YXNlIHN0b2xlbiBtZW1vcnkgc2l6ZSBpZiBhdmFpbGFibGUgaW4gQklPUy5cbiIpOworCisJfQor CisJZGV2X3ByaXYtPmZiYy50aHJlc2hvbGQgPSByZXQ7CisKKwlpZiAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSA1KQorCQlJOTE1X1dSSVRFKElMS19EUEZDX0NCX0JBU0UsIGRldl9wcml2 LT5mYmMuY29tcHJlc3NlZF9mYi5zdGFydCk7CisJZWxzZSBpZiAoSVNfR000NShkZXYpKSB7CisJ CUk5MTVfV1JJVEUoRFBGQ19DQl9CQVNFLCBkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc3Rh cnQpOworCX0gZWxzZSB7CisJCWNvbXByZXNzZWRfbGxiID0ga3phbGxvYyhzaXplb2YoKmNvbXBy ZXNzZWRfbGxiKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghY29tcHJlc3NlZF9sbGIpCisJCQlnb3Rv IGVycl9mYjsKKworCQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYs IGNvbXByZXNzZWRfbGxiLAorCQkJCQkJICA0MDk2LCA0MDk2KTsKKwkJaWYgKHJldCkKKwkJCWdv dG8gZXJyX2ZiOworCisJCWRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9sbGIgPSBjb21wcmVzc2Vk X2xsYjsKKworCQlJOTE1X1dSSVRFKEZCQ19DRkJfQkFTRSwKKwkJCSAgIGRldl9wcml2LT5tbS5z dG9sZW5fYmFzZSArIGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5zdGFydCk7CisJCUk5MTVf V1JJVEUoRkJDX0xMX0JBU0UsCisJCQkgICBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBjb21w cmVzc2VkX2xsYi0+c3RhcnQpOworCX0KKworCWRldl9wcml2LT5mYmMudW5jb21wcmVzc2VkX3Np emUgPSBzaXplOworCisJRFJNX0RFQlVHX0tNUygicmVzZXJ2ZWQgJWQgYnl0ZXMgb2YgY29udGln dW91cyBzdG9sZW4gc3BhY2UgZm9yIEZCQ1xuIiwKKwkJICAgICAgc2l6ZSk7CisKKwlyZXR1cm4g MDsKKworZXJyX2ZiOgorCWtmcmVlKGNvbXByZXNzZWRfbGxiKTsKKwlpOTE1X2dlbV9zdG9sZW5f cmVtb3ZlX25vZGUoJmRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYik7CitlcnJfbGxiOgorCXBy X2luZm9fb25jZSgiZHJtOiBub3QgZW5vdWdoIHN0b2xlbiBzcGFjZSBmb3IgY29tcHJlc3NlZCBi dWZmZXIgKG5lZWQgJWQgbW9yZSBieXRlcyksIGRpc2FibGluZy4gSGludDogeW91IG1heSBiZSBh YmxlIHRvIGluY3JlYXNlIHN0b2xlbiBtZW1vcnkgc2l6ZSBpbiB0aGUgQklPUyB0byBhdm9pZCB0 aGlzLlxuIiwgc2l6ZSk7CisJcmV0dXJuIC1FTk9TUEM7Cit9CisKK3ZvaWQgaW50ZWxfZmJjX2Ns ZWFudXBfY2ZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmIChkZXZfcHJpdi0+ZmJj LnVuY29tcHJlc3NlZF9zaXplID09IDApCisJCXJldHVybjsKKworCWk5MTVfZ2VtX3N0b2xlbl9y ZW1vdmVfbm9kZSgmZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiKTsKKworCWlmIChkZXZfcHJp di0+ZmJjLmNvbXByZXNzZWRfbGxiKSB7CisJCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShk ZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxiKTsKKwkJa2ZyZWUoZGV2X3ByaXYtPmZiYy5jb21w cmVzc2VkX2xsYik7CisJfQorCisJZGV2X3ByaXYtPmZiYy51bmNvbXByZXNzZWRfc2l6ZSA9IDA7 Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfZmJjX3NldHVwX2NmYihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgc2l6ZSwgaW50IGZiX2NwcCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKHNpemUgPD0gZGV2X3ByaXYtPmZi Yy51bmNvbXByZXNzZWRfc2l6ZSkKKwkJcmV0dXJuIDA7CisKKwkvKiBSZWxlYXNlIGFueSBjdXJy ZW50IGJsb2NrICovCisJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldik7CisKKwlyZXR1cm4gaW50 ZWxfZmJjX2FsbG9jX2NmYihkZXYsIHNpemUsIGZiX2NwcCk7Cit9CisKIC8qKgogICogaW50ZWxf ZmJjX3VwZGF0ZSAtIGVuYWJsZS9kaXNhYmxlIEZCQyBhcyBuZWVkZWQKICAqIEBkZXY6IHRoZSBk cm1fZGV2aWNlCkBAIC02MjQsOCArNzQ2LDggQEAgdm9pZCBpbnRlbF9mYmNfdXBkYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKGluX2RiZ19tYXN0ZXIoKSkKIAkJZ290byBvdXRfZGlz YWJsZTsKIAotCWlmIChpOTE1X2dlbV9zdG9sZW5fc2V0dXBfY29tcHJlc3Npb24oZGV2LCBvYmot PmJhc2Uuc2l6ZSwKLQkJCQkJICAgICAgZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zv cm1hdCwgMCkpKSB7CisJaWYgKGludGVsX2ZiY19zZXR1cF9jZmIoZGV2LCBvYmotPmJhc2Uuc2l6 ZSwKKwkJCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKSkpIHsKIAkJ c2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsIEZCQ19TVE9MRU5fVE9PX1NNQUxMKTsKIAkJZ290 byBvdXRfZGlzYWJsZTsKIAl9CkBAIC02NzgsNyArODAwLDcgQEAgb3V0X2Rpc2FibGU6CiAJCURS TV9ERUJVR19LTVMoInVuc3VwcG9ydGVkIGNvbmZpZywgZGlzYWJsaW5nIEZCQ1xuIik7CiAJCWlu dGVsX2ZiY19kaXNhYmxlKGRldik7CiAJfQotCWk5MTVfZ2VtX3N0b2xlbl9jbGVhbnVwX2NvbXBy ZXNzaW9uKGRldik7CisJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldik7CiB9CiAKIHZvaWQgaW50 ZWxfZmJjX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotLSAK Mi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==