From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH] drm/i915: Infrastructure for supporting different GGTT views per object Date: Thu, 27 Nov 2014 14:52:44 +0000 Message-ID: <1417099964-30386-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1415284765-25613-1-git-send-email-tvrtko.ursulin@linux.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 CD3816E16B for ; Thu, 27 Nov 2014 06:52:56 -0800 (PST) In-Reply-To: <1415284765-25613-1-git-send-email-tvrtko.ursulin@linux.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: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaW5ncyBs aWtlIHJlbGlhYmxlIEdHVFQgbWFwcGluZ3MgYW5kIG1pcnJvcmVkIDJkLW9uLTNkIGRpc3BsYXkg d2lsbCBuZWVkCnRvIG1hcCBvYmplY3RzIGludG8gdGhlIHNhbWUgYWRkcmVzcyBzcGFjZSBtdWx0 aXBsZSB0aW1lcy4KCkFkZGVkIGEgR0dUVCB2aWV3IGNvbmNlcHQgYW5kIGxpbmtlZCBpdCB3aXRo IHRoZSBWTUEgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgptdWx0aXBsZSBpbnN0YW5jZXMgcGVyIGFk ZHJlc3Mgc3BhY2UuCgpOZXcgb2JqZWN0cyBhbmQgR0VNIGZ1bmN0aW9ucyB3aGljaCBkbyBub3Qg dGFrZSB0aGlzIG5ldyB2aWV3IGFzIGEgcGFyYW1ldGVyCmFzc3VtZSB0aGUgZGVmYXVsdCBvZiB6 ZXJvIChJOTE1X0dHVFRfVklFV19OT1JNQUwpIHdoaWNoIHByZXNlcnZlcyB0aGUKcHJldmlvdXMg YmVoYXZpb3VyLgoKVGhpcyBub3cgbWVhbnMgdGhhdCBvYmplY3RzIGNhbiBoYXZlIG11bHRpcGxl IFZNQSBlbnRyaWVzIHNvIHRoZSBjb2RlIHdoaWNoCmFzc3VtZWQgdGhlcmUgd2lsbCBvbmx5IGJl IG9uZSBhbHNvIGhhZCB0byBiZSBtb2RpZmllZC4KCkFsdGVybmF0aXZlIEdHVFQgdmlld3MgYXJl IHN1cHBvc2VkIHRvIGJvcnJvdyBETUEgYWRkcmVzc2VzIGZyb20gb2JqLT5wYWdlcwp3aGljaCBp cyBETUEgbWFwcGVkIG9uIGZpcnN0IFZNQSBpbnN0YW50aWF0aW9uIGFuZCB1bm1hcHBlZCBvbiB0 aGUgbGFzdCBvbmUKZ29pbmcgYXdheS4KCnYyOgogICAgKiBSZW1vdmVkIHBlciB2aWV3IHNwZWNp YWwgY2FzaW5nIGluIGk5MTVfZ2VtX2dndHRfcHJlcGFyZSAvCiAgICAgIGZpbmlzaF9vYmplY3Qg aW4gZmF2b3VyIG9mIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIERNQSBtYXBwaW5ncwogICAgICBv biBmaXJzdCBWTUEgaW5zdGFudGlhdGlvbiBhbmQgbGFzdCBWTUEgZGVzdHJ1Y3Rpb24uIChEYW5p ZWwgVmV0dGVyKQogICAgKiBTaW1wbGlmaWVkIGk5MTVfdm1hX3VuYmluZCB3aGljaCBkb2VzIG5v dCBuZWVkIHRvIGNvdW50IHRoZSBHR1RUIHZpZXdzLgogICAgICAoRGFuaWVsIFZldHRlcikKICAg ICogQWxzbyBtb3ZlZCBvYmotPm1hcF9hbmRfZmVuY2VhYmxlIHJlc2V0IHVuZGVyIHRoZSBzYW1l IGNoZWNrLgogICAgKiBDaGVja3BhdGNoIGNsZWFudXBzLgoKSXNzdWU6IFZJWi00NTQ0ClNpZ25l ZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBE YW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCA3MyArKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAg ICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAg NCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgNjEgKysr KysrKysrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmggICAgICAgIHwgMjIgKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jICAgICAgfCAgOCArLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCsp LCA2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDMx OWRhNjEuLjFhOTU2OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xNTQs OCArMTU0LDkgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIAkJCXNlcV9wdXRzKG0sICIgKHBwIik7CiAJCWVsc2UKIAkJ CXNlcV9wdXRzKG0sICIgKGciKTsKLQkJc2VxX3ByaW50ZihtLCAiZ3R0IG9mZnNldDogJTA4bHgs IHNpemU6ICUwOGx4KSIsCi0JCQkgICB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+bm9kZS5zaXplKTsK KwkJc2VxX3ByaW50ZihtLCAiZ3R0IG9mZnNldDogJTA4bHgsIHNpemU6ICUwOGx4LCB0eXBlOiAl dSkiLAorCQkJICAgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPm5vZGUuc2l6ZSwKKwkJCSAgIHZtYS0+ Z2d0dF92aWV3LnR5cGUpOwogCX0KIAlpZiAob2JqLT5zdG9sZW4pCiAJCXNlcV9wcmludGYobSwg IiAoc3RvbGVuOiAlMDhseCkiLCBvYmotPnN0b2xlbi0+c3RhcnQpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKaW5kZXggYzRmMmNiNi4uNjI1MGEyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBA IC0yNTAxLDEwICsyNTAxLDIzIEBAIHZvaWQgaTkxNV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5 MTVfdm1hICp2bWEpOwogI2RlZmluZSBQSU5fR0xPQkFMIDB4NAogI2RlZmluZSBQSU5fT0ZGU0VU X0JJQVMgMHg4CiAjZGVmaW5lIFBJTl9PRkZTRVRfTUFTSyAofjQwOTUpCitpbnQgX19tdXN0X2No ZWNrIGk5MTVfZ2VtX29iamVjdF9waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAorCQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQkJCQkgIHVpbnQz Ml90IGFsaWdubWVudCwKKwkJCQkJICB1aW50NjRfdCBmbGFncywKKwkJCQkJICBjb25zdCBzdHJ1 Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOworc3RhdGljIGlubGluZQogaW50IF9fbXVzdF9jaGVj ayBpOTE1X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJ CQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQkgICAgIHVpbnQzMl90 IGFsaWdubWVudCwKLQkJCQkgICAgIHVpbnQ2NF90IGZsYWdzKTsKKwkJCQkgICAgIHVpbnQ2NF90 IGZsYWdzKQoreworCXJldHVybiBpOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcob2JqLCB2bSwgYWxp Z25tZW50LCBmbGFncywKKwkJCQkJCSZpOTE1X2dndHRfdmlld19ub3JtYWwpOworfQorCit2b2lk IGk5MTVfdm1hX2JpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEsIGVudW0gaTkxNV9jYWNoZV9sZXZl bCBjYWNoZV9sZXZlbCwKKwkJICAgdTMyIGZsYWdzKTsKIGludCBfX211c3RfY2hlY2sgaTkxNV92 bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKIGludCBpOTE1X2dlbV9vYmplY3RfcHV0 X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCBpOTE1X2dlbV9y ZWxlYXNlX2FsbF9tbWFwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpAQCAt MjY1NiwxOCArMjY2OSw0MyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9nZW1fcHJpbWVfZXhwb3J0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKK3Vuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29m ZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAorCQkJCSAgICAgICBzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgICAgICAgZW51bSBpOTE1X2dndHRfdmll d190eXBlIHZpZXcpOworc3RhdGljIGlubGluZQogdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpf b2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAotCQkJCSAgc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pOworCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p Cit7CisJcmV0dXJuIGk5MTVfZ2VtX29ial9vZmZzZXRfdmlldyhvLCB2bSwgSTkxNV9HR1RUX1ZJ RVdfTk9STUFMKTsKK30KIGJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kX2FueShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqbyk7CiBib29sIGk5MTVfZ2VtX29ial9ib3VuZChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqbywKIAkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKIHVu c2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX3NpemUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km8sCiAJCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOworc3RydWN0IGk5MTVfdm1h ICppOTE1X2dlbV9vYmpfdG9fdm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKKwkJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkJICBjb25zdCBz dHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOworc3RhdGljIGlubGluZQogc3RydWN0IGk5MTVf dm1hICppOTE1X2dlbV9vYmpfdG9fdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Ci0JCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7CisJCQkJICAgICBzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKK3sKKwlyZXR1cm4gaTkxNV9nZW1fb2JqX3RvX3Zt YV92aWV3KG9iaiwgdm0sICZpOTE1X2dndHRfdmlld19ub3JtYWwpOworfQorCitzdHJ1Y3QgaTkx NV92bWEgKgoraTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hX3ZpZXcoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldyk7 CisKK3N0YXRpYyBpbmxpbmUKIHN0cnVjdCBpOTE1X3ZtYSAqCiBpOTE1X2dlbV9vYmpfbG9va3Vw X29yX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgIHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKKwkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtKQoreworCXJldHVybiBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWFf dmlldyhvYmosIHZtLAorCQkJCQkJJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7Cit9CiAKIHN0cnVj dCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaik7CiBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRl eCA4NmNmNDI4Li42MjEzYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTIwOTAsOCAr MjA5MCw3IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkvKiBGb3IgdGhlIHVuYm91bmQgcGhhc2UsIHRoaXMgc2hvdWxkIGJlIGEgbm8tb3Ah ICovCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2LAogCQkJCQkJICZvYmotPnZt YV9saXN0LCB2bWFfbGluaykKLQkJCQlpZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCi0JCQkJCWJy ZWFrOworCQkJCWk5MTVfdm1hX3VuYmluZCh2bWEpOwogCiAJCQlpZiAoaTkxNV9nZW1fb2JqZWN0 X3B1dF9wYWdlcyhvYmopID09IDApCiAJCQkJY291bnQgKz0gb2JqLT5iYXNlLnNpemUgPj4gUEFH RV9TSElGVDsKQEAgLTIyOTIsMTcgKzIyOTEsMTQgQEAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIHN0YXRpYyB2b2lkCiBpOTE1X2dlbV9vYmplY3Rf bW92ZV90b19pbmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2 YXRlOwotCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwogCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwogCiAJQlVHX09OKG9iai0+YmFzZS53cml0ZV9kb21haW4gJiB+STkxNV9HRU1fR1BVX0RP TUFJTlMpOwogCUJVR19PTighb2JqLT5hY3RpdmUpOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2 bSwgJmRldl9wcml2LT52bV9saXN0LCBnbG9iYWxfbGluaykgewotCQl2bWEgPSBpOTE1X2dlbV9v YmpfdG9fdm1hKG9iaiwgdm0pOwotCQlpZiAodm1hICYmICFsaXN0X2VtcHR5KCZ2bWEtPm1tX2xp c3QpKQotCQkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+bW1fbGlzdCwgJnZtLT5pbmFjdGl2ZV9saXN0 KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7 CisJCWlmICghbGlzdF9lbXB0eSgmdm1hLT5tbV9saXN0KSkKKwkJCWxpc3RfbW92ZV90YWlsKCZ2 bWEtPm1tX2xpc3QsICZ2bWEtPnZtLT5pbmFjdGl2ZV9saXN0KTsKIAl9CiAKIAlpbnRlbF9mYl9v YmpfZmx1c2gob2JqLCB0cnVlKTsKQEAgLTMwNDMsNyArMzAzOSw4IEBAIGludCBpOTE1X3ZtYV91 bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJLyogVGhyb3cgYXdheSB0aGUgYWN0aXZlIHJl ZmVyZW5jZSBiZWZvcmUgbW92aW5nIHRvIHRoZSB1bmJvdW5kIGxpc3QgKi8KIAlpOTE1X2dlbV9v YmplY3RfcmV0aXJlKG9iaik7CiAKLQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pKSB7CisJaWYg KGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgorCSAgICB2bWEtPmdndHRfdmlldy50eXBlID09IEk5 MTVfR0dUVF9WSUVXX05PUk1BTCkgewogCQlpOTE1X2dlbV9vYmplY3RfZmluaXNoX2d0dChvYmop OwogCiAJCS8qIHJlbGVhc2UgdGhlIGZlbmNlIHJlZyBfYWZ0ZXJfIGZsdXNoaW5nICovCkBAIC0z MDU3LDcgKzMwNTQsOCBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQogCXZtYS0+dW5iaW5kX3ZtYSh2bWEpOwogCiAJbGlzdF9kZWxfaW5pdCgmdm1hLT5tbV9saXN0 KTsKLQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pKQorCWlmIChpOTE1X2lzX2dndHQodm1hLT52 bSkgJiYKKwkgICAgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwp CiAJCW9iai0+bWFwX2FuZF9mZW5jZWFibGUgPSBmYWxzZTsKIAogCWRybV9tbV9yZW1vdmVfbm9k ZSgmdm1hLT5ub2RlKTsKQEAgLTM0NzYsNyArMzQ3NCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKgogaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAkJCSAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJICAgdW5z aWduZWQgYWxpZ25tZW50LAotCQkJICAgdWludDY0X3QgZmxhZ3MpCisJCQkgICB1aW50NjRfdCBm bGFncywKKwkJCSAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKIHsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwpAQCAtMzUyNiw3ICszNTI1LDcgQEAg aTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAogCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAotCXZtYSA9IGk5MTVfZ2Vt X29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYShvYmosIHZtKTsKKwl2bWEgPSBpOTE1X2dlbV9vYmpf bG9va3VwX29yX2NyZWF0ZV92bWFfdmlldyhvYmosIHZtLCB2aWV3KTsKIAlpZiAoSVNfRVJSKHZt YSkpCiAJCWdvdG8gZXJyX3VucGluOwogCkBAIC0zNTYwLDcgKzM1NTksNyBAQCBzZWFyY2hfZnJl ZToKIAlsaXN0X2FkZF90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2bS0+aW5hY3RpdmVfbGlzdCk7CiAK IAl0cmFjZV9pOTE1X3ZtYV9iaW5kKHZtYSwgZmxhZ3MpOwotCXZtYS0+YmluZF92bWEodm1hLCBv YmotPmNhY2hlX2xldmVsLAorCWk5MTVfdm1hX2JpbmQodm1hLCBvYmotPmNhY2hlX2xldmVsLAog CQkgICAgICBmbGFncyAmIFBJTl9HTE9CQUwgPyBHTE9CQUxfQklORCA6IDApOwogCiAJcmV0dXJu IHZtYTsKQEAgLTM3NjgsOCArMzc2Nyw4IEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hl X2xldmVsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAKIAkJbGlzdF9mb3JfZWFj aF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKIAkJCWlmIChkcm1fbW1fbm9k ZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCi0JCQkJdm1hLT5iaW5kX3ZtYSh2bWEsIGNhY2hlX2xl dmVsLAotCQkJCQkJdm1hLT5ib3VuZCAmIEdMT0JBTF9CSU5EKTsKKwkJCQlpOTE1X3ZtYV9iaW5k KHZtYSwgY2FjaGVfbGV2ZWwsCisJCQkJCSAgICAgIHZtYS0+Ym91bmQgJiBHTE9CQUxfQklORCk7 CiAJfQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGlu aykKQEAgLTQxMjMsMTAgKzQxMjIsMTEgQEAgaTkxNV92bWFfbWlzcGxhY2VkKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hLCB1aW50MzJfdCBhbGlnbm1lbnQsIHVpbnQ2NF90IGZsYWdzKQogfQogCiBpbnQK LWk5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJ ICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkgICAgdWludDMyX3QgYWxpZ25t ZW50LAotCQkgICAgdWludDY0X3QgZmxhZ3MpCitpOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKKwkJCSB1aW50MzJfdCBhbGlnbm1lbnQsCisJCQkgdWludDY0X3QgZmxhZ3MsCisJ CQkgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwpAQCAtNDE0Miw3ICs0MTQyLDcgQEAgaTkxNV9nZW1fb2JqZWN0X3Bp bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWlmIChXQVJOX09OKChmbGFncyAm IChQSU5fTUFQUEFCTEUgfCBQSU5fR0xPQkFMKSkgPT0gUElOX01BUFBBQkxFKSkKIAkJcmV0dXJu IC1FSU5WQUw7CiAKLQl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0pOworCXZtYSA9 IGk5MTVfZ2VtX29ial90b192bWFfdmlldyhvYmosIHZtLCB2aWV3KTsKIAlpZiAodm1hKSB7CiAJ CWlmIChXQVJOX09OKHZtYS0+cGluX2NvdW50ID09IERSTV9JOTE1X0dFTV9PQkpFQ1RfTUFYX1BJ Tl9DT1VOVCkpCiAJCQlyZXR1cm4gLUVCVVNZOwpAQCAtNDE1Miw3ICs0MTUyLDggQEAgaTkxNV9n ZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICAgICAi Ym8gaXMgYWxyZWFkeSBwaW5uZWQgd2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50OiIKIAkJCSAgICAg IiBvZmZzZXQ9JWx4LCByZXEuYWxpZ25tZW50PSV4LCByZXEubWFwX2FuZF9mZW5jZWFibGU9JWQs IgogCQkJICAgICAiIG9iai0+bWFwX2FuZF9mZW5jZWFibGU9JWRcbiIsCi0JCQkgICAgIGk5MTVf Z2VtX29ial9vZmZzZXQob2JqLCB2bSksIGFsaWdubWVudCwKKwkJCSAgICAgaTkxNV9nZW1fb2Jq X29mZnNldF92aWV3KG9iaiwgdm0sIHZpZXctPnR5cGUpLAorCQkJICAgICBhbGlnbm1lbnQsCiAJ CQkgICAgICEhKGZsYWdzICYgUElOX01BUFBBQkxFKSwKIAkJCSAgICAgb2JqLT5tYXBfYW5kX2Zl bmNlYWJsZSk7CiAJCQlyZXQgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKQEAgLTQxNjUsMTMgKzQx NjYsMTQgQEAgaTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogCiAJYm91bmQgPSB2bWEgPyB2bWEtPmJvdW5kIDogMDsKIAlpZiAodm1hID09IE5VTEwg fHwgIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkgewotCQl2bWEgPSBpOTE1X2dl bV9vYmplY3RfYmluZF90b192bShvYmosIHZtLCBhbGlnbm1lbnQsIGZsYWdzKTsKKwkJdm1hID0g aTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0ob2JqLCB2bSwgYWxpZ25tZW50LAorCQkJCQkJIGZs YWdzLCB2aWV3KTsKIAkJaWYgKElTX0VSUih2bWEpKQogCQkJcmV0dXJuIFBUUl9FUlIodm1hKTsK IAl9CiAKIAlpZiAoZmxhZ3MgJiBQSU5fR0xPQkFMICYmICEodm1hLT5ib3VuZCAmIEdMT0JBTF9C SU5EKSkKLQkJdm1hLT5iaW5kX3ZtYSh2bWEsIG9iai0+Y2FjaGVfbGV2ZWwsIEdMT0JBTF9CSU5E KTsKKwkJaTkxNV92bWFfYmluZCh2bWEsIG9iai0+Y2FjaGVfbGV2ZWwsIEdMT0JBTF9CSU5EKTsK IAogCWlmICgoYm91bmQgXiB2bWEtPmJvdW5kKSAmIEdMT0JBTF9CSU5EKSB7CiAJCWJvb2wgbWFw cGFibGUsIGZlbmNlYWJsZTsKQEAgLTQ1ODMsMTIgKzQ1ODUsMTMgQEAgdm9pZCBpOTE1X2dlbV9m cmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCiAJaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwogfQogCi1zdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90 b192bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgICAgIHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQorc3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9f dm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3Zp ZXcgKnZpZXcpCiB7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKLQkJaWYgKHZtYS0+dm0gPT0gdm0pCisJ CWlmICh2bWEtPnZtID09IHZtICYmIHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gdmlldy0+dHlwZSkK IAkJCXJldHVybiB2bWE7CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTUyNzIsOCArNTI3NSw5IEBAIGk5 MTVfZ2VtX3Nocmlua2VyX2NvdW50KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsIHN0cnVjdCBz aHJpbmtfY29udHJvbCAqc2MpCiB9CiAKIC8qIEFsbCB0aGUgbmV3IFZNIHN0dWZmICovCi11bnNp Z25lZCBsb25nIGk5MTVfZ2VtX29ial9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km8sCi0JCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKK3Vuc2lnbmVkIGxvbmcg aTkxNV9nZW1fb2JqX29mZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAor CQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgICAgICAgZW51 bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gby0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwpAQCAtNTI4MSw3ICs1Mjg1LDcgQEAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zm c2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAogCVdBUk5fT04odm0gPT0gJmRldl9w cml2LT5tbS5hbGlhc2luZ19wcGd0dC0+YmFzZSk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZt YSwgJm8tPnZtYV9saXN0LCB2bWFfbGluaykgewotCQlpZiAodm1hLT52bSA9PSB2bSkKKwkJaWYg KHZtYS0+dm0gPT0gdm0gJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSB2aWV3KQogCQkJcmV0dXJu IHZtYS0+bm9kZS5zdGFydDsKIAogCX0KQEAgLTU0MzAsOSArNTQzNCwxMiBAQCBzdHJ1Y3QgaTkx NV92bWEgKmk5MTVfZ2VtX29ial90b19nZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCiB7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAKLQl2bWEgPSBsaXN0X2ZpcnN0X2VudHJ5 KCZvYmotPnZtYV9saXN0LCB0eXBlb2YoKnZtYSksIHZtYV9saW5rKTsKLQlpZiAodm1hLT52bSAh PSBpOTE1X29ial90b19nZ3R0KG9iaikpCi0JCXJldHVybiBOVUxMOworCWxpc3RfZm9yX2VhY2hf ZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspIHsKKwkJaWYgKHZtYS0+dm0gIT0g aTkxNV9vYmpfdG9fZ2d0dChvYmopKQorCQkJY29udGludWU7CisJCWlmICh2bWEtPmdndHRfdmll dy50eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKKwkJCXJldHVybiB2bWE7CisJfQogCi0J cmV0dXJuIHZtYTsKKwlyZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwppbmRleCBkMTdmZjQzLi40YmY5Zjc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCkBAIC01ODAsOCArNTgwLDggQEAgc3RhdGljIGludCBkb19zd2l0 Y2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAogCXZtYSA9IGk5MTVfZ2VtX29ial90 b19nZ3R0KHRvLT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSk7CiAJaWYgKCEodm1hLT5ib3VuZCAm IEdMT0JBTF9CSU5EKSkKLQkJdm1hLT5iaW5kX3ZtYSh2bWEsIHRvLT5sZWdhY3lfaHdfY3R4LnJj c19zdGF0ZS0+Y2FjaGVfbGV2ZWwsCi0JCQkJR0xPQkFMX0JJTkQpOworCQlpOTE1X3ZtYV9iaW5k KHZtYSwgdG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlLT5jYWNoZV9sZXZlbCwKKwkJCSAgICAg IEdMT0JBTF9CSU5EKTsKIAogCWlmICghdG8tPmxlZ2FjeV9od19jdHguaW5pdGlhbGl6ZWQgfHwg aTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KHRvKSkKIAkJaHdfZmxhZ3MgfD0gTUlfUkVTVE9S RV9JTkhJQklUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmlu ZGV4IGUxZWQ4NWEuLmU3OWNhZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKQEAgLTM1OCw4ICszNTgsOCBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3JlbG9j YXRlX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKHVubGlrZWx5 KElTX0dFTjYoZGV2KSAmJgogCSAgICByZWxvYy0+d3JpdGVfZG9tYWluID09IEk5MTVfR0VNX0RP TUFJTl9JTlNUUlVDVElPTiAmJgogCSAgICAhKHRhcmdldF92bWEtPmJvdW5kICYgR0xPQkFMX0JJ TkQpKSkKLQkJdGFyZ2V0X3ZtYS0+YmluZF92bWEodGFyZ2V0X3ZtYSwgdGFyZ2V0X2k5MTVfb2Jq LT5jYWNoZV9sZXZlbCwKLQkJCQlHTE9CQUxfQklORCk7CisJCWk5MTVfdm1hX2JpbmQodGFyZ2V0 X3ZtYSwgdGFyZ2V0X2k5MTVfb2JqLT5jYWNoZV9sZXZlbCwKKwkJCSAgICAgIEdMT0JBTF9CSU5E KTsKIAogCS8qIFZhbGlkYXRlIHRoYXQgdGhlIHRhcmdldCBpcyBpbiBhIHZhbGlkIHIvdyBHUFUg ZG9tYWluICovCiAJaWYgKHVubGlrZWx5KHJlbG9jLT53cml0ZV9kb21haW4gJiAocmVsb2MtPndy aXRlX2RvbWFpbiAtIDEpKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCBi ZWU1YjBhLi4yMTQ0NzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMzAs NiArMzAsOCBAQAogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKIAorY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3IGk5MTVfZ2d0dF92aWV3X25vcm1hbDsK Kwogc3RhdGljIHZvaWQgYmR3X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwogc3RhdGljIHZvaWQgY2h2X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCkBAIC03Niw3ICs3OCw3IEBAIHN0YXRp YyBpbnQgc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBl bmFibGVfcHBndHQpCiB9CiAKIAotc3RhdGljIHZvaWQgcHBndHRfYmluZF92bWEoc3RydWN0IGk5 MTVfdm1hICp2bWEsCitzdGF0aWMgdm9pZCBwcGd0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEg KnZtYSwgc3RydWN0IHNnX3RhYmxlICpwYWdlcywKIAkJCSAgIGVudW0gaTkxNV9jYWNoZV9sZXZl bCBjYWNoZV9sZXZlbCwKIAkJCSAgIHUzMiBmbGFncyk7CiBzdGF0aWMgdm9pZCBwcGd0dF91bmJp bmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKQEAgLTEyMDAsNyArMTIwMiw3IEBAIHZvaWQg IGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIH0KIAogc3RhdGljIHZvaWQK LXBwZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAorcHBndHRfYmluZF92bWEoc3Ry dWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMsCiAJICAgICAgIGVudW0g aTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKIAkgICAgICAgdTMyIGZsYWdzKQogewpAQCAt MTIwOCw3ICsxMjEwLDcgQEAgcHBndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJ aWYgKHZtYS0+b2JqLT5ndF9ybykKIAkJZmxhZ3MgfD0gUFRFX1JFQURfT05MWTsKIAotCXZtYS0+ dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHZtYS0+b2JqLT5wYWdlcywgdm1hLT5ub2RlLnN0 YXJ0LAorCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHBhZ2VzLCB2bWEtPm5vZGUu c3RhcnQsCiAJCQkJY2FjaGVfbGV2ZWwsIGZsYWdzKTsKIH0KIApAQCAtMTM0Myw3ICsxMzQ1LDcg QEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCQkgKiB3aXRob3V0IHRlbGxpbmcgb3VyIG9iamVjdCBhYm91dCBpdC4gU28gd2UgbmVl ZCB0byBmYWtlIGl0LgogCQkgKi8KIAkJdm1hLT5ib3VuZCAmPSB+R0xPQkFMX0JJTkQ7Ci0JCXZt YS0+YmluZF92bWEodm1hLCBvYmotPmNhY2hlX2xldmVsLCBHTE9CQUxfQklORCk7CisJCWk5MTVf dm1hX2JpbmQodm1hLCBvYmotPmNhY2hlX2xldmVsLCBHTE9CQUxfQklORCk7CiAJfQogCiAKQEAg LTE1MjksNyArMTUzMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZ2d0dF9jbGVhcl9yYW5nZShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIH0KIAogCi1zdGF0aWMgdm9pZCBpOTE1X2dndHRf YmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCitzdGF0aWMgdm9pZCBpOTE1X2dndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMsCiAJCQkg ICAgICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAogCQkJICAgICAgIHUzMiB1 bnVzZWQpCiB7CkBAIC0xNTM4LDcgKzE1NDAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJCUFHUF9VU0VSX01FTU9SWSA6IEFHUF9VU0VS X0NBQ0hFRF9NRU1PUlk7CiAKIAlCVUdfT04oIWk5MTVfaXNfZ2d0dCh2bWEtPnZtKSk7Ci0JaW50 ZWxfZ3R0X2luc2VydF9zZ19lbnRyaWVzKHZtYS0+b2JqLT5wYWdlcywgZW50cnksIGZsYWdzKTsK KwlpbnRlbF9ndHRfaW5zZXJ0X3NnX2VudHJpZXMocGFnZXMsIGVudHJ5LCBmbGFncyk7CiAJdm1h LT5ib3VuZCA9IEdMT0JBTF9CSU5EOwogfQogCkBAIC0xNTYyLDcgKzE1NjQsNyBAQCBzdGF0aWMg dm9pZCBpOTE1X2dndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAlpbnRlbF9n dHRfY2xlYXJfcmFuZ2UoZmlyc3QsIHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBnZ3R0X2JpbmRf dm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAorc3RhdGljIHZvaWQgZ2d0dF9iaW5kX3ZtYShzdHJ1 Y3QgaTkxNV92bWEgKnZtYSwgc3RydWN0IHNnX3RhYmxlICpwYWdlcywKIAkJCSAgZW51bSBpOTE1 X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAogCQkJICB1MzIgZmxhZ3MpCiB7CkBAIC0xNTg4LDcg KzE1OTAsNyBAQCBzdGF0aWMgdm9pZCBnZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1h LAogCWlmICghZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0IHx8IGZsYWdzICYgR0xPQkFMX0JJ TkQpIHsKIAkJaWYgKCEodm1hLT5ib3VuZCAmIEdMT0JBTF9CSU5EKSB8fAogCQkgICAgKGNhY2hl X2xldmVsICE9IG9iai0+Y2FjaGVfbGV2ZWwpKSB7Ci0JCQl2bWEtPnZtLT5pbnNlcnRfZW50cmll cyh2bWEtPnZtLCBvYmotPnBhZ2VzLAorCQkJdm1hLT52bS0+aW5zZXJ0X2VudHJpZXModm1hLT52 bSwgcGFnZXMsCiAJCQkJCQl2bWEtPm5vZGUuc3RhcnQsCiAJCQkJCQljYWNoZV9sZXZlbCwgZmxh Z3MpOwogCQkJdm1hLT5ib3VuZCB8PSBHTE9CQUxfQklORDsKQEAgLTE2MDAsNyArMTYwMiw3IEBA IHN0YXRpYyB2b2lkIGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJICAgICAo Y2FjaGVfbGV2ZWwgIT0gb2JqLT5jYWNoZV9sZXZlbCkpKSB7CiAJCXN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICphcHBndHQgPSBkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQ7CiAJCWFwcGd0dC0+YmFz ZS5pbnNlcnRfZW50cmllcygmYXBwZ3R0LT5iYXNlLAotCQkJCQkgICAgdm1hLT5vYmotPnBhZ2Vz LAorCQkJCQkgICAgcGFnZXMsCiAJCQkJCSAgICB2bWEtPm5vZGUuc3RhcnQsCiAJCQkJCSAgICBj YWNoZV9sZXZlbCwgZmxhZ3MpOwogCQl2bWEtPmJvdW5kIHw9IExPQ0FMX0JJTkQ7CkBAIC0yMTY1 LDcgKzIxNjcsOCBAQCBpbnQgaTkxNV9nZW1fZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJCSAgICAgIHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKQorCQkJCQkgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKKwkJCQkJICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQogewogCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hID0ga3phbGxvYyhzaXplb2YoKnZtYSksIEdGUF9LRVJORUwpOwog CWlmICh2bWEgPT0gTlVMTCkKQEAgLTIxNzYsNiArMjE3OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkx NV92bWEgKl9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogCUlOSVRfTElTVF9IRUFEKCZ2bWEtPmV4ZWNfbGlzdCk7CiAJdm1hLT52bSA9IHZtOwog CXZtYS0+b2JqID0gb2JqOworCXZtYS0+Z2d0dF92aWV3ID0gKnZpZXc7CiAKIAlzd2l0Y2ggKElO VEVMX0lORk8odm0tPmRldiktPmdlbikgewogCWNhc2UgOToKQEAgLTIyMTQsMTQgKzIyMTgsNDMg QEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiB9CiAKIHN0cnVjdCBpOTE1X3ZtYSAqCi1pOTE1X2dl bV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKLQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQoraTkxNV9nZW1fb2JqX2xv b2t1cF9vcl9jcmVhdGVfdm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK KwkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkJICAgICAgIGNv bnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKIHsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKIAotCXZtYSA9IGk5MTVfZ2VtX29ial90b192bWEob2JqLCB2bSk7CisJdm1hID0gaTkxNV9n ZW1fb2JqX3RvX3ZtYV92aWV3KG9iaiwgdm0sIHZpZXcpOwogCWlmICghdm1hKQotCQl2bWEgPSBf X2k5MTVfZ2VtX3ZtYV9jcmVhdGUob2JqLCB2bSk7CisJCXZtYSA9IF9faTkxNV9nZW1fdm1hX2Ny ZWF0ZShvYmosIHZtLCB2aWV3KTsKIAogCXJldHVybiB2bWE7CiB9CisKK3N0YXRpYyBpbmxpbmUK K3N0cnVjdCBzZ190YWJsZSAqaTkxNV9nZ3R0X3ZpZXdfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2 bWEpCit7CisJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IEVSUl9QVFIoLUVJTlZBTCk7CisKKwlp ZiAodm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCisJCXBhZ2Vz ID0gdm1hLT5vYmotPnBhZ2VzOworCWVsc2UKKwkJV0FSTigxLCAiTm90IGltcGxlbWVudGVkIVxu Iik7CisKKwlyZXR1cm4gcGFnZXM7Cit9CisKK3ZvaWQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkx NV92bWEgKnZtYSwgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAorCQkgICB1MzIg ZmxhZ3MpCit7CisJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IGk5MTVfZ2d0dF92aWV3X3BhZ2Vz KHZtYSk7CisKKwlpZiAocGFnZXMgJiYgIUlTX0VSUihwYWdlcykpIHsKKwkJdm1hLT5iaW5kX3Zt YSh2bWEsIHBhZ2VzLCBjYWNoZV9sZXZlbCwgZmxhZ3MpOworCisJCWlmICh2bWEtPmdndHRfdmll dy50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkgeworCQkJc2dfZnJlZV90YWJsZShwYWdl cyk7CisJCQlrZnJlZShwYWdlcyk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oCmluZGV4IGQwNTYyZDAuLjM1MzQ3MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oCkBAIC0xMDksNyArMTA5LDE4IEBAIHR5cGVkZWYgZ2VuOF9ndHRfcHRlX3QgZ2VuOF9w cGd0dF9wZGVfdDsKICNkZWZpbmUgR0VOOF9QUEFUX0VMTENfT1ZFUlJJREUJCSgwPDwyKQogI2Rl ZmluZSBHRU44X1BQQVQoaSwgeCkJCQkoKHVpbnQ2NF90KSAoeCkgPDwgKChpKSAqIDgpKQogCitl bnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgeworCUk5MTVfR0dUVF9WSUVXX05PUk1BTCA9IDAsCit9 OworCitzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgeworCWVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB0 eXBlOworfTsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyBpOTE1X2dndHRf dmlld19ub3JtYWw7CisKIGVudW0gaTkxNV9jYWNoZV9sZXZlbDsKKwogLyoqCiAgKiBBIFZNQSBy ZXByZXNlbnRzIGEgR0VNIEJPIHRoYXQgaXMgYm91bmQgaW50byBhbiBhZGRyZXNzIHNwYWNlLiBU aGVyZWZvcmUsIGEKICAqIFZNQSdzIHByZXNlbmNlIGNhbm5vdCBiZSBndWFyYW50ZWVkIGJlZm9y ZSBiaW5kaW5nLCBvciBhZnRlciB1bmJpbmRpbmcgdGhlCkBAIC0xMjksNiArMTQwLDE1IEBAIHN0 cnVjdCBpOTE1X3ZtYSB7CiAjZGVmaW5lIFBURV9SRUFEX09OTFkJKDE8PDIpCiAJdW5zaWduZWQg aW50IGJvdW5kIDogNDsKIAorCS8qKgorCSAqIFN1cHBvcnQgZGlmZmVyZW50IEdHVFQgdmlld3Mg aW50byB0aGUgc2FtZSBvYmplY3QuCisJICogVGhpcyBtZWFucyB0aGVyZSBjYW4gYmUgbXVsdGlw bGUgVk1BIG1hcHBpbmdzIHBlciBvYmplY3QgYW5kIHBlciBWTS4KKwkgKiBpOTE1X2dndHRfdmll d190eXBlIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aG9zZSBlbnRyaWVzLgorCSAq IFRoZSBkZWZhdWx0IG9uZSBvZiB6ZXJvIChJOTE1X0dHVFRfVklFV19OT1JNQUwpIGlzIGRlZmF1 bHQgYW5kIGFsc28KKwkgKiBhc3N1bWVkIGluIEdFTSBmdW5jdGlvbnMgd2hpY2ggdGFrZSBubyBn Z3R0IHZpZXcgcGFyYW1ldGVyLgorCSAqLworCXN0cnVjdCBpOTE1X2dndHRfdmlldyBnZ3R0X3Zp ZXc7CisKIAkvKiogVGhpcyBvYmplY3QncyBwbGFjZSBvbiB0aGUgYWN0aXZlL2luYWN0aXZlIGxp c3RzICovCiAJc3RydWN0IGxpc3RfaGVhZCBtbV9saXN0OwogCkBAIC0xNjEsNyArMTgxLDcgQEAg c3RydWN0IGk5MTVfdm1hIHsKIAkgKiBzZXR0aW5nIHRoZSB2YWxpZCBQVEUgZW50cmllcyB0byBh IHJlc2VydmVkIHNjcmF0Y2ggcGFnZS4gKi8KIAl2b2lkICgqdW5iaW5kX3ZtYSkoc3RydWN0IGk5 MTVfdm1hICp2bWEpOwogCS8qIE1hcCBhbiBvYmplY3QgaW50byBhbiBhZGRyZXNzIHNwYWNlIHdp dGggdGhlIGdpdmVuIGNhY2hlIGZsYWdzLiAqLwotCXZvaWQgKCpiaW5kX3ZtYSkoc3RydWN0IGk5 MTVfdm1hICp2bWEsCisJdm9pZCAoKmJpbmRfdm1hKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgc3Ry dWN0IHNnX3RhYmxlICpwYWdlcywKIAkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2 ZWwsCiAJCQkgdTMyIGZsYWdzKTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu YwppbmRleCA4OWEyZjNkLi43N2YxYmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMKQEAgLTcxNywxMCArNzE3LDggQEAgc3RhdGljIHUzMiBjYXB0dXJlX3Bpbm5lZF9ibyhz dHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCiAJCQlicmVhazsKIAogCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQotCQkJaWYgKHZtYS0+ dm0gPT0gdm0gJiYgdm1hLT5waW5fY291bnQgPiAwKSB7CisJCQlpZiAodm1hLT52bSA9PSB2bSAm JiB2bWEtPnBpbl9jb3VudCA+IDApCiAJCQkJY2FwdHVyZV9ibyhlcnIrKywgdm1hKTsKLQkJCQli cmVhazsKLQkJCX0KIAl9CiAKIAlyZXR1cm4gZXJyIC0gZmlyc3Q7CkBAIC0xMDk2LDEwICsxMDk0 LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY2FwdHVyZV92bShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwgJmRldl9wcml2LT5t bS5ib3VuZF9saXN0LCBnbG9iYWxfbGlzdCkgewogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQotCQkJaWYgKHZtYS0+dm0gPT0gdm0gJiYgdm1hLT5w aW5fY291bnQgPiAwKSB7CisJCQlpZiAodm1hLT52bSA9PSB2bSAmJiB2bWEtPnBpbl9jb3VudCA+ IDApCiAJCQkJaSsrOwotCQkJCWJyZWFrOwotCQkJfQogCX0KIAllcnJvci0+cGlubmVkX2JvX2Nv dW50W25keF0gPSBpIC0gZXJyb3ItPmFjdGl2ZV9ib19jb3VudFtuZHhdOwogCi0tIAoyLjEuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK