From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 13/41] drm/i915: Reuse the active golden render state batch Date: Thu, 20 Oct 2016 16:03:55 +0100 Message-ID: <20161020150423.4560-14-chris@chris-wilson.co.uk> References: <20161020150423.4560-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 mail-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7537B6EB99 for ; Thu, 20 Oct 2016 15:04:46 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id l131so458716lfl.0 for ; Thu, 20 Oct 2016 08:04:46 -0700 (PDT) In-Reply-To: <20161020150423.4560-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 VGhlIGdvbGRlbiByZW5kZXIgc3RhdGUgaXMgY29uc3RhbnQsIGJ1dCB3ZSByZWNyZWF0ZSB0aGUg YmF0Y2ggc2V0dGluZwppdCB1cCBmb3IgZXZlcnkgbmV3IGNvbnRleHQuIElmIHdlIGtlZXAgdGhh dCBiYXRjaCBpbiBhIHZvbGF0aWxlIGNhY2hlCndlIGNhbiBzYWZlbHkgcmV1c2UgaXQgd2hlbmV2 ZXIgd2UgbmVlZCB0byBpbml0aWFsaXNlIGEgbmV3IGNvbnRleHQuIFdlCm1hcmsgdGhlIHBhZ2Vz IGFzIHB1cmdlYWJsZSBhbmQgdXNlIHRoZSBzaHJpbmtlciB0byByZWNvdmVyIHBhZ2VzIGZyb20K dGhlIGJhdGNoIHdoZW5ldmVyIHdlIGZhY2UgbWVtb3J5IHByZXNzdWVzLCByZWNyZWF0aW5nIHRo YXQgYmF0Y2ggYWZyZXNoCm9uIHRoZSBuZXh0IG5ldyBjb250ZXh0LgoKU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBKb29u YXMgTGFodGluZW4gPGpvb25hcy5sYWh0aWVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyB8IDE4NCArKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0 ZS5oIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAg ICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICB8 ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgIHwgICAz ICsKIDYgZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKaW5kZXggMjE3 ZTBiNThiOTMwLi45NjI1ZTFhNjYyZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlbmRlcl9zdGF0ZS5jCkBAIC0yOCwxNyArMjgsMTkgQEAKICNpbmNsdWRlICJpOTE1X2Ry di5oIgogI2luY2x1ZGUgImludGVsX3JlbmRlcnN0YXRlLmgiCiAKLXN0cnVjdCByZW5kZXJfc3Rh dGUgeworc3RydWN0IGludGVsX3JlbmRlcl9zdGF0ZSB7CiAJY29uc3Qgc3RydWN0IGludGVsX3Jl bmRlcnN0YXRlX3JvZGF0YSAqcm9kYXRhOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXUzMiBh dXhfYmF0Y2hfc2l6ZTsKLQl1MzIgYXV4X2JhdGNoX29mZnNldDsKKwl1MzIgYmF0Y2hfb2Zmc2V0 OworCXUzMiBiYXRjaF9zaXplOworCXUzMiBhdXhfb2Zmc2V0OworCXUzMiBhdXhfc2l6ZTsKIH07 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfcmVuZGVyc3RhdGVfcm9kYXRhICoKLXJlbmRl cl9zdGF0ZV9nZXRfcm9kYXRhKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQorcmVuZGVyX3N0YXRlX2dldF9yb2RhdGEoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogewotCXN3aXRjaCAoSU5URUxfR0VOKHJlcS0+aTkxNSkpIHsKKwlzd2l0Y2ggKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7CiAJY2FzZSA2OgogCQlyZXR1cm4gJmdlbjZfbnVsbF9z dGF0ZTsKIAljYXNlIDc6CkBAIC02MywyOSArNjUsMjcgQEAgcmVuZGVyX3N0YXRlX2dldF9yb2Rh dGEoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAgKi8KICNkZWZpbmUg T1VUX0JBVENIKGJhdGNoLCBpLCB2YWwpCQkJCVwKIAlkbyB7CQkJCQkJCVwKLQkJaWYgKFdBUk5f T04oKGkpID49IFBBR0VfU0laRSAvIHNpemVvZih1MzIpKSkgewlcCi0JCQlyZXQgPSAtRU5PU1BD OwkJCQlcCi0JCQlnb3RvIGVycl9vdXQ7CQkJCVwKLQkJfQkJCQkJCVwKKwkJaWYgKChpKSA+PSBQ QUdFX1NJWkUgLyBzaXplb2YodTMyKSkJCVwKKwkJCWdvdG8gZXJyOwkJCQlcCiAJCShiYXRjaClb KGkpKytdID0gKHZhbCk7CQkJCVwKIAl9IHdoaWxlKDApCiAKLXN0YXRpYyBpbnQgcmVuZGVyX3N0 YXRlX3NldHVwKHN0cnVjdCByZW5kZXJfc3RhdGUgKnNvKQorc3RhdGljIGludCByZW5kZXJfc3Rh dGVfc2V0dXAoc3RydWN0IGludGVsX3JlbmRlcl9zdGF0ZSAqc28sCisJCQkgICAgICBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KHNvLT52bWEtPnZtLT5kZXYpOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9y ZW5kZXJzdGF0ZV9yb2RhdGEgKnJvZGF0YSA9IHNvLT5yb2RhdGE7Ci0JY29uc3QgYm9vbCBoYXNf NjRiaXRfcmVsb2MgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDg7CisJY29uc3QgYm9vbCBoYXNf NjRiaXRfcmVsb2MgPSBJTlRFTF9HRU4oaTkxNSkgPj0gODsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gc28tPnZtYS0+b2JqOwogCXVuc2lnbmVkIGludCBpID0gMCwgcmVsb2Nf aW5kZXggPSAwOwotCXN0cnVjdCBwYWdlICpwYWdlOworCXVuc2lnbmVkIGludCBuZWVkc19jbGZs dXNoOwogCXUzMiAqZDsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90 b19jcHVfZG9tYWluKHNvLT52bWEtPm9iaiwgdHJ1ZSk7CisJcmV0ID0gaTkxNV9nZW1fb2JqX3By ZXBhcmVfc2htZW1fd3JpdGUob2JqLCAmbmVlZHNfY2xmbHVzaCk7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RpcnR5X3BhZ2Uoc28tPnZt YS0+b2JqLCAwKTsKLQlkID0ga21hcChwYWdlKTsKKwlkID0ga21hcF9hdG9taWMoaTkxNV9nZW1f b2JqZWN0X2dldF9kaXJ0eV9wYWdlKG9iaiwgMCkpOwogCiAJd2hpbGUgKGkgPCByb2RhdGEtPmJh dGNoX2l0ZW1zKSB7CiAJCXUzMiBzID0gcm9kYXRhLT5iYXRjaFtpXTsKQEAgLTk1LDEwICs5NSw4 IEBAIHN0YXRpYyBpbnQgcmVuZGVyX3N0YXRlX3NldHVwKHN0cnVjdCByZW5kZXJfc3RhdGUgKnNv KQogCQkJcyA9IGxvd2VyXzMyX2JpdHMocik7CiAJCQlpZiAoaGFzXzY0Yml0X3JlbG9jKSB7CiAJ CQkJaWYgKGkgKyAxID49IHJvZGF0YS0+YmF0Y2hfaXRlbXMgfHwKLQkJCQkgICAgcm9kYXRhLT5i YXRjaFtpICsgMV0gIT0gMCkgewotCQkJCQlyZXQgPSAtRUlOVkFMOwotCQkJCQlnb3RvIGVycl9v dXQ7Ci0JCQkJfQorCQkJCSAgICByb2RhdGEtPmJhdGNoW2kgKyAxXSAhPSAwKQorCQkJCQlnb3Rv IGVycjsKIAogCQkJCWRbaSsrXSA9IHM7CiAJCQkJcyA9IHVwcGVyXzMyX2JpdHMocik7CkBAIC0x MTAsMTIgKzEwOCwyMCBAQCBzdGF0aWMgaW50IHJlbmRlcl9zdGF0ZV9zZXR1cChzdHJ1Y3QgcmVu ZGVyX3N0YXRlICpzbykKIAkJZFtpKytdID0gczsKIAl9CiAKKwlpZiAocm9kYXRhLT5yZWxvY1ty ZWxvY19pbmRleF0gIT0gLTEpIHsKKwkJRFJNX0VSUk9SKCJvbmx5ICVkIHJlbG9jcyByZXNvbHZl ZFxuIiwgcmVsb2NfaW5kZXgpOworCQlnb3RvIGVycjsKKwl9CisKKwlzby0+YmF0Y2hfb2Zmc2V0 ID0gc28tPnZtYS0+bm9kZS5zdGFydDsKKwlzby0+YmF0Y2hfc2l6ZSA9IHJvZGF0YS0+YmF0Y2hf aXRlbXMgKiBzaXplb2YodTMyKTsKKwogCXdoaWxlIChpICUgQ0FDSEVMSU5FX0RXT1JEUykKIAkJ T1VUX0JBVENIKGQsIGksIE1JX05PT1ApOwogCi0Jc28tPmF1eF9iYXRjaF9vZmZzZXQgPSBpICog c2l6ZW9mKHUzMik7CisJc28tPmF1eF9vZmZzZXQgPSBpICogc2l6ZW9mKHUzMik7CiAKLQlpZiAo SEFTX1BPT0xFRF9FVShkZXZfcHJpdikpIHsKKwlpZiAoSEFTX1BPT0xFRF9FVShpOTE1KSkgewog CQkvKgogCQkgKiBXZSBhbHdheXMgcHJvZ3JhbSAzeDYgcG9vbCBjb25maWcgYnV0IGRlcGVuZGlu ZyB1cG9uIHdoaWNoCiAJCSAqIHN1YnNsaWNlIGlzIGRpc2FibGVkIEhXIGRyb3BzIGRvd24gdG8g YXBwcm9wcmlhdGUgY29uZmlnCkBAIC0xNDMsODkgKzE0OSwxMzEgQEAgc3RhdGljIGludCByZW5k ZXJfc3RhdGVfc2V0dXAoc3RydWN0IHJlbmRlcl9zdGF0ZSAqc28pCiAJfQogCiAJT1VUX0JBVENI KGQsIGksIE1JX0JBVENIX0JVRkZFUl9FTkQpOwotCXNvLT5hdXhfYmF0Y2hfc2l6ZSA9IChpICog c2l6ZW9mKHUzMikpIC0gc28tPmF1eF9iYXRjaF9vZmZzZXQ7Ci0KKwlzby0+YXV4X3NpemUgPSBp ICogc2l6ZW9mKHUzMikgLSBzby0+YXV4X29mZnNldDsKKwlzby0+YXV4X29mZnNldCArPSBzby0+ YmF0Y2hfb2Zmc2V0OwogCS8qCiAJICogU2luY2Ugd2UgYXJlIHNlbmRpbmcgbGVuZ3RoLCB3ZSBu ZWVkIHRvIHN0cmljdGx5IGNvbmZvcm0gdG8KIAkgKiBhbGwgcmVxdWlyZW1lbnRzLiBGb3IgR2Vu MiB0aGlzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4LgogCSAqLwotCXNvLT5hdXhfYmF0Y2hfc2l6 ZSA9IEFMSUdOKHNvLT5hdXhfYmF0Y2hfc2l6ZSwgOCk7Ci0KLQlrdW5tYXAocGFnZSk7Ci0KLQly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc28tPnZtYS0+b2JqLCBmYWxz ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWlmIChyb2RhdGEtPnJlbG9jW3JlbG9j X2luZGV4XSAhPSAtMSkgewotCQlEUk1fRVJST1IoIm9ubHkgJWQgcmVsb2NzIHJlc29sdmVkXG4i LCByZWxvY19pbmRleCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KKwlzby0+YXV4X3NpemUgPSBB TElHTihzby0+YXV4X3NpemUsIDgpOwogCi0JcmV0dXJuIDA7CisJaWYgKG5lZWRzX2NsZmx1c2gp CisJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UoZCwgaSAqIHNpemVvZih1MzIpKTsKKwlrdW5tYXBf YXRvbWljKGQpOwogCi1lcnJfb3V0OgotCWt1bm1hcChwYWdlKTsKKwlyZXQgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CitvdXQ6CisJaTkxNV9nZW1fb2Jq X2ZpbmlzaF9zaG1lbV9hY2Nlc3Mob2JqKTsKIAlyZXR1cm4gcmV0OworCitlcnI6CisJa3VubWFw X2F0b21pYyhkKTsKKwlyZXQgPSAtRUlOVkFMOworCWdvdG8gb3V0OwogfQogCiAjdW5kZWYgT1VU X0JBVENICiAKLWludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKK2ludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IHJlbmRlcl9zdGF0ZSBzbzsKKwlz dHJ1Y3QgaW50ZWxfcmVuZGVyX3N0YXRlICpzbzsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfcmVuZGVy c3RhdGVfcm9kYXRhICpyb2RhdGE7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK IAlpbnQgcmV0OwogCi0JaWYgKFdBUk5fT04ocmVxLT5lbmdpbmUtPmlkICE9IFJDUykpCi0JCXJl dHVybiAtRU5PRU5UOworCWlmIChlbmdpbmUtPmlkICE9IFJDUykKKwkJcmV0dXJuIDA7CiAKLQlz by5yb2RhdGEgPSByZW5kZXJfc3RhdGVfZ2V0X3JvZGF0YShyZXEpOwotCWlmICghc28ucm9kYXRh KQorCXJvZGF0YSA9IHJlbmRlcl9zdGF0ZV9nZXRfcm9kYXRhKGVuZ2luZSk7CisJaWYgKCFyb2Rh dGEpCiAJCXJldHVybiAwOwogCi0JaWYgKHNvLnJvZGF0YS0+YmF0Y2hfaXRlbXMgKiA0ID4gNDA5 NikKKwlpZiAocm9kYXRhLT5iYXRjaF9pdGVtcyAqIDQgPiA0MDk2KQogCQlyZXR1cm4gLUVJTlZB TDsKIAotCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwocmVxLT5pOTE1LCA0 MDk2KTsKLQlpZiAoSVNfRVJSKG9iaikpCi0JCXJldHVybiBQVFJfRVJSKG9iaik7CisJc28gPSBr bWFsbG9jKHNpemVvZigqc28pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNvKQorCQlyZXR1cm4gLUVO T01FTTsKIAotCXNvLnZtYSA9IGk5MTVfdm1hX2NyZWF0ZShvYmosICZyZXEtPmk5MTUtPmdndHQu YmFzZSwgTlVMTCk7Ci0JaWYgKElTX0VSUihzby52bWEpKSB7Ci0JCXJldCA9IFBUUl9FUlIoc28u dm1hKTsKLQkJZ290byBlcnJfb2JqOworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50 ZXJuYWwoZW5naW5lLT5pOTE1LCA0MDk2KTsKKwlpZiAoSVNfRVJSKG9iaikpIHsKKwkJcmV0ID0g UFRSX0VSUihvYmopOworCQlnb3RvIGVycl9mcmVlOwogCX0KIAotCXJldCA9IGk5MTVfdm1hX3Bp bihzby52bWEsIDAsIDAsIFBJTl9HTE9CQUwpOwotCWlmIChyZXQpCisJc28tPnZtYSA9IGk5MTVf dm1hX2NyZWF0ZShvYmosICZlbmdpbmUtPmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7CisJaWYgKElT X0VSUihzby0+dm1hKSkgeworCQlyZXQgPSBQVFJfRVJSKHNvLT52bWEpOwogCQlnb3RvIGVycl9v Ymo7CisJfQorCisJc28tPnJvZGF0YSA9IHJvZGF0YTsKKwllbmdpbmUtPnJlbmRlcl9zdGF0ZSA9 IHNvOworCXJldHVybiAwOwogCi0JcmV0ID0gcmVuZGVyX3N0YXRlX3NldHVwKCZzbyk7CitlcnJf b2JqOgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKK2Vycl9mcmVlOgorCWtmcmVlKHNvKTsK KwlyZXR1cm4gcmV0OworfQorCitpbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2VtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCit7CisJc3RydWN0IGludGVsX3JlbmRlcl9zdGF0 ZSAqc287CisJaW50IHJldDsKKworCXNvID0gcmVxLT5lbmdpbmUtPnJlbmRlcl9zdGF0ZTsKKwlp ZiAoIXNvKQorCQlyZXR1cm4gMDsKKworCS8qIFJlY3JlYXRlIHRoZSBwYWdlIGFmdGVyIHNocmlu a2luZyAqLworCWlmICghc28tPnZtYS0+b2JqLT5wYWdlcykKKwkJc28tPmJhdGNoX29mZnNldCA9 IC0xOworCisJcmV0ID0gaTkxNV92bWFfcGluKHNvLT52bWEsIDAsIDAsIFBJTl9HTE9CQUwgfCBQ SU5fSElHSCk7CiAJaWYgKHJldCkKLQkJZ290byBlcnJfdW5waW47CisJCXJldHVybiByZXQ7CiAK LQlyZXQgPSByZXEtPmVuZ2luZS0+ZW1pdF9iYl9zdGFydChyZXEsIHNvLnZtYS0+bm9kZS5zdGFy dCwKLQkJCQkJIHNvLnJvZGF0YS0+YmF0Y2hfaXRlbXMgKiA0LAorCWlmIChzby0+dm1hLT5ub2Rl LnN0YXJ0ICE9IHNvLT5iYXRjaF9vZmZzZXQpIHsKKwkJcmV0ID0gcmVuZGVyX3N0YXRlX3NldHVw KHNvLCByZXEtPmk5MTUpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJfdW5waW47CisJfQorCisJ cmV0ID0gcmVxLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocmVxLAorCQkJCQkgc28tPmJhdGNoX29m ZnNldCwgc28tPmJhdGNoX3NpemUsCiAJCQkJCSBJOTE1X0RJU1BBVENIX1NFQ1VSRSk7CiAJaWYg KHJldCkKIAkJZ290byBlcnJfdW5waW47CiAKLQlpZiAoc28uYXV4X2JhdGNoX3NpemUgPiA4KSB7 CisJaWYgKHNvLT5hdXhfc2l6ZSA+IDgpIHsKIAkJcmV0ID0gcmVxLT5lbmdpbmUtPmVtaXRfYmJf c3RhcnQocmVxLAotCQkJCQkJIChzby52bWEtPm5vZGUuc3RhcnQgKwotCQkJCQkJICBzby5hdXhf YmF0Y2hfb2Zmc2V0KSwKLQkJCQkJCSBzby5hdXhfYmF0Y2hfc2l6ZSwKKwkJCQkJCSBzby0+YXV4 X29mZnNldCwgc28tPmF1eF9zaXplLAogCQkJCQkJIEk5MTVfRElTUEFUQ0hfU0VDVVJFKTsKIAkJ aWYgKHJldCkKIAkJCWdvdG8gZXJyX3VucGluOwogCX0KIAotCWk5MTVfdm1hX21vdmVfdG9fYWN0 aXZlKHNvLnZtYSwgcmVxLCAwKTsKKwlpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzby0+dm1hLCBy ZXEsIDApOwogZXJyX3VucGluOgotCWk5MTVfdm1hX3VucGluKHNvLnZtYSk7Ci0JaTkxNV92bWFf Y2xvc2Uoc28udm1hKTsKLWVycl9vYmo6Ci0JX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV91bmxl c3NfYWN0aXZlKG9iaik7CisJaTkxNV92bWFfdW5waW4oc28tPnZtYSk7CiAJcmV0dXJuIHJldDsK IH0KKwordm9pZCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfZmluaShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX3JlbmRlcl9zdGF0ZSAqc287CisJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKworCXNvID0gZmV0Y2hfYW5kX3plcm8oJmVuZ2lu ZS0+cmVuZGVyX3N0YXRlKTsKKwlpZiAoIXNvKQorCQlyZXR1cm47CisKKwlvYmogPSBzby0+dm1h LT5vYmo7CisKKwlpOTE1X3ZtYV9jbG9zZShzby0+dm1hKTsKKwlfX2k5MTVfZ2VtX29iamVjdF9y ZWxlYXNlX3VubGVzc19hY3RpdmUob2JqKTsKKworCWtmcmVlKHNvKTsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmgKaW5kZXggMThjY2UzZjA2ZTljLi44 NzQ4MTg0NTc5OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl bmRlcl9zdGF0ZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9z dGF0ZS5oCkBAIC0yNiw2ICsyNiw4IEBACiAKIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdDsK IAotaW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKTsKK2ludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOworaW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9lbWl0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKK3ZvaWQgaTkxNV9nZW1fcmVuZGVyX3N0YXRl X2Zpbmkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogI2VuZGlmIC8qIF9JOTE1 X0dFTV9SRU5ERVJfU1RBVEVfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKaW5kZXggYzdhYzdlMjZmMmRjLi5hMjEwNGZhOTIwYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0zMTQsNiArMzE0LDEwIEBAIGludCBpbnRlbF9lbmdpbmVf aW5pdF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKKwlyZXQgPSBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChlbmdpbmUp OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzI4LDYg KzMzMiw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlpbnRlbF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKGVuZ2lu ZSk7CiAKKwlpOTE1X2dlbV9yZW5kZXJfc3RhdGVfZmluaShlbmdpbmUpOwogCWludGVsX2VuZ2lu ZV9maW5pX2JyZWFkY3J1bWJzKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2NsZWFudXBfY21kX3Bh cnNlcihlbmdpbmUpOwogCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgmZW5naW5lLT5iYXRjaF9w b29sKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggYmM4NjU4NWI5ZmJiLi4xYzFiZDMw ZThiMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBz dGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKIAlpZiAocmV0KQogCQlEUk1fRVJST1IoIk1PQ1MgZmFpbGVkIHRvIHByb2dyYW06 IGV4cGVjdCBwZXJmb3JtYW5jZSBpc3N1ZXMuXG4iKTsKIAotCXJldHVybiBpOTE1X2dlbV9yZW5k ZXJfc3RhdGVfaW5pdChyZXEpOworCXJldHVybiBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfZW1pdChy ZXEpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRl eCAyY2UyOGQ0MWY0MDUuLjMyYmEwMmQ5YTZkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmNzX2N0 eF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCWlmIChyZXQgIT0gMCkK IAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9pbml0KHJlcSk7 CisJcmV0ID0gaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2VtaXQocmVxKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXgg MDliYjg5Y2ZiN2MzLi5jYjZlOTZjNmNkNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3Vu ZHMgewogfTsKIAogc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0Oworc3RydWN0IGludGVsX3Jl bmRlcl9zdGF0ZTsKIAogc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTU7CkBAIC0xODQsNiArMTg1LDggQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7CiAJdW5zaWduZWQgaW50IGlycV9zaGlmdDsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVy OwogCisJc3RydWN0IGludGVsX3JlbmRlcl9zdGF0ZSAqcmVuZGVyX3N0YXRlOworCiAJLyogUmF0 aGVyIHRoYW4gaGF2ZSBldmVyeSBjbGllbnQgd2FpdCB1cG9uIGFsbCB1c2VyIGludGVycnVwdHMs CiAJICogd2l0aCB0aGUgaGVyZCB3YWtpbmcgYWZ0ZXIgZXZlcnkgaW50ZXJydXB0IGFuZCBlYWNo IGRvaW5nIHRoZQogCSAqIGhlYXZ5d2VpZ2h0IHNlcW5vIGRhbmNlLCB3ZSBkZWxlZ2F0ZSB0aGUg dGFzayAob2YgYmVpbmcgdGhlCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==