From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 08/10] drm/i915: Support for pread/pwrite from/to non shmem backed objects Date: Tue, 26 Jan 2016 01:13:34 +0530 Message-ID: <1453751016-8713-9-git-send-email-ankitprasad.r.sharma@intel.com> References: <1453751016-8713-1-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id BA46D6E549 for ; Mon, 25 Jan 2016 12:05:40 -0800 (PST) In-Reply-To: <1453751016-8713-1-git-send-email-ankitprasad.r.sharma@intel.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: akash.goel@intel.com, shashidhar.hiremath@intel.com, Ankitprasad Sharma List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+ CgpUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZXh0ZW5kaW5nIHRoZSBwcmVhZC9wd3JpdGUg ZnVuY3Rpb25hbGl0eQpmb3Igb2JqZWN0cyBub3QgYmFja2VkIGJ5IHNobWVtLiBUaGUgYWNjZXNz IHdpbGwgYmUgbWFkZSB0aHJvdWdoCmd0dCBpbnRlcmZhY2UuIFRoaXMgd2lsbCBjb3ZlciBvYmpl Y3RzIGJhY2tlZCBieSBzdG9sZW4gbWVtb3J5IGFzIHdlbGwKYXMgb3RoZXIgbm9uLXNobWVtIGJh Y2tlZCBvYmplY3RzLgoKdjI6IERyb3AgbG9ja3MgYXJvdW5kIHNsb3dfdXNlcl9hY2Nlc3MsIHBy ZWZhdWx0IHRoZSBwYWdlcyBiZWZvcmUKYWNjZXNzIChDaHJpcykKCnYzOiBSZWJhc2VkIHRvIHRo ZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkgKEFua2l0KQoKdjQ6IE1vdmVkIHBhZ2UgYmFzZSAm IG9mZnNldCBjYWxjdWxhdGlvbnMgb3V0c2lkZSB0aGUgY29weSBsb29wLApjb3JyZWN0ZWQgZGF0 YSB0eXBlcyBmb3Igc2l6ZSBhbmQgb2Zmc2V0IHZhcmlhYmxlcywgY29ycmVjdGVkIGlmLWVsc2UK YnJhY2VzIGZvcm1hdCAoVHZydGtvL2tlcm5lbGRvY3MpCgp2NTogRW5hYmxlZCBwcmVhZC9wd3Jp dGUgZm9yIGFsbCBub24tc2htZW0gYmFja2VkIG9iamVjdHMgaW5jbHVkaW5nCndpdGhvdXQgdGls aW5nIHJlc3RyaWN0aW9ucyAoQW5raXQpCgp2NjogVXNpbmcgcHdyaXRlX2Zhc3QgZm9yIG5vbi1z aG1lbSBiYWNrZWQgb2JqZWN0cyBhcyB3ZWxsIChDaHJpcykKCnY3OiBVcGRhdGVkIGNvbW1pdCBt ZXNzYWdlLCBSZW5hbWVkIGk5MTVfZ2VtX2d0dF9yZWFkIHRvIGk5MTVfZ2VtX2d0dF9jb3B5LAph ZGRlZCBwd3JpdGUgc2xvdyBwYXRoIGZvciBub24tc2htZW0gYmFja2VkIG9iamVjdHMgKENocmlz L1R2cnRrbykKCnY4OiBVcGRhdGVkIHY3IGNvbW1pdCBtZXNzYWdlLCBtdXRleCB1bmxvY2sgYXJv dW5kIHB3cml0ZSBzbG93IHBhdGggZm9yCm5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyAoVHZydGtv KQoKdjk6IENvcnJlY3RlZCBjaGVjayBkdXJpbmcgcHJlYWRfaW9jdGwsIHRvIGF2b2lkIHNobWVt X3ByZWFkIGJlaW5nCmNhbGxlZCBmb3Igbm9uLXNobWVtIGJhY2tlZCBvYmplY3RzIChUdnJ0a28p Cgp2MTA6IE1vdmVkIHRoZSB3cml0ZV9kb21haW4gY2hlY2sgdG8gbmVlZHNfY2xmbHVzaCBhbmQg dGlsaW5nIG1vZGUgY2hlY2sKdG8gcHdyaXRlX2Zhc3QgKENocmlzKQoKdjExOiBVc2UgcHdyaXRl X2Zhc3QgZmFsbGJhY2sgZm9yIGFsbCBvYmplY3RzIChzaG1lbSBhbmQgbm9uLXNobWVtIGJhY2tl ZCksCmNhbGwgZmFzdF91c2VyX3dyaXRlIHJlZ2FyZGxlc3Mgb2YgcGFnZWZhdWx0IGluIHByZXZp b3VzIGl0ZXJhdGlvbgoKdjEyOiBVc2UgcGFnZS1ieS1wYWdlIGNvcHkgZm9yIHNsb3cgdXNlciBh Y2Nlc3MgdG9vIChDaHJpcykKClRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbiwgaWd0L2dlbV9wcmVh ZCwgaWd0L2dlbV9wd3JpdGUKClNpZ25lZC1vZmYtYnk6IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5r aXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgfCAxODYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDE2MSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwppbmRleCAwYmM1OWJkLi42OGUzYjllIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKQEAgLTU1LDYgKzU1LDkgQEAgc3RhdGljIGJvb2wgY3B1X2NhY2hlX2lzX2NvaGVy ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIHN0YXRpYyBib29sIGNwdV93cml0ZV9uZWVk c19jbGZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CisJaWYgKG9iai0+ YmFzZS53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0NQVSkKKwkJcmV0dXJuIGZhbHNl OworCiAJaWYgKCFjcHVfY2FjaGVfaXNfY29oZXJlbnQob2JqLT5iYXNlLmRldiwgb2JqLT5jYWNo ZV9sZXZlbCkpCiAJCXJldHVybiB0cnVlOwogCkBAIC02NDcsNiArNjUwLDEyOSBAQCBzaG1lbV9w cmVhZF9zbG93KHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgc2htZW1fcGFnZV9vZmZzZXQsIGludCBw YWdlX2xlbmd0aCwKIAlyZXR1cm4gcmV0ID8gLSBFRkFVTFQgOiAwOwogfQogCitzdGF0aWMgaW5s aW5lIHVpbnQ2NF90CitzbG93X3VzZXJfYWNjZXNzKHN0cnVjdCBpb19tYXBwaW5nICptYXBwaW5n LAorCQkgdWludDY0X3QgcGFnZV9iYXNlLCBpbnQgcGFnZV9vZmZzZXQsCisJCSBjaGFyIF9fdXNl ciAqdXNlcl9kYXRhLAorCQkgaW50IGxlbmd0aCwgYm9vbCBwd3JpdGUpCit7CisJdm9pZCBfX2lv bWVtICppb2FkZHI7CisJdm9pZCAqdmFkZHI7CisJdWludDY0X3QgdW53cml0dGVuOworCisJaW9h ZGRyID0gaW9fbWFwcGluZ19tYXBfd2MobWFwcGluZywgcGFnZV9iYXNlKTsKKwkvKiBXZSBjYW4g dXNlIHRoZSBjcHUgbWVtIGNvcHkgZnVuY3Rpb24gYmVjYXVzZSB0aGlzIGlzIFg4Ni4gKi8KKwl2 YWRkciA9ICh2b2lkIF9fZm9yY2UgKilpb2FkZHIgKyBwYWdlX29mZnNldDsKKwlpZiAocHdyaXRl KQorCQl1bndyaXR0ZW4gPSBfX2NvcHlfZnJvbV91c2VyKHZhZGRyLCB1c2VyX2RhdGEsIGxlbmd0 aCk7CisJZWxzZQorCQl1bndyaXR0ZW4gPSBfX2NvcHlfdG9fdXNlcih1c2VyX2RhdGEsIHZhZGRy LCBsZW5ndGgpOworCisJaW9fbWFwcGluZ191bm1hcChpb2FkZHIpOworCXJldHVybiB1bndyaXR0 ZW47Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2d0dF9jb3B5KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCisJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVpbnQ2NF90IHNp emUsCisJCSAgIHVpbnQ2NF90IGRhdGFfb2Zmc2V0LCB1aW50NjRfdCBkYXRhX3B0cikKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0 cnVjdCBkcm1fbW1fbm9kZSBub2RlOworCWNoYXIgX191c2VyICp1c2VyX2RhdGE7CisJdWludDY0 X3QgcmVtYWluOworCXVpbnQ2NF90IG9mZnNldDsKKwlpbnQgcmV0ID0gMDsKKworCXJldCA9IGk5 MTVfZ2VtX29ial9nZ3R0X3BpbihvYmosIDAsIFBJTl9NQVBQQUJMRSk7CisJaWYgKHJldCkgewor CQlyZXQgPSBpbnNlcnRfbWFwcGFibGVfbm9kZShkZXZfcHJpdiwgJm5vZGUsIFBBR0VfU0laRSk7 CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKworCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0 X3BhZ2VzKG9iaik7CisJCWlmIChyZXQpIHsKKwkJCXJlbW92ZV9tYXBwYWJsZV9ub2RlKCZub2Rl KTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmop OworCX0gZWxzZSB7CisJCW5vZGUuc3RhcnQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2Jq KTsKKwkJbm9kZS5hbGxvY2F0ZWQgPSBmYWxzZTsKKwl9CisKKwlyZXQgPSBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRf dW5waW47CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7CisJaWYgKHJl dCkKKwkJZ290byBvdXRfdW5waW47CisKKwl1c2VyX2RhdGEgPSB0b191c2VyX3B0cihkYXRhX3B0 cik7CisJcmVtYWluID0gc2l6ZTsKKwlvZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSArIGRhdGFfb2Zmc2V0OworCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CisJaWYgKGxpa2VseSghaTkxNS5wcmVmYXVsdF9kaXNhYmxlKSkKKwkJcmV0ID0gZmF1bHRfaW5f bXVsdGlwYWdlc193cml0ZWFibGUodXNlcl9kYXRhLCByZW1haW4pOworCisJd2hpbGUgKHJlbWFp biA+IDApIHsKKwkJLyogT3BlcmF0aW9uIGluIHRoaXMgcGFnZQorCQkgKgorCQkgKiBwYWdlX2Jh c2UgPSBwYWdlIG9mZnNldCB3aXRoaW4gYXBlcnR1cmUKKwkJICogcGFnZV9vZmZzZXQgPSBvZmZz ZXQgd2l0aGluIHBhZ2UKKwkJICogcGFnZV9sZW5ndGggPSBieXRlcyB0byBjb3B5IGZvciB0aGlz IHBhZ2UKKwkJICovCisJCXUzMiBwYWdlX2Jhc2UgPSBub2RlLnN0YXJ0OworCQl1bnNpZ25lZCBw YWdlX29mZnNldCA9IG9mZnNldF9pbl9wYWdlKG9mZnNldCk7CisJCXVuc2lnbmVkIHBhZ2VfbGVu Z3RoID0gUEFHRV9TSVpFIC0gcGFnZV9vZmZzZXQ7CisJCXBhZ2VfbGVuZ3RoID0gcmVtYWluIDwg cGFnZV9sZW5ndGggPyByZW1haW4gOiBwYWdlX2xlbmd0aDsKKwkJaWYgKG5vZGUuYWxsb2NhdGVk KSB7CisJCQl3bWIoKTsKKwkJCWRldl9wcml2LT5ndHQuYmFzZS5pbnNlcnRfcGFnZSgmZGV2X3By aXYtPmd0dC5iYXNlLAorCQkJCQkJICAgICAgIGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hX2FkZHJl c3Mob2JqLCBvZmZzZXQgPj4gUEFHRV9TSElGVCksCisJCQkJCQkgICAgICAgbm9kZS5zdGFydCwK KwkJCQkJCSAgICAgICBJOTE1X0NBQ0hFX05PTkUsIDApOworCQkJd21iKCk7CisJCX0gZWxzZSB7 CisJCQlwYWdlX2Jhc2UgKz0gb2Zmc2V0ICYgUEFHRV9NQVNLOworCQl9CisJCS8qIFRoaXMgaXMg YSBzbG93IHJlYWQvd3JpdGUgYXMgaXQgdHJpZXMgdG8gcmVhZCBmcm9tCisJCSAqIGFuZCB3cml0 ZSB0byB1c2VyIG1lbW9yeSB3aGljaCBtYXkgcmVzdWx0IGludG8gcGFnZQorCQkgKiBmYXVsdHMs IGFuZCBzbyB3ZSBjYW5ub3QgcGVyZm9ybSB0aGlzIHVuZGVyIHN0cnVjdF9tdXRleC4KKwkJICov CisJCWlmIChzbG93X3VzZXJfYWNjZXNzKGRldl9wcml2LT5ndHQubWFwcGFibGUsIHBhZ2VfYmFz ZSwKKwkJCQkgICAgIHBhZ2Vfb2Zmc2V0LCB1c2VyX2RhdGEsCisJCQkJICAgICBwYWdlX2xlbmd0 aCwgZmFsc2UpKSB7CisJCQlyZXQgPSAtRUZBVUxUOworCQkJYnJlYWs7CisJCX0KKworCQlyZW1h aW4gLT0gcGFnZV9sZW5ndGg7CisJCXVzZXJfZGF0YSArPSBwYWdlX2xlbmd0aDsKKwkJb2Zmc2V0 ICs9IHBhZ2VfbGVuZ3RoOworCX0KKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK KwlXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKSk7 CisKK291dF91bnBpbjoKKwlpZiAobm9kZS5hbGxvY2F0ZWQpIHsKKwkJd21iKCk7CisJCWRldl9w cml2LT5ndHQuYmFzZS5jbGVhcl9yYW5nZSgmZGV2X3ByaXYtPmd0dC5iYXNlLAorCQkJCQkgICAg ICAgbm9kZS5zdGFydCwgbm9kZS5zaXplLAorCQkJCQkgICAgICAgdHJ1ZSk7CisJCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9wYWdlcyhvYmopOworCQlyZW1vdmVfbWFwcGFibGVfbm9kZSgmbm9kZSk7 CisJfSBlbHNlIHsKKwkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4ob2JqKTsKKwl9CitvdXQ6 CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludAogaTkxNV9nZW1fc2htZW1fcHJlYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLApAQCAtNjYyLDYgKzc4OCw5IEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJaW50IG5lZWRzX2NsZmx1c2ggPSAwOwogCXN0cnVjdCBzZ19wYWdlX2l0 ZXIgc2dfaXRlcjsKIAorCWlmICghb2JqLT5iYXNlLmZpbHApCisJCXJldHVybiAtRU5PREVWOwor CiAJdXNlcl9kYXRhID0gdG9fdXNlcl9wdHIoYXJncy0+ZGF0YV9wdHIpOwogCXJlbWFpbiA9IGFy Z3MtPnNpemU7CiAKQEAgLTc3MCwxOCArODk5LDE1IEBAIGk5MTVfZ2VtX3ByZWFkX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWdvdG8gb3V0OwogCX0KIAotCS8q IHByaW1lIG9iamVjdHMgaGF2ZSBubyBiYWNraW5nIGZpbHAgdG8gR0VNIHByZWFkL3B3cml0ZQot CSAqIHBhZ2VzIGZyb20uCi0JICovCi0JaWYgKCFvYmotPmJhc2UuZmlscCkgewotCQlyZXQgPSAt RUlOVkFMOwotCQlnb3RvIG91dDsKLQl9Ci0KIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfcHJlYWQo b2JqLCBhcmdzLT5vZmZzZXQsIGFyZ3MtPnNpemUpOwogCiAJcmV0ID0gaTkxNV9nZW1fc2htZW1f cHJlYWQoZGV2LCBvYmosIGFyZ3MsIGZpbGUpOwogCisJLyogcHJlYWQgZm9yIG5vbiBzaG1lbSBi YWNrZWQgb2JqZWN0cyAqLworCWlmIChyZXQgPT0gLUVGQVVMVCB8fCByZXQgPT0gLUVOT0RFVikK KwkJcmV0ID0gaTkxNV9nZW1fZ3R0X2NvcHkoZGV2LCBvYmosIGFyZ3MtPnNpemUsCisJCQkJCWFy Z3MtPm9mZnNldCwgYXJncy0+ZGF0YV9wdHIpOworCiBvdXQ6CiAJZHJtX2dlbV9vYmplY3RfdW5y ZWZlcmVuY2UoJm9iai0+YmFzZSk7CiB1bmxvY2s6CkBAIC04MjIsMTAgKzk0OCwxNSBAQCBpOTE1 X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkg c3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUgKmFyZ3MsCiAJCQkgc3RydWN0IGRybV9maWxlICpm aWxlKQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCXN0cnVj dCBkcm1fbW1fbm9kZSBub2RlOwogCXVpbnQ2NF90IHJlbWFpbiwgb2Zmc2V0OwogCWNoYXIgX191 c2VyICp1c2VyX2RhdGE7CiAJaW50IHJldDsKKwlib29sIGhpdF9zbG93X3BhdGggPSBmYWxzZTsK KworCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJCXJldHVybiAt RUZBVUxUOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKG9iaiwgMCwgUElOX01BUFBB QkxFIHwgUElOX05PTkJMT0NLKTsKIAlpZiAocmV0KSB7CkBAIC04ODQsMTEgKzEwMTUsMjMgQEAg aTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAog CQkvKiBJZiB3ZSBnZXQgYSBmYXVsdCB3aGlsZSBjb3B5aW5nIGRhdGEsIHRoZW4gKHByZXN1bWFi bHkpIG91cgogCQkgKiBzb3VyY2UgcGFnZSBpc24ndCBhdmFpbGFibGUuICBSZXR1cm4gdGhlIGVy cm9yIGFuZCB3ZSdsbAogCQkgKiByZXRyeSBpbiB0aGUgc2xvdyBwYXRoLgorCQkgKiBJZiB0aGUg b2JqZWN0IGlzIG5vbi1zaG1lbSBiYWNrZWQsIHdlIHJldHJ5IGFnYWluIHdpdGggdGhlCisJCSAq IHBhdGggdGhhdCBoYW5kbGVzIHBhZ2UgZmF1bHQuCiAJCSAqLwogCQlpZiAoZmFzdF91c2VyX3dy aXRlKGk5MTUtPmd0dC5tYXBwYWJsZSwgcGFnZV9iYXNlLAogCQkJCSAgICBwYWdlX29mZnNldCwg dXNlcl9kYXRhLCBwYWdlX2xlbmd0aCkpIHsKLQkJCXJldCA9IC1FRkFVTFQ7Ci0JCQlnb3RvIG91 dF9mbHVzaDsKKwkJCWhpdF9zbG93X3BhdGggPSB0cnVlOworCQkJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CisJCQlpZiAoc2xvd191c2VyX2FjY2VzcyhpOTE1LT5ndHQubWFwcGFi bGUsCisJCQkJCSAgICAgcGFnZV9iYXNlLAorCQkJCQkgICAgIHBhZ2Vfb2Zmc2V0LCB1c2VyX2Rh dGEsCisJCQkJCSAgICAgcGFnZV9sZW5ndGgsIHRydWUpKSB7CisJCQkJcmV0ID0gLUVGQVVMVDsK KwkJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCQkJZ290byBvdXRfZmx1c2g7 CisJCQl9CisKKwkJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAkJfQogCiAJCXJl bWFpbiAtPSBwYWdlX2xlbmd0aDsKQEAgLTg5Nyw2ICsxMDQwLDkgQEAgaTkxNV9nZW1fZ3R0X3B3 cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCX0KIAogb3V0X2ZsdXNo OgorCWlmIChoaXRfc2xvd19wYXRoKQorCQlXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9zZXRfdG9f Z3R0X2RvbWFpbihvYmosIHRydWUpKTsKKwogCWludGVsX2ZiX29ial9mbHVzaChvYmosIGZhbHNl LCBPUklHSU5fR1RUKTsKIG91dF91bnBpbjoKIAlpZiAobm9kZS5hbGxvY2F0ZWQpIHsKQEAgLTEx NTMsMTQgKzEyOTksNiBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAkJZ290byBvdXQ7CiAJfQogCi0JLyogcHJpbWUgb2JqZWN0cyBo YXZlIG5vIGJhY2tpbmcgZmlscCB0byBHRU0gcHJlYWQvcHdyaXRlCi0JICogcGFnZXMgZnJvbS4K LQkgKi8KLQlpZiAoIW9iai0+YmFzZS5maWxwKSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8g b3V0OwotCX0KLQogCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9wd3JpdGUob2JqLCBhcmdzLT5vZmZz ZXQsIGFyZ3MtPnNpemUpOwogCiAJcmV0ID0gLUVGQVVMVDsKQEAgLTExNzAsOSArMTMwOCw3IEBA IGk5MTVfZ2VtX3B3cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCSAqIHByZWFkL3B3cml0ZSBjdXJyZW50bHkgYXJlIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJv bSB0aGUgQ1BVCiAJICogcGVyc3BlY3RpdmUsIHJlcXVpcmluZyBtYW51YWwgZGV0aWxpbmcgYnkg dGhlIGNsaWVudC4KIAkgKi8KLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19O T05FICYmCi0JICAgIG9iai0+YmFzZS53cml0ZV9kb21haW4gIT0gSTkxNV9HRU1fRE9NQUlOX0NQ VSAmJgotCSAgICBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChvYmopKSB7CisJaWYgKCFvYmotPmJh c2UuZmlscCB8fCBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChvYmopKSB7CiAJCXJldCA9IGk5MTVf Z2VtX2d0dF9wd3JpdGVfZmFzdChkZXZfcHJpdiwgb2JqLCBhcmdzLCBmaWxlKTsKIAkJLyogTm90 ZSB0aGF0IHRoZSBndHQgcGF0aHMgbWlnaHQgZmFpbCB3aXRoIG5vbi1wYWdlLWJhY2tlZCB1c2Vy CiAJCSAqIHBvaW50ZXJzIChlLmcuIGd0dCBtYXBwaW5ncyB3aGVuIG1vdmluZyBkYXRhIGJldHdl ZW4KQEAgLTExODIsOCArMTMxOCwxMCBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAocmV0ID09IC1FRkFVTFQgfHwgcmV0ID09 IC1FTk9TUEMpIHsKIAkJaWYgKG9iai0+cGh5c19oYW5kbGUpCiAJCQlyZXQgPSBpOTE1X2dlbV9w aHlzX3B3cml0ZShvYmosIGFyZ3MsIGZpbGUpOwotCQllbHNlCisJCWVsc2UgaWYgKG9iai0+YmFz ZS5maWxwKQogCQkJcmV0ID0gaTkxNV9nZW1fc2htZW1fcHdyaXRlKGRldiwgb2JqLCBhcmdzLCBm aWxlKTsKKwkJZWxzZQorCQkJcmV0ID0gLUVOT0RFVjsKIAl9CiAKIG91dDoKQEAgLTM5ODAsOSAr NDExOCw3IEBAIG91dDoKIAkgKiBvYmplY3QgaXMgbm93IGNvaGVyZW50IGF0IGl0cyBuZXcgY2Fj aGUgbGV2ZWwgKHdpdGggcmVzcGVjdAogCSAqIHRvIHRoZSBhY2Nlc3MgZG9tYWluKS4KIAkgKi8K LQlpZiAob2JqLT5jYWNoZV9kaXJ0eSAmJgotCSAgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9 IEk5MTVfR0VNX0RPTUFJTl9DUFUgJiYKLQkgICAgY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2Jq KSkgeworCWlmIChvYmotPmNhY2hlX2RpcnR5ICYmIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9i aikpIHsKIAkJaWYgKGk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaiwgdHJ1ZSkpCiAJCQlpOTE1 X2dlbV9jaGlwc2V0X2ZsdXNoKG9iai0+YmFzZS5kZXYpOwogCX0KLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=