From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 6/6] drm/i915: Migrate stolen objects before hibernation Date: Wed, 11 Nov 2015 16:06:13 +0530 Message-ID: <1447238173-31347-7-git-send-email-ankitprasad.r.sharma@intel.com> References: <1447238173-31347-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 F096A6E48A for ; Wed, 11 Nov 2015 02:55:53 -0800 (PST) In-Reply-To: <1447238173-31347-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 ZXMgZm9yIG1pZ3JhdGlvbiB0bwpzaG1lbSAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTogQW5raXRwcmFz YWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgIDE3ICsrLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgICAgICB8IDIzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgICAzICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jIHwgICA2ICsKIDcgZmlsZXMgY2hhbmdlZCwgMjY0IGluc2VydGlvbnMo KyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDlmNTUyMDku LjJiYjllOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMTAzNiw2ICsxMDM2LDIxIEBA IHN0YXRpYyBpbnQgaTkxNV9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4g aTkxNV9kcm1fc3VzcGVuZChkcm1fZGV2KTsKIH0KIAorc3RhdGljIGludCBpOTE1X3BtX2ZyZWV6 ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VtX2Zy ZWV6ZShwY2lfZ2V0X2RydmRhdGEodG9fcGNpX2RldihkZXYpKSk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCXJldCA9IGk5MTVfcG1fc3VzcGVuZChkZXYpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBpOTE1X3BtX3N1c3BlbmRf bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYg PSBkZXZfdG9faTkxNShkZXYpLT5kZXY7CkBAIC0xNzAwLDcgKzE3MTUsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRldl9wbV9vcHMgaTkxNV9wbV9vcHMgPSB7CiAJICogQHJlc3RvcmUsIEByZXN0 b3JlX2Vhcmx5IDogY2FsbGVkIGFmdGVyIHJlYm9vdGluZyBhbmQgcmVzdG9yaW5nIHRoZQogCSAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpYmVybmF0aW9uIGltYWdlIFtQTVNHX1JFU1RP UkVdCiAJICovCi0JLmZyZWV6ZSA9IGk5MTVfcG1fc3VzcGVuZCwKKwkuZnJlZXplID0gaTkxNV9w bV9mcmVlemUsCiAJLmZyZWV6ZV9sYXRlID0gaTkxNV9wbV9zdXNwZW5kX2xhdGUsCiAJLnRoYXdf ZWFybHkgPSBpOTE1X3BtX3Jlc3VtZV9lYXJseSwKIAkudGhhdyA9IGk5MTVfcG1fcmVzdW1lLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMmM3NWMzMi4uYTRlMWJmNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCkBAIC0yMDc5LDYgKzIwNzksMTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgewogCSAqIEFkdmljZTogYXJlIHRoZSBiYWNraW5nIHBhZ2VzIHB1cmdlYWJsZT8KIAkg Ki8KIAl1bnNpZ25lZCBpbnQgbWFkdjoyOworCS8qKgorCSAqIFdoZXJlYXMgbWFkdiBpcyBmb3Ig dXNlcnNwYWNlLCB0aGVyZSBhcmUgY2VydGFpbiBzaXR1YXRpb25zCisJICogd2hlcmUgd2Ugd2Fu dCBJOTE1X01BRFZfRE9OVE5FRUQgYmVoYXZpb3VyIG9uIGludGVybmFsIG9iamVjdHMKKwkgKiB3 aXRob3V0IGNvbmZsYXRpbmcgdGhlIHVzZXJzcGFjZSBzZXR0aW5nLgorCSAqLworCXVuc2lnbmVk IGludCBpbnRlcm5hbF92b2xhdGlsZToxOwogCiAJLyoqCiAJICogQ3VycmVudCB0aWxpbmcgbW9k ZSBmb3IgdGhlIG9iamVjdC4KQEAgLTMwMDYsNiArMzAxMiw3IEBAIGludCBpOTE1X2dlbV9sM19y ZW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHNsaWNlKTsKIHZvaWQg aTkxNV9nZW1faW5pdF9zd2l6emxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGk5 MTVfZ2VtX2NsZWFudXBfcmluZ2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGludCBf X211c3RfY2hlY2sgaTkxNV9ncHVfaWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCBf X211c3RfY2hlY2sgaTkxNV9nZW1fZnJlZXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50 IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwog dm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqLApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKaW5kZXggZTBiOTUwMi4uZGJlMTE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CkBAIC00NTA2LDEyICs0NTA2LDI3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X29wcyA9IHsKIAkucHV0X3BhZ2VzID0gaTkxNV9n ZW1fb2JqZWN0X3B1dF9wYWdlc19ndHQsCiB9OwogCitzdGF0aWMgc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKgoraTkxNV9nZW1fc2V0X2lub2RlX2dmcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZpbGVf aW5vZGUoZmlsZSktPmlfbWFwcGluZzsKKwlnZnBfdCBtYXNrOworCisJbWFzayA9IEdGUF9ISUdI VVNFUiB8IF9fR0ZQX1JFQ0xBSU1BQkxFOworCWlmIChJU19DUkVTVExJTkUoZGV2KSB8fCBJU19C Uk9BRFdBVEVSKGRldikpIHsKKwkJLyogOTY1Z20gY2Fubm90IHJlbG9jYXRlIG9iamVjdHMgYWJv dmUgNEdpQi4gKi8KKwkJbWFzayAmPSB+X19HRlBfSElHSE1FTTsKKwkJbWFzayB8PSBfX0dGUF9E TUEzMjsKKwl9CisJbWFwcGluZ19zZXRfZ2ZwX21hc2sobWFwcGluZywgbWFzayk7CisKKwlyZXR1 cm4gbWFwcGluZzsKK30KKwogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmk5MTVfZ2VtX2Fs bG9jX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkJICBzaXplX3Qgc2l6ZSkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nOwotCWdmcF90IG1hc2s7CiAJaW50IHJldCA9IDA7CiAKIAlvYmogPSBpOTE1 X2dlbV9vYmplY3RfYWxsb2MoZGV2KTsKQEAgLTQ1MjMsMTUgKzQ1MzgsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCi0JbWFzayA9IEdGUF9ISUdIVVNF UiB8IF9fR0ZQX1JFQ0xBSU1BQkxFOwotCWlmIChJU19DUkVTVExJTkUoZGV2KSB8fCBJU19CUk9B RFdBVEVSKGRldikpIHsKLQkJLyogOTY1Z20gY2Fubm90IHJlbG9jYXRlIG9iamVjdHMgYWJvdmUg NEdpQi4gKi8KLQkJbWFzayAmPSB+X19HRlBfSElHSE1FTTsKLQkJbWFzayB8PSBfX0dGUF9ETUEz MjsKLQl9Ci0KLQltYXBwaW5nID0gZmlsZV9pbm9kZShvYmotPmJhc2UuZmlscCktPmlfbWFwcGlu ZzsKLQltYXBwaW5nX3NldF9nZnBfbWFzayhtYXBwaW5nLCBtYXNrKTsKKwlpOTE1X2dlbV9zZXRf aW5vZGVfZ2ZwKGRldiwgb2JqLT5iYXNlLmZpbHApOwogCiAJaTkxNV9nZW1fb2JqZWN0X2luaXQo b2JqLCAmaTkxNV9nZW1fb2JqZWN0X29wcyk7CiAKQEAgLTQ3MDgsNiArNDcxNSwyMTIgQEAgaTkx NV9nZW1fc3RvcF9yaW5nYnVmZmVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlkZXZfcHJp di0+Z3Quc3RvcF9yaW5nKHJpbmcpOwogfQogCitzdGF0aWMgaW50CitpOTE1X2dlbV9vYmplY3Rf bWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2Uu ZGV2KTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOworCXN0cnVjdCBkcm1fbW1fbm9kZSBu b2RlOworCXN0cnVjdCBmaWxlICpmaWxlOworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n OworCXN0cnVjdCBzZ190YWJsZSAqc3RvbGVuX3BhZ2VzLCAqc2htZW1mc19wYWdlczsKKwlpbnQg cmV0LCBpOworCisJaWYgKFdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X25lZWRzX2JpdDE3X3N3aXp6 bGUob2JqKSkpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlmaWxlID0gc2htZW1fZmlsZV9zZXR1cCgiZHJtIG1tIG9iamVjdCIsIG9iai0+YmFzZS5zaXpl LCBWTV9OT1JFU0VSVkUpOworCWlmIChJU19FUlIoZmlsZSkpCisJCXJldHVybiBQVFJfRVJSKGZp bGUpOworCW1hcHBpbmcgPSBpOTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKG9iai0+YmFzZS5kZXYsIGZp bGUpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sICZvYmotPnZtYV9saXN0 LCB2bWFfbGluaykKKwkJaWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQorCQkJY29udGludWU7CisK KwlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCAmJiBsaXN0X2VtcHR5KCZvYmot PnZtYV9saXN0KSkgeworCQkvKiBEaXNjYXJkIHRoZSBzdG9sZW4gcmVzZXJ2YXRpb24sIGFuZCBy ZXBsYWNlIHdpdGgKKwkJICogYW4gdW5wb3B1bGF0ZWQgc2htZW1mcyBvYmplY3QuCisJCSAqLwor CQlvYmotPm1hZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJCWdvdG8gc3dhcF9wYWdlczsKKwl9 CisKKwkvKiBzdG9sZW4gb2JqZWN0cyBhcmUgYWxyZWFkeSBwaW5uZWQgdG8gcHJldmVudCBzaHJp bmthZ2UgKi8KKwltZW1zZXQoJm5vZGUsIDAsIHNpemVvZihub2RlKSk7CisJcmV0ID0gZHJtX21t X2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoJmk5MTUtPmd0dC5iYXNlLm1tLAorCQkJCQkJ ICAmbm9kZSwKKwkJCQkJCSAgNDA5NiwgMCwgSTkxNV9DQUNIRV9OT05FLAorCQkJCQkJICAwLCBp OTE1LT5ndHQubWFwcGFibGVfZW5kLAorCQkJCQkJICBEUk1fTU1fU0VBUkNIX0RFRkFVTFQsCisJ CQkJCQkgIERSTV9NTV9DUkVBVEVfREVGQVVMVCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCWZvciAoaSA9IDA7IGkgPCBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsgaSsrKSB7CisJ CXN0cnVjdCBwYWdlICpwYWdlOworCQl2b2lkICpfX2lvbWVtIHNyYzsKKwkJdm9pZCAqZHN0Owor CisJCXdtYigpOworCQlpOTE1LT5ndHQuYmFzZS5pbnNlcnRfcGFnZSgmaTkxNS0+Z3R0LmJhc2Us CisJCQkJCSAgIGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Mob2JqLCBpKSwKKwkJCQkJ ICAgbm9kZS5zdGFydCwKKwkJCQkJICAgSTkxNV9DQUNIRV9OT05FLAorCQkJCQkgICAwKTsKKwkJ d21iKCk7CisKKwkJcGFnZSA9IHNobWVtX3JlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIGkpOwor CQlpZiAoSVNfRVJSKHBhZ2UpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHBhZ2UpOworCQkJZ290byBl cnJfbm9kZTsKKwkJfQorCisJCXNyYyA9IGlvX21hcHBpbmdfbWFwX2F0b21pY193YyhpOTE1LT5n dHQubWFwcGFibGUsIG5vZGUuc3RhcnQgKyBQQUdFX1NJWkUgKiBpKTsKKwkJZHN0ID0ga21hcF9h dG9taWMocGFnZSk7CisJCW1lbWNweV9mcm9taW8oZHN0LCBzcmMsIFBBR0VfU0laRSk7CisJCWt1 bm1hcF9hdG9taWMoZHN0KTsKKwkJaW9fbWFwcGluZ191bm1hcF9hdG9taWMoc3JjKTsKKworCQlw YWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CisJfQorCisJd21iKCk7CisJaTkxNS0+Z3R0LmJhc2Uu Y2xlYXJfcmFuZ2UoJmk5MTUtPmd0dC5iYXNlLAorCQkJCSAgIG5vZGUuc3RhcnQsIG5vZGUuc2l6 ZSwKKwkJCQkgICB0cnVlKTsKKwlkcm1fbW1fcmVtb3ZlX25vZGUoJm5vZGUpOworCitzd2FwX3Bh Z2VzOgorCXN0b2xlbl9wYWdlcyA9IG9iai0+cGFnZXM7CisJb2JqLT5wYWdlcyA9IE5VTEw7CisK KwlvYmotPmJhc2UuZmlscCA9IGZpbGU7CisJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9IEk5MTVf R0VNX0RPTUFJTl9DUFU7CisJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJ Tl9DUFU7CisKKwkvKiBSZWNyZWF0ZSBhbnkgcGlubmVkIGJpbmRpbmcgd2l0aCBwb2ludGVycyB0 byB0aGUgbmV3IHN0b3JhZ2UgKi8KKwlpZiAoIWxpc3RfZW1wdHkoJm9iai0+dm1hX2xpc3QpKSB7 CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KG9iaik7CisJCWlmIChyZXQp IHsKKwkJCW9iai0+cGFnZXMgPSBzdG9sZW5fcGFnZXM7CisJCQlnb3RvIGVycl9maWxlOworCQl9 CisKKwkJcmV0ID0gaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KG9iaik7CisJCWlmIChyZXQp IHsKKwkJCWk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0KG9iaik7CisJCQlvYmotPnBhZ2Vz ID0gc3RvbGVuX3BhZ2VzOworCQkJZ290byBlcnJfZmlsZTsKKwkJfQorCisJCXJldCA9IGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOworCQlpZiAocmV0KSB7CisJ CQlpOTE1X2dlbV9ndHRfZmluaXNoX29iamVjdChvYmopOworCQkJaTkxNV9nZW1fb2JqZWN0X3B1 dF9wYWdlc19ndHQob2JqKTsKKwkJCW9iai0+cGFnZXMgPSBzdG9sZW5fcGFnZXM7CisJCQlnb3Rv IGVycl9maWxlOworCQl9CisKKwkJb2JqLT5nZXRfcGFnZS5zZyA9IG9iai0+cGFnZXMtPnNnbDsK KwkJb2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7CisJCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRl ZCgmdm1hLT5ub2RlKSkKKwkJCQljb250aW51ZTsKKworCQkJV0FSTl9PTihpOTE1X3ZtYV9iaW5k KHZtYSwKKwkJCQkJICAgICAgb2JqLT5jYWNoZV9sZXZlbCwKKwkJCQkJICAgICAgUElOX1VQREFU RSkpOworCQl9CisJfSBlbHNlCisJCWxpc3RfZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKKworCS8q IGRyb3AgdGhlIHN0b2xlbiBwaW4gYW5kIGJhY2tpbmcgKi8KKwlzaG1lbWZzX3BhZ2VzID0gb2Jq LT5wYWdlczsKKwlvYmotPnBhZ2VzID0gc3RvbGVuX3BhZ2VzOworCisJaTkxNV9nZW1fb2JqZWN0 X3VucGluX3BhZ2VzKG9iaik7CisJb2JqLT5vcHMtPnB1dF9wYWdlcyhvYmopOworCWlmIChvYmot Pm9wcy0+cmVsZWFzZSkKKwkJb2JqLT5vcHMtPnJlbGVhc2Uob2JqKTsKKworCW9iai0+b3BzID0g Jmk5MTVfZ2VtX29iamVjdF9vcHM7CisJb2JqLT5wYWdlcyA9IHNobWVtZnNfcGFnZXM7CisKKwly ZXR1cm4gMDsKKworZXJyX25vZGU6CisJd21iKCk7CisJaTkxNS0+Z3R0LmJhc2UuY2xlYXJfcmFu Z2UoJmk5MTUtPmd0dC5iYXNlLAorCQkJCSAgIG5vZGUuc3RhcnQsIG5vZGUuc2l6ZSwKKwkJCQkg ICB0cnVlKTsKKwlkcm1fbW1fcmVtb3ZlX25vZGUoJm5vZGUpOworZXJyX2ZpbGU6CisJZnB1dChm aWxlKTsKKwlvYmotPmJhc2UuZmlscCA9IE5VTEw7CisJcmV0dXJuIHJldDsKK30KKworaW50Citp OTE1X2dlbV9mcmVlemUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwkvKiBDYWxsZWQgYmVm b3JlIGk5MTVfZ2VtX3N1c3BlbmQoKSB3aGVuIGhpYmVybmF0aW5nICovCisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwgKnRtcDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwaGFzZVtdID0geworCQkmaTkx NS0+bW0udW5ib3VuZF9saXN0LCAmaTkxNS0+bW0uYm91bmRfbGlzdCwgTlVMTAorCX0sICoqcDsK KworCS8qIEFjcm9zcyBoaWJlcm5hdGlvbiwgdGhlIHN0b2xlbiBhcmVhIGlzIG5vdCBwcmVzZXJ2 ZWQuCisJICogQW55dGhpbmcgaW5zaWRlIHN0b2xlbiBtdXN0IGNvcGllZCBiYWNrIHRvIG5vcm1h bAorCSAqIG1lbW9yeSBpZiB3ZSB3aXNoIHRvIHByZXNlcnZlIGl0LgorCSAqLworCWZvciAocCA9 IHBoYXNlOyAqcDsgcCsrKSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgbWlncmF0ZTsKKwkJaW50IHJl dDsKKworCQlJTklUX0xJU1RfSEVBRCgmbWlncmF0ZSk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShvYmosIHRtcCwgKnAsIGdsb2JhbF9saXN0KSB7CisJCQlpZiAob2JqLT5zdG9sZW4gPT0g TlVMTCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKG9iai0+aW50ZXJuYWxfdm9sYXRpbGUpCisJ CQkJY29udGludWU7CisKKwkJCS8qIEluIHRoZSBnZW5lcmFsIGNhc2UsIHRoaXMgb2JqZWN0IG1h eSBvbmx5IGJlIGFsaXZlCisJCQkgKiBkdWUgdG8gYW4gYWN0aXZlIHJlZmVyZW5jZSwgYW5kIHRo YXQgbWF5IGRpc2FwcGVhcgorCQkJICogd2hlbiB3ZSB1bmJpbmQgYW55IG9mIHRoZSBvYmplY3Rz IChhbmQgc28gd2FpdCB1cG9uCisJCQkgKiB0aGUgR1BVIGFuZCByZXRpcmUgcmVxdWVzdHMpLiBU byBwcmV2ZW50IG9uZSBvZiB0aGUKKwkJCSAqIG9iamVjdHMgZnJvbSBkaXNhcHBlYXJpbmcgYmVu ZWF0aCB1cywgd2UgbmVlZCB0bworCQkJICogdGFrZSBhIHJlZmVyZW5jZSB0byBlYWNoIGFzIHdl IGJ1aWxkIHRoZSBtaWdyYXRpb24KKwkJCSAqIGxpc3QuCisJCQkgKgorCQkJICogVGhpcyBpcyBz aW1pbGFyIHRvIHRoZSBzdHJhdGVneSByZXF1aXJlZCB3aGlsc3QKKwkJCSAqIHNocmlua2luZyBv ciBldmljdGluZyBvYmplY3RzIChmb3IgdGhlIHNhbWUgcmVhc29uKS4KKwkJCSAqLworCQkJZHJt X2dlbV9vYmplY3RfcmVmZXJlbmNlKCZvYmotPmJhc2UpOworCQkJbGlzdF9tb3ZlKCZvYmotPmds b2JhbF9saXN0LCAmbWlncmF0ZSk7CisJCX0KKworCQlyZXQgPSAwOworCQlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUob2JqLCB0bXAsICZtaWdyYXRlLCBnbG9iYWxfbGlzdCkgeworCQkJaWYgKHJl dCA9PSAwKQorCQkJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1l bWZzKG9iaik7CisJCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJ fQorCQlsaXN0X3NwbGljZSgmbWlncmF0ZSwgKnApOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJl dDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogaW50CiBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXgg ZjI4MWUwYi4uMDgwMzkyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAt MjU0OSw2ICsyNTQ5LDkgQEAgaW50ZWxfYWxsb2NfaW5pdGlhbF9wbGFuZV9vYmooc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KiBOb3QgdG8gYmUgcHJlc2VydmVkIGFjcm9zcyBoaWJlcm5hdGlvbiAqLworCW9iai0+aW50ZXJu YWxfdm9sYXRpbGUgPSB0cnVlOworCiAJb2JqLT50aWxpbmdfbW9kZSA9IHBsYW5lX2NvbmZpZy0+ dGlsaW5nOwogCWlmIChvYmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCiAJCW9iai0+ c3RyaWRlID0gZmItPnBpdGNoZXNbMF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRl eCBmNDM2ODFlLi4xZDg5MjUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKQEAgLTE1 NCw2ICsxNTQsMTIgQEAgc3RhdGljIGludCBpbnRlbGZiX2FsbG9jKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpoZWxwZXIsCiAJCWdvdG8gb3V0OwogCX0KIAorCS8qIERpc2NhcmQgdGhlIGNvbnRlbnRz IG9mIHRoZSBCSU9TIGZiIGFjcm9zcyBoaWJlcm5hdGlvbi4KKwkgKiBXZSByZWFsbHkgd2FudCB0 byBjb21wbGV0ZWx5IHRocm93YXdheSB0aGUgZWFybGllciBmYmRldgorCSAqIGFuZCByZWNvbmZp Z3VyZSBpdCBhbnl3YXkuCisJICovCisJb2JqLT5pbnRlcm5hbF92b2xhdGlsZSA9IHRydWU7CisK IAlmYiA9IF9faW50ZWxfZnJhbWVidWZmZXJfY3JlYXRlKGRldiwgJm1vZGVfY21kLCBvYmopOwog CWlmIChJU19FUlIoZmIpKSB7CiAJCXJldCA9IFBUUl9FUlIoZmIpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKaW5kZXggMDNhZDI3Ni4uNmRkYzIwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBA IC01MTgxLDYgKzUxODEsOCBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVwX3BjdHgoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAlJOTE1X1dSSVRFKFZMVl9QQ0JSLCBwY3R4X3BhZGRyKTsK IAogb3V0OgorCS8qIFRoZSBwb3dlciBjb250ZXh0IG5lZWQgbm90IGJlIHByZXNlcnZlZCBhY3Jv c3MgaGliZXJuYXRpb24gKi8KKwlwY3R4LT5pbnRlcm5hbF92b2xhdGlsZSA9IHRydWU7CiAJRFJN X0RFQlVHX0RSSVZFUigiUENCUjogMHglMDh4XG4iLCBJOTE1X1JFQUQoVkxWX1BDQlIpKTsKIAlk ZXZfcHJpdi0+dmx2X3BjdHggPSBwY3R4OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCmluZGV4IDVlYWJhZjYuLjM3MGQ5NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKQEAgLTIwOTAsNiArMjA5MCwxMiBAQCBzdGF0aWMgaW50IGludGVs X2FsbG9jX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKElTX0VS UihvYmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwogCisJLyogUmluZ2J1ZmZlciBvYmplY3Rz IGFyZSBieSBkZWZpbml0aW9uIHZvbGF0aWxlIC0gb25seSB0aGUgY29tbWFuZHMKKwkgKiBiZXR3 ZWVuIEhFQUQgYW5kIFRBSUwgbmVlZCB0byBiZSBwcmVzZXJ2ZWQgYW5kIHdoaWxzdCB0aGVyZSBh cmUKKwkgKiBhbnkgY29tbWFuZHMgdGhlcmUsIHRoZSByaW5nYnVmZmVyIGlzIHBpbm5lZCBieSBh Y3Rpdml0eS4KKwkgKi8KKwlvYmotPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsKKwogCS8qIG1h cmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQVSBzaWRlIGJ5IGRlZmF1bHQgKi8K IAlvYmotPmd0X3JvID0gMTsKIAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==