From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 09/11] drm/i915: Migrate stolen objects before hibernation Date: Thu, 14 Jan 2016 11:46:45 +0530 Message-ID: <1452752207-30382-10-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 43ED2720D0 for ; Wed, 13 Jan 2016 22:38:49 -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, Ankitprasad Sharma , 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 aHJpcykKCnY5OiBSZXBsYWNlZCBXQVJOX09OIGJ5IEJVR19PTiBhbmQgYWRkZWQgYSBjb21tZW50 IGV4cGxhaW5pbmcgaXQgKFR2cnRrbykKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXMgYXQgY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBBbmtpdHByYXNhZCBTaGFy bWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgIDE3ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j ICAgICAgICAgfCAxOTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jICB8ICA0OSArKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiZGV2LmMgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jIHwgICA2ICsKIDggZmlsZXMgY2hhbmdlZCwgMjc5IGluc2VydGlvbnMoKyksIDEyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDI4OGZlYzcuLmQ5ODAyNjMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtOTk0LDYgKzk5NCwyMSBAQCBzdGF0aWMgaW50 IGk5MTVfcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGk5MTVfZHJtX3N1 c3BlbmQoZHJtX2Rldik7CiB9CiAKK3N0YXRpYyBpbnQgaTkxNV9wbV9mcmVlemUoc3RydWN0IGRl dmljZSAqZGV2KQoreworCWludCByZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9mcmVlemUocGNpX2dl dF9kcnZkYXRhKHRvX3BjaV9kZXYoZGV2KSkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlyZXQgPSBpOTE1X3BtX3N1c3BlbmQoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgaTkxNV9wbV9zdXNwZW5kX2xhdGUoc3RydWN0 IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGV2X3RvX2k5 MTUoZGV2KS0+ZGV2OwpAQCAtMTY0Miw3ICsxNjU3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk ZXZfcG1fb3BzIGk5MTVfcG1fb3BzID0gewogCSAqIEByZXN0b3JlLCBAcmVzdG9yZV9lYXJseSA6 IGNhbGxlZCBhZnRlciByZWJvb3RpbmcgYW5kIHJlc3RvcmluZyB0aGUKIAkgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoaWJlcm5hdGlvbiBpbWFnZSBbUE1TR19SRVNUT1JFXQogCSAqLwot CS5mcmVlemUgPSBpOTE1X3BtX3N1c3BlbmQsCisJLmZyZWV6ZSA9IGk5MTVfcG1fZnJlZXplLAog CS5mcmVlemVfbGF0ZSA9IGk5MTVfcG1fc3VzcGVuZF9sYXRlLAogCS50aGF3X2Vhcmx5ID0gaTkx NV9wbV9yZXN1bWVfZWFybHksCiAJLnRoYXcgPSBpOTE1X3BtX3Jlc3VtZSwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCmluZGV4IGIxOGIxMDIuLjgyOWI2ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtMjA5Myw2ICsyMDkzLDEyIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAkg KiBBZHZpY2U6IGFyZSB0aGUgYmFja2luZyBwYWdlcyBwdXJnZWFibGU/CiAJICovCiAJdW5zaWdu ZWQgaW50IG1hZHY6MjsKKwkvKioKKwkgKiBXaGVyZWFzIG1hZHYgaXMgZm9yIHVzZXJzcGFjZSwg dGhlcmUgYXJlIGNlcnRhaW4gc2l0dWF0aW9ucworCSAqIHdoZXJlIHdlIHdhbnQgSTkxNV9NQURW X0RPTlRORUVEIGJlaGF2aW91ciBvbiBpbnRlcm5hbCBvYmplY3RzCisJICogd2l0aG91dCBjb25m bGF0aW5nIHRoZSB1c2Vyc3BhY2Ugc2V0dGluZy4KKwkgKi8KKwl1bnNpZ25lZCBpbnQgaW50ZXJu YWxfdm9sYXRpbGU6MTsKIAogCS8qKgogCSAqIEN1cnJlbnQgdGlsaW5nIG1vZGUgZm9yIHRoZSBv YmplY3QuCkBAIC0zMDQ4LDYgKzMwNTQsOSBAQCBpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzbGljZSk7CiB2b2lkIGk5MTVfZ2VtX2lu aXRfc3dpenpsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpOTE1X2dlbV9jbGVh bnVwX3JpbmdidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgX19tdXN0X2NoZWNr IGk5MTVfZ3B1X2lkbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQgX19tdXN0X2NoZWNr IGk5MTVfZ2VtX2ZyZWV6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCBfX211c3RfY2hl Y2sKK2k5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1lbWZzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOwogaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zdXNwZW5k KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqYmF0Y2hfb2JqLApAQCAtMzI3Nyw2ICszMjg2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkg ICAgICAgdTMyIHN0b2xlbl9vZmZzZXQsCiAJCQkJCSAgICAgICB1MzIgZ3R0X29mZnNldCwKIAkJ CQkJICAgICAgIHUzMiBzaXplKTsKK2ludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc3RvbGVuX2Zy ZWV6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKIC8qIGk5MTVfZ2VtX3Nocmlu a2VyLmMgKi8KIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGFiMWQwNDMuLjc3 YWMxMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtNDYzNSwxMiArNDYzNSwyNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVj dF9vcHMgPSB7CiAJLnB1dF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0LAog fTsKIAorc3RhdGljIHN0cnVjdCBhZGRyZXNzX3NwYWNlICoKK2k5MTVfZ2VtX3NldF9pbm9kZV9n ZnAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlX2lub2RlKGZpbGUpLT5pX21hcHBpbmc7CisJ Z2ZwX3QgbWFzazsKKworCW1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJMRTsK KwlpZiAoSVNfQ1JFU1RMSU5FKGRldikgfHwgSVNfQlJPQURXQVRFUihkZXYpKSB7CisJCS8qIDk2 NWdtIGNhbm5vdCByZWxvY2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIuICovCisJCW1hc2sgJj0gfl9f R0ZQX0hJR0hNRU07CisJCW1hc2sgfD0gX19HRlBfRE1BMzI7CisJfQorCW1hcHBpbmdfc2V0X2dm cF9tYXNrKG1hcHBpbmcsIG1hc2spOworCisJcmV0dXJuIG1hcHBpbmc7Cit9CisKIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dlbV9hbGxvY19vYmplY3Qoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCQkJCSAgc2l6ZV90IHNpemUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iajsKLQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKLQlnZnBfdCBtYXNr OwogCWludCByZXQ7CiAKIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoZGV2KTsKQEAgLTQ2 NTMsMTUgKzQ2NjgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxs b2Nfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7 CiAJfQogCi0JbWFzayA9IEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1JFQ0xBSU1BQkxFOwotCWlmIChJ U19DUkVTVExJTkUoZGV2KSB8fCBJU19CUk9BRFdBVEVSKGRldikpIHsKLQkJLyogOTY1Z20gY2Fu bm90IHJlbG9jYXRlIG9iamVjdHMgYWJvdmUgNEdpQi4gKi8KLQkJbWFzayAmPSB+X19HRlBfSElH SE1FTTsKLQkJbWFzayB8PSBfX0dGUF9ETUEzMjsKLQl9Ci0KLQltYXBwaW5nID0gZmlsZV9pbm9k ZShvYmotPmJhc2UuZmlscCktPmlfbWFwcGluZzsKLQltYXBwaW5nX3NldF9nZnBfbWFzayhtYXBw aW5nLCBtYXNrKTsKKwlpOTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKGRldiwgb2JqLT5iYXNlLmZpbHAp OwogCiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X29wcyk7CiAK QEAgLTQ4MzYsNiArNDg0MywxNzUgQEAgaTkxNV9nZW1fc3RvcF9yaW5nYnVmZmVycyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCQlkZXZfcHJpdi0+Z3Quc3RvcF9yaW5nKHJpbmcpOwogfQogCitz dGF0aWMgaW50Citjb3B5X2NvbnRlbnQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK KwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCXN0cnVjdCBhZGRyZXNzX3NwYWNl ICptYXBwaW5nKQoreworCXN0cnVjdCBkcm1fbW1fbm9kZSBub2RlOworCWludCByZXQsIGk7CisK KwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHN0b2xlbiBvYmplY3RzIGFyZSBhbHJlYWR5 IHBpbm5lZCB0byBwcmV2ZW50IHNocmlua2FnZSAqLworCW1lbXNldCgmbm9kZSwgMCwgc2l6ZW9m KG5vZGUpKTsKKwlyZXQgPSBpbnNlcnRfbWFwcGFibGVfbm9kZShpOTE1LCAmbm9kZSwgUEFHRV9T SVpFKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZm9yIChpID0gMDsgaSA8IG9iai0+ YmFzZS5zaXplIC8gUEFHRV9TSVpFOyBpKyspIHsKKwkJc3RydWN0IHBhZ2UgKnBhZ2U7CisJCXZv aWQgKl9faW9tZW0gc3JjOworCQl2b2lkICpkc3Q7CisKKwkJaTkxNS0+Z3R0LmJhc2UuaW5zZXJ0 X3BhZ2UoJmk5MTUtPmd0dC5iYXNlLAorCQkJCQkgICBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9h ZGRyZXNzKG9iaiwgaSksCisJCQkJCSAgIG5vZGUuc3RhcnQsCisJCQkJCSAgIEk5MTVfQ0FDSEVf Tk9ORSwKKwkJCQkJICAgMCk7CisKKwkJcGFnZSA9IHNobWVtX3JlYWRfbWFwcGluZ19wYWdlKG1h cHBpbmcsIGkpOworCQlpZiAoSVNfRVJSKHBhZ2UpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHBhZ2Up OworCQkJYnJlYWs7CisJCX0KKworCQlzcmMgPSBpb19tYXBwaW5nX21hcF9hdG9taWNfd2MoaTkx NS0+Z3R0Lm1hcHBhYmxlLCBub2RlLnN0YXJ0KTsKKwkJZHN0ID0ga21hcF9hdG9taWMocGFnZSk7 CisJCXdtYigpOworCQltZW1jcHlfZnJvbWlvKGRzdCwgc3JjLCBQQUdFX1NJWkUpOworCQl3bWIo KTsKKwkJa3VubWFwX2F0b21pYyhkc3QpOworCQlpb19tYXBwaW5nX3VubWFwX2F0b21pYyhzcmMp OworCisJCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsKKwl9CisKKwlpOTE1LT5ndHQuYmFzZS5j bGVhcl9yYW5nZSgmaTkxNS0+Z3R0LmJhc2UsCisJCQkJICAgbm9kZS5zdGFydCwgbm9kZS5zaXpl LAorCQkJCSAgIHRydWUpOworCXJlbW92ZV9tYXBwYWJsZV9ub2RlKCZub2RlKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2Rv bWFpbihvYmosIHRydWUpOworfQorCisvKioKKyAqIGk5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0 b2xlbl90b19zaG1lbWZzKCkgLSBtaWdyYXRlcyBhIHN0b2xlbiBiYWNrZWQKKyAqIG9iamVjdCB0 byBzaG1lbWZzCisgKiBAb2JqOiBzdG9sZW4gYmFja2VkIG9iamVjdCB0byBiZSBtaWdyYXRlZAor ICoKKyAqIFJldHVybnM6IDAgb24gc3VjY2Vzc2Z1bCBtaWdyYXRpb24sIGVycm5vIG9uIGZhaWx1 cmUKKyAqLworCitpbnQKK2k5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1lbWZz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X3ZtYSAq dm1hLCAqdm47CisJc3RydWN0IGZpbGUgKmZpbGU7CisJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h cHBpbmc7CisJc3RydWN0IHNnX3RhYmxlICpzdG9sZW5fcGFnZXMsICpzaG1lbWZzX3BhZ2VzOwor CWludCByZXQ7CisKKwlpZiAoV0FSTl9PTl9PTkNFKGk5MTVfZ2VtX29iamVjdF9uZWVkc19iaXQx N19zd2l6emxlKG9iaikpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWZpbGUgPSBzaG1lbV9maWxl X3NldHVwKCJkcm0gbW0gb2JqZWN0Iiwgb2JqLT5iYXNlLnNpemUsIFZNX05PUkVTRVJWRSk7CisJ aWYgKElTX0VSUihmaWxlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisJbWFwcGluZyA9IGk5 MTVfZ2VtX3NldF9pbm9kZV9nZnAob2JqLT5iYXNlLmRldiwgZmlsZSk7CisKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQorCQlpZiAo aTkxNV92bWFfdW5iaW5kKHZtYSkpCisJCQljb250aW51ZTsKKworCWlmIChvYmotPm1hZHYgIT0g STkxNV9NQURWX1dJTExORUVEICYmIGxpc3RfZW1wdHkoJm9iai0+dm1hX2xpc3QpKSB7CisJCS8q IERpc2NhcmQgdGhlIHN0b2xlbiByZXNlcnZhdGlvbiwgYW5kIHJlcGxhY2Ugd2l0aAorCQkgKiBh biB1bnBvcHVsYXRlZCBzaG1lbWZzIG9iamVjdC4KKwkJICovCisJCW9iai0+bWFkdiA9IF9fSTkx NV9NQURWX1BVUkdFRDsKKwkJbGlzdF9kZWwoJm9iai0+Z2xvYmFsX2xpc3QpOworCX0gZWxzZSB7 CisJCXJldCA9IGNvcHlfY29udGVudChvYmosIGk5MTUsIG1hcHBpbmcpOworCQlpZiAocmV0KQor CQkJZ290byBlcnJfZmlsZTsKKwl9CisKKwlzdG9sZW5fcGFnZXMgPSBvYmotPnBhZ2VzOworCW9i ai0+cGFnZXMgPSBOVUxMOworCisJb2JqLT5iYXNlLmZpbHAgPSBmaWxlOworCisJLyogUmVjcmVh dGUgYW55IHBpbm5lZCBiaW5kaW5nIHdpdGggcG9pbnRlcnMgdG8gdGhlIG5ldyBzdG9yYWdlICov CisJaWYgKCFsaXN0X2VtcHR5KCZvYmotPnZtYV9saXN0KSkgeworCQlyZXQgPSBpOTE1X2dlbV9v YmplY3RfZ2V0X3BhZ2VzX2d0dChvYmopOworCQlpZiAocmV0KSB7CisJCQlvYmotPnBhZ2VzID0g c3RvbGVuX3BhZ2VzOworCQkJZ290byBlcnJfZmlsZTsKKwkJfQorCisJCW9iai0+Z2V0X3BhZ2Uu c2cgPSBvYmotPnBhZ2VzLT5zZ2w7CisJCW9iai0+Z2V0X3BhZ2UubGFzdCA9IDA7CisKKwkJbGlz dF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgeworCQkJaWYg KCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCisJCQkJY29udGludWU7CisKKwkJ CS8qIEFzIHZtYSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbmQgb25seSB0aGUgUFRFcworCQkJICog aGF2ZSB0byBiZSByZXByb2dyYW1tZWQsIG1ha2VzIHRoaXMgdm1hX2JpbmQKKwkJCSAqIGNhbGwg ZXh0cmVtZWx5IHVubGlrZWx5IHRvIGZhaWwuCisJCQkgKi8KKwkJCUJVR19PTihpOTE1X3ZtYV9i aW5kKHZtYSwKKwkJCQkJICAgICAgb2JqLT5jYWNoZV9sZXZlbCwKKwkJCQkJICAgICAgUElOX1VQ REFURSkpOworCQl9CisJfQorCisJLyogZHJvcCB0aGUgc3RvbGVuIHBpbiBhbmQgYmFja2luZyAq LworCXNobWVtZnNfcGFnZXMgPSBvYmotPnBhZ2VzOworCW9iai0+cGFnZXMgPSBzdG9sZW5fcGFn ZXM7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwlvYmotPm9wcy0+cHV0 X3BhZ2VzKG9iaik7CisJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQorCQlvYmotPm9wcy0+cmVsZWFz ZShvYmopOworCisJb2JqLT5vcHMgPSAmaTkxNV9nZW1fb2JqZWN0X29wczsKKwlvYmotPnBhZ2Vz ID0gc2htZW1mc19wYWdlczsKKworCXJldHVybiAwOworCitlcnJfZmlsZToKKwlmcHV0KGZpbGUp OworCW9iai0+YmFzZS5maWxwID0gTlVMTDsKKwlyZXR1cm4gcmV0OworfQorCitpbnQKK2k5MTVf Z2VtX2ZyZWV6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCS8qIENhbGxlZCBiZWZvcmUg aTkxNV9nZW1fc3VzcGVuZCgpIHdoZW4gaGliZXJuYXRpbmcgKi8KKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKKwlpbnQgcmV0OworCisJcmV0ID0gaTkxNV9t dXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJLyogQWNyb3NzIGhpYmVybmF0aW9uLCB0aGUgc3RvbGVuIGFyZWEgaXMgbm90IHByZXNlcnZl ZC4KKwkgKiBBbnl0aGluZyBpbnNpZGUgc3RvbGVuIG11c3QgY29waWVkIGJhY2sgdG8gbm9ybWFs CisJICogbWVtb3J5IGlmIHdlIHdpc2ggdG8gcHJlc2VydmUgaXQuCisJICovCisJcmV0ID0gaTkx NV9nZW1fc3RvbGVuX2ZyZWV6ZShpOTE1KTsKKworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOworCXJldHVybiByZXQ7Cit9CisKIGludAogaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpp bmRleCA2NTVlYjE1Li4zMzVhMWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9s ZW4uYwpAQCAtODQwLDMgKzg0MCw1MiBAQCBlcnI6CiAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVu Y2UoJm9iai0+YmFzZSk7CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KKworaW50IGk5MTVfZ2Vt X3N0b2xlbl9mcmVlemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKnRtcDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwaGFz ZVtdID0geworCQkmaTkxNS0+bW0udW5ib3VuZF9saXN0LCAmaTkxNS0+bW0uYm91bmRfbGlzdCwg TlVMTAorCX0sICoqcDsKKwlpbnQgcmV0ID0gMDsKKworCWZvciAocCA9IHBoYXNlOyAqcDsgcCsr KSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgbWlncmF0ZTsKKwkJaW50IHJldDsKKworCQlJTklUX0xJ U1RfSEVBRCgmbWlncmF0ZSk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIHRtcCwg KnAsIGdsb2JhbF9saXN0KSB7CisJCQlpZiAob2JqLT5zdG9sZW4gPT0gTlVMTCkKKwkJCQljb250 aW51ZTsKKworCQkJaWYgKG9iai0+aW50ZXJuYWxfdm9sYXRpbGUpCisJCQkJY29udGludWU7CisK KwkJCS8qIEluIHRoZSBnZW5lcmFsIGNhc2UsIHRoaXMgb2JqZWN0IG1heSBvbmx5IGJlIGFsaXZl CisJCQkgKiBkdWUgdG8gYW4gYWN0aXZlIHJlZmVyZW5jZSwgYW5kIHRoYXQgbWF5IGRpc2FwcGVh cgorCQkJICogd2hlbiB3ZSB1bmJpbmQgYW55IG9mIHRoZSBvYmplY3RzIChhbmQgc28gd2FpdCB1 cG9uCisJCQkgKiB0aGUgR1BVIGFuZCByZXRpcmUgcmVxdWVzdHMpLiBUbyBwcmV2ZW50IG9uZSBv ZiB0aGUKKwkJCSAqIG9iamVjdHMgZnJvbSBkaXNhcHBlYXJpbmcgYmVuZWF0aCB1cywgd2UgbmVl ZCB0bworCQkJICogdGFrZSBhIHJlZmVyZW5jZSB0byBlYWNoIGFzIHdlIGJ1aWxkIHRoZSBtaWdy YXRpb24KKwkJCSAqIGxpc3QuCisJCQkgKgorCQkJICogVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBz dHJhdGVneSByZXF1aXJlZCB3aGlsc3QKKwkJCSAqIHNocmlua2luZyBvciBldmljdGluZyBvYmpl Y3RzIChmb3IgdGhlIHNhbWUgcmVhc29uKS4KKwkJCSAqLworCQkJZHJtX2dlbV9vYmplY3RfcmVm ZXJlbmNlKCZvYmotPmJhc2UpOworCQkJbGlzdF9tb3ZlKCZvYmotPmdsb2JhbF9saXN0LCAmbWln cmF0ZSk7CisJCX0KKworCQlyZXQgPSAwOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2Jq LCB0bXAsICZtaWdyYXRlLCBnbG9iYWxfbGlzdCkgeworCQkJaWYgKHJldCA9PSAwKQorCQkJCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1lbWZzKG9iaik7CisJCQlk cm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJfQorCQlsaXN0X3NwbGlj ZSgmbWlncmF0ZSwgKnApOworCQlpZiAocmV0KQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl dDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAzMDkyNTA0Li42NmI3 MjUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0yNTQxLDYgKzI1NDEs OSBAQCBpbnRlbF9hbGxvY19pbml0aWFsX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKIAlpZiAoSVNfRVJSKG9iaikpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qIE5vdCB0byBiZSBw cmVzZXJ2ZWQgYWNyb3NzIGhpYmVybmF0aW9uICovCisJb2JqLT5pbnRlcm5hbF92b2xhdGlsZSA9 IHRydWU7CisKIAlvYmotPnRpbGluZ19tb2RlID0gcGxhbmVfY29uZmlnLT50aWxpbmc7CiAJaWYg KG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWCkKIAkJb2JqLT5zdHJpZGUgPSBmYi0+ cGl0Y2hlc1swXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCmluZGV4IDFjODk3Y2IuLmM4 YWZmZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwpAQCAtMTU2LDYgKzE1NiwxMiBA QCBzdGF0aWMgaW50IGludGVsZmJfYWxsb2Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwK IAkJZ290byBvdXQ7CiAJfQogCisJLyogRGlzY2FyZCB0aGUgY29udGVudHMgb2YgdGhlIEJJT1Mg ZmIgYWNyb3NzIGhpYmVybmF0aW9uLgorCSAqIFdlIHJlYWxseSB3YW50IHRvIGNvbXBsZXRlbHkg dGhyb3dhd2F5IHRoZSBlYXJsaWVyIGZiZGV2CisJICogYW5kIHJlY29uZmlndXJlIGl0IGFueXdh eS4KKwkgKi8KKwlvYmotPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsKKwogCWZiID0gX19pbnRl bF9mcmFtZWJ1ZmZlcl9jcmVhdGUoZGV2LCAmbW9kZV9jbWQsIG9iaik7CiAJaWYgKElTX0VSUihm YikpIHsKIAkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwppbmRleCBkOTM0MTQ2Li5mMmY0YWUwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKQEAgLTUyNzgsNiArNTI3OCw4IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfc2V0dXBf cGN0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCUk5MTVfV1JJVEUoVkxWX1BDQlIsIHBjdHhf cGFkZHIpOwogCiBvdXQ6CisJLyogVGhlIHBvd2VyIGNvbnRleHQgbmVlZCBub3QgYmUgcHJlc2Vy dmVkIGFjcm9zcyBoaWJlcm5hdGlvbiAqLworCXBjdHgtPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1 ZTsKIAlEUk1fREVCVUdfRFJJVkVSKCJQQ0JSOiAweCUwOHhcbiIsIEk5MTVfUkVBRChWTFZfUENC UikpOwogCWRldl9wcml2LT52bHZfcGN0eCA9IHBjdHg7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggZWZiOWI5Zi4uOTVjZDVlMSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMjA3Nyw2ICsyMDc3LDEyIEBAIHN0YXRpYyBp bnQgaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlp ZiAoSVNfRVJSKG9iaikpCiAJCXJldHVybiBQVFJfRVJSKG9iaik7CiAKKwkvKiBSaW5nYnVmZmVy IG9iamVjdHMgYXJlIGJ5IGRlZmluaXRpb24gdm9sYXRpbGUgLSBvbmx5IHRoZSBjb21tYW5kcwor CSAqIGJldHdlZW4gSEVBRCBhbmQgVEFJTCBuZWVkIHRvIGJlIHByZXNlcnZlZCBhbmQgd2hpbHN0 IHRoZXJlIGFyZQorCSAqIGFueSBjb21tYW5kcyB0aGVyZSwgdGhlIHJpbmdidWZmZXIgaXMgcGlu bmVkIGJ5IGFjdGl2aXR5LgorCSAqLworCW9iai0+aW50ZXJuYWxfdm9sYXRpbGUgPSB0cnVlOwor CiAJLyogbWFyayByaW5nIGJ1ZmZlcnMgYXMgcmVhZC1vbmx5IGZyb20gR1BVIHNpZGUgYnkgZGVm YXVsdCAqLwogCW9iai0+Z3Rfcm8gPSAxOwogCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK