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: Thu, 14 Jan 2016 11:46:44 +0530 Message-ID: <1452752207-30382-9-git-send-email-ankitprasad.r.sharma@intel.com> References: <1452752207-30382-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 8FCDD720D0 for ; Wed, 13 Jan 2016 22:38:45 -0800 (PST) In-Reply-To: <1452752207-30382-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 b3VzIGl0ZXJhdGlvbgoKVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCgpTaWduZWQtb2ZmLWJ5OiBB bmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIHwgMTU1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwg MjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNzY0MmIxYi4uYWIx ZDA0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC01NSw2ICs1NSw5IEBAIHN0YXRpYyBi b29sIGNwdV9jYWNoZV9pc19jb2hlcmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiBzdGF0 aWMgYm9vbCBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogeworCWlmIChvYmotPmJhc2Uud3JpdGVfZG9tYWluID09IEk5MTVfR0VNX0RPTUFJ Tl9DUFUpCisJCXJldHVybiBmYWxzZTsKKwogCWlmICghY3B1X2NhY2hlX2lzX2NvaGVyZW50KG9i ai0+YmFzZS5kZXYsIG9iai0+Y2FjaGVfbGV2ZWwpKQogCQlyZXR1cm4gdHJ1ZTsKIApAQCAtNjQ2 LDYgKzY0OSw5OSBAQCBzaG1lbV9wcmVhZF9zbG93KHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgc2ht ZW1fcGFnZV9vZmZzZXQsIGludCBwYWdlX2xlbmd0aCwKIAlyZXR1cm4gcmV0ID8gLSBFRkFVTFQg OiAwOwogfQogCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90CitzbG93X3VzZXJfYWNjZXNzKHN0cnVj dCBpb19tYXBwaW5nICptYXBwaW5nLAorCQkgdWludDY0X3QgcGFnZV9iYXNlLCBpbnQgcGFnZV9v ZmZzZXQsCisJCSBjaGFyIF9fdXNlciAqdXNlcl9kYXRhLAorCQkgaW50IGxlbmd0aCwgYm9vbCBw d3JpdGUpCit7CisJdm9pZCBfX2lvbWVtICp2YWRkcl9pbmF0b21pYzsKKwl2b2lkICp2YWRkcjsK Kwl1aW50NjRfdCB1bndyaXR0ZW47CisKKwl2YWRkcl9pbmF0b21pYyA9IGlvX21hcHBpbmdfbWFw X3djKG1hcHBpbmcsIHBhZ2VfYmFzZSk7CisJLyogV2UgY2FuIHVzZSB0aGUgY3B1IG1lbSBjb3B5 IGZ1bmN0aW9uIGJlY2F1c2UgdGhpcyBpcyBYODYuICovCisJdmFkZHIgPSAodm9pZCBfX2ZvcmNl ICopdmFkZHJfaW5hdG9taWMgKyBwYWdlX29mZnNldDsKKwlpZiAocHdyaXRlKQorCQl1bndyaXR0 ZW4gPSBfX2NvcHlfZnJvbV91c2VyKHZhZGRyLCB1c2VyX2RhdGEsIGxlbmd0aCk7CisJZWxzZQor CQl1bndyaXR0ZW4gPSBfX2NvcHlfdG9fdXNlcih1c2VyX2RhdGEsIHZhZGRyLCBsZW5ndGgpOwor CisJaW9fbWFwcGluZ191bm1hcCh2YWRkcl9pbmF0b21pYyk7CisJcmV0dXJuIHVud3JpdHRlbjsK K30KKworc3RhdGljIGludAoraTkxNV9nZW1fZ3R0X2NvcHkoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdWludDY0X3Qgc2l6ZSwK KwkJICAgdWludDY0X3QgZGF0YV9vZmZzZXQsIHVpbnQ2NF90IGRhdGFfcHRyKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJY2hhciBf X3VzZXIgKnVzZXJfZGF0YTsKKwl1aW50NjRfdCByZW1haW47CisJdWludDY0X3Qgb2Zmc2V0LCBw YWdlX2Jhc2U7CisJaW50IHBhZ2Vfb2Zmc2V0LCBwYWdlX2xlbmd0aCwgcmV0ID0gMDsKKworCXJl dCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihvYmosIDAsIFBJTl9NQVBQQUJMRSk7CisJaWYgKHJl dCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21h aW4ob2JqLCBmYWxzZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfdW5waW47CisKKwlyZXQgPSBp OTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7CisJaWYgKHJldCkKKwkJZ290byBvdXRfdW5w aW47CisKKwl1c2VyX2RhdGEgPSB0b191c2VyX3B0cihkYXRhX3B0cik7CisJcmVtYWluID0gc2l6 ZTsKKwlvZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGRhdGFfb2Zmc2V0 OworCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKGxpa2VseSghaTkx NS5wcmVmYXVsdF9kaXNhYmxlKSkKKwkJcmV0ID0gZmF1bHRfaW5fbXVsdGlwYWdlc193cml0ZWFi bGUodXNlcl9kYXRhLCByZW1haW4pOworCisJLyoKKwkgKiBwYWdlX29mZnNldCA9IG9mZnNldCB3 aXRoaW4gcGFnZQorCSAqIHBhZ2VfYmFzZSA9IHBhZ2Ugb2Zmc2V0IHdpdGhpbiBhcGVydHVyZQor CSAqLworCXBhZ2Vfb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2Uob2Zmc2V0KTsKKwlwYWdlX2Jhc2Ug PSBvZmZzZXQgJiBQQUdFX01BU0s7CisKKwl3aGlsZSAocmVtYWluID4gMCkgeworCQkvKiBwYWdl X2xlbmd0aCA9IGJ5dGVzIHRvIGNvcHkgZm9yIHRoaXMgcGFnZSAqLworCQlwYWdlX2xlbmd0aCA9 IHJlbWFpbjsKKwkJaWYgKChwYWdlX29mZnNldCArIHJlbWFpbikgPiBQQUdFX1NJWkUpCisJCQlw YWdlX2xlbmd0aCA9IFBBR0VfU0laRSAtIHBhZ2Vfb2Zmc2V0OworCisJCS8qIFRoaXMgaXMgYSBz bG93IHJlYWQvd3JpdGUgYXMgaXQgdHJpZXMgdG8gcmVhZCBmcm9tCisJCSAqIGFuZCB3cml0ZSB0 byB1c2VyIG1lbW9yeSB3aGljaCBtYXkgcmVzdWx0IGludG8gcGFnZQorCQkgKiBmYXVsdHMKKwkJ ICovCisJCXJldCA9IHNsb3dfdXNlcl9hY2Nlc3MoZGV2X3ByaXYtPmd0dC5tYXBwYWJsZSwgcGFn ZV9iYXNlLAorCQkJCSAgICAgICBwYWdlX29mZnNldCwgdXNlcl9kYXRhLAorCQkJCSAgICAgICBw YWdlX2xlbmd0aCwgZmFsc2UpOworCisJCWlmIChyZXQpIHsKKwkJCXJldCA9IC1FRkFVTFQ7CisJ CQlicmVhazsKKwkJfQorCisJCXJlbWFpbiAtPSBwYWdlX2xlbmd0aDsKKwkJdXNlcl9kYXRhICs9 IHBhZ2VfbGVuZ3RoOworCQlwYWdlX2Jhc2UgKz0gcGFnZV9sZW5ndGg7CisJCXBhZ2Vfb2Zmc2V0 ID0gMDsKKwl9CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKK291dF91bnBp bjoKKwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihvYmopOworb3V0OgorCXJldHVybiByZXQ7 Cit9CisKIHN0YXRpYyBpbnQKIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKQEAgLTc2OSwx NyArODY1LDE0IEBAIGk5MTVfZ2VtX3ByZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCWdvdG8gb3V0OwogCX0KIAotCS8qIHByaW1lIG9iamVjdHMgaGF2ZSBu byBiYWNraW5nIGZpbHAgdG8gR0VNIHByZWFkL3B3cml0ZQotCSAqIHBhZ2VzIGZyb20uCi0JICov Ci0JaWYgKCFvYmotPmJhc2UuZmlscCkgewotCQlyZXQgPSAtRUlOVkFMOwotCQlnb3RvIG91dDsK LQl9Ci0KIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfcHJlYWQob2JqLCBhcmdzLT5vZmZzZXQsIGFy Z3MtPnNpemUpOwogCi0JcmV0ID0gaTkxNV9nZW1fc2htZW1fcHJlYWQoZGV2LCBvYmosIGFyZ3Ms IGZpbGUpOworCS8qIHByZWFkIGZvciBub24gc2htZW0gYmFja2VkIG9iamVjdHMgKi8KKwlpZiAo IW9iai0+YmFzZS5maWxwICYmIG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSkK KwkJcmV0ID0gaTkxNV9nZW1fZ3R0X2NvcHkoZGV2LCBvYmosIGFyZ3MtPnNpemUsCisJCQkJCWFy Z3MtPm9mZnNldCwgYXJncy0+ZGF0YV9wdHIpOworCWVsc2UgaWYgKG9iai0+YmFzZS5maWxwKQor CQlyZXQgPSBpOTE1X2dlbV9zaG1lbV9wcmVhZChkZXYsIG9iaiwgYXJncywgZmlsZSk7CiAKIG91 dDoKIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKQEAgLTgyMSwxMCAr OTE0LDE1IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIAkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3B3cml0ZSAqYXJncywKIAkJCSBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFz ZS5kZXY7CiAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7CiAJdWludDY0X3QgcmVtYWluLCBvZmZz ZXQ7CiAJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKIAlpbnQgcmV0OworCWJvb2wgaGl0X3Nsb3df cGF0aCA9IGZhbHNlOworCisJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9O RSkKKwkJcmV0dXJuIC1FRkFVTFQ7CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2Jq LCAwLCBQSU5fTUFQUEFCTEUgfCBQSU5fTk9OQkxPQ0spOwogCWlmIChyZXQpIHsKQEAgLTg4NCwx MSArOTgyLDIzIEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKIAkJLyogSWYgd2UgZ2V0IGEgZmF1bHQgd2hpbGUgY29weWluZyBkYXRhLCB0 aGVuIChwcmVzdW1hYmx5KSBvdXIKIAkJICogc291cmNlIHBhZ2UgaXNuJ3QgYXZhaWxhYmxlLiAg UmV0dXJuIHRoZSBlcnJvciBhbmQgd2UnbGwKIAkJICogcmV0cnkgaW4gdGhlIHNsb3cgcGF0aC4K KwkJICogSWYgdGhlIG9iamVjdCBpcyBub24tc2htZW0gYmFja2VkLCB3ZSByZXRyeSBhZ2FpbiB3 aXRoIHRoZQorCQkgKiBwYXRoIHRoYXQgaGFuZGxlcyBwYWdlIGZhdWx0LgogCQkgKi8KIAkJaWYg KGZhc3RfdXNlcl93cml0ZShpOTE1LT5ndHQubWFwcGFibGUsIHBhZ2VfYmFzZSwKIAkJCQkgICAg cGFnZV9vZmZzZXQsIHVzZXJfZGF0YSwgcGFnZV9sZW5ndGgpKSB7Ci0JCQlyZXQgPSAtRUZBVUxU OwotCQkJZ290byBvdXRfZmx1c2g7CisJCQloaXRfc2xvd19wYXRoID0gdHJ1ZTsKKwkJCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQkJaWYgKHNsb3dfdXNlcl9hY2Nlc3MoaTkx NS0+Z3R0Lm1hcHBhYmxlLAorCQkJCQkgICAgIHBhZ2VfYmFzZSwKKwkJCQkJICAgICBwYWdlX29m ZnNldCwgdXNlcl9kYXRhLAorCQkJCQkgICAgIHBhZ2VfbGVuZ3RoLCB0cnVlKSkgeworCQkJCXJl dCA9IC1FRkFVTFQ7CisJCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQkJCWdv dG8gb3V0X2ZsdXNoOworCQkJfQorCisJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CiAJCX0KIAogCQlyZW1haW4gLT0gcGFnZV9sZW5ndGg7CkBAIC04OTcsNiArMTAwNyw5IEBAIGk5 MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAl9 CiAKIG91dF9mbHVzaDoKKwlpZiAoaGl0X3Nsb3dfcGF0aCkKKwkJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CisKIAlpbnRlbF9mYl9vYmpfZmx1c2go b2JqLCBmYWxzZSwgT1JJR0lOX0dUVCk7CiBvdXRfdW5waW46CiAJaWYgKG5vZGUuYWxsb2NhdGVk KSB7CkBAIC0xMTU1LDE0ICsxMjY4LDYgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWdvdG8gb3V0OwogCX0KIAotCS8qIHByaW1l IG9iamVjdHMgaGF2ZSBubyBiYWNraW5nIGZpbHAgdG8gR0VNIHByZWFkL3B3cml0ZQotCSAqIHBh Z2VzIGZyb20uCi0JICovCi0JaWYgKCFvYmotPmJhc2UuZmlscCkgewotCQlyZXQgPSAtRUlOVkFM OwotCQlnb3RvIG91dDsKLQl9Ci0KIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfcHdyaXRlKG9iaiwg YXJncy0+b2Zmc2V0LCBhcmdzLT5zaXplKTsKIAogCXJldCA9IC1FRkFVTFQ7CkBAIC0xMTcyLDkg KzEyNzcsNyBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkgKiBwcmVhZC9wd3JpdGUgY3VycmVudGx5IGFyZSByZWFkaW5nIGFuZCB3 cml0aW5nIGZyb20gdGhlIENQVQogCSAqIHBlcnNwZWN0aXZlLCByZXF1aXJpbmcgbWFudWFsIGRl dGlsaW5nIGJ5IHRoZSBjbGllbnQuCiAJICovCi0JaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkx NV9USUxJTkdfTk9ORSAmJgotCSAgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9IEk5MTVfR0VN X0RPTUFJTl9DUFUgJiYKLQkgICAgY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2JqKSkgeworCWlm ICghb2JqLT5iYXNlLmZpbHAgfHwgY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2JqKSkgewogCQly ZXQgPSBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3QoZGV2X3ByaXYsIG9iaiwgYXJncywgZmlsZSk7 CiAJCS8qIE5vdGUgdGhhdCB0aGUgZ3R0IHBhdGhzIG1pZ2h0IGZhaWwgd2l0aCBub24tcGFnZS1i YWNrZWQgdXNlcgogCQkgKiBwb2ludGVycyAoZS5nLiBndHQgbWFwcGluZ3Mgd2hlbiBtb3Zpbmcg ZGF0YSBiZXR3ZWVuCkBAIC0xMTg0LDggKzEyODcsMTAgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCA9PSAtRUZBVUxU IHx8IHJldCA9PSAtRU5PU1BDKSB7CiAJCWlmIChvYmotPnBoeXNfaGFuZGxlKQogCQkJcmV0ID0g aTkxNV9nZW1fcGh5c19wd3JpdGUob2JqLCBhcmdzLCBmaWxlKTsKLQkJZWxzZQorCQllbHNlIGlm IChvYmotPmJhc2UuZmlscCkKIAkJCXJldCA9IGk5MTVfZ2VtX3NobWVtX3B3cml0ZShkZXYsIG9i aiwgYXJncywgZmlsZSk7CisJCWVsc2UKKwkJCXJldCA9IC1FTk9ERVY7CiAJfQogCiBvdXQ6CkBA IC0zOTUyLDkgKzQwNTcsNyBAQCBvdXQ6CiAJICogb2JqZWN0IGlzIG5vdyBjb2hlcmVudCBhdCBp dHMgbmV3IGNhY2hlIGxldmVsICh3aXRoIHJlc3BlY3QKIAkgKiB0byB0aGUgYWNjZXNzIGRvbWFp bikuCiAJICovCi0JaWYgKG9iai0+Y2FjaGVfZGlydHkgJiYKLQkgICAgb2JqLT5iYXNlLndyaXRl X2RvbWFpbiAhPSBJOTE1X0dFTV9ET01BSU5fQ1BVICYmCi0JICAgIGNwdV93cml0ZV9uZWVkc19j bGZsdXNoKG9iaikpIHsKKwlpZiAob2JqLT5jYWNoZV9kaXJ0eSAmJiBjcHVfd3JpdGVfbmVlZHNf Y2xmbHVzaChvYmopKSB7CiAJCWlmIChpOTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmosIHRydWUp KQogCQkJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChvYmotPmJhc2UuZGV2KTsKIAl9Ci0tIAoxLjku MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK