From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v3 32/37] drm/i915: Add cpu and lmem fault handlers Date: Fri, 9 Aug 2019 23:26:38 +0100 Message-ID: <20190809222643.23142-33-matthew.auld@intel.com> References: <20190809222643.23142-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809222643.23142-1-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: Abdiel Janulgue , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgoK RmF1bHQgaGFuZGxlciB0byBoYW5kbGUgbWlzc2luZyBwYWdlcyB0byBiZSBmaWxsZWQgZGVwZW5k aW5nIG9uIGFuCm9iamVjdCdzIGJhY2tpbmcgc3RvcmFnZS4gSGFuZGxlIGFsc28gY2hhbmdlcyBu ZWVkZWQgdG8gcmVmYXVsdCBwYWdlcwpkZXBlbmRpbmcgb24gZmF1bHQgaGFuZGxlciB1c2FnZS4K ClNpZ25lZC1vZmYtYnk6IEFiZGllbCBKYW51bGd1ZSA8YWJkaWVsLmphbnVsZ3VlQGxpbnV4Lmlu dGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwu Y29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmMgICB8ICA1NCAr KysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5oICAgfCAgIDMg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyAgIHwgMTU1ICsrKysr KysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVj dC5oIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAg fCAgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjAxIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5jCmluZGV4IDhkMDI1 MWFmNWRmYy4uMjE5NGUyYzNiZGNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fbG1lbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9sbWVtLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiaW50ZWxfbWVtb3J5X3JlZ2lvbi5o IgogI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9yZWdpb24uaCIKICNpbmNsdWRlICJnZW0vaTkxNV9n ZW1fbG1lbS5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKIAogc3RhdGljIGludCBsbWVtX3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCkBAIC0xNzksNiArMTgwLDU5IEBAIHN0YXRpYyBpbnQgbG1lbV9wd3JpdGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlyZXR1cm4gcmV0OwogfQogCit2bV9mYXVsdF90IGk5 MTVfZ2VtX2ZhdWx0X2xtZW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpCit7CisJc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICphcmVhID0gdm1mLT52bWE7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKnBy aXYgPSBhcmVhLT52bV9wcml2YXRlX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiA9IHByaXYtPm9iajsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRl djsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKKwl1bnNp Z25lZCBsb25nIHNpemUgPSBhcmVhLT52bV9lbmQgLSBhcmVhLT52bV9zdGFydDsKKwlib29sIHdy aXRlID0gYXJlYS0+dm1fZmxhZ3MgJiBWTV9XUklURTsKKwl2bV9mYXVsdF90IHZtZl9yZXQ7CisJ aW50IGksIHJldDsKKworCS8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGFsbG93IHdyaXRpbmcgaW50 byB0aGlzIG9iamVjdCAqLworCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkob2JqKSAm JiB3cml0ZSkKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKKworCXJldCA9IGk5MTVfZ2VtX29i amVjdF9waW5fcGFnZXMob2JqKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycjsKKworCWZvciAoaSA9 IDA7IGkgPCBzaXplID4+IFBBR0VfU0hJRlQ7IGkrKykgeworCQl2bWZfcmV0ID0gdm1mX2luc2Vy dF9wZm4oYXJlYSwKKwkJCQkJICh1bnNpZ25lZCBsb25nKWFyZWEtPnZtX3N0YXJ0ICsgaSAqIFBB R0VfU0laRSwKKwkJCQkJIGk5MTVfZ2VtX29iamVjdF9sbWVtX2lvX29mZnNldChvYmosIGkpID4+ IFBBR0VfU0hJRlQpOworCQlpZiAodm1mX3JldCAmIFZNX0ZBVUxUX0VSUk9SKSB7CisJCQlyZXQg PSB2bV9mYXVsdF90b19lcnJubyh2bWZfcmV0LCAwKTsKKwkJCWdvdG8gZXJyOworCQl9CisJfQor CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CitlcnI6CisJc3dpdGNoIChyZXQp IHsKKwljYXNlIC1FSU86CisJCWlmICghaW50ZWxfZ3RfaXNfd2VkZ2VkKCZpOTE1LT5ndCkpCisJ CQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCQkvKiBmYWxsdGhyb3VnaCAqLworCWNhc2UgLUVB R0FJTjoKKwljYXNlIDA6CisJY2FzZSAtRVJFU1RBUlRTWVM6CisJY2FzZSAtRUlOVFI6CisJY2Fz ZSAtRUJVU1k6CisJCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7CisJY2FzZSAtRU5PTUVNOgorCQly ZXR1cm4gVk1fRkFVTFRfT09NOworCWNhc2UgLUVOT1NQQzoKKwljYXNlIC1FRkFVTFQ6CisJCXJl dHVybiBWTV9GQVVMVF9TSUdCVVM7CisJZGVmYXVsdDoKKwkJV0FSTl9PTkNFKHJldCwgInVuaGFu ZGxlZCBlcnJvciBpbiAlczogJWlcbiIsIF9fZnVuY19fLCByZXQpOworCQlyZXR1cm4gVk1fRkFV TFRfU0lHQlVTOworCX0KK30KIAogY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3Bz IGk5MTVfZ2VtX2xtZW1fb2JqX29wcyA9IHsKIAkuZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1RfSVNf TUFQUEFCTEUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f bG1lbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2xtZW0uaAppbmRleCA0 M2U2ZTcxNWVlZWQuLmMzMjU1ZWI2ZGFhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2xtZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fbG1lbS5oCkBAIC03LDYgKzcsNyBAQAogI2RlZmluZSBfX0k5MTVfR0VNX0xNRU1fSAog CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tbWFuLmg+CiAKIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlOwogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7CkBAIC0y NCw2ICsyNSw4IEBAIGk5MTVfZ2VtX29iamVjdF9sbWVtX2lvX21hcF9wYWdlX2F0b21pYyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogcmVzb3VyY2Vfc2l6ZV90IGk5MTVfZ2VtX29i amVjdF9sbWVtX2lvX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJ CQkgICAgICAgdW5zaWduZWQgbG9uZyBuKTsKIAordm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdF9s bWVtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKKwogYm9vbCBpOTE1X2dlbV9vYmplY3RfaXNfbG1l bShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIAogc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X21tYW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKaW5kZXgg YTYyNjU3YTFmMDExLi4zMDRlYTU3OGZkMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX21tYW4uYwpAQCAtNSw2ICs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW1h bi5oPgorI2luY2x1ZGUgPGxpbnV4L3Bmbl90Lmg+CiAjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4K IAogI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCkBAIC0xMiw2ICsxMyw3IEBACiAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9ndHQuaCIKICNpbmNsdWRlICJpOTE1X2dl bV9pb2N0bHMuaCIKKyNpbmNsdWRlICJpOTE1X2dlbV9sbWVtLmgiCiAjaW5jbHVkZSAiaTkxNV9n ZW1fb2JqZWN0LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgImk5MTVfdm1h LmgiCkBAIC0zNzEsNyArMzczLDYyIEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0 IHZtX2ZhdWx0ICp2bWYpCiAJfQogfQogCi12b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vf bW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZtX2ZhdWx0X3Qg aTkxNV9nZW1fZmF1bHRfY3B1KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQoreworCXN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqYXJlYSA9IHZtZi0+dm1hOworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICpw cml2ID0gYXJlYS0+dm1fcHJpdmF0ZV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSBwcml2LT5vYmo7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5k ZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwor CXZtX2ZhdWx0X3Qgdm1mX3JldDsKKwl1bnNpZ25lZCBsb25nIHNpemUgPSBhcmVhLT52bV9lbmQg LSBhcmVhLT52bV9zdGFydDsKKwlib29sIHdyaXRlID0gYXJlYS0+dm1fZmxhZ3MgJiBWTV9XUklU RTsKKwlpbnQgaSwgcmV0OworCisJLyogU2FuaXR5IGNoZWNrIHRoYXQgd2UgYWxsb3cgd3JpdGlu ZyBpbnRvIHRoaXMgb2JqZWN0ICovCisJaWYgKGk5MTVfZ2VtX29iamVjdF9pc19yZWFkb25seShv YmopICYmIHdyaXRlKQorCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCisJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCisJZm9y IChpID0gMDsgaSA8IHNpemUgPj4gUEFHRV9TSElGVDsgaSsrKSB7CisJCXN0cnVjdCBwYWdlICpw YWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgaSk7CisJCXZtZl9yZXQgPSB2bWZf aW5zZXJ0X3BmbihhcmVhLAorCQkJCQkgKHVuc2lnbmVkIGxvbmcpYXJlYS0+dm1fc3RhcnQgKyBp ICogUEFHRV9TSVpFLAorCQkJCQkgcGFnZV90b19wZm4ocGFnZSkpOworCQlpZiAodm1mX3JldCAm IFZNX0ZBVUxUX0VSUk9SKSB7CisJCQlyZXQgPSB2bV9mYXVsdF90b19lcnJubyh2bWZfcmV0LCAw KTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9i aik7CitlcnI6CisJc3dpdGNoIChyZXQpIHsKKwljYXNlIC1FSU86CisJCWlmICghaW50ZWxfZ3Rf aXNfd2VkZ2VkKCZkZXZfcHJpdi0+Z3QpKQorCQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKKwkJ LyogZmFsbHRocm91Z2ggKi8KKwljYXNlIC1FQUdBSU46CisJY2FzZSAwOgorCWNhc2UgLUVSRVNU QVJUU1lTOgorCWNhc2UgLUVJTlRSOgorCWNhc2UgLUVCVVNZOgorCQlyZXR1cm4gVk1fRkFVTFRf Tk9QQUdFOworCWNhc2UgLUVOT01FTToKKwkJcmV0dXJuIFZNX0ZBVUxUX09PTTsKKwljYXNlIC1F Tk9TUEM6CisJY2FzZSAtRUZBVUxUOgorCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCWRlZmF1 bHQ6CisJCVdBUk5fT05DRShyZXQsICJ1bmhhbmRsZWQgZXJyb3IgaW4gJXM6ICVpXG4iLCBfX2Z1 bmNfXywgcmV0KTsKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKKwl9Cit9CisKK3ZvaWQgX19p OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogewogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXN0cnVjdCBpOTE1X21tYXBfb2Zm c2V0ICptbW87CkBAIC0zODAsMjEgKzQzNywyMCBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3Jl bGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJb2JqLT51c2Vy ZmF1bHRfY291bnQgPSAwOwogCWxpc3RfZGVsKCZvYmotPnVzZXJmYXVsdF9saW5rKTsKLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KG1tbywgJm9iai0+bW1hcF9vZmZzZXRzLCBvZmZzZXQpCi0JCWRybV92 bWFfbm9kZV91bm1hcCgmbW1vLT52bWFfbm9kZSwKLQkJCQkgICBvYmotPmJhc2UuZGV2LT5hbm9u X2lub2RlLT5pX21hcHBpbmcpOworCisJbXV0ZXhfbG9jaygmb2JqLT5tbW9fbG9jayk7CisJbGlz dF9mb3JfZWFjaF9lbnRyeShtbW8sICZvYmotPm1tYXBfb2Zmc2V0cywgb2Zmc2V0KSB7CisJCWlm IChtbW8tPm1tYXBfdHlwZSA9PSBJOTE1X01NQVBfVFlQRV9HVFQpCisJCQlkcm1fdm1hX25vZGVf dW5tYXAoJm1tby0+dm1hX25vZGUsCisJCQkJCSAgIG9iai0+YmFzZS5kZXYtPmFub25faW5vZGUt PmlfbWFwcGluZyk7CisJfQorCW11dGV4X3VubG9jaygmb2JqLT5tbW9fbG9jayk7CiAKIAlmb3Jf ZWFjaF9nZ3R0X3ZtYSh2bWEsIG9iaikKIAkJaTkxNV92bWFfdW5zZXRfdXNlcmZhdWx0KHZtYSk7 CiB9CiAKIC8qKgotICogaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcCAtIHJlbW92ZSBwaHlz aWNhbCBwYWdlIG1hcHBpbmdzCi0gKiBAb2JqOiBvYmogaW4gcXVlc3Rpb24KLSAqCi0gKiBQcmVz ZXJ2ZSB0aGUgcmVzZXJ2YXRpb24gb2YgdGhlIG1tYXBwaW5nIHdpdGggdGhlIERSTSBjb3JlIGNv ZGUsIGJ1dAotICogcmVsaW5xdWlzaCBvd25lcnNoaXAgb2YgdGhlIHBhZ2VzIGJhY2sgdG8gdGhl IHN5c3RlbS4KLSAqCiAgKiBJdCBpcyB2aXRhbCB0aGF0IHdlIHJlbW92ZSB0aGUgcGFnZSBtYXBw aW5nIGlmIHdlIGhhdmUgbWFwcGVkIGEgdGlsZWQKICAqIG9iamVjdCB0aHJvdWdoIHRoZSBHVFQg YW5kIHRoZW4gbG9zZSB0aGUgZmVuY2UgcmVnaXN0ZXIgZHVlIHRvCiAgKiByZXNvdXJjZSBwcmVz c3VyZS4gU2ltaWxhcmx5IGlmIHRoZSBvYmplY3QgaGFzIGJlZW4gbW92ZWQgb3V0IG9mIHRoZQpA QCAtNDAyLDcgKzQ1OCw3IEBAIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAgKiBtYXBwaW5nIHdpbGwgdGhlbiB0cmln Z2VyIGEgcGFnZSBmYXVsdCBvbiB0aGUgbmV4dCB1c2VyIGFjY2VzcywgYWxsb3dpbmcKICAqIGZp eHVwIGJ5IGk5MTVfZ2VtX2ZhdWx0KCkuCiAgKi8KLXZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVh c2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZvaWQgaTkx NV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5i YXNlLmRldik7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CkBAIC00MjEsNyArNDc3LDcgQEAg dm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiAJaWYgKCFvYmotPnVzZXJmYXVsdF9jb3VudCkKIAkJZ290byBvdXQ7CiAKLQlf X2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAob2JqKTsKKwlfX2k5MTVfZ2VtX29iamVjdF9y ZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkvKiBFbnN1cmUgdGhhdCB0aGUgQ1BVJ3MgUFRFIGFy ZSByZXZva2VkIGFuZCB0aGVyZSBhcmUgbm90IG91dHN0YW5kaW5nCiAJICogbWVtb3J5IHRyYW5z YWN0aW9ucyBmcm9tIHVzZXJzcGFjZSBiZWZvcmUgd2UgcmV0dXJuLiBUaGUgVExCCkBAIC00MzYs NiArNDkyLDM0IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWludGVsX3J1bnRpbWVfcG1fcHV0KCZpOTE1LT5ydW50 aW1lX3BtLCB3YWtlcmVmKTsKIH0KIAorc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVh c2VfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vOworCisJbXV0ZXhfbG9jaygmb2JqLT5tbW9fbG9jayk7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeShtbW8sICZvYmotPm1tYXBfb2Zmc2V0cywgb2Zmc2V0KSB7 CisJCWlmIChtbW8tPm1tYXBfdHlwZSA9PSBJOTE1X01NQVBfVFlQRV9PRkZTRVRfV0MgfHwKKwkJ ICAgIG1tby0+bW1hcF90eXBlID09IEk5MTVfTU1BUF9UWVBFX09GRlNFVF9XQiB8fAorCQkgICAg bW1vLT5tbWFwX3R5cGUgPT0gSTkxNV9NTUFQX1RZUEVfT0ZGU0VUX1VDKQorCQkJZHJtX3ZtYV9u b2RlX3VubWFwKCZtbW8tPnZtYV9ub2RlLAorCQkJCQkgICBvYmotPmJhc2UuZGV2LT5hbm9uX2lu b2RlLT5pX21hcHBpbmcpOworCX0KKwltdXRleF91bmxvY2soJm9iai0+bW1vX2xvY2spOworfQor CisvKioKKyAqIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAgLSByZW1vdmUgcGh5c2ljYWwg cGFnZSBtYXBwaW5ncworICogQG9iajogb2JqIGluIHF1ZXN0aW9uCisgKgorICogUHJlc2VydmUg dGhlIHJlc2VydmF0aW9uIG9mIHRoZSBtbWFwcGluZyB3aXRoIHRoZSBEUk0gY29yZSBjb2RlLCBi dXQKKyAqIHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIHRoZSBwYWdlcyBiYWNrIHRvIHRoZSBzeXN0 ZW0uCisgKi8KK3ZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQoreworCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0 KG9iaik7CisJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9vZmZzZXQob2JqKTsKK30KKwog c3RhdGljIHZvaWQgaW5pdF9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogCQkJICAgICBzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vKQogewpAQCAtNjE0LDYg KzY5OCw0MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGk5MTVf Z2VtX2d0dF92bV9vcHMgPSB7CiAJLmNsb3NlID0gaTkxNV9nZW1fdm1fY2xvc2UsCiB9OwogCitz dGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGk5MTVfZ2VtX2NwdV92bV9v cHMgPSB7CisJLmZhdWx0ID0gaTkxNV9nZW1fZmF1bHRfY3B1LAorCS5vcGVuID0gaTkxNV9nZW1f dm1fb3BlbiwKKwkuY2xvc2UgPSBpOTE1X2dlbV92bV9jbG9zZSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaTkxNV9nZW1fbG1lbV92bV9vcHMgPSB7CisJ LmZhdWx0ID0gaTkxNV9nZW1fZmF1bHRfbG1lbSwKKwkub3BlbiA9IGk5MTVfZ2VtX3ZtX29wZW4s CisJLmNsb3NlID0gaTkxNV9nZW1fdm1fY2xvc2UsCit9OworCitzdGF0aWMgdm9pZCBzZXRfdm1k YXRhX21tYXBfb2Zmc2V0KHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8sIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQoreworCXN3aXRjaCAobW1vLT5tbWFwX3R5cGUpIHsKKwljYXNlIEk5 MTVfTU1BUF9UWVBFX09GRlNFVF9XQzoKKwkJdm1hLT52bV9wYWdlX3Byb3QgPQorCQkJcGdwcm90 X3dyaXRlY29tYmluZSh2bV9nZXRfcGFnZV9wcm90KHZtYS0+dm1fZmxhZ3MpKTsKKwkJYnJlYWs7 CisJY2FzZSBJOTE1X01NQVBfVFlQRV9PRkZTRVRfV0I6CisJCXZtYS0+dm1fcGFnZV9wcm90ID0g dm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZtX2ZsYWdzKTsKKwkJYnJlYWs7CisJY2FzZSBJOTE1X01N QVBfVFlQRV9PRkZTRVRfVUM6CisJCXZtYS0+dm1fcGFnZV9wcm90ID0KKwkJCXBncHJvdF9ub25j YWNoZWQodm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZtX2ZsYWdzKSk7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCWJyZWFrOworCX0KKworCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShtbW8tPm9i aikpCisJCXZtYS0+dm1fb3BzID0gJmk5MTVfZ2VtX2xtZW1fdm1fb3BzOworCWVsc2UKKwkJdm1h LT52bV9vcHMgPSAmaTkxNV9nZW1fY3B1X3ZtX29wczsKK30KKwogLyogVGhpcyBvdmVyY29tZXMg dGhlIGxpbWl0YXRpb24gaW4gZHJtX2dlbV9tbWFwJ3MgYXNzaWdubWVudCBvZiBhCiAgKiBkcm1f Z2VtX29iamVjdCBhcyB0aGUgdm1hLT52bV9wcml2YXRlX2RhdGEuIFNpbmNlIHdlIG5lZWQgdG8K ICAqIGJlIGFibGUgdG8gcmVzb2x2ZSBtdWx0aXBsZSBtbWFwIG9mZnNldHMgd2hpY2ggY291bGQg YmUgdGllZApAQCAtNjc3LDcgKzc5NywxNiBAQCBpbnQgaTkxNV9nZW1fbW1hcChzdHJ1Y3QgZmls ZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJdm1hLT52bV9wYWdlX3Byb3Qg PSBwZ3Byb3RfZGVjcnlwdGVkKHZtYS0+dm1fcGFnZV9wcm90KTsKIAl2bWEtPnZtX3ByaXZhdGVf ZGF0YSA9IG1tbzsKIAotCXZtYS0+dm1fb3BzID0gJmk5MTVfZ2VtX2d0dF92bV9vcHM7CisJc3dp dGNoIChtbW8tPm1tYXBfdHlwZSkgeworCWNhc2UgSTkxNV9NTUFQX1RZUEVfT0ZGU0VUX1dDOgor CWNhc2UgSTkxNV9NTUFQX1RZUEVfT0ZGU0VUX1dCOgorCWNhc2UgSTkxNV9NTUFQX1RZUEVfT0ZG U0VUX1VDOgorCQlzZXRfdm1kYXRhX21tYXBfb2Zmc2V0KG1tbywgdm1hKTsKKwkJYnJlYWs7CisJ Y2FzZSBJOTE1X01NQVBfVFlQRV9HVFQ6CisJCXZtYS0+dm1fb3BzID0gJmk5MTVfZ2VtX2d0dF92 bV9vcHM7CisJCWJyZWFrOworCX0KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCmluZGV4IDJiYjBjNzc5Yzg1MC4uZmQ1OGI5YWVhMTgw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCkBAIC0zNTAs NyArMzUwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5f cGFnZXMob2JqKTsKIH0KIAotdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3Jl bGVhc2VfbW1hcF9ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGk5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aik7CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGFmNjNkMWEwYWYxNC4uNWE5 YmQ5NGI2NzYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTg3MSw3ICs4NzEsNyBAQCB2 b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLAogCQkJCSAmaTkxNS0+Z2d0 dC51c2VyZmF1bHRfbGlzdCwgdXNlcmZhdWx0X2xpbmspCi0JCV9faTkxNV9nZW1fb2JqZWN0X3Jl bGVhc2VfbW1hcChvYmopOworCQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9i aik7CiAKIAkvKgogCSAqIFRoZSBmZW5jZSB3aWxsIGJlIGxvc3Qgd2hlbiB0aGUgZGV2aWNlIHBv d2VycyBkb3duLiBJZiBhbnkgd2VyZQotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw=