From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: [PATCH 2/8] drm/i915: move FBC code out of i915_gem_stolen.c Date: Thu, 2 Jul 2015 19:25:08 -0300 Message-ID: <1435875914-11516-3-git-send-email-przanoni@gmail.com> References: <1435875914-11516-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-qk0-f180.google.com (mail-qk0-f180.google.com [209.85.220.180]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5F7A66E798 for ; Thu, 2 Jul 2015 15:25:56 -0700 (PDT) Received: by qkei195 with SMTP id i195so62236257qke.3 for ; Thu, 02 Jul 2015 15:25:55 -0700 (PDT) In-Reply-To: <1435875914-11516-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 X2dlbV9zdG9sZW4uYy4KCnYyOgogIC0gUmViYXNlIGFmdGVyIHRoZSByZW1vdmVfbm9kZSgpIGNo YW5nZXMgb24gdGhlIHByZXZpb3VzIHBhdGNoLgoKUmVxdWVzdGVkLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxw YXVsby5yLnphbm9uaUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k bWEuYyAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgfCAxMjcg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5j ICAgICAgIHwgMTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogNSBmaWxlcyBj aGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgMTMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RtYS5jCmluZGV4IGM1MzQ5ZmEuLjFhZTllMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEu YwpAQCAtMTEyMCw2ICsxMTIwLDcgQEAgaW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCWk5MTVfZ2VtX2NsZWFudXBfcmluZ2J1ZmZlcihkZXYpOwogCWk5MTVf Z2VtX2NvbnRleHRfZmluaShkZXYpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OworCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXYpOwogCWk5MTVfZ2VtX2NsZWFudXBfc3RvbGVu KGRldik7CiAKIAlpbnRlbF9jc3JfdWNvZGVfZmluaShkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggMWFmMWI0My4uMDViNzhiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0z MTE1LDggKzMxMTUsNiBAQCBpbnQgaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHZvaWQgaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9u b2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgc3RydWN0IGRybV9t bV9ub2RlICpub2RlKTsKIGludCBpOTE1X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKLWludCBpOTE1X2dlbV9zdG9sZW5fc2V0dXBfY29tcHJlc3Npb24oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IHNpemUsIGludCBmYl9jcHApOwotdm9pZCBpOTE1X2dlbV9zdG9s ZW5fY2xlYW51cF9jb21wcmVzc2lvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkx NV9nZW1fY2xlYW51cF9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqCiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1MzIgc2l6ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0 b2xlbi5jCmluZGV4IGQ4MTFiMTQuLmQyZDU1NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3N0b2xlbi5jCkBAIC0xNjgsMTMyICsxNjgsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBp OTE1X3N0b2xlbl90b19waHlzaWNhbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiBi YXNlOwogfQogCi1zdGF0aWMgaW50IGZpbmRfY29tcHJlc3Npb25fdGhyZXNob2xkKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCi0JCQkJICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpub2RlLAotCQkJ CSAgICAgIGludCBzaXplLAotCQkJCSAgICAgIGludCBmYl9jcHApCi17Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlpbnQgY29tcHJlc3Np b25fdGhyZXNob2xkID0gMTsKLQlpbnQgcmV0OwotCi0JLyogSEFDSzogVGhpcyBjb2RlIGRlcGVu ZHMgb24gd2hhdCB3ZSB3aWxsIGRvIGluICpfZW5hYmxlX2ZiYy4gSWYgdGhhdAotCSAqIGNvZGUg Y2hhbmdlcywgdGhpcyBjb2RlIG5lZWRzIHRvIGNoYW5nZSBhcyB3ZWxsLgotCSAqCi0JICogVGhl IGVuYWJsZV9mYmMgY29kZSB3aWxsIGF0dGVtcHQgdG8gdXNlIG9uZSBvZiBvdXIgMiBjb21wcmVz c2lvbgotCSAqIHRocmVzaG9sZHMsIHRoZXJlZm9yZSwgaW4gdGhhdCBjYXNlLCB3ZSBvbmx5IGhh dmUgMSByZXNvcnQuCi0JICovCi0KLQkvKiBUcnkgdG8gb3Zlci1hbGxvY2F0ZSB0byByZWR1Y2Ug cmVhbGxvY2F0aW9ucyBhbmQgZnJhZ21lbnRhdGlvbi4gKi8KLQlyZXQgPSBpOTE1X2dlbV9zdG9s ZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsIG5vZGUsIHNpemUgPDw9IDEsIDQwOTYpOwotCWlmIChy ZXQgPT0gMCkKLQkJcmV0dXJuIGNvbXByZXNzaW9uX3RocmVzaG9sZDsKLQotYWdhaW46Ci0JLyog SFcncyBhYmlsaXR5IHRvIGxpbWl0IHRoZSBDRkIgaXMgMTo0ICovCi0JaWYgKGNvbXByZXNzaW9u X3RocmVzaG9sZCA+IDQgfHwKLQkgICAgKGZiX2NwcCA9PSAyICYmIGNvbXByZXNzaW9uX3RocmVz aG9sZCA9PSAyKSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0 X25vZGUoZGV2X3ByaXYsIG5vZGUsIHNpemUgPj49IDEsIDQwOTYpOwotCWlmIChyZXQgJiYgSU5U RUxfSU5GTyhkZXYpLT5nZW4gPD0gNCkgewotCQlyZXR1cm4gMDsKLQl9IGVsc2UgaWYgKHJldCkg ewotCQljb21wcmVzc2lvbl90aHJlc2hvbGQgPDw9IDE7Ci0JCWdvdG8gYWdhaW47Ci0JfSBlbHNl IHsKLQkJcmV0dXJuIGNvbXByZXNzaW9uX3RocmVzaG9sZDsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQg aTkxNV9zZXR1cF9jb21wcmVzc2lvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc2l6ZSwg aW50IGZiX2NwcCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqdW5pbml0aWFsaXplZF92YXIoY29t cHJlc3NlZF9sbGIpOwotCWludCByZXQ7Ci0KLQlyZXQgPSBmaW5kX2NvbXByZXNzaW9uX3RocmVz aG9sZChkZXYsICZkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIsCi0JCQkJCSBzaXplLCBmYl9j cHApOwotCWlmICghcmV0KQotCQlnb3RvIGVycl9sbGI7Ci0JZWxzZSBpZiAocmV0ID4gMSkgewot CQlEUk1fSU5GTygiUmVkdWNpbmcgdGhlIGNvbXByZXNzZWQgZnJhbWVidWZmZXIgc2l6ZS4gVGhp cyBtYXkgbGVhZCB0byBsZXNzIHBvd2VyIHNhdmluZ3MgdGhhbiBhIG5vbi1yZWR1Y2VkLXNpemUu IFRyeSB0byBpbmNyZWFzZSBzdG9sZW4gbWVtb3J5IHNpemUgaWYgYXZhaWxhYmxlIGluIEJJT1Mu XG4iKTsKLQotCX0KLQotCWRldl9wcml2LT5mYmMudGhyZXNob2xkID0gcmV0OwotCi0JaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkKLQkJSTkxNV9XUklURShJTEtfRFBGQ19DQl9C QVNFLCBkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc3RhcnQpOwotCWVsc2UgaWYgKElTX0dN NDUoZGV2KSkgewotCQlJOTE1X1dSSVRFKERQRkNfQ0JfQkFTRSwgZGV2X3ByaXYtPmZiYy5jb21w cmVzc2VkX2ZiLnN0YXJ0KTsKLQl9IGVsc2UgewotCQljb21wcmVzc2VkX2xsYiA9IGt6YWxsb2Mo c2l6ZW9mKCpjb21wcmVzc2VkX2xsYiksIEdGUF9LRVJORUwpOwotCQlpZiAoIWNvbXByZXNzZWRf bGxiKQotCQkJZ290byBlcnJfZmI7Ci0KLQkJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9u b2RlKGRldl9wcml2LCBjb21wcmVzc2VkX2xsYiwKLQkJCQkJCSAgNDA5NiwgNDA5Nik7Ci0JCWlm IChyZXQpCi0JCQlnb3RvIGVycl9mYjsKLQotCQlkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxi ID0gY29tcHJlc3NlZF9sbGI7Ci0KLQkJSTkxNV9XUklURShGQkNfQ0ZCX0JBU0UsCi0JCQkgICBk ZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc3Rh cnQpOwotCQlJOTE1X1dSSVRFKEZCQ19MTF9CQVNFLAotCQkJICAgZGV2X3ByaXYtPm1tLnN0b2xl bl9iYXNlICsgY29tcHJlc3NlZF9sbGItPnN0YXJ0KTsKLQl9Ci0KLQlkZXZfcHJpdi0+ZmJjLnVu Y29tcHJlc3NlZF9zaXplID0gc2l6ZTsKLQotCURSTV9ERUJVR19LTVMoInJlc2VydmVkICVkIGJ5 dGVzIG9mIGNvbnRpZ3VvdXMgc3RvbGVuIHNwYWNlIGZvciBGQkNcbiIsCi0JCSAgICAgIHNpemUp OwotCi0JcmV0dXJuIDA7Ci0KLWVycl9mYjoKLQlrZnJlZShjb21wcmVzc2VkX2xsYik7Ci0JaTkx NV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmZGV2X3ByaXYtPmZiYy5jb21wcmVz c2VkX2ZiKTsKLWVycl9sbGI6Ci0JcHJfaW5mb19vbmNlKCJkcm06IG5vdCBlbm91Z2ggc3RvbGVu IHNwYWNlIGZvciBjb21wcmVzc2VkIGJ1ZmZlciAobmVlZCAlZCBtb3JlIGJ5dGVzKSwgZGlzYWJs aW5nLiBIaW50OiB5b3UgbWF5IGJlIGFibGUgdG8gaW5jcmVhc2Ugc3RvbGVuIG1lbW9yeSBzaXpl IGluIHRoZSBCSU9TIHRvIGF2b2lkIHRoaXMuXG4iLCBzaXplKTsKLQlyZXR1cm4gLUVOT1NQQzsK LX0KLQotaW50IGk5MTVfZ2VtX3N0b2xlbl9zZXR1cF9jb21wcmVzc2lvbihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgc2l6ZSwgaW50IGZiX2NwcCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0JaWYgKCFkcm1fbW1faW5pdGlh bGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCWlmIChz aXplIDw9IGRldl9wcml2LT5mYmMudW5jb21wcmVzc2VkX3NpemUpCi0JCXJldHVybiAwOwotCi0J LyogUmVsZWFzZSBhbnkgY3VycmVudCBibG9jayAqLwotCWk5MTVfZ2VtX3N0b2xlbl9jbGVhbnVw X2NvbXByZXNzaW9uKGRldik7Ci0KLQlyZXR1cm4gaTkxNV9zZXR1cF9jb21wcmVzc2lvbihkZXYs IHNpemUsIGZiX2NwcCk7Ci19Ci0KLXZvaWQgaTkxNV9nZW1fc3RvbGVuX2NsZWFudXBfY29tcHJl c3Npb24oc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0JaWYgKGRldl9wcml2LT5mYmMudW5j b21wcmVzc2VkX3NpemUgPT0gMCkKLQkJcmV0dXJuOwotCi0JaTkxNV9nZW1fc3RvbGVuX3JlbW92 ZV9ub2RlKGRldl9wcml2LCAmZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiKTsKLQotCWlmIChk ZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxiKSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVf bm9kZShkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9sbGIpOwot CQlrZnJlZShkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxiKTsKLQl9Ci0KLQlkZXZfcHJpdi0+ ZmJjLnVuY29tcHJlc3NlZF9zaXplID0gMDsKLX0KLQogdm9pZCBpOTE1X2dlbV9jbGVhbnVwX3N0 b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC0zMDEsNyArMTc1LDYgQEAgdm9pZCBp OTE1X2dlbV9jbGVhbnVwX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmICghZHJt X21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKIAkJcmV0dXJuOwogCi0JaTkx NV9nZW1fc3RvbGVuX2NsZWFudXBfY29tcHJlc3Npb24oZGV2KTsKIAlkcm1fbW1fdGFrZWRvd24o JmRldl9wcml2LT5tbS5zdG9sZW4pOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4 IDNmMGE4OTAuLjgyYWJiZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMjU4LDYg KzEyNTgsNyBAQCB2b2lkIGludGVsX2ZiY19pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIHZvaWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJICAgICB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cyk7CiBj b25zdCBjaGFyICppbnRlbF9ub19mYmNfcmVhc29uX3N0cihlbnVtIG5vX2ZiY19yZWFzb24gcmVh c29uKTsKK3ZvaWQgaW50ZWxfZmJjX2NsZWFudXBfY2ZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogCiAvKiBpbnRlbF9oZG1pLmMgKi8KIHZvaWQgaW50ZWxfaGRtaV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBoZG1pX3JlZywgZW51bSBwb3J0IHBvcnQpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmMuYwppbmRleCA5ZTU1YjliLi41NTcxMWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYwpAQCAtNTE1LDYgKzUxNSwxMjkgQEAgc3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqaW50ZWxf ZmJjX2ZpbmRfY3J0YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJu IGNydGM7CiB9CiAKK3N0YXRpYyBpbnQgZmluZF9jb21wcmVzc2lvbl90aHJlc2hvbGQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCisJ CQkJICAgICAgaW50IHNpemUsCisJCQkJICAgICAgaW50IGZiX2NwcCkKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBjb21wcmVz c2lvbl90aHJlc2hvbGQgPSAxOworCWludCByZXQ7CisKKwkvKiBIQUNLOiBUaGlzIGNvZGUgZGVw ZW5kcyBvbiB3aGF0IHdlIHdpbGwgZG8gaW4gKl9lbmFibGVfZmJjLiBJZiB0aGF0CisJICogY29k ZSBjaGFuZ2VzLCB0aGlzIGNvZGUgbmVlZHMgdG8gY2hhbmdlIGFzIHdlbGwuCisJICoKKwkgKiBU aGUgZW5hYmxlX2ZiYyBjb2RlIHdpbGwgYXR0ZW1wdCB0byB1c2Ugb25lIG9mIG91ciAyIGNvbXBy ZXNzaW9uCisJICogdGhyZXNob2xkcywgdGhlcmVmb3JlLCBpbiB0aGF0IGNhc2UsIHdlIG9ubHkg aGF2ZSAxIHJlc29ydC4KKwkgKi8KKworCS8qIFRyeSB0byBvdmVyLWFsbG9jYXRlIHRvIHJlZHVj ZSByZWFsbG9jYXRpb25zIGFuZCBmcmFnbWVudGF0aW9uLiAqLworCXJldCA9IGk5MTVfZ2VtX3N0 b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgbm9kZSwgc2l6ZSA8PD0gMSwgNDA5Nik7CisJaWYg KHJldCA9PSAwKQorCQlyZXR1cm4gY29tcHJlc3Npb25fdGhyZXNob2xkOworCithZ2FpbjoKKwkv KiBIVydzIGFiaWxpdHkgdG8gbGltaXQgdGhlIENGQiBpcyAxOjQgKi8KKwlpZiAoY29tcHJlc3Np b25fdGhyZXNob2xkID4gNCB8fAorCSAgICAoZmJfY3BwID09IDIgJiYgY29tcHJlc3Npb25fdGhy ZXNob2xkID09IDIpKQorCQlyZXR1cm4gMDsKKworCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNl cnRfbm9kZShkZXZfcHJpdiwgbm9kZSwgc2l6ZSA+Pj0gMSwgNDA5Nik7CisJaWYgKHJldCAmJiBJ TlRFTF9JTkZPKGRldiktPmdlbiA8PSA0KSB7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAocmV0 KSB7CisJCWNvbXByZXNzaW9uX3RocmVzaG9sZCA8PD0gMTsKKwkJZ290byBhZ2FpbjsKKwl9IGVs c2UgeworCQlyZXR1cm4gY29tcHJlc3Npb25fdGhyZXNob2xkOworCX0KK30KKworc3RhdGljIGlu dCBpbnRlbF9mYmNfYWxsb2NfY2ZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBp bnQgZmJfY3BwKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9tbV9ub2RlICp1bmluaXRpYWxpemVkX3Zhcihjb21w cmVzc2VkX2xsYik7CisJaW50IHJldDsKKworCXJldCA9IGZpbmRfY29tcHJlc3Npb25fdGhyZXNo b2xkKGRldiwgJmRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYiwKKwkJCQkJIHNpemUsIGZiX2Nw cCk7CisJaWYgKCFyZXQpCisJCWdvdG8gZXJyX2xsYjsKKwllbHNlIGlmIChyZXQgPiAxKSB7CisJ CURSTV9JTkZPKCJSZWR1Y2luZyB0aGUgY29tcHJlc3NlZCBmcmFtZWJ1ZmZlciBzaXplLiBUaGlz IG1heSBsZWFkIHRvIGxlc3MgcG93ZXIgc2F2aW5ncyB0aGFuIGEgbm9uLXJlZHVjZWQtc2l6ZS4g VHJ5IHRvIGluY3JlYXNlIHN0b2xlbiBtZW1vcnkgc2l6ZSBpZiBhdmFpbGFibGUgaW4gQklPUy5c biIpOworCisJfQorCisJZGV2X3ByaXYtPmZiYy50aHJlc2hvbGQgPSByZXQ7CisKKwlpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA1KQorCQlJOTE1X1dSSVRFKElMS19EUEZDX0NCX0JB U0UsIGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5zdGFydCk7CisJZWxzZSBpZiAoSVNfR000 NShkZXYpKSB7CisJCUk5MTVfV1JJVEUoRFBGQ19DQl9CQVNFLCBkZXZfcHJpdi0+ZmJjLmNvbXBy ZXNzZWRfZmIuc3RhcnQpOworCX0gZWxzZSB7CisJCWNvbXByZXNzZWRfbGxiID0ga3phbGxvYyhz aXplb2YoKmNvbXByZXNzZWRfbGxiKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghY29tcHJlc3NlZF9s bGIpCisJCQlnb3RvIGVycl9mYjsKKworCQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25v ZGUoZGV2X3ByaXYsIGNvbXByZXNzZWRfbGxiLAorCQkJCQkJICA0MDk2LCA0MDk2KTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyX2ZiOworCisJCWRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9sbGIg PSBjb21wcmVzc2VkX2xsYjsKKworCQlJOTE1X1dSSVRFKEZCQ19DRkJfQkFTRSwKKwkJCSAgIGRl dl9wcml2LT5tbS5zdG9sZW5fYmFzZSArIGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5zdGFy dCk7CisJCUk5MTVfV1JJVEUoRkJDX0xMX0JBU0UsCisJCQkgICBkZXZfcHJpdi0+bW0uc3RvbGVu X2Jhc2UgKyBjb21wcmVzc2VkX2xsYi0+c3RhcnQpOworCX0KKworCWRldl9wcml2LT5mYmMudW5j b21wcmVzc2VkX3NpemUgPSBzaXplOworCisJRFJNX0RFQlVHX0tNUygicmVzZXJ2ZWQgJWQgYnl0 ZXMgb2YgY29udGlndW91cyBzdG9sZW4gc3BhY2UgZm9yIEZCQ1xuIiwKKwkJICAgICAgc2l6ZSk7 CisKKwlyZXR1cm4gMDsKKworZXJyX2ZiOgorCWtmcmVlKGNvbXByZXNzZWRfbGxiKTsKKwlpOTE1 X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZkZXZfcHJpdi0+ZmJjLmNvbXByZXNz ZWRfZmIpOworZXJyX2xsYjoKKwlwcl9pbmZvX29uY2UoImRybTogbm90IGVub3VnaCBzdG9sZW4g c3BhY2UgZm9yIGNvbXByZXNzZWQgYnVmZmVyIChuZWVkICVkIG1vcmUgYnl0ZXMpLCBkaXNhYmxp bmcuIEhpbnQ6IHlvdSBtYXkgYmUgYWJsZSB0byBpbmNyZWFzZSBzdG9sZW4gbWVtb3J5IHNpemUg aW4gdGhlIEJJT1MgdG8gYXZvaWQgdGhpcy5cbiIsIHNpemUpOworCXJldHVybiAtRU5PU1BDOwor fQorCit2b2lkIGludGVsX2ZiY19jbGVhbnVwX2NmYihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisKKwlpZiAoZGV2X3ByaXYtPmZiYy51bmNvbXByZXNzZWRfc2l6ZSA9PSAwKQorCQlyZXR1cm47 CisKKwlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZkZXZfcHJpdi0+ZmJj LmNvbXByZXNzZWRfZmIpOworCisJaWYgKGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9sbGIpIHsK KwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LAorCQkJCQkgICAgZGV2X3By aXYtPmZiYy5jb21wcmVzc2VkX2xsYik7CisJCWtmcmVlKGRldl9wcml2LT5mYmMuY29tcHJlc3Nl ZF9sbGIpOworCX0KKworCWRldl9wcml2LT5mYmMudW5jb21wcmVzc2VkX3NpemUgPSAwOworfQor CitzdGF0aWMgaW50IGludGVsX2ZiY19zZXR1cF9jZmIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IHNpemUsIGludCBmYl9jcHApCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmIChzaXplIDw9IGRldl9wcml2LT5mYmMudW5j b21wcmVzc2VkX3NpemUpCisJCXJldHVybiAwOworCisJLyogUmVsZWFzZSBhbnkgY3VycmVudCBi bG9jayAqLworCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXYpOworCisJcmV0dXJuIGludGVsX2Zi Y19hbGxvY19jZmIoZGV2LCBzaXplLCBmYl9jcHApOworfQorCiAvKioKICAqIGludGVsX2ZiY191 cGRhdGUgLSBlbmFibGUvZGlzYWJsZSBGQkMgYXMgbmVlZGVkCiAgKiBAZGV2OiB0aGUgZHJtX2Rl dmljZQpAQCAtNjI0LDggKzc0Nyw4IEBAIHZvaWQgaW50ZWxfZmJjX3VwZGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCWlmIChpbl9kYmdfbWFzdGVyKCkpCiAJCWdvdG8gb3V0X2Rpc2FibGU7 CiAKLQlpZiAoaTkxNV9nZW1fc3RvbGVuX3NldHVwX2NvbXByZXNzaW9uKGRldiwgb2JqLT5iYXNl LnNpemUsCi0JCQkJCSAgICAgIGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQs IDApKSkgeworCWlmIChpbnRlbF9mYmNfc2V0dXBfY2ZiKGRldiwgb2JqLT5iYXNlLnNpemUsCisJ CQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCkpKSB7CiAJCXNldF9u b19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfU1RPTEVOX1RPT19TTUFMTCk7CiAJCWdvdG8gb3V0 X2Rpc2FibGU7CiAJfQpAQCAtNjc4LDcgKzgwMSw3IEBAIG91dF9kaXNhYmxlOgogCQlEUk1fREVC VUdfS01TKCJ1bnN1cHBvcnRlZCBjb25maWcsIGRpc2FibGluZyBGQkNcbiIpOwogCQlpbnRlbF9m YmNfZGlzYWJsZShkZXYpOwogCX0KLQlpOTE1X2dlbV9zdG9sZW5fY2xlYW51cF9jb21wcmVzc2lv bihkZXYpOworCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXYpOwogfQogCiB2b2lkIGludGVsX2Zi Y19pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLS0gCjIuMS40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=