From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI] drm/i915/gtt: Make gen6 page directories evictable Date: Tue, 12 Jun 2018 13:04:46 +0100 Message-ID: <20180612120446.13901-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id A34ED6E09B for ; Tue, 12 Jun 2018 12:04:50 +0000 (UTC) Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 12021433-1500050 for ; Tue, 12 Jun 2018 13:04:46 +0100 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 List-Id: intel-gfx@lists.freedesktop.org Q3VycmVudGx5IGFsbCBwYWdlIGRpcmVjdG9yaWVzIGFyZSBib3VuZCBhdCBjcmVhdGlvbiB1c2lu ZyBhbgp1bmV2aWN0YWJsZSBub2RlIGluIHRoZSBHR1RULiBUaGlzIHNldmVyZWx5IGxpbWl0cyB1 cyBhcyB3ZSBjYW5ub3QKcmVtb3ZlIGFueSBpbmFjdGl2ZSBwcGd0dCBmb3IgbmV3IGNvbnRleHRz LCBvciB1bmRlciBhcGVydHVyZSBwcmVzc3VyZS4KVG8gZml4IHRoaXMgd2UgbmVlZCB0byBtYWtl IHRoZSBwYWdlIGRpcmVjdG9yeSBpbnRvIGEgZmlyc3QgY2xhc3MgYW5kCnVuYmluZGFibGUgdm1h LiBIZW5jZSwgdGhlIGNyZWF0aW9uIG9mIGEgY3VzdG9tIHZtYSB0byB3cmFwIHRoZSBwYWdlCmRp cmVjdG9yeSBhcyBvcHBvc2VkIHRvIGEgR0VNIG9iamVjdC4KCkluIHRoaXMgcGF0Y2gsIHdlIGxl YXZlIHRoZSBwYWdlIGRpcmVjdG9yaWVzIHBpbm5lZCB1cG9uIGNyZWF0aW9uLgoKU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKb29uYXMg TGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBNaWthIEt1b3Bw YWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IE1hdHRoZXcgQXVsZCA8bWF0 dGhldy53aWxsaWFtLmF1bGRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhldyBBdWxkIDxt YXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMgfCAyNTcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdm1hLmggICAgIHwgICA3ICsKIDMgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlv bnMoKyksIDExMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmlu ZGV4IGU5ZmNjNDM3MGIxYS4uYzY5NDlkYTM0MjNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwpAQCAtMTY0MCw1MCArMTY0MCw1NSBAQCBzdGF0aWMgdm9pZCBnZW42X2R1bXBfcHBn dHQoc3RydWN0IGk5MTVfaHdfcHBndHQgKmJhc2UsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIHsKIAlz dHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0KGJhc2UpOwogCXN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmJhc2UtPnZtOwotCXN0cnVjdCBpOTE1X3BhZ2Vf dGFibGUgKnVudXNlZDsKLQlnZW42X3B0ZV90IHNjcmF0Y2hfcHRlOwotCXUzMiBwZF9lbnRyeSwg cHRlLCBwZGU7Ci0KLQlzY3JhdGNoX3B0ZSA9IHZtLT5wdGVfZW5jb2RlKHZtLT5zY3JhdGNoX3Bh Z2UuZGFkZHIsIEk5MTVfQ0FDSEVfTExDLCAwKTsKLQotCWdlbjZfZm9yX2FsbF9wZGVzKHVudXNl ZCwgJmJhc2UtPnBkLCBwZGUpIHsKLQkJdTMyIGV4cGVjdGVkOwotCQlnZW42X3B0ZV90ICpwdF92 YWRkcjsKLQkJY29uc3QgZG1hX2FkZHJfdCBwdF9hZGRyID0gcHhfZG1hKGJhc2UtPnBkLnBhZ2Vf dGFibGVbcGRlXSk7Ci0JCXBkX2VudHJ5ID0gcmVhZGwocHBndHQtPnBkX2FkZHIgKyBwZGUpOwot CQlleHBlY3RlZCA9IChHRU42X1BERV9BRERSX0VOQ09ERShwdF9hZGRyKSB8IEdFTjZfUERFX1ZB TElEKTsKLQotCQlpZiAocGRfZW50cnkgIT0gZXhwZWN0ZWQpCi0JCQlzZXFfcHJpbnRmKG0sICJc dFBERSAjJWQgbWlzbWF0Y2g6IEFjdHVhbCBQREU6ICV4IEV4cGVjdGVkIFBERTogJXhcbiIsCi0J CQkJICAgcGRlLAotCQkJCSAgIHBkX2VudHJ5LAotCQkJCSAgIGV4cGVjdGVkKTsKLQkJc2VxX3By aW50ZihtLCAiXHRQREU6ICV4XG4iLCBwZF9lbnRyeSk7Ci0KLQkJcHRfdmFkZHIgPSBrbWFwX2F0 b21pY19weChiYXNlLT5wZC5wYWdlX3RhYmxlW3BkZV0pOwotCi0JCWZvciAocHRlID0gMDsgcHRl IDwgR0VONl9QVEVTOyBwdGUrPTQpIHsKLQkJCXVuc2lnbmVkIGxvbmcgdmEgPQotCQkJCShwZGUg KiBQQUdFX1NJWkUgKiBHRU42X1BURVMpICsKLQkJCQkocHRlICogUEFHRV9TSVpFKTsKKwljb25z dCBnZW42X3B0ZV90IHNjcmF0Y2hfcHRlID0KKwkJdm0tPnB0ZV9lbmNvZGUodm0tPnNjcmF0Y2hf cGFnZS5kYWRkciwgSTkxNV9DQUNIRV9MTEMsIDApOworCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUg KnB0OworCXUzMiBwdGUsIHBkZTsKKworCWdlbjZfZm9yX2FsbF9wZGVzKHB0LCAmYmFzZS0+cGQs IHBkZSkgeworCQlnZW42X3B0ZV90ICp2YWRkcjsKKworCQlpZiAocHQgPT0gYmFzZS0+dm0uc2Ny YXRjaF9wdCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChpOTE1X3ZtYV9pc19ib3VuZChwcGd0dC0+ dm1hLCBJOTE1X1ZNQV9HTE9CQUxfQklORCkpIHsKKwkJCXUzMiBleHBlY3RlZCA9CisJCQkJR0VO Nl9QREVfQUREUl9FTkNPREUocHhfZG1hKHB0KSkgfAorCQkJCUdFTjZfUERFX1ZBTElEOworCQkJ dTMyIHBkX2VudHJ5ID0gcmVhZGwocHBndHQtPnBkX2FkZHIgKyBwZGUpOworCisJCQlpZiAocGRf ZW50cnkgIT0gZXhwZWN0ZWQpCisJCQkJc2VxX3ByaW50ZihtLAorCQkJCQkgICAiXHRQREUgIyVk IG1pc21hdGNoOiBBY3R1YWwgUERFOiAleCBFeHBlY3RlZCBQREU6ICV4XG4iLAorCQkJCQkgICBw ZGUsCisJCQkJCSAgIHBkX2VudHJ5LAorCQkJCQkgICBleHBlY3RlZCk7CisKKwkJCXNlcV9wcmlu dGYobSwgIlx0UERFOiAleFxuIiwgcGRfZW50cnkpOworCQl9CisKKwkJdmFkZHIgPSBrbWFwX2F0 b21pY19weChiYXNlLT5wZC5wYWdlX3RhYmxlW3BkZV0pOworCQlmb3IgKHB0ZSA9IDA7IHB0ZSA8 IEdFTjZfUFRFUzsgcHRlICs9IDQpIHsKIAkJCWludCBpOwotCQkJYm9vbCBmb3VuZCA9IGZhbHNl OworCiAJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQotCQkJCWlmIChwdF92YWRkcltwdGUgKyBp XSAhPSBzY3JhdGNoX3B0ZSkKLQkJCQkJZm91bmQgPSB0cnVlOwotCQkJaWYgKCFmb3VuZCkKKwkJ CQlpZiAodmFkZHJbcHRlICsgaV0gIT0gc2NyYXRjaF9wdGUpCisJCQkJCWJyZWFrOworCQkJaWYg KGkgPT0gNCkKIAkJCQljb250aW51ZTsKIAotCQkJc2VxX3ByaW50ZihtLCAiXHRcdDB4JWx4IFsl MDNkLCUwNGRdOiA9IiwgdmEsIHBkZSwgcHRlKTsKKwkJCXNlcV9wcmludGYobSwgIlx0XHQoJTAz ZCwgJTA0ZCkgJTA4bHg6ICIsCisJCQkJICAgcGRlLCBwdGUsCisJCQkJICAgKHBkZSAqIEdFTjZf UFRFUyArIHB0ZSkgKiBQQUdFX1NJWkUpOwogCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewot CQkJCWlmIChwdF92YWRkcltwdGUgKyBpXSAhPSBzY3JhdGNoX3B0ZSkKLQkJCQkJc2VxX3ByaW50 ZihtLCAiICUwOHgiLCBwdF92YWRkcltwdGUgKyBpXSk7CisJCQkJaWYgKHZhZGRyW3B0ZSArIGld ICE9IHNjcmF0Y2hfcHRlKQorCQkJCQlzZXFfcHJpbnRmKG0sICIgJTA4eCIsIHZhZGRyW3B0ZSAr IGldKTsKIAkJCQllbHNlCi0JCQkJCXNlcV9wdXRzKG0sICIgIFNDUkFUQ0ggIik7CisJCQkJCXNl cV9wdXRzKG0sICIgIFNDUkFUQ0giKTsKIAkJCX0KIAkJCXNlcV9wdXRzKG0sICJcbiIpOwogCQl9 Ci0JCWt1bm1hcF9hdG9taWMocHRfdmFkZHIpOworCQlrdW5tYXBfYXRvbWljKHZhZGRyKTsKIAl9 CiB9CiAKQEAgLTE2OTcsMjIgKzE3MDIsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuNl93cml0 ZV9wZGUoY29uc3Qgc3RydWN0IGdlbjZfaHdfcHBndHQgKnBwZ3R0LAogCQkgIHBwZ3R0LT5wZF9h ZGRyICsgcGRlKTsKIH0KIAotLyogV3JpdGUgYWxsIHRoZSBwYWdlIHRhYmxlcyBmb3VuZCBpbiB0 aGUgcHBndHQgc3RydWN0dXJlIHRvIGluY3JlbWVudGluZyBwYWdlCi0gKiBkaXJlY3Rvcmllcy4g Ki8KLXN0YXRpYyB2b2lkIGdlbjZfd3JpdGVfcGFnZV9yYW5nZShzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqYmFzZSwKLQkJCQkgIHUzMiBzdGFydCwgdTMyIGxlbmd0aCkKLXsKLQlzdHJ1Y3QgZ2VuNl9o d19wcGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0KGJhc2UpOwotCXN0cnVjdCBpOTE1X3BhZ2Vf dGFibGUgKnB0OwotCXVuc2lnbmVkIGludCBwZGU7Ci0KLQlnZW42X2Zvcl9lYWNoX3BkZShwdCwg JmJhc2UtPnBkLCBzdGFydCwgbGVuZ3RoLCBwZGUpCi0JCWdlbjZfd3JpdGVfcGRlKHBwZ3R0LCBw ZGUsIHB0KTsKLQotCW1hcmtfdGxic19kaXJ0eShiYXNlKTsKLQlnZW42X2dndHRfaW52YWxpZGF0 ZShiYXNlLT52bS5pOTE1KTsKLX0KLQogc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9lbmFibGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKQEAgLTE4NTgsOCArMTg0NywxMiBAQCBzdGF0aWMgaW50IGdlbjZfYWxsb2Nf dmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAkJCWdlbjZfaW5pdGlh bGl6ZV9wdCh2bSwgcHQpOwogCQkJcHBndHQtPmJhc2UucGQucGFnZV90YWJsZVtwZGVdID0gcHQ7 Ci0JCQlnZW42X3dyaXRlX3BkZShwcGd0dCwgcGRlLCBwdCk7Ci0JCQlmbHVzaCA9IHRydWU7CisK KwkJCWlmIChpOTE1X3ZtYV9pc19ib3VuZChwcGd0dC0+dm1hLAorCQkJCQkgICAgICBJOTE1X1ZN QV9HTE9CQUxfQklORCkpIHsKKwkJCQlnZW42X3dyaXRlX3BkZShwcGd0dCwgcGRlLCBwdCk7CisJ CQkJZmx1c2ggPSB0cnVlOworCQkJfQogCQl9CiAJfQogCkBAIC0xODc1LDggKzE4NjgsMTEgQEAg c3RhdGljIGludCBnZW42X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAogCXJldHVybiAtRU5PTUVNOwogfQogCi1zdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdF9z Y3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQorc3RhdGljIGludCBnZW42X3Bw Z3R0X2luaXRfc2NyYXRjaChzdHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQpCiB7CisJc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqIGNvbnN0IHZtID0gJnBwZ3R0LT5iYXNlLnZtOworCXN0cnVj dCBpOTE1X3BhZ2VfdGFibGUgKnVudXNlZDsKKwl1MzIgcGRlOwogCWludCByZXQ7CiAKIAlyZXQg PSBzZXR1cF9zY3JhdGNoX3BhZ2Uodm0sIF9fR0ZQX0hJR0hNRU0pOwpAQCAtMTg5MCw2ICsxODg2 LDggQEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXRfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSkKIAl9CiAKIAlnZW42X2luaXRpYWxpemVfcHQodm0sIHZtLT5zY3JhdGNo X3B0KTsKKwlnZW42X2Zvcl9hbGxfcGRlcyh1bnVzZWQsICZwcGd0dC0+YmFzZS5wZCwgcGRlKQor CQlwcGd0dC0+YmFzZS5wZC5wYWdlX3RhYmxlW3BkZV0gPSB2bS0+c2NyYXRjaF9wdDsKIAogCXJl dHVybiAwOwogfQpAQCAtMTkxNCw1MiArMTkxMiwxMDQgQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0 dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogewogCXN0cnVjdCBnZW42 X2h3X3BwZ3R0ICpwcGd0dCA9IHRvX2dlbjZfcHBndHQoaTkxNV92bV90b19wcGd0dCh2bSkpOwog Ci0JZHJtX21tX3JlbW92ZV9ub2RlKCZwcGd0dC0+bm9kZSk7CisJaTkxNV92bWFfdW5waW4ocHBn dHQtPnZtYSk7CisJaTkxNV92bWFfZGVzdHJveShwcGd0dC0+dm1hKTsKIAogCWdlbjZfcHBndHRf ZnJlZV9wZChwcGd0dCk7CiAJZ2VuNl9wcGd0dF9mcmVlX3NjcmF0Y2godm0pOwogfQogCi1zdGF0 aWMgaW50IGdlbjZfcHBndHRfYWxsb2NhdGVfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgZ2VuNl9o d19wcGd0dCAqcHBndHQpCitzdGF0aWMgaW50IHBkX3ZtYV9zZXRfcGFnZXMoc3RydWN0IGk5MTVf dm1hICp2bWEpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcHBndHQt PmJhc2Uudm0uaTkxNTsKLQlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0 OwotCWludCBlcnI7CisJdm1hLT5wYWdlcyA9IEVSUl9QVFIoLUVOT0RFVik7CisJcmV0dXJuIDA7 Cit9CiAKLQkvKiBQUEdUVCBQREVzIHJlc2lkZSBpbiB0aGUgR0dUVCBhbmQgY29uc2lzdHMgb2Yg NTEyIGVudHJpZXMuIFRoZQotCSAqIGFsbG9jYXRvciB3b3JrcyBpbiBhZGRyZXNzIHNwYWNlIHNp emVzLCBzbyBpdCdzIG11bHRpcGxpZWQgYnkgcGFnZQotCSAqIHNpemUuIFdlIGFsbG9jYXRlIGF0 IHRoZSB0b3Agb2YgdGhlIEdUVCB0byBhdm9pZCBmcmFnbWVudGF0aW9uLgotCSAqLwotCUJVR19P TighZHJtX21tX2luaXRpYWxpemVkKCZnZ3R0LT52bS5tbSkpOworc3RhdGljIHZvaWQgcGRfdm1h X2NsZWFyX3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCUdFTV9CVUdfT04oIXZtYS0+ cGFnZXMpOwogCi0JZXJyID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZ2d0dC0+dm0sICZwcGd0dC0+ bm9kZSwKLQkJCQkgIEdFTjZfUERfU0laRSwgR0VONl9QRF9BTElHTiwKLQkJCQkgIEk5MTVfQ09M T1JfVU5FVklDVEFCTEUsCi0JCQkJICAwLCBnZ3R0LT52bS50b3RhbCwKLQkJCQkgIFBJTl9ISUdI KTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCXZtYS0+cGFnZXMgPSBOVUxMOworfQorCitz dGF0aWMgaW50IHBkX3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAorCQkgICAgICAgZW51 bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAorCQkgICAgICAgdTMyIHVudXNlZCkKK3sK KwlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gaTkxNV92bV90b19nZ3R0KHZtYS0+dm0pOworCXN0 cnVjdCBnZW42X2h3X3BwZ3R0ICpwcGd0dCA9IHZtYS0+cHJpdmF0ZTsKKwl1MzIgZ2d0dF9vZmZz ZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSkgLyBQQUdFX1NJWkU7CisJc3RydWN0IGk5MTVfcGFn ZV90YWJsZSAqcHQ7CisJdW5zaWduZWQgaW50IHBkZTsKIAotCWlmIChwcGd0dC0+bm9kZS5zdGFy dCA8IGdndHQtPm1hcHBhYmxlX2VuZCkKLQkJRFJNX0RFQlVHKCJGb3JjZWQgdG8gdXNlIGFwZXJ0 dXJlIGZvciBQREVzXG4iKTsKKwlwcGd0dC0+YmFzZS5wZC5iYXNlLmdndHRfb2Zmc2V0ID0gZ2d0 dF9vZmZzZXQgKiBzaXplb2YoZ2VuNl9wdGVfdCk7CisJcHBndHQtPnBkX2FkZHIgPSAoZ2VuNl9w dGVfdCBfX2lvbWVtICopZ2d0dC0+Z3NtICsgZ2d0dF9vZmZzZXQ7CiAKLQlwcGd0dC0+YmFzZS5w ZC5iYXNlLmdndHRfb2Zmc2V0ID0KLQkJcHBndHQtPm5vZGUuc3RhcnQgLyBQQUdFX1NJWkUgKiBz aXplb2YoZ2VuNl9wdGVfdCk7CisJZ2VuNl9mb3JfYWxsX3BkZXMocHQsICZwcGd0dC0+YmFzZS5w ZCwgcGRlKQorCQlnZW42X3dyaXRlX3BkZShwcGd0dCwgcGRlLCBwdCk7CiAKLQlwcGd0dC0+cGRf YWRkciA9IChnZW42X3B0ZV90IF9faW9tZW0gKilnZ3R0LT5nc20gKwotCQlwcGd0dC0+YmFzZS5w ZC5iYXNlLmdndHRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfcHRlX3QpOworCW1hcmtfdGxic19kaXJ0 eSgmcHBndHQtPmJhc2UpOworCWdlbjZfZ2d0dF9pbnZhbGlkYXRlKHBwZ3R0LT5iYXNlLnZtLmk5 MTUpOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjZfc2NyYXRjaF92YV9yYW5n ZShzdHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQsCi0JCQkJICB1NjQgc3RhcnQsIHU2NCBsZW5n dGgpCitzdGF0aWMgdm9pZCBwZF92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewot CXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnVudXNlZDsKLQl1MzIgcGRlOworfQogCi0JZ2VuNl9m b3JfZWFjaF9wZGUodW51c2VkLCAmcHBndHQtPmJhc2UucGQsIHN0YXJ0LCBsZW5ndGgsIHBkZSkK LQkJcHBndHQtPmJhc2UucGQucGFnZV90YWJsZVtwZGVdID0gcHBndHQtPmJhc2Uudm0uc2NyYXRj aF9wdDsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV92bWFfb3BzIHBkX3ZtYV9vcHMgPSB7CisJ LnNldF9wYWdlcyA9IHBkX3ZtYV9zZXRfcGFnZXMsCisJLmNsZWFyX3BhZ2VzID0gcGRfdm1hX2Ns ZWFyX3BhZ2VzLAorCS5iaW5kX3ZtYSA9IHBkX3ZtYV9iaW5kLAorCS51bmJpbmRfdm1hID0gcGRf dm1hX3VuYmluZCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKnBkX3ZtYV9jcmVhdGUo c3RydWN0IGdlbjZfaHdfcHBndHQgKnBwZ3R0LCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IHBwZ3R0LT5iYXNlLnZtLmk5MTU7CisJc3RydWN0IGk5MTVfZ2d0 dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCWludCBpOwor CisJR0VNX0JVR19PTighSVNfQUxJR05FRChzaXplLCBJOTE1X0dUVF9QQUdFX1NJWkUpKTsKKwlH RU1fQlVHX09OKHNpemUgPiBnZ3R0LT52bS50b3RhbCk7CisKKwl2bWEgPSBrbWVtX2NhY2hlX3ph bGxvYyhpOTE1LT52bWFzLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXZtYSkKKwkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2bWEtPmxhc3RfcmVh ZCk7IGkrKykKKwkJaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdm1hLT5sYXN0X3JlYWRbaV0sIE5VTEwp OworCWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF9mZW5jZSwgTlVMTCk7CisKKwl2bWEt PnZtID0gJmdndHQtPnZtOworCXZtYS0+b3BzID0gJnBkX3ZtYV9vcHM7CisJdm1hLT5wcml2YXRl ID0gcHBndHQ7CisKKwl2bWEtPnNpemUgPSBzaXplOworCXZtYS0+ZmVuY2Vfc2l6ZSA9IHNpemU7 CisJdm1hLT5mbGFncyA9IEk5MTVfVk1BX0dHVFQ7CisJdm1hLT5nZ3R0X3ZpZXcudHlwZSA9IEk5 MTVfR0dUVF9WSUVXX1JPVEFURUQ7IC8qIHByZXZlbnQgZmVuY2luZyAqLworCisJSU5JVF9MSVNU X0hFQUQoJnZtYS0+b2JqX2xpbmspOworCWxpc3RfYWRkKCZ2bWEtPnZtX2xpbmssICZ2bWEtPnZt LT51bmJvdW5kX2xpc3QpOworCisJcmV0dXJuIHZtYTsKK30KKworc3RhdGljIGludCBnZW42X3Bw Z3R0X3BpbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFzZSkKK3sKKwlzdHJ1Y3QgZ2VuNl9od19w cGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0KGJhc2UpOworCisJLyoKKwkgKiBQUEdUVCBQREVz IHJlc2lkZSBpbiB0aGUgR0dUVCBhbmQgY29uc2lzdHMgb2YgNTEyIGVudHJpZXMuIFRoZQorCSAq IGFsbG9jYXRvciB3b3JrcyBpbiBhZGRyZXNzIHNwYWNlIHNpemVzLCBzbyBpdCdzIG11bHRpcGxp ZWQgYnkgcGFnZQorCSAqIHNpemUuIFdlIGFsbG9jYXRlIGF0IHRoZSB0b3Agb2YgdGhlIEdUVCB0 byBhdm9pZCBmcmFnbWVudGF0aW9uLgorCSAqLworCXJldHVybiBpOTE1X3ZtYV9waW4ocHBndHQt PnZtYSwKKwkJCSAgICAwLCBHRU42X1BEX0FMSUdOLAorCQkJICAgIFBJTl9HTE9CQUwgfCBQSU5f SElHSCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqZ2VuNl9wcGd0dF9jcmVh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC0xOTg5LDI0ICsyMDM5LDI3IEBA IHN0YXRpYyBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqZ2VuNl9wcGd0dF9jcmVhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAlwcGd0dC0+YmFzZS52bS5wdGVfZW5jb2RlID0gZ2d0 dC0+dm0ucHRlX2VuY29kZTsKIAotCWVyciA9IGdlbjZfcHBndHRfaW5pdF9zY3JhdGNoKCZwcGd0 dC0+YmFzZS52bSk7CisJZXJyID0gZ2VuNl9wcGd0dF9pbml0X3NjcmF0Y2gocHBndHQpOwogCWlm IChlcnIpCiAJCWdvdG8gZXJyX2ZyZWU7CiAKLQllcnIgPSBnZW42X3BwZ3R0X2FsbG9jYXRlX3Bh Z2VfZGlyZWN0b3JpZXMocHBndHQpOwotCWlmIChlcnIpCisJcHBndHQtPnZtYSA9IHBkX3ZtYV9j cmVhdGUocHBndHQsIEdFTjZfUERfU0laRSk7CisJaWYgKElTX0VSUihwcGd0dC0+dm1hKSkgewor CQllcnIgPSBQVFJfRVJSKHBwZ3R0LT52bWEpOwogCQlnb3RvIGVycl9zY3JhdGNoOwotCi0JZ2Vu Nl9zY3JhdGNoX3ZhX3JhbmdlKHBwZ3R0LCAwLCBwcGd0dC0+YmFzZS52bS50b3RhbCk7Ci0JZ2Vu Nl93cml0ZV9wYWdlX3JhbmdlKCZwcGd0dC0+YmFzZSwgMCwgcHBndHQtPmJhc2Uudm0udG90YWwp OworCX0KIAogCWVyciA9IGdlbjZfYWxsb2NfdmFfcmFuZ2UoJnBwZ3R0LT5iYXNlLnZtLCAwLCBw cGd0dC0+YmFzZS52bS50b3RhbCk7CisJaWYgKGVycikKKwkJZ290byBlcnJfdm1hOworCisJZXJy ID0gZ2VuNl9wcGd0dF9waW4oJnBwZ3R0LT5iYXNlKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9w ZDsKIAogCURSTV9ERUJVR19EUklWRVIoIkFsbG9jYXRlZCBwZGUgc3BhY2UgKCVsbGRNKSBhdCBH VFQgZW50cnk6ICVsbHhcbiIsCi0JCQkgcHBndHQtPm5vZGUuc2l6ZSA+PiAyMCwKLQkJCSBwcGd0 dC0+bm9kZS5zdGFydCAvIFBBR0VfU0laRSk7CisJCQkgcHBndHQtPnZtYS0+bm9kZS5zaXplID4+ IDIwLAorCQkJIHBwZ3R0LT52bWEtPm5vZGUuc3RhcnQgLyBQQUdFX1NJWkUpOwogCiAJRFJNX0RF QlVHX0RSSVZFUigiQWRkaW5nIFBQR1RUIGF0IG9mZnNldCAleFxuIiwKIAkJCSBwcGd0dC0+YmFz ZS5wZC5iYXNlLmdndHRfb2Zmc2V0IDw8IDEwKTsKQEAgLTIwMTUsNiArMjA2OCw4IEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqZ2VuNl9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiAKIGVycl9wZDoKIAlnZW42X3BwZ3R0X2ZyZWVfcGQocHBndHQpOwor ZXJyX3ZtYToKKwlpOTE1X3ZtYV9kZXN0cm95KHBwZ3R0LT52bWEpOwogZXJyX3NjcmF0Y2g6CiAJ Z2VuNl9wcGd0dF9mcmVlX3NjcmF0Y2goJnBwZ3R0LT5iYXNlLnZtKTsKIGVycl9mcmVlOgpAQCAt MzUzMyw2ICszNTg4LDcgQEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogCiAJZ2d0dC0+dm0uY2xvc2VkID0g ZmFsc2U7CisJaTkxNV9nZ3R0X2ludmFsaWRhdGUoZGV2X3ByaXYpOwogCiAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOCkgewogCQlzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCA9ICZkZXZfcHJp di0+cHBhdDsKQEAgLTM1NDEsMjUgKzM1OTcsNiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0 X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZGV2X3ByaXYt PnBwYXQudXBkYXRlX2h3KGRldl9wcml2KTsKIAkJcmV0dXJuOwogCX0KLQotCWlmIChVU0VTX1BQ R1RUKGRldl9wcml2KSkgewotCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKLQotCQls aXN0X2Zvcl9lYWNoX2VudHJ5KHZtLCAmZGV2X3ByaXYtPnZtX2xpc3QsIGdsb2JhbF9saW5rKSB7 Ci0JCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7Ci0KLQkJCWlmIChpOTE1X2lzX2dndHQo dm0pKQotCQkJCXBwZ3R0ID0gZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0OwotCQkJZWxzZQot CQkJCXBwZ3R0ID0gaTkxNV92bV90b19wcGd0dCh2bSk7Ci0JCQlpZiAoIXBwZ3R0KQotCQkJCWNv bnRpbnVlOwotCi0JCQlnZW42X3dyaXRlX3BhZ2VfcmFuZ2UocHBndHQsIDAsIHBwZ3R0LT52bS50 b3RhbCk7Ci0JCX0KLQl9Ci0KLQlpOTE1X2dndHRfaW52YWxpZGF0ZShkZXZfcHJpdik7CiB9CiAK IHN0YXRpYyBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aAppbmRleCA3ZDY1ZDgxM2VmZjAuLjZlOWFjZDk5ZWNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmgKQEAgLTQxMCw3ICs0MTAsNyBAQCBzdHJ1Y3QgaTkxNV9od19wcGd0dCB7CiBz dHJ1Y3QgZ2VuNl9od19wcGd0dCB7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgYmFzZTsKIAotCXN0 cnVjdCBkcm1fbW1fbm9kZSBub2RlOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWdlbjZfcHRl X3QgX19pb21lbSAqcGRfYWRkcjsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdm1hLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCmluZGV4IDQz MjE0NzZhNmEzMi4uNjZhMjI4OTMxNTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZtYS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKQEAgLTU0 LDYgKzU0LDcgQEAgc3RydWN0IGk5MTVfdm1hIHsKIAlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0 ICpyZXN2OyAvKiogQWxpYXMgb2Ygb2JqLT5yZXN2ICovCiAJc3RydWN0IHNnX3RhYmxlICpwYWdl czsKIAl2b2lkIF9faW9tZW0gKmlvbWFwOworCXZvaWQgKnByaXZhdGU7IC8qIG93bmVkIGJ5IGNy ZWF0b3IgKi8KIAl1NjQgc2l6ZTsKIAl1NjQgZGlzcGxheV9hbGlnbm1lbnQ7CiAJc3RydWN0IGk5 MTVfcGFnZV9zaXplcyBwYWdlX3NpemVzOwpAQCAtMzQwLDYgKzM0MSwxMiBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV92bWFfdW5waW4oc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJX19pOTE1X3Zt YV91bnBpbih2bWEpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaXNfYm91bmQo Y29uc3Qgc3RydWN0IGk5MTVfdm1hICp2bWEsCisJCQkJICAgICB1bnNpZ25lZCBpbnQgd2hlcmUp Cit7CisJcmV0dXJuIHZtYS0+ZmxhZ3MgJiB3aGVyZTsKK30KKwogLyoqCiAgKiBpOTE1X3ZtYV9w aW5faW9tYXAgLSBjYWxscyBpb3JlbWFwX3djIHRvIG1hcCB0aGUgR0dUVCBWTUEgdmlhIHRoZSBh cGVydHVyZQogICogQHZtYTogVk1BIHRvIGlvbWFwCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=