From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 08/10] drm/i915: Migrate stolen objects before hibernation Date: Tue, 22 Dec 2015 11:50:51 +0530 Message-ID: <1450765253-32104-9-git-send-email-ankitprasad.r.sharma@intel.com> References: <1450765253-32104-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 4C7DF89E7C for ; Mon, 21 Dec 2015 22:43:16 -0800 (PST) In-Reply-To: <1450765253-32104-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: Ankitprasad Sharma , akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpWaWxsZSByZW1p bmRlZCB1cyB0aGF0IHN0b2xlbiBtZW1vcnkgaXMgbm90IHByZXNlcnZlZCBhY3Jvc3MKaGliZXJu YXRpb24sIGFuZCBhIHJlc3VsdCBvZiB0aGlzIHdhcyB0aGF0IGNvbnRleHQgb2JqZWN0cyBub3cg YmVpbmcKYWxsb2NhdGVkIGZyb20gc3RvbGVuIHdlcmUgYmVpbmcgY29ycnVwdGVkIG9uIFM0IGFu ZCBwcm9tcHRseSBoYW5naW5nCnRoZSBHUFUgb24gcmVzdW1lLgoKV2Ugd2FudCB0byB1dGlsaXNl IHN0b2xlbiBmb3IgYXMgbXVjaCBhcyBwb3NzaWJsZSAobm90aGluZyBlbHNlIHdpbGwgdXNlCnRo YXQgd2FzdGVkIG1lbW9yeSBvdGhlcndpc2UpLCBzbyB3ZSBuZWVkIGEgc3RyYXRlZ3kgZm9yIGhh bmRsaW5nCmdlbmVyYWwgb2JqZWN0cyBhbGxvY2F0ZWQgZnJvbSBzdG9sZW4gYW5kIGhpYmVybmF0 aW9uLiBBIHNpbXBsZSBzb2x1dGlvbgppcyB0byBkbyBhIENQVSBjb3B5IHRocm91Z2ggdGhlIEdU VCBvZiB0aGUgc3RvbGVuIG9iamVjdCBpbnRvIGEgZnJlc2gKc2htZW1mcyBiYWNraW5nIHN0b3Jl IGFuZCB0aGVuY2Vmb3J0aCB0cmVhdCBpdCBhcyBhIG5vcm1hbCBvYmplY3RzLiBUaGlzCmNhbiBi ZSByZWZpbmVkIGluIGZ1dHVyZSB0byBlaXRoZXIgdXNlIGEgR1BVIGNvcHkgdG8gYXZvaWQgdGhl IHNsb3cKdW5jYWNoZWQgcmVhZHMgKHRob3VnaCBpdCdzIGhpYmVybmF0aW9uISkgYW5kIHJlY3Jl YXRlIHN0b2xlbiBvYmplY3RzCnVwb24gcmVzdW1lL2ZpcnN0LXVzZS4gRm9yIG5vdywgYSBzaW1w bGUgYXBwcm9hY2ggc2hvdWxkIHN1ZmZpY2UgZm9yCnRlc3RpbmcgdGhlIG9iamVjdCBtaWdyYXRp b24uCgp2MjoKU3dhcCBQVEUgZm9yIHBpbm5lZCBiaW5kaW5ncyBvdmVyIHRvIHRoZSBzaG1lbWZz LiBUaGlzIGFkZHMgYQpjb21wbGljYXRlZCBkYW5jZSwgYnV0IGlzIHJlcXVpcmVkIGFzIG1hbnkg c3RvbGVuIG9iamVjdHMgYXJlIGxpa2VseSB0bwpiZSBwaW5uZWQgZm9yIHVzZSBieSB0aGUgaGFy ZHdhcmUuIFN3YXBwaW5nIHRoZSBQVEVzIHNob3VsZCBub3QgcmVzdWx0CmluIGV4dGVybmFsbHkg dmlzaWJsZSBiZWhhdmlvdXIsIGFzIGVhY2ggUFRFIHVwZGF0ZSBzaG91bGQgYmUgYXRvbWljIGFu ZAp0aGUgdHdvIHBhZ2VzIGlkZW50aWNhbC4gKGRhbnZldCkKCnNhZmUtYnktZGVmYXVsdCwgb3Ig dGhlIHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZS4gV2UgbmVlZCBhIG5ldyBmbGFnCnRvIG1h cmsgb2JqZWN0cyB0aGF0IHdlIGNhbiB3aWxmdWxseSBkaXNjYXJkIGFuZCByZWNyZWF0ZSBhY3Jv c3MKaGliZXJuYXRpb24uIChkYW52ZXQpCgpKdXN0IHVzZSB0aGUgZ2xvYmFsX2xpc3QgcmF0aGVy IHRoYW4gaW52ZW50IGEgbmV3IHN0b2xlbl9saXN0LiBUaGlzIGlzCnRoZSBzbG93cGF0aCBoaWJl cm5hdGUgYW5kIHNvIGFkZGluZyBhIG5ldyBsaXN0IGFuZCB0aGUgYXNzb2NpYXRlZApjb21wbGV4 aXR5IGlzbid0IHdvcnRoIGl0LgoKdjM6IFJlYmFzZWQgb24gZHJtLWludGVsLW5pZ2h0bHkgKEFu a2l0KQoKdjQ6IFVzZSBpbnNlcnRfcGFnZSB0byBtYXAgc3RvbGVuIG1lbW9yeSBiYWNrZWQgcGFn ZXMgZm9yIG1pZ3JhdGlvbiB0bwpzaG1lbSAoQ2hyaXMpCgp2NTogQWNxdWlyZSBtdXRleCBsb2Nr IHdoaWxlIGNvcHlpbmcgc3RvbGVuIGJ1ZmZlciBvYmplY3RzIHRvIHNobWVtIChDaHJpcykKCnY2 OiBIYW5kbGVkIGZpbGUgbGVhaywgU3BsaXR0ZWQgb2JqZWN0IG1pZ3JhdGlvbiBmdW5jdGlvbiwg YWRkZWQga2VybmVsZG9jCmZvciBtaWdyYXRlX3N0b2xlbl90b19zaG1lbWZzKCkgZnVuY3Rpb24g KFR2cnRrbykKVXNlIGk5MTUgd3JhcHBlciBmdW5jdGlvbiBmb3IgZHJtX21tX2luc2VydF9ub2Rl X2luX3JhbmdlKCkKCnY3OiBLZWVwIHRoZSBvYmplY3QgaW4gY3B1IGRvbWFpbiBhZnRlciBnZXRf cGFnZXMsIHJlbW92ZSB0aGUgb2JqZWN0IGZyb20KdGhlIHVuYm91bmQgbGlzdCBvbmx5IHdoZW4g bWFya2VkIFBVUkdFRCwgQ29ycmVjdGVkIHNwbGl0IG9mIG9iamVjdCBtaWdyYXRpb24KZnVuY3Rp b24gKENocmlzKQoKdjg6IFNwbGl0IGk5MTVfZ2VtX2ZyZWV6ZSgpLCByZW1vdmVkIHJlZHVuZGFu dCB1c2Ugb2YgYmFycmllciwgY29ycmVjdGVkCnVzZSBvZiBzZXRfdG9fY3B1X2RvbWFpbigpIChD aHJpcykKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXMgYXQgY2hyaXMtd2lsc29u LmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBBbmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIu c2hhcm1hQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAg ICAgICAgfCAgMTcgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg fCAgMTAgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDE5NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMgIHwgIDQ5ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYu YyAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICB8 ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDYgKwog OCBmaWxlcyBjaGFuZ2VkLCAyNzUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZTY5MzVmMS4uOGY2NzVhZTcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwpAQCAtOTc5LDYgKzk3OSwyMSBAQCBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGk5MTVfZHJtX3N1c3BlbmQoZHJtX2Rldik7 CiB9CiAKK3N0YXRpYyBpbnQgaTkxNV9wbV9mcmVlemUoc3RydWN0IGRldmljZSAqZGV2KQorewor CWludCByZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9mcmVlemUocGNpX2dldF9kcnZkYXRhKHRvX3Bj aV9kZXYoZGV2KSkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBpOTE1X3Bt X3N1c3BlbmQoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9 CisKIHN0YXRpYyBpbnQgaTkxNV9wbV9zdXNwZW5kX2xhdGUoc3RydWN0IGRldmljZSAqZGV2KQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGV2X3RvX2k5MTUoZGV2KS0+ZGV2OwpA QCAtMTYwNyw3ICsxNjIyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGk5MTVf cG1fb3BzID0gewogCSAqIEByZXN0b3JlLCBAcmVzdG9yZV9lYXJseSA6IGNhbGxlZCBhZnRlciBy ZWJvb3RpbmcgYW5kIHJlc3RvcmluZyB0aGUKIAkgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoaWJlcm5hdGlvbiBpbWFnZSBbUE1TR19SRVNUT1JFXQogCSAqLwotCS5mcmVlemUgPSBpOTE1 X3BtX3N1c3BlbmQsCisJLmZyZWV6ZSA9IGk5MTVfcG1fZnJlZXplLAogCS5mcmVlemVfbGF0ZSA9 IGk5MTVfcG1fc3VzcGVuZF9sYXRlLAogCS50aGF3X2Vhcmx5ID0gaTkxNV9wbV9yZXN1bWVfZWFy bHksCiAJLnRoYXcgPSBpOTE1X3BtX3Jlc3VtZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IDJmMjFlNzEuLjQ5Mjg3OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjA3OSw2ICsy MDc5LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAkgKiBBZHZpY2U6IGFyZSB0 aGUgYmFja2luZyBwYWdlcyBwdXJnZWFibGU/CiAJICovCiAJdW5zaWduZWQgaW50IG1hZHY6MjsK KwkvKioKKwkgKiBXaGVyZWFzIG1hZHYgaXMgZm9yIHVzZXJzcGFjZSwgdGhlcmUgYXJlIGNlcnRh aW4gc2l0dWF0aW9ucworCSAqIHdoZXJlIHdlIHdhbnQgSTkxNV9NQURWX0RPTlRORUVEIGJlaGF2 aW91ciBvbiBpbnRlcm5hbCBvYmplY3RzCisJICogd2l0aG91dCBjb25mbGF0aW5nIHRoZSB1c2Vy c3BhY2Ugc2V0dGluZy4KKwkgKi8KKwl1bnNpZ25lZCBpbnQgaW50ZXJuYWxfdm9sYXRpbGU6MTsK IAogCS8qKgogCSAqIEN1cnJlbnQgdGlsaW5nIG1vZGUgZm9yIHRoZSBvYmplY3QuCkBAIC0zMDQ3 LDYgKzMwNTMsOSBAQCBpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsIGludCBzbGljZSk7CiB2b2lkIGk5MTVfZ2VtX2luaXRfc3dpenpsaW5nKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ3B1X2lkbGUo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2ZyZWV6 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCBfX211c3RfY2hlY2sKK2k5MTVfZ2VtX29i amVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1lbWZzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopOwogaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwogdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqLApA QCAtMzI3Niw2ICszMjg1LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3By ZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkgICAgICAgdTMyIHN0b2xl bl9vZmZzZXQsCiAJCQkJCSAgICAgICB1MzIgZ3R0X29mZnNldCwKIAkJCQkJICAgICAgIHUzMiBz aXplKTsKK2ludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc3RvbGVuX2ZyZWV6ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKIC8qIGk5MTVfZ2VtX3Nocmlua2VyLmMgKi8KIHVuc2ln bmVkIGxvbmcgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGEwZWMxYTkuLmQyN2E0MWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwpAQCAtNDU3MywxMiArNDU3MywyNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9vcHMgPSB7CiAJLnB1 dF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0LAogfTsKIAorc3RhdGljIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICoKK2k5MTVfZ2VtX3NldF9pbm9kZV9nZnAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmcgPSBmaWxlX2lub2RlKGZpbGUpLT5pX21hcHBpbmc7CisJZ2ZwX3QgbWFzazsKKwor CW1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJMRTsKKwlpZiAoSVNfQ1JFU1RM SU5FKGRldikgfHwgSVNfQlJPQURXQVRFUihkZXYpKSB7CisJCS8qIDk2NWdtIGNhbm5vdCByZWxv Y2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIuICovCisJCW1hc2sgJj0gfl9fR0ZQX0hJR0hNRU07CisJ CW1hc2sgfD0gX19HRlBfRE1BMzI7CisJfQorCW1hcHBpbmdfc2V0X2dmcF9tYXNrKG1hcHBpbmcs IG1hc2spOworCisJcmV0dXJuIG1hcHBpbmc7Cit9CisKIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICppOTE1X2dlbV9hbGxvY19vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJ CSAgc2l6ZV90IHNpemUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKLQlnZnBfdCBtYXNrOwogCWludCByZXQ7CiAK IAlvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoZGV2KTsKQEAgLTQ1OTEsMTUgKzQ2MDYsNyBA QCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCi0JbWFzayA9 IEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1JFQ0xBSU1BQkxFOwotCWlmIChJU19DUkVTVExJTkUoZGV2 KSB8fCBJU19CUk9BRFdBVEVSKGRldikpIHsKLQkJLyogOTY1Z20gY2Fubm90IHJlbG9jYXRlIG9i amVjdHMgYWJvdmUgNEdpQi4gKi8KLQkJbWFzayAmPSB+X19HRlBfSElHSE1FTTsKLQkJbWFzayB8 PSBfX0dGUF9ETUEzMjsKLQl9Ci0KLQltYXBwaW5nID0gZmlsZV9pbm9kZShvYmotPmJhc2UuZmls cCktPmlfbWFwcGluZzsKLQltYXBwaW5nX3NldF9nZnBfbWFzayhtYXBwaW5nLCBtYXNrKTsKKwlp OTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKGRldiwgb2JqLT5iYXNlLmZpbHApOwogCiAJaTkxNV9nZW1f b2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X29wcyk7CiAKQEAgLTQ3NzQsNiArNDc4 MSwxNzEgQEAgaTkxNV9nZW1fc3RvcF9yaW5nYnVmZmVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCQlkZXZfcHJpdi0+Z3Quc3RvcF9yaW5nKHJpbmcpOwogfQogCitzdGF0aWMgaW50Citjb3B5 X2NvbnRlbnQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCisJCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQorewor CXN0cnVjdCBkcm1fbW1fbm9kZSBub2RlOworCWludCByZXQsIGk7CisKKwlyZXQgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCS8qIHN0b2xlbiBvYmplY3RzIGFyZSBhbHJlYWR5IHBpbm5lZCB0byBwcmV2 ZW50IHNocmlua2FnZSAqLworCW1lbXNldCgmbm9kZSwgMCwgc2l6ZW9mKG5vZGUpKTsKKwlyZXQg PSBpbnNlcnRfbWFwcGFibGVfbm9kZShpOTE1LCAmbm9kZSk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCWZvciAoaSA9IDA7IGkgPCBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsgaSsr KSB7CisJCXN0cnVjdCBwYWdlICpwYWdlOworCQl2b2lkICpfX2lvbWVtIHNyYzsKKwkJdm9pZCAq ZHN0OworCisJCWk5MTUtPmd0dC5iYXNlLmluc2VydF9wYWdlKCZpOTE1LT5ndHQuYmFzZSwKKwkJ CQkJICAgaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhvYmosIGkpLAorCQkJCQkgICBu b2RlLnN0YXJ0LAorCQkJCQkgICBJOTE1X0NBQ0hFX05PTkUsCisJCQkJCSAgIDApOworCisJCXBh Z2UgPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBpKTsKKwkJaWYgKElTX0VSUihw YWdlKSkgeworCQkJcmV0ID0gUFRSX0VSUihwYWdlKTsKKwkJCWJyZWFrOworCQl9CisKKwkJc3Jj ID0gaW9fbWFwcGluZ19tYXBfYXRvbWljX3djKGk5MTUtPmd0dC5tYXBwYWJsZSwgbm9kZS5zdGFy dCk7CisJCWRzdCA9IGttYXBfYXRvbWljKHBhZ2UpOworCQl3bWIoKTsKKwkJbWVtY3B5X2Zyb21p byhkc3QsIHNyYywgUEFHRV9TSVpFKTsKKwkJd21iKCk7CisJCWt1bm1hcF9hdG9taWMoZHN0KTsK KwkJaW9fbWFwcGluZ191bm1hcF9hdG9taWMoc3JjKTsKKworCQlwYWdlX2NhY2hlX3JlbGVhc2Uo cGFnZSk7CisJfQorCisJaTkxNS0+Z3R0LmJhc2UuY2xlYXJfcmFuZ2UoJmk5MTUtPmd0dC5iYXNl LAorCQkJCSAgIG5vZGUuc3RhcnQsIG5vZGUuc2l6ZSwKKwkJCQkgICB0cnVlKTsKKwlyZW1vdmVf bWFwcGFibGVfbm9kZSgmbm9kZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVy biBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCB0cnVlKTsKK30KKworLyoq CisgKiBpOTE1X2dlbV9vYmplY3RfbWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcygpIC0gbWlncmF0 ZXMgYSBzdG9sZW4gYmFja2VkCisgKiBvYmplY3QgdG8gc2htZW1mcworICogQG9iajogc3RvbGVu IGJhY2tlZCBvYmplY3QgdG8gYmUgbWlncmF0ZWQKKyAqCisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nl c3NmdWwgbWlncmF0aW9uLCBlcnJubyBvbiBmYWlsdXJlCisgKi8KKworaW50CitpOTE1X2dlbV9v YmplY3RfbWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmot PmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOworCXN0cnVjdCBmaWxlICpm aWxlOworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOworCXN0cnVjdCBzZ190YWJsZSAq c3RvbGVuX3BhZ2VzLCAqc2htZW1mc19wYWdlczsKKwlpbnQgcmV0OworCisJaWYgKFdBUk5fT05f T05DRShpOTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdfc3dpenpsZShvYmopKSkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlmaWxlID0gc2htZW1fZmlsZV9zZXR1cCgiZHJtIG1tIG9iamVjdCIsIG9i ai0+YmFzZS5zaXplLCBWTV9OT1JFU0VSVkUpOworCWlmIChJU19FUlIoZmlsZSkpCisJCXJldHVy biBQVFJfRVJSKGZpbGUpOworCW1hcHBpbmcgPSBpOTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKG9iai0+ YmFzZS5kZXYsIGZpbGUpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sICZv YmotPnZtYV9saXN0LCB2bWFfbGluaykKKwkJaWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQorCQkJ Y29udGludWU7CisKKwlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCAmJiBsaXN0 X2VtcHR5KCZvYmotPnZtYV9saXN0KSkgeworCQkvKiBEaXNjYXJkIHRoZSBzdG9sZW4gcmVzZXJ2 YXRpb24sIGFuZCByZXBsYWNlIHdpdGgKKwkJICogYW4gdW5wb3B1bGF0ZWQgc2htZW1mcyBvYmpl Y3QuCisJCSAqLworCQlvYmotPm1hZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJCWxpc3RfZGVs KCZvYmotPmdsb2JhbF9saXN0KTsKKwl9IGVsc2UgeworCQlyZXQgPSBjb3B5X2NvbnRlbnQob2Jq LCBpOTE1LCBtYXBwaW5nKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyX2ZpbGU7CisJfQorCisJ c3RvbGVuX3BhZ2VzID0gb2JqLT5wYWdlczsKKwlvYmotPnBhZ2VzID0gTlVMTDsKKworCW9iai0+ YmFzZS5maWxwID0gZmlsZTsKKworCS8qIFJlY3JlYXRlIGFueSBwaW5uZWQgYmluZGluZyB3aXRo IHBvaW50ZXJzIHRvIHRoZSBuZXcgc3RvcmFnZSAqLworCWlmICghbGlzdF9lbXB0eSgmb2JqLT52 bWFfbGlzdCkpIHsKKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQob2JqKTsK KwkJaWYgKHJldCkgeworCQkJb2JqLT5wYWdlcyA9IHN0b2xlbl9wYWdlczsKKwkJCWdvdG8gZXJy X2ZpbGU7CisJCX0KKworCQlvYmotPmdldF9wYWdlLnNnID0gb2JqLT5wYWdlcy0+c2dsOworCQlv YmotPmdldF9wYWdlLmxhc3QgPSAwOworCisJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2Jq LT52bWFfbGlzdCwgdm1hX2xpbmspIHsKKwkJCWlmICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2 bWEtPm5vZGUpKQorCQkJCWNvbnRpbnVlOworCisJCQlXQVJOX09OKGk5MTVfdm1hX2JpbmQodm1h LAorCQkJCQkgICAgICBvYmotPmNhY2hlX2xldmVsLAorCQkJCQkgICAgICBQSU5fVVBEQVRFKSk7 CisJCX0KKwl9CisKKwkvKiBkcm9wIHRoZSBzdG9sZW4gcGluIGFuZCBiYWNraW5nICovCisJc2ht ZW1mc19wYWdlcyA9IG9iai0+cGFnZXM7CisJb2JqLT5wYWdlcyA9IHN0b2xlbl9wYWdlczsKKwor CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOworCW9iai0+b3BzLT5wdXRfcGFnZXMo b2JqKTsKKwlpZiAob2JqLT5vcHMtPnJlbGVhc2UpCisJCW9iai0+b3BzLT5yZWxlYXNlKG9iaik7 CisKKwlvYmotPm9wcyA9ICZpOTE1X2dlbV9vYmplY3Rfb3BzOworCW9iai0+cGFnZXMgPSBzaG1l bWZzX3BhZ2VzOworCisJcmV0dXJuIDA7CisKK2Vycl9maWxlOgorCWZwdXQoZmlsZSk7CisJb2Jq LT5iYXNlLmZpbHAgPSBOVUxMOworCXJldHVybiByZXQ7Cit9CisKK2ludAoraTkxNV9nZW1fZnJl ZXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJLyogQ2FsbGVkIGJlZm9yZSBpOTE1X2dl bV9zdXNwZW5kKCkgd2hlbiBoaWJlcm5hdGluZyAqLworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShkZXYpOworCWludCByZXQ7CisKKwlyZXQgPSBpOTE1X211dGV4X2xv Y2tfaW50ZXJydXB0aWJsZShkZXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBB Y3Jvc3MgaGliZXJuYXRpb24sIHRoZSBzdG9sZW4gYXJlYSBpcyBub3QgcHJlc2VydmVkLgorCSAq IEFueXRoaW5nIGluc2lkZSBzdG9sZW4gbXVzdCBjb3BpZWQgYmFjayB0byBub3JtYWwKKwkgKiBt ZW1vcnkgaWYgd2Ugd2lzaCB0byBwcmVzZXJ2ZSBpdC4KKwkgKi8KKwlyZXQgPSBpOTE1X2dlbV9z dG9sZW5fZnJlZXplKGk5MTUpOworCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CisJcmV0dXJuIHJldDsKK30KKwogaW50CiBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCmluZGV4IDhk YjU3NTIuLjZkMWFmOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3N0b2xlbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCkBA IC04MzksMyArODM5LDUyIEBAIGVycjoKIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2Jq LT5iYXNlKTsKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQorCitpbnQgaTkxNV9nZW1fc3RvbGVu X2ZyZWV6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLCAqdG1wOworCXN0cnVjdCBsaXN0X2hlYWQgKnBoYXNlW10gPSB7 CisJCSZpOTE1LT5tbS51bmJvdW5kX2xpc3QsICZpOTE1LT5tbS5ib3VuZF9saXN0LCBOVUxMCisJ fSwgKipwOworCWludCByZXQgPSAwOworCisJZm9yIChwID0gcGhhc2U7ICpwOyBwKyspIHsKKwkJ c3RydWN0IGxpc3RfaGVhZCBtaWdyYXRlOworCQlpbnQgcmV0OworCisJCUlOSVRfTElTVF9IRUFE KCZtaWdyYXRlKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgdG1wLCAqcCwgZ2xv YmFsX2xpc3QpIHsKKwkJCWlmIChvYmotPnN0b2xlbiA9PSBOVUxMKQorCQkJCWNvbnRpbnVlOwor CisJCQlpZiAob2JqLT5pbnRlcm5hbF92b2xhdGlsZSkKKwkJCQljb250aW51ZTsKKworCQkJLyog SW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhpcyBvYmplY3QgbWF5IG9ubHkgYmUgYWxpdmUKKwkJCSAq IGR1ZSB0byBhbiBhY3RpdmUgcmVmZXJlbmNlLCBhbmQgdGhhdCBtYXkgZGlzYXBwZWFyCisJCQkg KiB3aGVuIHdlIHVuYmluZCBhbnkgb2YgdGhlIG9iamVjdHMgKGFuZCBzbyB3YWl0IHVwb24KKwkJ CSAqIHRoZSBHUFUgYW5kIHJldGlyZSByZXF1ZXN0cykuIFRvIHByZXZlbnQgb25lIG9mIHRoZQor CQkJICogb2JqZWN0cyBmcm9tIGRpc2FwcGVhcmluZyBiZW5lYXRoIHVzLCB3ZSBuZWVkIHRvCisJ CQkgKiB0YWtlIGEgcmVmZXJlbmNlIHRvIGVhY2ggYXMgd2UgYnVpbGQgdGhlIG1pZ3JhdGlvbgor CQkJICogbGlzdC4KKwkJCSAqCisJCQkgKiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHN0cmF0ZWd5 IHJlcXVpcmVkIHdoaWxzdAorCQkJICogc2hyaW5raW5nIG9yIGV2aWN0aW5nIG9iamVjdHMgKGZv ciB0aGUgc2FtZSByZWFzb24pLgorCQkJICovCisJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uo Jm9iai0+YmFzZSk7CisJCQlsaXN0X21vdmUoJm9iai0+Z2xvYmFsX2xpc3QsICZtaWdyYXRlKTsK KwkJfQorCisJCXJldCA9IDA7CisJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIHRtcCwg Jm1pZ3JhdGUsIGdsb2JhbF9saXN0KSB7CisJCQlpZiAocmV0ID09IDApCisJCQkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X21pZ3JhdGVfc3RvbGVuX3RvX3NobWVtZnMob2JqKTsKKwkJCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOworCQl9CisJCWxpc3Rfc3BsaWNlKCZtaWdy YXRlLCAqcCk7CisJCWlmIChyZXQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDAwNmQ0M2EuLmNhMmNkNDQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTI1NDYsNiArMjU0Niw5IEBAIGlu dGVsX2FsbG9jX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWlm IChJU19FUlIob2JqKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyogTm90IHRvIGJlIHByZXNlcnZl ZCBhY3Jvc3MgaGliZXJuYXRpb24gKi8KKwlvYmotPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsK KwogCW9iai0+dGlsaW5nX21vZGUgPSBwbGFuZV9jb25maWctPnRpbGluZzsKIAlpZiAob2JqLT50 aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19YKQogCQlvYmotPnN0cmlkZSA9IGZiLT5waXRjaGVz WzBdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKaW5kZXggYjJmMTM0YS4uZTE2MjI0OSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCkBAIC0xNTYsNiArMTU2LDEyIEBAIHN0YXRp YyBpbnQgaW50ZWxmYl9hbGxvYyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCQlnb3Rv IG91dDsKIAl9CiAKKwkvKiBEaXNjYXJkIHRoZSBjb250ZW50cyBvZiB0aGUgQklPUyBmYiBhY3Jv c3MgaGliZXJuYXRpb24uCisJICogV2UgcmVhbGx5IHdhbnQgdG8gY29tcGxldGVseSB0aHJvd2F3 YXkgdGhlIGVhcmxpZXIgZmJkZXYKKwkgKiBhbmQgcmVjb25maWd1cmUgaXQgYW55d2F5LgorCSAq LworCW9iai0+aW50ZXJuYWxfdm9sYXRpbGUgPSB0cnVlOworCiAJZmIgPSBfX2ludGVsX2ZyYW1l YnVmZmVyX2NyZWF0ZShkZXYsICZtb2RlX2NtZCwgb2JqKTsKIAlpZiAoSVNfRVJSKGZiKSkgewog CQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCmluZGV4IGM5NGIzOWIuLjNmZmQxODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpA QCAtNTE5OCw2ICs1MTk4LDggQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJSTkxNV9XUklURShWTFZfUENCUiwgcGN0eF9wYWRkcik7 CiAKIG91dDoKKwkvKiBUaGUgcG93ZXIgY29udGV4dCBuZWVkIG5vdCBiZSBwcmVzZXJ2ZWQgYWNy b3NzIGhpYmVybmF0aW9uICovCisJcGN0eC0+aW50ZXJuYWxfdm9sYXRpbGUgPSB0cnVlOwogCURS TV9ERUJVR19EUklWRVIoIlBDQlI6IDB4JTA4eFxuIiwgSTkxNV9SRUFEKFZMVl9QQ0JSKSk7CiAJ ZGV2X3ByaXYtPnZsdl9wY3R4ID0gcGN0eDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwppbmRleCA1NmQ4Mzc1Li40MTIyMTJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0yMDk0LDYgKzIwOTQsMTIgQEAgc3RhdGljIGludCBpbnRl bF9hbGxvY19yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChJU19F UlIob2JqKSkKIAkJcmV0dXJuIFBUUl9FUlIob2JqKTsKIAorCS8qIFJpbmdidWZmZXIgb2JqZWN0 cyBhcmUgYnkgZGVmaW5pdGlvbiB2b2xhdGlsZSAtIG9ubHkgdGhlIGNvbW1hbmRzCisJICogYmV0 d2VlbiBIRUFEIGFuZCBUQUlMIG5lZWQgdG8gYmUgcHJlc2VydmVkIGFuZCB3aGlsc3QgdGhlcmUg YXJlCisJICogYW55IGNvbW1hbmRzIHRoZXJlLCB0aGUgcmluZ2J1ZmZlciBpcyBwaW5uZWQgYnkg YWN0aXZpdHkuCisJICovCisJb2JqLT5pbnRlcm5hbF92b2xhdGlsZSA9IHRydWU7CisKIAkvKiBt YXJrIHJpbmcgYnVmZmVycyBhcyByZWFkLW9ubHkgZnJvbSBHUFUgc2lkZSBieSBkZWZhdWx0ICov CiAJb2JqLT5ndF9ybyA9IDE7CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=