From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 09/10] drm/i915: Migrate stolen objects before hibernation Date: Tue, 26 Jan 2016 01:13:35 +0530 Message-ID: <1453751016-8713-10-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id A5B1B72032 for ; Mon, 25 Jan 2016 12:05:35 -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, 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 IGV4cGxhaW5pbmcgaXQKKERhbmllbC9UdnJ0a28pCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTogQW5raXRwcmFz YWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAxNyArKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxMCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyAgICAgICAgIHwgMTk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAgfCAgNDkgKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICB8ICAgMyArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyB8ICAgNiArCiA4IGZpbGVzIGNoYW5nZWQsIDI3OSBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCA3MDZiOGVhLi4w NmNhOWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTk5NCw2ICs5OTQsMjEgQEAgc3Rh dGljIGludCBpOTE1X3BtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBpOTE1 X2RybV9zdXNwZW5kKGRybV9kZXYpOwogfQogCitzdGF0aWMgaW50IGk5MTVfcG1fZnJlZXplKHN0 cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaTkxNV9nZW1fZnJlZXpl KHBjaV9nZXRfZHJ2ZGF0YSh0b19wY2lfZGV2KGRldikpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcmV0ID0gaTkxNV9wbV9zdXNwZW5kKGRldik7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVuZF9sYXRl KHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRl dl90b19pOTE1KGRldiktPmRldjsKQEAgLTE2NDEsNyArMTY1Niw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZGV2X3BtX29wcyBpOTE1X3BtX29wcyA9IHsKIAkgKiBAcmVzdG9yZSwgQHJlc3RvcmVf ZWFybHkgOiBjYWxsZWQgYWZ0ZXIgcmVib290aW5nIGFuZCByZXN0b3JpbmcgdGhlCiAJICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGliZXJuYXRpb24gaW1hZ2UgW1BNU0dfUkVTVE9SRV0K IAkgKi8KLQkuZnJlZXplID0gaTkxNV9wbV9zdXNwZW5kLAorCS5mcmVlemUgPSBpOTE1X3BtX2Zy ZWV6ZSwKIAkuZnJlZXplX2xhdGUgPSBpOTE1X3BtX3N1c3BlbmRfbGF0ZSwKIAkudGhhd19lYXJs eSA9IGk5MTVfcG1fcmVzdW1lX2Vhcmx5LAogCS50aGF3ID0gaTkxNV9wbV9yZXN1bWUsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCBiYjljZDliLi5kNzdkMmVkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTIwOTIsNiArMjA5MiwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCB7CiAJICogQWR2aWNlOiBhcmUgdGhlIGJhY2tpbmcgcGFnZXMgcHVyZ2VhYmxlPwogCSAqLwog CXVuc2lnbmVkIGludCBtYWR2OjI7CisJLyoqCisJICogV2hlcmVhcyBtYWR2IGlzIGZvciB1c2Vy c3BhY2UsIHRoZXJlIGFyZSBjZXJ0YWluIHNpdHVhdGlvbnMKKwkgKiB3aGVyZSB3ZSB3YW50IEk5 MTVfTUFEVl9ET05UTkVFRCBiZWhhdmlvdXIgb24gaW50ZXJuYWwgb2JqZWN0cworCSAqIHdpdGhv dXQgY29uZmxhdGluZyB0aGUgdXNlcnNwYWNlIHNldHRpbmcuCisJICovCisJdW5zaWduZWQgaW50 IGludGVybmFsX3ZvbGF0aWxlOjE7CiAKIAkvKioKIAkgKiBDdXJyZW50IHRpbGluZyBtb2RlIGZv ciB0aGUgb2JqZWN0LgpAQCAtMzA0Nyw2ICszMDUzLDkgQEAgaW50IGk5MTVfZ2VtX2wzX3JlbWFw KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc2xpY2UpOwogdm9pZCBpOTE1 X2dlbV9pbml0X3N3aXp6bGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkxNV9n ZW1fY2xlYW51cF9yaW5nYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IF9fbXVz dF9jaGVjayBpOTE1X2dwdV9pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworaW50IF9fbXVz dF9jaGVjayBpOTE1X2dlbV9mcmVlemUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQgX19t dXN0X2NoZWNrCitpOTE1X2dlbV9vYmplY3RfbWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1f c3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmJhdGNoX29iaiwKQEAgLTMyNzYsNiArMzI4NSw3IEBAIGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJCQkJICAgICAgIHUzMiBzdG9sZW5fb2Zmc2V0LAogCQkJCQkgICAgICAgdTMyIGd0dF9vZmZz ZXQsCiAJCQkJCSAgICAgICB1MzIgc2l6ZSk7CitpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3N0 b2xlbl9mcmVlemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogCiAvKiBpOTE1X2dl bV9zaHJpbmtlci5jICovCiB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA2OGUz YjllLi45ZGNlZmIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTQ3MDYsMTIgKzQ3MDYs MjcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dl bV9vYmplY3Rfb3BzID0gewogCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2Vz X2d0dCwKIH07CiAKK3N0YXRpYyBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqCitpOTE1X2dlbV9zZXRf aW5vZGVfZ2ZwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBmaWxlICpmaWxlKQorewor CXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZmlsZV9pbm9kZShmaWxlKS0+aV9tYXBw aW5nOworCWdmcF90IG1hc2s7CisKKwltYXNrID0gR0ZQX0hJR0hVU0VSIHwgX19HRlBfUkVDTEFJ TUFCTEU7CisJaWYgKElTX0NSRVNUTElORShkZXYpIHx8IElTX0JST0FEV0FURVIoZGV2KSkgewor CQkvKiA5NjVnbSBjYW5ub3QgcmVsb2NhdGUgb2JqZWN0cyBhYm92ZSA0R2lCLiAqLworCQltYXNr ICY9IH5fX0dGUF9ISUdITUVNOworCQltYXNrIHw9IF9fR0ZQX0RNQTMyOworCX0KKwltYXBwaW5n X3NldF9nZnBfbWFzayhtYXBwaW5nLCBtYXNrKTsKKworCXJldHVybiBtYXBwaW5nOworfQorCiBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCQkJCQkgIHNpemVfdCBzaXplKQogewogCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7Ci0JZ2Zw X3QgbWFzazsKIAlpbnQgcmV0OwogCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2FsbG9jKGRldik7 CkBAIC00NzI0LDE1ICs0NzM5LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmk5MTVf Z2VtX2FsbG9jX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyZXR1cm4gRVJSX1BU UihyZXQpOwogCX0KIAotCW1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJMRTsK LQlpZiAoSVNfQ1JFU1RMSU5FKGRldikgfHwgSVNfQlJPQURXQVRFUihkZXYpKSB7Ci0JCS8qIDk2 NWdtIGNhbm5vdCByZWxvY2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIuICovCi0JCW1hc2sgJj0gfl9f R0ZQX0hJR0hNRU07Ci0JCW1hc2sgfD0gX19HRlBfRE1BMzI7Ci0JfQotCi0JbWFwcGluZyA9IGZp bGVfaW5vZGUob2JqLT5iYXNlLmZpbHApLT5pX21hcHBpbmc7Ci0JbWFwcGluZ19zZXRfZ2ZwX21h c2sobWFwcGluZywgbWFzayk7CisJaTkxNV9nZW1fc2V0X2lub2RlX2dmcChkZXYsIG9iai0+YmFz ZS5maWxwKTsKIAogCWk5MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2VtX29iamVjdF9v cHMpOwogCkBAIC00OTA3LDYgKzQ5MTQsMTc1IEBAIGk5MTVfZ2VtX3N0b3BfcmluZ2J1ZmZlcnMo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZGV2X3ByaXYtPmd0LnN0b3BfcmluZyhyaW5nKTsK IH0KIAorc3RhdGljIGludAorY29weV9jb250ZW50KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCisJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQlzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqbWFwcGluZykKK3sKKwlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKKwlpbnQgcmV0 LCBpOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFs c2UpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBzdG9sZW4gb2JqZWN0cyBhcmUg YWxyZWFkeSBwaW5uZWQgdG8gcHJldmVudCBzaHJpbmthZ2UgKi8KKwltZW1zZXQoJm5vZGUsIDAs IHNpemVvZihub2RlKSk7CisJcmV0ID0gaW5zZXJ0X21hcHBhYmxlX25vZGUoaTkxNSwgJm5vZGUs IFBBR0VfU0laRSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWZvciAoaSA9IDA7IGkg PCBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsgaSsrKSB7CisJCXN0cnVjdCBwYWdlICpwYWdl OworCQl2b2lkICpfX2lvbWVtIHNyYzsKKwkJdm9pZCAqZHN0OworCisJCWk5MTUtPmd0dC5iYXNl Lmluc2VydF9wYWdlKCZpOTE1LT5ndHQuYmFzZSwKKwkJCQkJICAgaTkxNV9nZW1fb2JqZWN0X2dl dF9kbWFfYWRkcmVzcyhvYmosIGkpLAorCQkJCQkgICBub2RlLnN0YXJ0LAorCQkJCQkgICBJOTE1 X0NBQ0hFX05PTkUsCisJCQkJCSAgIDApOworCisJCXBhZ2UgPSBzaG1lbV9yZWFkX21hcHBpbmdf cGFnZShtYXBwaW5nLCBpKTsKKwkJaWYgKElTX0VSUihwYWdlKSkgeworCQkJcmV0ID0gUFRSX0VS UihwYWdlKTsKKwkJCWJyZWFrOworCQl9CisKKwkJc3JjID0gaW9fbWFwcGluZ19tYXBfYXRvbWlj X3djKGk5MTUtPmd0dC5tYXBwYWJsZSwgbm9kZS5zdGFydCk7CisJCWRzdCA9IGttYXBfYXRvbWlj KHBhZ2UpOworCQl3bWIoKTsKKwkJbWVtY3B5X2Zyb21pbyhkc3QsIHNyYywgUEFHRV9TSVpFKTsK KwkJd21iKCk7CisJCWt1bm1hcF9hdG9taWMoZHN0KTsKKwkJaW9fbWFwcGluZ191bm1hcF9hdG9t aWMoc3JjKTsKKworCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CisJfQorCisJaTkxNS0+Z3R0 LmJhc2UuY2xlYXJfcmFuZ2UoJmk5MTUtPmd0dC5iYXNlLAorCQkJCSAgIG5vZGUuc3RhcnQsIG5v ZGUuc2l6ZSwKKwkJCQkgICB0cnVlKTsKKwlyZW1vdmVfbWFwcGFibGVfbm9kZSgmbm9kZSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2NwdV9kb21haW4ob2JqLCB0cnVlKTsKK30KKworLyoqCisgKiBpOTE1X2dlbV9vYmplY3RfbWln cmF0ZV9zdG9sZW5fdG9fc2htZW1mcygpIC0gbWlncmF0ZXMgYSBzdG9sZW4gYmFja2VkCisgKiBv YmplY3QgdG8gc2htZW1mcworICogQG9iajogc3RvbGVuIGJhY2tlZCBvYmplY3QgdG8gYmUgbWln cmF0ZWQKKyAqCisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3NmdWwgbWlncmF0aW9uLCBlcnJubyBv biBmYWlsdXJlCisgKi8KKworaW50CitpOTE1X2dlbV9vYmplY3RfbWlncmF0ZV9zdG9sZW5fdG9f c2htZW1mcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkx NV92bWEgKnZtYSwgKnZuOworCXN0cnVjdCBmaWxlICpmaWxlOworCXN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nOworCXN0cnVjdCBzZ190YWJsZSAqc3RvbGVuX3BhZ2VzLCAqc2htZW1mc19w YWdlczsKKwlpbnQgcmV0OworCisJaWYgKFdBUk5fT05fT05DRShpOTE1X2dlbV9vYmplY3RfbmVl ZHNfYml0MTdfc3dpenpsZShvYmopKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlmaWxlID0gc2ht ZW1fZmlsZV9zZXR1cCgiZHJtIG1tIG9iamVjdCIsIG9iai0+YmFzZS5zaXplLCBWTV9OT1JFU0VS VkUpOworCWlmIChJU19FUlIoZmlsZSkpCisJCXJldHVybiBQVFJfRVJSKGZpbGUpOworCW1hcHBp bmcgPSBpOTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKG9iai0+YmFzZS5kZXYsIGZpbGUpOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykK KwkJaWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQorCQkJY29udGludWU7CisKKwlpZiAob2JqLT5t YWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCAmJiBsaXN0X2VtcHR5KCZvYmotPnZtYV9saXN0KSkg eworCQkvKiBEaXNjYXJkIHRoZSBzdG9sZW4gcmVzZXJ2YXRpb24sIGFuZCByZXBsYWNlIHdpdGgK KwkJICogYW4gdW5wb3B1bGF0ZWQgc2htZW1mcyBvYmplY3QuCisJCSAqLworCQlvYmotPm1hZHYg PSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJCWxpc3RfZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKKwl9 IGVsc2UgeworCQlyZXQgPSBjb3B5X2NvbnRlbnQob2JqLCBpOTE1LCBtYXBwaW5nKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyX2ZpbGU7CisJfQorCisJc3RvbGVuX3BhZ2VzID0gb2JqLT5wYWdl czsKKwlvYmotPnBhZ2VzID0gTlVMTDsKKworCW9iai0+YmFzZS5maWxwID0gZmlsZTsKKworCS8q IFJlY3JlYXRlIGFueSBwaW5uZWQgYmluZGluZyB3aXRoIHBvaW50ZXJzIHRvIHRoZSBuZXcgc3Rv cmFnZSAqLworCWlmICghbGlzdF9lbXB0eSgmb2JqLT52bWFfbGlzdCkpIHsKKwkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQob2JqKTsKKwkJaWYgKHJldCkgeworCQkJb2JqLT5w YWdlcyA9IHN0b2xlbl9wYWdlczsKKwkJCWdvdG8gZXJyX2ZpbGU7CisJCX0KKworCQlvYmotPmdl dF9wYWdlLnNnID0gb2JqLT5wYWdlcy0+c2dsOworCQlvYmotPmdldF9wYWdlLmxhc3QgPSAwOwor CisJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspIHsK KwkJCWlmICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQorCQkJCWNvbnRpbnVl OworCisJCQkvKiBBcyB2bWEgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgYW5kIG9ubHkgdGhlIFBURXMK KwkJCSAqIGhhdmUgdG8gYmUgcmVwcm9ncmFtbWVkLCBtYWtlcyB0aGlzIHZtYV9iaW5kCisJCQkg KiBjYWxsIGV4dHJlbWVseSB1bmxpa2VseSB0byBmYWlsLgorCQkJICovCisJCQlCVUdfT04oaTkx NV92bWFfYmluZCh2bWEsCisJCQkJCSAgICAgIG9iai0+Y2FjaGVfbGV2ZWwsCisJCQkJCSAgICAg IFBJTl9VUERBVEUpKTsKKwkJfQorCX0KKworCS8qIGRyb3AgdGhlIHN0b2xlbiBwaW4gYW5kIGJh Y2tpbmcgKi8KKwlzaG1lbWZzX3BhZ2VzID0gb2JqLT5wYWdlczsKKwlvYmotPnBhZ2VzID0gc3Rv bGVuX3BhZ2VzOworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisJb2JqLT5v cHMtPnB1dF9wYWdlcyhvYmopOworCWlmIChvYmotPm9wcy0+cmVsZWFzZSkKKwkJb2JqLT5vcHMt PnJlbGVhc2Uob2JqKTsKKworCW9iai0+b3BzID0gJmk5MTVfZ2VtX29iamVjdF9vcHM7CisJb2Jq LT5wYWdlcyA9IHNobWVtZnNfcGFnZXM7CisKKwlyZXR1cm4gMDsKKworZXJyX2ZpbGU6CisJZnB1 dChmaWxlKTsKKwlvYmotPmJhc2UuZmlscCA9IE5VTEw7CisJcmV0dXJuIHJldDsKK30KKworaW50 CitpOTE1X2dlbV9mcmVlemUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwkvKiBDYWxsZWQg YmVmb3JlIGk5MTVfZ2VtX3N1c3BlbmQoKSB3aGVuIGhpYmVybmF0aW5nICovCisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7CisJaW50IHJldDsKKworCXJldCA9 IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCS8qIEFjcm9zcyBoaWJlcm5hdGlvbiwgdGhlIHN0b2xlbiBhcmVhIGlzIG5vdCBw cmVzZXJ2ZWQuCisJICogQW55dGhpbmcgaW5zaWRlIHN0b2xlbiBtdXN0IGNvcGllZCBiYWNrIHRv IG5vcm1hbAorCSAqIG1lbW9yeSBpZiB3ZSB3aXNoIHRvIHByZXNlcnZlIGl0LgorCSAqLworCXJl dCA9IGk5MTVfZ2VtX3N0b2xlbl9mcmVlemUoaTkxNSk7CisKKwltdXRleF91bmxvY2soJmRldi0+ c3RydWN0X211dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCiBpbnQKIGk5MTVfZ2VtX3N1c3BlbmQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3Rv bGVuLmMKaW5kZXggNjU1ZWIxNS4uMzM1YTFlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc3RvbGVuLmMKQEAgLTg0MCwzICs4NDAsNTIgQEAgZXJyOgogCWRybV9nZW1fb2JqZWN0X3Vu cmVmZXJlbmNlKCZvYmotPmJhc2UpOwogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CisKK2ludCBp OTE1X2dlbV9zdG9sZW5fZnJlZXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosICp0bXA7CisJc3RydWN0IGxpc3RfaGVh ZCAqcGhhc2VbXSA9IHsKKwkJJmk5MTUtPm1tLnVuYm91bmRfbGlzdCwgJmk5MTUtPm1tLmJvdW5k X2xpc3QsIE5VTEwKKwl9LCAqKnA7CisJaW50IHJldCA9IDA7CisKKwlmb3IgKHAgPSBwaGFzZTsg KnA7IHArKykgeworCQlzdHJ1Y3QgbGlzdF9oZWFkIG1pZ3JhdGU7CisJCWludCByZXQ7CisKKwkJ SU5JVF9MSVNUX0hFQUQoJm1pZ3JhdGUpOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2Jq LCB0bXAsICpwLCBnbG9iYWxfbGlzdCkgeworCQkJaWYgKG9iai0+c3RvbGVuID09IE5VTEwpCisJ CQkJY29udGludWU7CisKKwkJCWlmIChvYmotPmludGVybmFsX3ZvbGF0aWxlKQorCQkJCWNvbnRp bnVlOworCisJCQkvKiBJbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGlzIG9iamVjdCBtYXkgb25seSBi ZSBhbGl2ZQorCQkJICogZHVlIHRvIGFuIGFjdGl2ZSByZWZlcmVuY2UsIGFuZCB0aGF0IG1heSBk aXNhcHBlYXIKKwkJCSAqIHdoZW4gd2UgdW5iaW5kIGFueSBvZiB0aGUgb2JqZWN0cyAoYW5kIHNv IHdhaXQgdXBvbgorCQkJICogdGhlIEdQVSBhbmQgcmV0aXJlIHJlcXVlc3RzKS4gVG8gcHJldmVu dCBvbmUgb2YgdGhlCisJCQkgKiBvYmplY3RzIGZyb20gZGlzYXBwZWFyaW5nIGJlbmVhdGggdXMs IHdlIG5lZWQgdG8KKwkJCSAqIHRha2UgYSByZWZlcmVuY2UgdG8gZWFjaCBhcyB3ZSBidWlsZCB0 aGUgbWlncmF0aW9uCisJCQkgKiBsaXN0LgorCQkJICoKKwkJCSAqIFRoaXMgaXMgc2ltaWxhciB0 byB0aGUgc3RyYXRlZ3kgcmVxdWlyZWQgd2hpbHN0CisJCQkgKiBzaHJpbmtpbmcgb3IgZXZpY3Rp bmcgb2JqZWN0cyAoZm9yIHRoZSBzYW1lIHJlYXNvbikuCisJCQkgKi8KKwkJCWRybV9nZW1fb2Jq ZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJCWxpc3RfbW92ZSgmb2JqLT5nbG9iYWxfbGlz dCwgJm1pZ3JhdGUpOworCQl9CisKKwkJcmV0ID0gMDsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKG9iaiwgdG1wLCAmbWlncmF0ZSwgZ2xvYmFsX2xpc3QpIHsKKwkJCWlmIChyZXQgPT0gMCkK KwkJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfbWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcyhvYmop OworCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7CisJCX0KKwkJbGlz dF9zcGxpY2UoJm1pZ3JhdGUsICpwKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOworCX0KKworCXJl dHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZGZmMGM3 Ni4uOTQ0MGU3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjU1OCw2 ICsyNTU4LDkgQEAgaW50ZWxfYWxsb2NfaW5pdGlhbF9wbGFuZV9vYmooc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKiBOb3Qg dG8gYmUgcHJlc2VydmVkIGFjcm9zcyBoaWJlcm5hdGlvbiAqLworCW9iai0+aW50ZXJuYWxfdm9s YXRpbGUgPSB0cnVlOworCiAJb2JqLT50aWxpbmdfbW9kZSA9IHBsYW5lX2NvbmZpZy0+dGlsaW5n OwogCWlmIChvYmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCiAJCW9iai0+c3RyaWRl ID0gZmItPnBpdGNoZXNbMF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCAxYzg5 N2NiLi5jOGFmZmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKQEAgLTE1Niw2ICsx NTYsMTIgQEAgc3RhdGljIGludCBpbnRlbGZiX2FsbG9jKHN0cnVjdCBkcm1fZmJfaGVscGVyICpo ZWxwZXIsCiAJCWdvdG8gb3V0OwogCX0KIAorCS8qIERpc2NhcmQgdGhlIGNvbnRlbnRzIG9mIHRo ZSBCSU9TIGZiIGFjcm9zcyBoaWJlcm5hdGlvbi4KKwkgKiBXZSByZWFsbHkgd2FudCB0byBjb21w bGV0ZWx5IHRocm93YXdheSB0aGUgZWFybGllciBmYmRldgorCSAqIGFuZCByZWNvbmZpZ3VyZSBp dCBhbnl3YXkuCisJICovCisJb2JqLT5pbnRlcm5hbF92b2xhdGlsZSA9IHRydWU7CisKIAlmYiA9 IF9faW50ZWxfZnJhbWVidWZmZXJfY3JlYXRlKGRldiwgJm1vZGVfY21kLCBvYmopOwogCWlmIChJ U19FUlIoZmIpKSB7CiAJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMDUwYTY3MS4uNzEyMTQ2MyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCkBAIC01MjQwLDYgKzUyNDAsOCBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3 X3NldHVwX3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlJOTE1X1dSSVRFKFZMVl9QQ0JS LCBwY3R4X3BhZGRyKTsKIAogb3V0OgorCS8qIFRoZSBwb3dlciBjb250ZXh0IG5lZWQgbm90IGJl IHByZXNlcnZlZCBhY3Jvc3MgaGliZXJuYXRpb24gKi8KKwlwY3R4LT5pbnRlcm5hbF92b2xhdGls ZSA9IHRydWU7CiAJRFJNX0RFQlVHX0RSSVZFUigiUENCUjogMHglMDh4XG4iLCBJOTE1X1JFQUQo VkxWX1BDQlIpKTsKIAlkZXZfcHJpdi0+dmx2X3BjdHggPSBwY3R4OwogfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDFhYWE0ZTMuLmU5NTU5ZWMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTIwOTEsNiArMjA5MSwxMiBAQCBz dGF0aWMgaW50IGludGVsX2FsbG9jX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwogCisJLyogUmlu Z2J1ZmZlciBvYmplY3RzIGFyZSBieSBkZWZpbml0aW9uIHZvbGF0aWxlIC0gb25seSB0aGUgY29t bWFuZHMKKwkgKiBiZXR3ZWVuIEhFQUQgYW5kIFRBSUwgbmVlZCB0byBiZSBwcmVzZXJ2ZWQgYW5k IHdoaWxzdCB0aGVyZSBhcmUKKwkgKiBhbnkgY29tbWFuZHMgdGhlcmUsIHRoZSByaW5nYnVmZmVy IGlzIHBpbm5lZCBieSBhY3Rpdml0eS4KKwkgKi8KKwlvYmotPmludGVybmFsX3ZvbGF0aWxlID0g dHJ1ZTsKKwogCS8qIG1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQVSBzaWRl IGJ5IGRlZmF1bHQgKi8KIAlvYmotPmd0X3JvID0gMTsKIAotLSAKMS45LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==