From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 08/11] drm/i915: Support for pread/pwrite from/to non shmem backed objects Date: Tue, 31 May 2016 11:49:21 +0530 Message-ID: <1464675564-11988-9-git-send-email-ankitprasad.r.sharma@intel.com> References: <1464675564-11988-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 F3E516E223 for ; Tue, 31 May 2016 06:45:23 +0000 (UTC) In-Reply-To: <1464675564-11988-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, 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 Y2Nlc3MgdG9vIChDaHJpcykKCnYxMzogSGFuZGxlZCBFRkFVTFQsIEF2b2lkIHVzZSBvZiBXQVJO X09OLCBwdXRfZmVuY2Ugb25seSBpZiB3aG9sZSBvYmoKcGlubmVkIChDaHJpcykKCnYxNDogQ29y cmVjdGVkIGRhdGF0eXBlcy9pbml0aWFsaXphdGlvbnMgKFR2cnRrbykKClRlc3RjYXNlOiBpZ3Qv Z2VtX3N0b2xlbiwgaWd0L2dlbV9wcmVhZCwgaWd0L2dlbV9wd3JpdGUKClNpZ25lZC1vZmYtYnk6 IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgpSZXZp ZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIHwgMjE4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwg MzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggOTgwNjI0YS4uZmNh M2Y2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC01NCw2ICs1NCw5IEBAIHN0YXRpYyBi b29sIGNwdV9jYWNoZV9pc19jb2hlcmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiBzdGF0 aWMgYm9vbCBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogeworCWlmIChvYmotPmJhc2Uud3JpdGVfZG9tYWluID09IEk5MTVfR0VNX0RPTUFJ Tl9DUFUpCisJCXJldHVybiBmYWxzZTsKKwogCWlmICghY3B1X2NhY2hlX2lzX2NvaGVyZW50KG9i ai0+YmFzZS5kZXYsIG9iai0+Y2FjaGVfbGV2ZWwpKQogCQlyZXR1cm4gdHJ1ZTsKIApAQCAtNjQx LDYgKzY0NCwxNDIgQEAgc2htZW1fcHJlYWRfc2xvdyhzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHNo bWVtX3BhZ2Vfb2Zmc2V0LCBpbnQgcGFnZV9sZW5ndGgsCiAJcmV0dXJuIHJldCA/IC0gRUZBVUxU IDogMDsKIH0KIAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCitzbG93X3VzZXJfYWNjZXNz KHN0cnVjdCBpb19tYXBwaW5nICptYXBwaW5nLAorCQkgdWludDY0X3QgcGFnZV9iYXNlLCBpbnQg cGFnZV9vZmZzZXQsCisJCSBjaGFyIF9fdXNlciAqdXNlcl9kYXRhLAorCQkgdW5zaWduZWQgbG9u ZyBsZW5ndGgsIGJvb2wgcHdyaXRlKQoreworCXZvaWQgX19pb21lbSAqaW9hZGRyOworCXZvaWQg KnZhZGRyOworCXVpbnQ2NF90IHVud3JpdHRlbjsKKworCWlvYWRkciA9IGlvX21hcHBpbmdfbWFw X3djKG1hcHBpbmcsIHBhZ2VfYmFzZSwgUEFHRV9TSVpFKTsKKwkvKiBXZSBjYW4gdXNlIHRoZSBj cHUgbWVtIGNvcHkgZnVuY3Rpb24gYmVjYXVzZSB0aGlzIGlzIFg4Ni4gKi8KKwl2YWRkciA9ICh2 b2lkIF9fZm9yY2UgKilpb2FkZHIgKyBwYWdlX29mZnNldDsKKwlpZiAocHdyaXRlKQorCQl1bndy aXR0ZW4gPSBfX2NvcHlfZnJvbV91c2VyKHZhZGRyLCB1c2VyX2RhdGEsIGxlbmd0aCk7CisJZWxz ZQorCQl1bndyaXR0ZW4gPSBfX2NvcHlfdG9fdXNlcih1c2VyX2RhdGEsIHZhZGRyLCBsZW5ndGgp OworCisJaW9fbWFwcGluZ191bm1hcChpb2FkZHIpOworCXJldHVybiB1bndyaXR0ZW47Cit9CisK K3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2d0dF9wcmVhZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1aW50NjRfdCBzaXplLAorCQkg ICB1aW50NjRfdCBkYXRhX29mZnNldCwgdWludDY0X3QgZGF0YV9wdHIpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0OworCXN0cnVjdCBkcm1fbW1fbm9kZSBub2Rl OworCWNoYXIgX191c2VyICp1c2VyX2RhdGE7CisJdWludDY0X3QgcmVtYWluOworCXVpbnQ2NF90 IG9mZnNldDsKKwlpbnQgcmV0OworCisJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKG9iaiwg MCwgUElOX01BUFBBQkxFKTsKKwlpZiAocmV0KSB7CisJCXJldCA9IGluc2VydF9tYXBwYWJsZV9u b2RlKGRldl9wcml2LCAmbm9kZSwgUEFHRV9TSVpFKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gb3V0 OworCisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKKwkJaWYgKHJldCkg eworCQkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOworCQkJZ290byBvdXQ7CisJCX0KKwor CQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJfSBlbHNlIHsKKwkJbm9kZS5zdGFy dCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopOworCQlub2RlLmFsbG9jYXRlZCA9IGZh bHNlOworCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7CisJCWlmIChyZXQp CisJCQlnb3RvIG91dF91bnBpbjsKKwl9CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfdW5waW47CisK Kwl1c2VyX2RhdGEgPSB0b191c2VyX3B0cihkYXRhX3B0cik7CisJcmVtYWluID0gc2l6ZTsKKwlv ZmZzZXQgPSBkYXRhX29mZnNldDsKKworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OworCWlmIChsaWtlbHkoIWk5MTUucHJlZmF1bHRfZGlzYWJsZSkpIHsKKwkJcmV0ID0gZmF1bHRf aW5fbXVsdGlwYWdlc193cml0ZWFibGUodXNlcl9kYXRhLCByZW1haW4pOworCQlpZiAocmV0KSB7 CisJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCQlnb3RvIG91dF91bnBpbjsK KwkJfQorCX0KKworCXdoaWxlIChyZW1haW4gPiAwKSB7CisJCS8qIE9wZXJhdGlvbiBpbiB0aGlz IHBhZ2UKKwkJICoKKwkJICogcGFnZV9iYXNlID0gcGFnZSBvZmZzZXQgd2l0aGluIGFwZXJ0dXJl CisJCSAqIHBhZ2Vfb2Zmc2V0ID0gb2Zmc2V0IHdpdGhpbiBwYWdlCisJCSAqIHBhZ2VfbGVuZ3Ro ID0gYnl0ZXMgdG8gY29weSBmb3IgdGhpcyBwYWdlCisJCSAqLworCQl1MzIgcGFnZV9iYXNlID0g bm9kZS5zdGFydDsKKwkJdW5zaWduZWQgcGFnZV9vZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShvZmZz ZXQpOworCQl1bnNpZ25lZCBwYWdlX2xlbmd0aCA9IFBBR0VfU0laRSAtIHBhZ2Vfb2Zmc2V0Owor CQlwYWdlX2xlbmd0aCA9IHJlbWFpbiA8IHBhZ2VfbGVuZ3RoID8gcmVtYWluIDogcGFnZV9sZW5n dGg7CisJCWlmIChub2RlLmFsbG9jYXRlZCkgeworCQkJd21iKCk7CisJCQlnZ3R0LT5iYXNlLmlu c2VydF9wYWdlKCZnZ3R0LT5iYXNlLAorCQkJCQkgICAgICAgaTkxNV9nZW1fb2JqZWN0X2dldF9k bWFfYWRkcmVzcyhvYmosIG9mZnNldCA+PiBQQUdFX1NISUZUKSwKKwkJCQkJICAgICAgIG5vZGUu c3RhcnQsCisJCQkJCSAgICAgICBJOTE1X0NBQ0hFX05PTkUsIDApOworCQkJd21iKCk7CisJCX0g ZWxzZSB7CisJCQlwYWdlX2Jhc2UgKz0gb2Zmc2V0ICYgUEFHRV9NQVNLOworCQl9CisJCS8qIFRo aXMgaXMgYSBzbG93IHJlYWQvd3JpdGUgYXMgaXQgdHJpZXMgdG8gcmVhZCBmcm9tCisJCSAqIGFu ZCB3cml0ZSB0byB1c2VyIG1lbW9yeSB3aGljaCBtYXkgcmVzdWx0IGludG8gcGFnZQorCQkgKiBm YXVsdHMsIGFuZCBzbyB3ZSBjYW5ub3QgcGVyZm9ybSB0aGlzIHVuZGVyIHN0cnVjdF9tdXRleC4K KwkJICovCisJCWlmIChzbG93X3VzZXJfYWNjZXNzKGdndHQtPm1hcHBhYmxlLCBwYWdlX2Jhc2Us CisJCQkJICAgICBwYWdlX29mZnNldCwgdXNlcl9kYXRhLAorCQkJCSAgICAgcGFnZV9sZW5ndGgs IGZhbHNlKSkgeworCQkJcmV0ID0gLUVGQVVMVDsKKwkJCWJyZWFrOworCQl9CisKKwkJcmVtYWlu IC09IHBhZ2VfbGVuZ3RoOworCQl1c2VyX2RhdGEgKz0gcGFnZV9sZW5ndGg7CisJCW9mZnNldCAr PSBwYWdlX2xlbmd0aDsKKwl9CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJ aWYgKHJldCA9PSAwICYmIChvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlO X0dUVCkgPT0gMCkgeworCQkvKiBUaGUgdXNlciBoYXMgbW9kaWZpZWQgdGhlIG9iamVjdCB3aGls c3Qgd2UgdHJpZWQKKwkJICogcmVhZGluZyBmcm9tIGl0LCBhbmQgd2Ugbm93IGhhdmUgbm8gaWRl YSB3aGF0IGRvbWFpbgorCQkgKiB0aGUgcGFnZXMgc2hvdWxkIGJlIGluLiBBcyB3ZSBoYXZlIGp1 c3QgYmVlbiB0b3VjaGluZworCQkgKiB0aGVtIGRpcmVjdGx5LCBmbHVzaCBldmVyeXRoaW5nIGJh Y2sgdG8gdGhlIEdUVAorCQkgKiBkb21haW4uCisJCSAqLworCQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJfQorCitvdXRfdW5waW46CisJaWYg KG5vZGUuYWxsb2NhdGVkKSB7CisJCXdtYigpOworCQlnZ3R0LT5iYXNlLmNsZWFyX3JhbmdlKCZn Z3R0LT5iYXNlLAorCQkJCSAgICAgICBub2RlLnN0YXJ0LCBub2RlLnNpemUsCisJCQkJICAgICAg IHRydWUpOworCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwkJcmVtb3ZlX21h cHBhYmxlX25vZGUoJm5vZGUpOworCX0gZWxzZSB7CisJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3Vu cGluKG9iaik7CisJfQorb3V0OgorCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbnQKIGk5MTVf Z2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKQEAgLTY1Niw2ICs3OTUsOSBAQCBpOTE1X2dlbV9zaG1l bV9wcmVhZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWludCBuZWVkc19jbGZsdXNoID0gMDsK IAlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7CiAKKwlpZiAoIW9iai0+YmFzZS5maWxwKQor CQlyZXR1cm4gLUVOT0RFVjsKKwogCXVzZXJfZGF0YSA9IHRvX3VzZXJfcHRyKGFyZ3MtPmRhdGFf cHRyKTsKIAlyZW1haW4gPSBhcmdzLT5zaXplOwogCkBAIC03NjQsMTggKzkwNiwxNSBAQCBpOTE1 X2dlbV9wcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQln b3RvIG91dDsKIAl9CiAKLQkvKiBwcmltZSBvYmplY3RzIGhhdmUgbm8gYmFja2luZyBmaWxwIHRv IEdFTSBwcmVhZC9wd3JpdGUKLQkgKiBwYWdlcyBmcm9tLgotCSAqLwotCWlmICghb2JqLT5iYXNl LmZpbHApIHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7Ci0JfQotCiAJdHJhY2VfaTkx NV9nZW1fb2JqZWN0X3ByZWFkKG9iaiwgYXJncy0+b2Zmc2V0LCBhcmdzLT5zaXplKTsKIAogCXJl dCA9IGk5MTVfZ2VtX3NobWVtX3ByZWFkKGRldiwgb2JqLCBhcmdzLCBmaWxlKTsKIAorCS8qIHBy ZWFkIGZvciBub24gc2htZW0gYmFja2VkIG9iamVjdHMgKi8KKwlpZiAocmV0ID09IC1FRkFVTFQg fHwgcmV0ID09IC1FTk9ERVYpCisJCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVhZChkZXYsIG9iaiwg YXJncy0+c2l6ZSwKKwkJCQkJYXJncy0+b2Zmc2V0LCBhcmdzLT5kYXRhX3B0cik7CisKIG91dDoK IAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKIHVubG9jazoKQEAgLTgx NywxMCArOTU2LDE1IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGk5 MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBv YmotPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1fbW1fbm9kZSBub2RlOwogCXVpbnQ2NF90IHJlbWFp biwgb2Zmc2V0OwogCWNoYXIgX191c2VyICp1c2VyX2RhdGE7CiAJaW50IHJldDsKKwlib29sIGhp dF9zbG93X3BhdGggPSBmYWxzZTsKKworCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElM SU5HX05PTkUpCisJCXJldHVybiAtRUZBVUxUOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRf cGluKG9iaiwgMCwgUElOX01BUFBBQkxFIHwgUElOX05PTkJMT0NLKTsKIAlpZiAocmV0KSB7CkBA IC04MzgsMTYgKzk4MiwxNSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJfSBlbHNlIHsKIAkJbm9kZS5zdGFydCA9IGk5MTVfZ2VtX29i al9nZ3R0X29mZnNldChvYmopOwogCQlub2RlLmFsbG9jYXRlZCA9IGZhbHNlOworCQlyZXQgPSBp OTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dF91 bnBpbjsKIAl9CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2Jq LCB0cnVlKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF91bnBpbjsKIAotCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9wdXRfZmVuY2Uob2JqKTsKLQlpZiAocmV0KQotCQlnb3RvIG91dF91bnBpbjsKLQog CWludGVsX2ZiX29ial9pbnZhbGlkYXRlKG9iaiwgT1JJR0lOX0dUVCk7CiAJb2JqLT5kaXJ0eSA9 IHRydWU7CiAKQEAgLTg3NywxMSArMTAyMCwyMyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCS8qIElmIHdlIGdldCBhIGZhdWx0IHdo aWxlIGNvcHlpbmcgZGF0YSwgdGhlbiAocHJlc3VtYWJseSkgb3VyCiAJCSAqIHNvdXJjZSBwYWdl IGlzbid0IGF2YWlsYWJsZS4gIFJldHVybiB0aGUgZXJyb3IgYW5kIHdlJ2xsCiAJCSAqIHJldHJ5 IGluIHRoZSBzbG93IHBhdGguCisJCSAqIElmIHRoZSBvYmplY3QgaXMgbm9uLXNobWVtIGJhY2tl ZCwgd2UgcmV0cnkgYWdhaW4gd2l0aCB0aGUKKwkJICogcGF0aCB0aGF0IGhhbmRsZXMgcGFnZSBm YXVsdC4KIAkJICovCiAJCWlmIChmYXN0X3VzZXJfd3JpdGUoZ2d0dC0+bWFwcGFibGUsIHBhZ2Vf YmFzZSwKIAkJCQkgICAgcGFnZV9vZmZzZXQsIHVzZXJfZGF0YSwgcGFnZV9sZW5ndGgpKSB7Ci0J CQlyZXQgPSAtRUZBVUxUOwotCQkJZ290byBvdXRfZmx1c2g7CisJCQloaXRfc2xvd19wYXRoID0g dHJ1ZTsKKwkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQkJaWYgKHNsb3df dXNlcl9hY2Nlc3MoZ2d0dC0+bWFwcGFibGUsCisJCQkJCSAgICAgcGFnZV9iYXNlLAorCQkJCQkg ICAgIHBhZ2Vfb2Zmc2V0LCB1c2VyX2RhdGEsCisJCQkJCSAgICAgcGFnZV9sZW5ndGgsIHRydWUp KSB7CisJCQkJcmV0ID0gLUVGQVVMVDsKKwkJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7CisJCQkJZ290byBvdXRfZmx1c2g7CisJCQl9CisKKwkJCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKIAkJfQogCiAJCXJlbWFpbiAtPSBwYWdlX2xlbmd0aDsKQEAgLTg5MCw2ICsx MDQ1LDE5IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIAl9CiAKIG91dF9mbHVzaDoKKwlpZiAoaGl0X3Nsb3dfcGF0aCkgeworCQlpZiAo cmV0ID09IDAgJiYKKwkJICAgIChvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9N QUlOX0dUVCkgPT0gMCkgeworCQkJLyogVGhlIHVzZXIgaGFzIG1vZGlmaWVkIHRoZSBvYmplY3Qg d2hpbHN0IHdlIHRyaWVkCisJCQkgKiByZWFkaW5nIGZyb20gaXQsIGFuZCB3ZSBub3cgaGF2ZSBu byBpZGVhIHdoYXQgZG9tYWluCisJCQkgKiB0aGUgcGFnZXMgc2hvdWxkIGJlIGluLiBBcyB3ZSBo YXZlIGp1c3QgYmVlbiB0b3VjaGluZworCQkJICogdGhlbSBkaXJlY3RseSwgZmx1c2ggZXZlcnl0 aGluZyBiYWNrIHRvIHRoZSBHVFQKKwkJCSAqIGRvbWFpbi4KKwkJCSAqLworCQkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCQl9CisJfQorCiAJ aW50ZWxfZmJfb2JqX2ZsdXNoKG9iaiwgZmFsc2UsIE9SSUdJTl9HVFQpOwogb3V0X3VucGluOgog CWlmIChub2RlLmFsbG9jYXRlZCkgewpAQCAtMTE0NiwxNCArMTMxNCw2IEBAIGk5MTVfZ2VtX3B3 cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlnb3RvIG91 dDsKIAl9CiAKLQkvKiBwcmltZSBvYmplY3RzIGhhdmUgbm8gYmFja2luZyBmaWxwIHRvIEdFTSBw cmVhZC9wd3JpdGUKLQkgKiBwYWdlcyBmcm9tLgotCSAqLwotCWlmICghb2JqLT5iYXNlLmZpbHAp IHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7Ci0JfQotCiAJdHJhY2VfaTkxNV9nZW1f b2JqZWN0X3B3cml0ZShvYmosIGFyZ3MtPm9mZnNldCwgYXJncy0+c2l6ZSk7CiAKIAlyZXQgPSAt RUZBVUxUOwpAQCAtMTE2MywyMCArMTMyMywyMCBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkgKiBwcmVhZC9wd3JpdGUgY3VycmVu dGx5IGFyZSByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20gdGhlIENQVQogCSAqIHBlcnNwZWN0aXZl LCByZXF1aXJpbmcgbWFudWFsIGRldGlsaW5nIGJ5IHRoZSBjbGllbnQuCiAJICovCi0JaWYgKG9i ai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSAmJgotCSAgICBvYmotPmJhc2Uud3Jp dGVfZG9tYWluICE9IEk5MTVfR0VNX0RPTUFJTl9DUFUgJiYKLQkgICAgY3B1X3dyaXRlX25lZWRz X2NsZmx1c2gob2JqKSkgeworCWlmICghb2JqLT5iYXNlLmZpbHAgfHwgY3B1X3dyaXRlX25lZWRz X2NsZmx1c2gob2JqKSkgewogCQlyZXQgPSBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3QoZGV2X3By aXYsIG9iaiwgYXJncywgZmlsZSk7CiAJCS8qIE5vdGUgdGhhdCB0aGUgZ3R0IHBhdGhzIG1pZ2h0 IGZhaWwgd2l0aCBub24tcGFnZS1iYWNrZWQgdXNlcgogCQkgKiBwb2ludGVycyAoZS5nLiBndHQg bWFwcGluZ3Mgd2hlbiBtb3ZpbmcgZGF0YSBiZXR3ZWVuCiAJCSAqIHRleHR1cmVzKS4gRmFsbGJh Y2sgdG8gdGhlIHNobWVtIHBhdGggaW4gdGhhdCBjYXNlLiAqLwogCX0KIAotCWlmIChyZXQgPT0g LUVGQVVMVCB8fCByZXQgPT0gLUVOT1NQQykgeworCWlmIChyZXQgPT0gLUVGQVVMVCkgewogCQlp ZiAob2JqLT5waHlzX2hhbmRsZSkKIAkJCXJldCA9IGk5MTVfZ2VtX3BoeXNfcHdyaXRlKG9iaiwg YXJncywgZmlsZSk7Ci0JCWVsc2UKKwkJZWxzZSBpZiAob2JqLT5iYXNlLmZpbHApCiAJCQlyZXQg PSBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoZGV2LCBvYmosIGFyZ3MsIGZpbGUpOworCQllbHNlCisJ CQlyZXQgPSAtRU5PREVWOwogCX0KIAogb3V0OgpAQCAtNDAwNyw5ICs0MTY3LDcgQEAgb3V0Ogog CSAqIG9iamVjdCBpcyBub3cgY29oZXJlbnQgYXQgaXRzIG5ldyBjYWNoZSBsZXZlbCAod2l0aCBy ZXNwZWN0CiAJICogdG8gdGhlIGFjY2VzcyBkb21haW4pLgogCSAqLwotCWlmIChvYmotPmNhY2hl X2RpcnR5ICYmCi0JICAgIG9iai0+YmFzZS53cml0ZV9kb21haW4gIT0gSTkxNV9HRU1fRE9NQUlO X0NQVSAmJgotCSAgICBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChvYmopKSB7CisJaWYgKG9iai0+ Y2FjaGVfZGlydHkgJiYgY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2JqKSkgewogCQlpZiAoaTkx NV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCB0cnVlKSkKIAkJCWk5MTVfZ2VtX2NoaXBzZXRfZmx1 c2godG9faTkxNShvYmotPmJhc2UuZGV2KSk7CiAJfQotLSAKMS45LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=