From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 03/17] drm/i915/ringbuffer: Fix context restore upon reset Date: Sun, 10 Jun 2018 20:43:11 +0100 Message-ID: <20180610194325.13467-4-chris@chris-wilson.co.uk> References: <20180610194325.13467-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 7C88E89BF0 for ; Sun, 10 Jun 2018 19:43:53 +0000 (UTC) In-Reply-To: <20180610194325.13467-1-chris@chris-wilson.co.uk> 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 VGhlIGRpc2NvdmVyeSB3aXRoIHRyeWluZyB0byBlbmFibGUgZnVsbC1wcGd0dCB3YXMgdGhhdCB3 ZSB3ZXJlCmNvbXBsZXRlbHkgZmFpbGluZyB0byB0aGUgbG9hZCBib3RoIHRoZSBtbSBhbmQgY29u dGV4dCBmb2xsb3dpbmcgdGhlCnJlc2V0LiBBbHRob3VnaCB3ZSB3ZXJlIHBlcmZvcm1pbmcgbW1p byB0byBzZXQgdGhlIFBQX0RJUiAocGVyLXByb2Nlc3MKR1RUKSBhbmQgQ0NJRCAoY29udGV4dCks IHRoZXNlIHdlcmUgdGFraW5nIG5vIGVmZmVjdCAodGhlIGFzc3VtcHRpb24gd2FzCnRoYXQgdGhp cyB3b3VsZCB0cmlnZ2VyIHJlbG9hZCBvZiB0aGUgY29udGV4dCBhbmQgcmVzdG9yZSB0aGUgcGFn ZQp0YWJsZXMpLiBJdCB3YXMgbm90IHVudGlsIHdlIHBlcmZvcm1lZCB0aGUgTFJJICsgTUlfU0VU X0NPTlRFWFQgaW4gYQpmb2xsb3dpbmcgY29udGV4dCBzd2l0Y2ggd291bGQgYW55dGhpbmcgb2Nj dXIuCgpTaW5jZSB3ZSBhcmUgdGhlbiByZXF1aXJlZCB0byByZXNldCB0aGUgY29udGV4dCBpbWFn ZSBhbmQgUFBfRElSIHVzaW5nCkNTIGNvbW1hbmRzLCB3ZSBwbGFjZSB0aG9zZSBjb21tYW5kcyBp bnRvIGV2ZXJ5IGJhdGNoLiBUaGUgaGFyZHdhcmUKc2hvdWxkIHJlY29nbmlzZSB0aGUgbm8tb3Bz IGFuZCBlbGltaW5hdGUgdGhlIGV4cGVuc2l2ZSBjb250ZXh0IGxvYWRzLApidXQgd2Ugc3RpbGwg aGF2ZSB0byBwYXkgdGhlIGNvc3Qgb2YgdXNpbmcgY3Jvc3MtcG93ZXJ3ZWxsIHJlZ2lzdGVyCndy aXRlcy4gSW4gcHJhY3RpY2UsIHRoaXMgaGFzIG5vIGVmZmVjdCBvbiBhY3R1YWwgY29udGV4dCBz d2l0Y2ggdGltZXMsCmFuZCBvbmx5IGFkZHMgYSBmZXcgaHVuZHJlZCBuYW5vc2Vjb25kcyB0byBu by1vcCBzd2l0Y2hlcy4gV2UgY2FuIGltcHJvdmUKdGhlIGxhdHRlciBieSBlbGltaW5hdGluZyB0 aGUgdy9hIGFyb3VuZCBrbm93biBuby1vcCBzd2l0Y2hlcywgYnV0IHRoZXJlCmlzIGFuIHVsdGVy aW9yIG1vdGl2ZSB0byBrZWVwaW5nIHRoZW0uCgpBbHdheXMgZW1pdHRpbmcgdGhlIGNvbnRleHQg c3dpdGNoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJlcXVlc3QgKGFuZApyZWx5aW5nIG9uIEhX IHRvIHNraXAgdW5uZWVkZWQgc3dpdGNoZXMpIGRvZXMgaGF2ZSBvbmUga2V5IGFkdmFudGFnZS4K U2hvdWxkIHdlIGltcGxlbWVudCByZXF1ZXN0IHJlb3JkZXJpbmcgb24gSGFzd2VsbCwgd2Ugd2ls bCBub3Qga25vdyBpbgphZHZhbmNlIHdoYXQgdGhlIHByZXZpb3VzIGV4ZWN1dGluZyBjb250ZXh0 IHdhcyBvbiB0aGUgR1BVIGFuZCBzbyB3ZQp3b3VsZCBub3QgYmUgYWJsZSB0byBlbGlkZSB0aGUg TUlfU0VUX0NPTlRFWFQgY29tbWFuZHMgb3Vyc2VsdmVzIGFuZAphbHdheXMgaGF2ZSB0byBlbWl0 IHRoZW0uIEhhdmluZyBvdXIgaGFuZCBmb3JjZWQgbm93IGFjdHVhbGx5IHByZXBhcmVzCnVzIGZv ciBsYXRlci4KCnYyOiBTYW5keWJyaWRnZSBoYXMgdG8gYWdyZWUgdG8gdXNlIExSSSBhcyB3ZWxs LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNj OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IE1hdHRo ZXcgQXVsZCA8bWF0dGhldy53aWxsaWFtLmF1bGRAZ21haWwuY29tPgpDYzogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyAgICAgfCAgNDUgLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaCAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAg ICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggICAgICAgfCAgMzMg LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgICAzIC0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDEyNCArKysrKysrKysr Ky0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8 ICAgOSAtLQogOCBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAxNTcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCA2M2JkNDA2ODhmYmIuLjk5 NjY4NDVhN2YyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTE3MTIsNDUg KzE3MTIsNiBAQCBzdGF0aWMgdm9pZCBnZW42X3dyaXRlX3BhZ2VfcmFuZ2Uoc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0LAogCXdtYigpOwogfQogCi1zdGF0aWMgaW5saW5lIHUzMiBnZXRfcGRf b2Zmc2V0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKLXsKLQlHRU1fQlVHX09OKHBwZ3R0 LT5wZC5iYXNlLmdndHRfb2Zmc2V0ICYgMHgzZik7Ci0JcmV0dXJuIHBwZ3R0LT5wZC5iYXNlLmdn dHRfb2Zmc2V0IDw8IDEwOwotfQotCi1zdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNoKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCwKLQkJCSAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2luZTsKLQl1MzIgKmNzOwot Ci0JLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlkYXRlZCBiZWZvcmUgYSBz d2l0Y2ggKi8KLQljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDYpOwotCWlmIChJU19FUlIoY3Mp KQotCQlyZXR1cm4gUFRSX0VSUihjcyk7Ci0KLQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1N KDIpOwotCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfRENMVihlbmdp bmUpKTsKLQkqY3MrKyA9IFBQX0RJUl9EQ0xWXzJHOwotCSpjcysrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKTsKLQkqY3MrKyA9IGdldF9wZF9vZmZzZXQo cHBndHQpOwotCSpjcysrID0gTUlfTk9PUDsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsK LQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGdlbjZfbW1fc3dpdGNoKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCwKLQkJCSAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2luZTsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBycS0+aTkxNTsKLQotCUk5MTVfV1JJVEUoUklOR19QUF9E SVJfRENMVihlbmdpbmUpLCBQUF9ESVJfRENMVl8yRyk7Ci0JSTkxNV9XUklURShSSU5HX1BQX0RJ Ul9CQVNFKGVuZ2luZSksIGdldF9wZF9vZmZzZXQocHBndHQpKTsKLQlyZXR1cm4gMDsKLX0KLQog c3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKQEAgLTIwMjQsMTIg KzE5ODUsNiBAQCBzdGF0aWMgc3RydWN0IGk5MTVfaHdfcHBndHQgKmdlbjZfcHBndHRfY3JlYXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXBwZ3R0LT52bS5kbWEgPSAmaTkxNS0+ ZHJtLnBkZXYtPmRldjsKIAogCXBwZ3R0LT52bS5wdGVfZW5jb2RlID0gZ2d0dC0+dm0ucHRlX2Vu Y29kZTsKLQlpZiAoSVNfR0VONihpOTE1KSkKLQkJcHBndHQtPnN3aXRjaF9tbSA9IGdlbjZfbW1f c3dpdGNoOwotCWVsc2UgaWYgKElTX0dFTjcoaTkxNSkpCi0JCXBwZ3R0LT5zd2l0Y2hfbW0gPSBn ZW43X21tX3N3aXRjaDsKLQllbHNlCi0JCUJVRygpOwogCiAJZXJyID0gZ2VuNl9wcGd0dF9hbGxv YyhwcGd0dCk7CiAJaWYgKGVycikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXgg MTYzMDdiYTdlMzAzLi5lNzBmNmFiY2QwZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oCkBAIC00MDYsOCArNDA2LDYgQEAgc3RydWN0IGk5MTVfaHdfcHBndHQgewogCiAJZ2VuNl9w dGVfdCBfX2lvbWVtICpwZF9hZGRyOwogCi0JaW50ICgqc3dpdGNoX21tKShzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsCi0JCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogCXZvaWQgKCpk ZWJ1Z19kdW1wKShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAq bSk7CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IGYxODcyNTBlNjBj Ni4uOTA5MmY1NDY0YzI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtODE3 LDYgKzgxNyw4IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJLyogS2VlcCBhIHNlY29uZCBw aW4gZm9yIHRoZSBkdWFsIHJldGlyZW1lbnQgYWxvbmcgZW5naW5lIGFuZCByaW5nICovCiAJX19p bnRlbF9jb250ZXh0X3BpbihjZSk7CiAKKwlycS0+aW5maXggPSBycS0+cmluZy0+ZW1pdDsgLyog ZW5kIG9mIGhlYWRlcjsgc3RhcnQgb2YgdXNlciBwYXlsb2FkICovCisKIAkvKiBDaGVjayB0aGF0 IHdlIGRpZG4ndCBpbnRlcnJ1cHQgb3Vyc2VsdmVzIHdpdGggYSBuZXcgcmVxdWVzdCAqLwogCUdF TV9CVUdfT04ocnEtPnRpbWVsaW5lLT5zZXFubyAhPSBycS0+ZmVuY2Uuc2Vxbm8pOwogCXJldHVy biBycTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKaW5kZXggNDkxZmY4MWQwZmVhLi4w ZTlhYmE1M2QwZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCkBAIC0xMzQsNiAr MTM0LDkgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCB7CiAJLyoqIFBvc2l0aW9uIGluIHRoZSByaW5n IG9mIHRoZSBzdGFydCBvZiB0aGUgcmVxdWVzdCAqLwogCXUzMiBoZWFkOwogCisJLyoqIFBvc2l0 aW9uIGluIHRoZSByaW5nIG9mIHRoZSBzdGFydCBvZiB0aGUgdXNlciBwYWNrZXRzICovCisJdTMy IGluZml4OworCiAJLyoqCiAJICogUG9zaXRpb24gaW4gdGhlIHJpbmcgb2YgdGhlIHN0YXJ0IG9m IHRoZSBwb3N0Zml4LgogCSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gY2FsY3VsYXRlIHRoZSBtYXhp bXVtIGF2YWlsYWJsZSByaW5nIHNwYWNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKaW5kZXgg MTQ3MmY0OGFiMmU4Li5iNTBjNmI4Mjk3MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgK QEAgLTk3MywzOSArOTczLDYgQEAgREVGSU5FX0VWRU5UKGk5MTVfY29udGV4dCwgaTkxNV9jb250 ZXh0X2ZyZWUsCiAJVFBfQVJHUyhjdHgpCiApOwogCi0vKioKLSAqIERPQzogc3dpdGNoX21tIHRy YWNlcG9pbnQKLSAqCi0gKiBUaGlzIHRyYWNlcG9pbnQgYWxsb3dzIHRyYWNraW5nIG9mIHRoZSBt bSBzd2l0Y2gsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwb2ludAotICogaW4gdGhlIGxpZmV0aW1l IG9mIHRoZSB2bSBpbiB0aGUgbGVnYWN5IHN1Ym1pc3Npb24gcGF0aC4gVGhpcyB0cmFjZXBvaW50 IGlzCi0gKiBjYWxsZWQgb25seSBpZiBmdWxsIHBwZ3R0IGlzIGVuYWJsZWQuCi0gKi8KLVRSQUNF X0VWRU5UKHN3aXRjaF9tbSwKLQlUUF9QUk9UTyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICp0byksCi0KLQlUUF9BUkdTKGVuZ2luZSwgdG8p LAotCi0JVFBfU1RSVUNUX19lbnRyeSgKLQkJCV9fZmllbGQodTE2LCBjbGFzcykKLQkJCV9fZmll bGQodTE2LCBpbnN0YW5jZSkKLQkJCV9fZmllbGQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKiwg dG8pCi0JCQlfX2ZpZWxkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKiwgdm0pCi0JCQlfX2Zp ZWxkKHUzMiwgZGV2KQotCSksCi0KLQlUUF9mYXN0X2Fzc2lnbigKLQkJCV9fZW50cnktPmNsYXNz ID0gZW5naW5lLT51YWJpX2NsYXNzOwotCQkJX19lbnRyeS0+aW5zdGFuY2UgPSBlbmdpbmUtPmlu c3RhbmNlOwotCQkJX19lbnRyeS0+dG8gPSB0bzsKLQkJCV9fZW50cnktPnZtID0gdG8tPnBwZ3R0 ID8gJnRvLT5wcGd0dC0+dm0gOiBOVUxMOwotCQkJX19lbnRyeS0+ZGV2ID0gZW5naW5lLT5pOTE1 LT5kcm0ucHJpbWFyeS0+aW5kZXg7Ci0JKSwKLQotCVRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9 JXU6JXUsIGN0eD0lcCwgY3R4X3ZtPSVwIiwKLQkJICBfX2VudHJ5LT5kZXYsIF9fZW50cnktPmNs YXNzLCBfX2VudHJ5LT5pbnN0YW5jZSwgX19lbnRyeS0+dG8sCi0JCSAgX19lbnRyeS0+dm0pCi0p OwotCiAjZW5kaWYgLyogX0k5MTVfVFJBQ0VfSF8gKi8KIAogLyogVGhpcyBwYXJ0IG11c3QgYmUg b3V0c2lkZSBwcm90ZWN0aW9uICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CmluZGV4IDJlYzJlNjBkYzY3MC4uZDFjZjhiNDkyNmFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYwpAQCAtMTE2OCw5ICsxMTY4LDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVf bG9zdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQllbmdpbmUt PmxlZ2FjeV9hY3RpdmVfY29udGV4dCA9IE5VTEw7Ci0JZW5naW5lLT5sZWdhY3lfYWN0aXZlX3Bw Z3R0ID0gTlVMTDsKLQogCWNlID0gZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+bGFzdF9yZXRpcmVk X2NvbnRleHQpOwogCWlmIChjZSkKIAkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggNmJmYTYwMzAxOThkLi40MDlmNDk5 YzBhNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTU0MSwx MSArNTQxLDIzIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXNldF9wcmVwYXJlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gaTkxNV9nZW1fZmluZF9hY3Rp dmVfcmVxdWVzdChlbmdpbmUpOwogfQogCi1zdGF0aWMgdm9pZCByZXNldF9yaW5nKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJl cXVlc3QpCitzdGF0aWMgdm9pZCBza2lwX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp CiB7Ci0JR0VNX1RSQUNFKCIlcyBzZXFubz0leFxuIiwKLQkJICBlbmdpbmUtPm5hbWUsIHJlcXVl c3QgPyByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8gOiAwKTsKKwl2b2lkICp2YWRkciA9IHJxLT5yaW5n LT52YWRkcjsKKwl1MzIgaGVhZDsKKworCWhlYWQgPSBycS0+aW5maXg7CisJaWYgKHJxLT5wb3N0 Zml4IDwgaGVhZCkgeworCQltZW1zZXQzMih2YWRkciArIGhlYWQsIE1JX05PT1AsCisJCQkgKHJx LT5yaW5nLT5zaXplIC0gaGVhZCkgLyBzaXplb2YodTMyKSk7CisJCWhlYWQgPSAwOworCX0KKwlt ZW1zZXQzMih2YWRkciArIGhlYWQsIE1JX05PT1AsIChycS0+cG9zdGZpeCAtIGhlYWQpIC8gc2l6 ZW9mKHUzMikpOworfQorCitzdGF0aWMgdm9pZCByZXNldF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJR0VNX1RSQUNFKCIl cyBzZXFubz0leFxuIiwgZW5naW5lLT5uYW1lLCBycSA/IHJxLT5nbG9iYWxfc2Vxbm8gOiAwKTsK IAogCS8qCiAJICogUkM2IG11c3QgYmUgcHJldmVudGVkIHVudGlsIHRoZSByZXNldCBpcyBjb21w bGV0ZSBhbmQgdGhlIGVuZ2luZQpAQCAtNTY5LDQzICs1ODEsMTEgQEAgc3RhdGljIHZvaWQgcmVz ZXRfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJICogSWYgdGhlIHJlcXVl c3Qgd2FzIGlubm9jZW50LCB3ZSB0cnkgdG8gcmVwbGF5IHRoZSByZXF1ZXN0IHdpdGgKIAkgKiB0 aGUgcmVzdG9yZWQgY29udGV4dC4KIAkgKi8KLQlpZiAocmVxdWVzdCkgewotCQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXF1ZXN0LT5pOTE1OwotCQlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UgPSByZXF1ZXN0LT5od19jb250ZXh0OwotCQlzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQ7Ci0KLQkJaWYgKGNlLT5zdGF0ZSkgewotCQkJSTkxNV9XUklURShDQ0lELAotCQkJ CSAgIGk5MTVfZ2d0dF9vZmZzZXQoY2UtPnN0YXRlKSB8Ci0JCQkJICAgQklUKDgpIC8qIG11c3Qg YmUgc2V0ISAqLyB8Ci0JCQkJICAgQ0NJRF9FWFRFTkRFRF9TVEFURV9TQVZFIHwKLQkJCQkgICBD Q0lEX0VYVEVOREVEX1NUQVRFX1JFU1RPUkUgfAotCQkJCSAgIENDSURfRU4pOwotCQl9Ci0KLQkJ cHBndHQgPSByZXF1ZXN0LT5nZW1fY29udGV4dC0+cHBndHQgPzogZW5naW5lLT5pOTE1LT5tbS5h bGlhc2luZ19wcGd0dDsKLQkJaWYgKHBwZ3R0KSB7Ci0JCQl1MzIgcGRfb2Zmc2V0ID0gcHBndHQt PnBkLmJhc2UuZ2d0dF9vZmZzZXQgPDwgMTA7Ci0KLQkJCUk5MTVfV1JJVEUoUklOR19QUF9ESVJf RENMVihlbmdpbmUpLCBQUF9ESVJfRENMVl8yRyk7Ci0JCQlJOTE1X1dSSVRFKFJJTkdfUFBfRElS X0JBU0UoZW5naW5lKSwgcGRfb2Zmc2V0KTsKLQotCQkJLyogV2FpdCBmb3IgdGhlIFBEIHJlbG9h ZCB0byBjb21wbGV0ZSAqLwotCQkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2 LAotCQkJCQkJICAgIFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSwKLQkJCQkJCSAgICBCSVQoMCks IDAsCi0JCQkJCQkgICAgMTApKQotCQkJCURSTV9FUlJPUigiV2FpdCBmb3IgcmVsb2FkIG9mIHBw Z3R0IHBhZ2UtZGlyZWN0b3J5IHRpbWVkIG91dFxuIik7Ci0KLQkJCXBwZ3R0LT5wZF9kaXJ0eV9y aW5ncyAmPSB+aW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKLQkJfQotCisJaWYgKHJxKSB7CiAJ CS8qIElmIHRoZSBycSBodW5nLCBqdW1wIHRvIGl0cyBicmVhZGNydW1iIGFuZCBza2lwIHRoZSBi YXRjaCAqLwotCQlpZiAocmVxdWVzdC0+ZmVuY2UuZXJyb3IgPT0gLUVJTykKLQkJCXJlcXVlc3Qt PnJpbmctPmhlYWQgPSByZXF1ZXN0LT5wb3N0Zml4OwotCX0gZWxzZSB7Ci0JCWVuZ2luZS0+bGVn YWN5X2FjdGl2ZV9jb250ZXh0ID0gTlVMTDsKLQkJZW5naW5lLT5sZWdhY3lfYWN0aXZlX3BwZ3R0 ID0gTlVMTDsKKwkJcnEtPnJpbmctPmhlYWQgPSBpbnRlbF9yaW5nX3dyYXAocnEtPnJpbmcsIHJx LT5oZWFkKTsKKwkJaWYgKHJxLT5mZW5jZS5lcnJvciA9PSAtRUlPKQorCQkJc2tpcF9yZXF1ZXN0 KHJxKTsKIAl9CiB9CiAKQEAgLTE0NDgsNiArMTQyOCwyOSBAQCB2b2lkIGludGVsX2xlZ2FjeV9z dWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWlu dGVsX3JpbmdfcmVzZXQoZW5naW5lLT5idWZmZXIsIDApOwogfQogCitzdGF0aWMgaW50IGxvYWRf cGRfZGlyKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkgICAgICAgY29uc3Qgc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0KQoreworCWNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBj b25zdCBlbmdpbmUgPSBycS0+ZW5naW5lOworCXUzMiAqY3M7CisKKwljcyA9IGludGVsX3Jpbmdf YmVnaW4ocnEsIDYpOworCWlmIChJU19FUlIoY3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CisK KwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOworCSpjcysrID0gaTkxNV9tbWlvX3Jl Z19vZmZzZXQoUklOR19QUF9ESVJfRENMVihlbmdpbmUpKTsKKwkqY3MrKyA9IFBQX0RJUl9EQ0xW XzJHOworCisJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7CisJKmNzKysgPSBwcGd0 dC0+cGQuYmFzZS5nZ3R0X29mZnNldCA8PCAxMDsKKworCWludGVsX3JpbmdfYWR2YW5jZShycSwg Y3MpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250ZXh0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBycS0+aTkxNTsKQEAgLTE1ODcsMzQgKzE1OTAsMjggQEAgc3RhdGlj IGludCByZW1hcF9sMyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IHNsaWNlKQogc3RhdGlj IGludCBzd2l0Y2hfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwotCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICp0b19jdHggPSBycS0+Z2VtX2NvbnRleHQ7Ci0Jc3RydWN0IGk5MTVfaHdfcHBndHQg KnRvX21tID0KLQkJdG9fY3R4LT5wcGd0dCA/OiBycS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7 Ci0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmZyb21fY3R4ID0gZW5naW5lLT5sZWdhY3lfYWN0 aXZlX2NvbnRleHQ7Ci0Jc3RydWN0IGk5MTVfaHdfcHBndHQgKmZyb21fbW0gPSBlbmdpbmUtPmxl Z2FjeV9hY3RpdmVfcHBndHQ7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IHJxLT5n ZW1fY29udGV4dDsKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBjdHgtPnBwZ3R0ID86 IHJxLT5pOTE1LT5tbS5hbGlhc2luZ19wcGd0dDsKKwl1bnNpZ25lZCBpbnQgdW53aW5kX21tID0g MDsKIAl1MzIgaHdfZmxhZ3MgPSAwOwogCWludCByZXQsIGk7CiAKIAlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJR0VNX0JVR19PTihIQVNfRVhFQ0xJ U1RTKHJxLT5pOTE1KSk7CiAKLQlpZiAodG9fbW0gIT0gZnJvbV9tbSB8fAotCSAgICAodG9fbW0g JiYgaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKSAmIHRvX21tLT5wZF9kaXJ0eV9yaW5ncykpIHsK LQkJdHJhY2Vfc3dpdGNoX21tKGVuZ2luZSwgdG9fY3R4KTsKLQkJcmV0ID0gdG9fbW0tPnN3aXRj aF9tbSh0b19tbSwgcnEpOworCWlmIChwcGd0dCkgeworCQlyZXQgPSBsb2FkX3BkX2RpcihycSwg cHBndHQpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnI7CiAKLQkJdG9fbW0tPnBkX2RpcnR5X3Jp bmdzICY9IH5pbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOwotCQllbmdpbmUtPmxlZ2FjeV9hY3Rp dmVfcHBndHQgPSB0b19tbTsKLQotCQlpZiAodG9fY3R4ID09IGZyb21fY3R4KSB7CisJCWlmIChp bnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpICYgcHBndHQtPnBkX2RpcnR5X3JpbmdzKSB7CisJCQl1 bndpbmRfbW0gPSBpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOworCQkJcHBndHQtPnBkX2RpcnR5 X3JpbmdzICY9IH51bndpbmRfbW07CiAJCQlod19mbGFncyA9IE1JX0ZPUkNFX1JFU1RPUkU7Ci0J CQlmcm9tX2N0eCA9IE5VTEw7CiAJCX0KIAl9CiAKLQlpZiAocnEtPmh3X2NvbnRleHQtPnN0YXRl ICYmIHRvX2N0eCAhPSBmcm9tX2N0eCkgeworCWlmIChycS0+aHdfY29udGV4dC0+c3RhdGUpIHsK IAkJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7CiAKIAkJLyoKQEAgLTE2MjQsMzUgKzE2 MjEsMzIgQEAgc3RhdGljIGludCBzd2l0Y2hfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKIAkJICogYXMgbm90aGluZyBhY3R1YWxseSBleGVjdXRlcyB1c2luZyB0aGUga2VybmVsIGNv bnRleHQ7IGl0CiAJCSAqIGlzIHB1cmVseSB1c2VkIGZvciBmbHVzaGluZyB1c2VyIGNvbnRleHRz LgogCQkgKi8KLQkJaWYgKGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKHRvX2N0eCkpCisJCWlm IChpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChjdHgpKQogCQkJaHdfZmxhZ3MgPSBNSV9SRVNU T1JFX0lOSElCSVQ7CiAKIAkJcmV0ID0gbWlfc2V0X2NvbnRleHQocnEsIGh3X2ZsYWdzKTsKIAkJ aWYgKHJldCkKIAkJCWdvdG8gZXJyX21tOwotCi0JCWVuZ2luZS0+bGVnYWN5X2FjdGl2ZV9jb250 ZXh0ID0gdG9fY3R4OwogCX0KIAotCWlmICh0b19jdHgtPnJlbWFwX3NsaWNlKSB7CisJaWYgKGN0 eC0+cmVtYXBfc2xpY2UpIHsKIAkJZm9yIChpID0gMDsgaSA8IE1BWF9MM19TTElDRVM7IGkrKykg ewotCQkJaWYgKCEodG9fY3R4LT5yZW1hcF9zbGljZSAmIEJJVChpKSkpCisJCQlpZiAoIShjdHgt PnJlbWFwX3NsaWNlICYgQklUKGkpKSkKIAkJCQljb250aW51ZTsKIAogCQkJcmV0ID0gcmVtYXBf bDMocnEsIGkpOwogCQkJaWYgKHJldCkKLQkJCQlnb3RvIGVycl9jdHg7CisJCQkJZ290byBlcnJf bW07CiAJCX0KIAotCQl0b19jdHgtPnJlbWFwX3NsaWNlID0gMDsKKwkJY3R4LT5yZW1hcF9zbGlj ZSA9IDA7CiAJfQogCiAJcmV0dXJuIDA7CiAKLWVycl9jdHg6Ci0JZW5naW5lLT5sZWdhY3lfYWN0 aXZlX2NvbnRleHQgPSBmcm9tX2N0eDsKIGVycl9tbToKLQllbmdpbmUtPmxlZ2FjeV9hY3RpdmVf cHBndHQgPSBmcm9tX21tOworCWlmICh1bndpbmRfbW0pCisJCXBwZ3R0LT5wZF9kaXJ0eV9yaW5n cyB8PSB1bndpbmRfbW07CiBlcnI6CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCBhY2VmMzg1YzRjODAuLmI0NGM2Nzg0OTc0OSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtNTU3LDE1ICs1NTcsNiBA QCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkgKi8KIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq bGFzdF9yZXRpcmVkX2NvbnRleHQ7CiAKLQkvKiBXZSB0cmFjayB0aGUgY3VycmVudCBNSV9TRVRf Q09OVEVYVCBpbiBvcmRlciB0byBlbGltaW5hdGUKLQkgKiByZWR1ZGFudCBjb250ZXh0IHN3aXRj aGVzLiBUaGlzIHByZXN1bWVzIHRoYXQgcmVxdWVzdHMgYXJlIG5vdAotCSAqIHJlb3JkZXJlZCEg T3Igd2hlbiB0aGV5IGFyZSB0aGUgdHJhY2tpbmcgaXMgdXBkYXRlZCBhbG9uZyB3aXRoCi0JICog dGhlIGVtaXNzaW9uIG9mIGluZGl2aWR1YWwgcmVxdWVzdHMgaW50byB0aGUgbGVnYWN5IGNvbW1h bmQKLQkgKiBzdHJlYW0gKHJpbmcpLgotCSAqLwotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICps ZWdhY3lfYWN0aXZlX2NvbnRleHQ7Ci0Jc3RydWN0IGk5MTVfaHdfcHBndHQgKmxlZ2FjeV9hY3Rp dmVfcHBndHQ7Ci0KIAkvKiBzdGF0dXNfbm90aWZpZXI6IGxpc3Qgb2YgY2FsbGJhY2tzIGZvciBj b250ZXh0LXN3aXRjaCBjaGFuZ2VzICovCiAJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNv bnRleHRfc3RhdHVzX25vdGlmaWVyOwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=