From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v3] drm/i915: Remove partial attempt to swizzle on pread/pwrite Date: Fri, 12 Oct 2018 12:56:21 +0100 Message-ID: <20181012115621.24435-1-chris@chris-wilson.co.uk> References: <20180723090208.27226-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 7C8766E47B for ; Fri, 12 Oct 2018 11:56:43 +0000 (UTC) In-Reply-To: <20180723090208.27226-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 T3VyIGF0dGVtcHQgdG8gYWNjb3VudCBmb3IgYml0MTcgc3dpenpsaW5nIG9mIHByZWFkL3B3cml0 ZSBvbnRvIHRpbGVkCm9iamVjdHMgd2FzIGZsYXdlZCBkdWUgdG8gdGhlIHNpbXBsZSBmYWN0IHRo YXQgd2UgZG8gbm90IGFsd2F5cyBrbm93IHRoZQpzd2l6emxpbmcgZm9yIGEgcGFydGljdWxhciBw YWdlIChkdWUgdG8gdGhlIHN3aXp6bGluZyB2YXJ5aW5nIGJhc2VkIG9uCmxvY2F0aW9uIGluIGNl cnRhaW4gdW5iYWxhbmNlZCBjb25maWd1cmF0aW9ucykuIEZ1cnRoZXJtb3JlLCB0aGUKcHJlYWQv cHdyaXRlIHBhdGhzIGFyZSBub3cgdW5iYWxhbmNlZCBpbiB0aGF0IHdlIGFyZSByZXF1aXJlZCB0 byB1c2UgdGhlCkdUVCBhcyBpbiBzb21lIGNhc2VzIHdlIGRvIG5vdCBoYXZlIGRpcmVjdCBDUFUg YWNjZXNzIHRvIHRoZSBiYWNraW5nCnBoeXNpY2FsIHBhZ2VzICh0aHVzIHNvbWUgcGF0aHMgdHJ5 aW5nIHRvIGFjY291bnQgZm9yIHRoZSBzd2l6emxlLCBidXQKb3RoZXJzIG5lZ2xlY3RpbmcsIGNo YW9zIGVuc3VlcykuCgpUaGVyZSBhcmUgbm8ga25vd24gdXNlcnMgd2hvIGRvIHVzZSBwcmVhZC9w d3JpdGUgaW50byBhIHRpbGVkIG9iamVjdAooeW91IG5lZWQgdG8gbWFudWFsbHkgZGV0aWxlIGFu eXdheSwgc28gd2h5IG5vdyBqdXN0IHVzZSBtbWFwIGFuZCBhdm9pZAp0aGUgY29weT8pIGFuZCBu byB1c2VyIGJ1ZyByZXBvcnRzIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYmVpbmcgdXNlZCBpbgp0 aGUgd2lsZC4gQXMgbm8gb25lIGlzIGhpdHRpbmcgdGhlIGJ1Z2d5IHBhdGgsIHdlIGNhbiBqdXN0 IHJlbW92ZSB0aGUKYnVnZ3kgY29kZS4KCnYyOiBKdXN0IHVzZSB0aGUgZmF1bHQgYWxsb3dpbmcg a21hcCgpICsgbm9ybWFsIGNvcHlfKHRvfGZyb20pX3VzZXIKdjM6IEF2b2lkIGludCBvdmVyZmxv dyBpbiBjb21wdXRpbmcgJ2xlbmd0aCcgZnJvbSAncmVtYWluJyAoVHZydGtvKQoKUmVmZXJlbmNl czogZmUxMTU2MjhkNTY3ICgiZHJtL2k5MTU6IEltcGxlbWVudCBwd3JpdGUgd2l0aG91dCBzdHJ1 Y3QtbXV0ZXgiKQpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVs LmNvbT4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyB8IDE5NSArKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDE3MCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA3ZDQ1ZTcxMTAwYmMuLjgwNDk0 NThhYjZhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC04NTksNTggKzg1OSw2IEBAIGZs dXNoX3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25l ZCBpbnQgZmx1c2hfZG9tYWlucykKIAlvYmotPndyaXRlX2RvbWFpbiA9IDA7CiB9CiAKLXN0YXRp YyBpbmxpbmUgaW50Ci1fX2NvcHlfdG9fdXNlcl9zd2l6emxlZChjaGFyIF9fdXNlciAqY3B1X3Zh ZGRyLAotCQkJY29uc3QgY2hhciAqZ3B1X3ZhZGRyLCBpbnQgZ3B1X29mZnNldCwKLQkJCWludCBs ZW5ndGgpCi17Ci0JaW50IHJldCwgY3B1X29mZnNldCA9IDA7Ci0KLQl3aGlsZSAobGVuZ3RoID4g MCkgewotCQlpbnQgY2FjaGVsaW5lX2VuZCA9IEFMSUdOKGdwdV9vZmZzZXQgKyAxLCA2NCk7Ci0J CWludCB0aGlzX2xlbmd0aCA9IG1pbihjYWNoZWxpbmVfZW5kIC0gZ3B1X29mZnNldCwgbGVuZ3Ro KTsKLQkJaW50IHN3aXp6bGVkX2dwdV9vZmZzZXQgPSBncHVfb2Zmc2V0IF4gNjQ7Ci0KLQkJcmV0 ID0gX19jb3B5X3RvX3VzZXIoY3B1X3ZhZGRyICsgY3B1X29mZnNldCwKLQkJCQkgICAgIGdwdV92 YWRkciArIHN3aXp6bGVkX2dwdV9vZmZzZXQsCi0JCQkJICAgICB0aGlzX2xlbmd0aCk7Ci0JCWlm IChyZXQpCi0JCQlyZXR1cm4gcmV0ICsgbGVuZ3RoOwotCi0JCWNwdV9vZmZzZXQgKz0gdGhpc19s ZW5ndGg7Ci0JCWdwdV9vZmZzZXQgKz0gdGhpc19sZW5ndGg7Ci0JCWxlbmd0aCAtPSB0aGlzX2xl bmd0aDsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGlubGluZSBpbnQKLV9fY29weV9m cm9tX3VzZXJfc3dpenpsZWQoY2hhciAqZ3B1X3ZhZGRyLCBpbnQgZ3B1X29mZnNldCwKLQkJCSAg Y29uc3QgY2hhciBfX3VzZXIgKmNwdV92YWRkciwKLQkJCSAgaW50IGxlbmd0aCkKLXsKLQlpbnQg cmV0LCBjcHVfb2Zmc2V0ID0gMDsKLQotCXdoaWxlIChsZW5ndGggPiAwKSB7Ci0JCWludCBjYWNo ZWxpbmVfZW5kID0gQUxJR04oZ3B1X29mZnNldCArIDEsIDY0KTsKLQkJaW50IHRoaXNfbGVuZ3Ro ID0gbWluKGNhY2hlbGluZV9lbmQgLSBncHVfb2Zmc2V0LCBsZW5ndGgpOwotCQlpbnQgc3dpenps ZWRfZ3B1X29mZnNldCA9IGdwdV9vZmZzZXQgXiA2NDsKLQotCQlyZXQgPSBfX2NvcHlfZnJvbV91 c2VyKGdwdV92YWRkciArIHN3aXp6bGVkX2dwdV9vZmZzZXQsCi0JCQkJICAgICAgIGNwdV92YWRk ciArIGNwdV9vZmZzZXQsCi0JCQkJICAgICAgIHRoaXNfbGVuZ3RoKTsKLQkJaWYgKHJldCkKLQkJ CXJldHVybiByZXQgKyBsZW5ndGg7Ci0KLQkJY3B1X29mZnNldCArPSB0aGlzX2xlbmd0aDsKLQkJ Z3B1X29mZnNldCArPSB0aGlzX2xlbmd0aDsKLQkJbGVuZ3RoIC09IHRoaXNfbGVuZ3RoOwotCX0K LQotCXJldHVybiAwOwotfQotCiAvKgogICogUGlucyB0aGUgc3BlY2lmaWVkIG9iamVjdCdzIHBh Z2VzIGFuZCBzeW5jaHJvbml6ZXMgdGhlIG9iamVjdCB3aXRoCiAgKiBHUFUgYWNjZXNzZXMuIFNl dHMgbmVlZHNfY2xmbHVzaCB0byBub24temVybyBpZiB0aGUgY2FsbGVyIHNob3VsZApAQCAtMTAz MCw3MiArOTc4LDIzIEBAIGludCBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV93cml0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2 b2lkCi1zaG1lbV9jbGZsdXNoX3N3aXp6bGVkX3JhbmdlKGNoYXIgKmFkZHIsIHVuc2lnbmVkIGxv bmcgbGVuZ3RoLAotCQkJICAgICBib29sIHN3aXp6bGVkKQotewotCWlmICh1bmxpa2VseShzd2l6 emxlZCkpIHsKLQkJdW5zaWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBsb25nKSBhZGRyOwot CQl1bnNpZ25lZCBsb25nIGVuZCA9ICh1bnNpZ25lZCBsb25nKSBhZGRyICsgbGVuZ3RoOwotCi0J CS8qIEZvciBzd2l6emxpbmcgc2ltcGx5IGVuc3VyZSB0aGF0IHdlIGFsd2F5cyBmbHVzaCBib3Ro Ci0JCSAqIGNoYW5uZWxzLiBMYW1lLCBidXQgc2ltcGxlIGFuZCBpdCB3b3Jrcy4gU3dpenpsZWQK LQkJICogcHdyaXRlL3ByZWFkIGlzIGZhciBmcm9tIGEgaG90cGF0aCAtIGN1cnJlbnQgdXNlcnNw YWNlCi0JCSAqIGRvZXNuJ3QgdXNlIGl0IGF0IGFsbC4gKi8KLQkJc3RhcnQgPSByb3VuZF9kb3du KHN0YXJ0LCAxMjgpOwotCQllbmQgPSByb3VuZF91cChlbmQsIDEyOCk7Ci0KLQkJZHJtX2NsZmx1 c2hfdmlydF9yYW5nZSgodm9pZCAqKXN0YXJ0LCBlbmQgLSBzdGFydCk7Ci0JfSBlbHNlIHsKLQkJ ZHJtX2NsZmx1c2hfdmlydF9yYW5nZShhZGRyLCBsZW5ndGgpOwotCX0KLQotfQotCi0vKiBPbmx5 IGRpZmZlcmVuY2UgdG8gdGhlIGZhc3QtcGF0aCBmdW5jdGlvbiBpcyB0aGF0IHRoaXMgY2FuIGhh bmRsZSBiaXQxNwotICogYW5kIHVzZXMgbm9uLWF0b21pYyBjb3B5IGFuZCBrbWFwIGZ1bmN0aW9u cy4gKi8KIHN0YXRpYyBpbnQKLXNobWVtX3ByZWFkX3Nsb3coc3RydWN0IHBhZ2UgKnBhZ2UsIGlu dCBvZmZzZXQsIGludCBsZW5ndGgsCi0JCSBjaGFyIF9fdXNlciAqdXNlcl9kYXRhLAotCQkgYm9v bCBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZywgYm9vbCBuZWVkc19jbGZsdXNoKQorc2htZW1fcHJl YWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvZmZzZXQsIGludCBsZW4sIGNoYXIgX191c2VyICp1 c2VyX2RhdGEsCisJICAgIGJvb2wgbmVlZHNfY2xmbHVzaCkKIHsKIAljaGFyICp2YWRkcjsKIAlp bnQgcmV0OwogCiAJdmFkZHIgPSBrbWFwKHBhZ2UpOwotCWlmIChuZWVkc19jbGZsdXNoKQotCQlz aG1lbV9jbGZsdXNoX3N3aXp6bGVkX3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBsZW5ndGgsCi0JCQkJ CSAgICAgcGFnZV9kb19iaXQxN19zd2l6emxpbmcpOwogCi0JaWYgKHBhZ2VfZG9fYml0MTdfc3dp enpsaW5nKQotCQlyZXQgPSBfX2NvcHlfdG9fdXNlcl9zd2l6emxlZCh1c2VyX2RhdGEsIHZhZGRy LCBvZmZzZXQsIGxlbmd0aCk7Ci0JZWxzZQotCQlyZXQgPSBfX2NvcHlfdG9fdXNlcih1c2VyX2Rh dGEsIHZhZGRyICsgb2Zmc2V0LCBsZW5ndGgpOwotCWt1bm1hcChwYWdlKTsKLQotCXJldHVybiBy ZXQgPyAtIEVGQVVMVCA6IDA7Ci19Ci0KLXN0YXRpYyBpbnQKLXNobWVtX3ByZWFkKHN0cnVjdCBw YWdlICpwYWdlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBjaGFyIF9fdXNlciAqdXNlcl9kYXRh LAotCSAgICBib29sIHBhZ2VfZG9fYml0MTdfc3dpenpsaW5nLCBib29sIG5lZWRzX2NsZmx1c2gp Ci17Ci0JaW50IHJldDsKKwlpZiAobmVlZHNfY2xmbHVzaCkKKwkJZHJtX2NsZmx1c2hfdmlydF9y YW5nZSh2YWRkciArIG9mZnNldCwgbGVuKTsKIAotCXJldCA9IC1FTk9ERVY7Ci0JaWYgKCFwYWdl X2RvX2JpdDE3X3N3aXp6bGluZykgewotCQljaGFyICp2YWRkciA9IGttYXBfYXRvbWljKHBhZ2Up OworCXJldCA9IF9fY29weV90b191c2VyKHVzZXJfZGF0YSwgdmFkZHIgKyBvZmZzZXQsIGxlbik7 CiAKLQkJaWYgKG5lZWRzX2NsZmx1c2gpCi0JCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHZhZGRy ICsgb2Zmc2V0LCBsZW5ndGgpOwotCQlyZXQgPSBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh1c2Vy X2RhdGEsIHZhZGRyICsgb2Zmc2V0LCBsZW5ndGgpOwotCQlrdW5tYXBfYXRvbWljKHZhZGRyKTsK LQl9Ci0JaWYgKHJldCA9PSAwKQotCQlyZXR1cm4gMDsKKwlrdW5tYXAocGFnZSk7CiAKLQlyZXR1 cm4gc2htZW1fcHJlYWRfc2xvdyhwYWdlLCBvZmZzZXQsIGxlbmd0aCwgdXNlcl9kYXRhLAotCQkJ CXBhZ2VfZG9fYml0MTdfc3dpenpsaW5nLCBuZWVkc19jbGZsdXNoKTsKKwlyZXR1cm4gcmV0ID8g LUVGQVVMVCA6IDA7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTExMDQsMTUgKzEwMDMsMTAgQEAgaTkx NV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHsKIAlj aGFyIF9fdXNlciAqdXNlcl9kYXRhOwogCXU2NCByZW1haW47Ci0JdW5zaWduZWQgaW50IG9ial9k b19iaXQxN19zd2l6emxpbmc7CiAJdW5zaWduZWQgaW50IG5lZWRzX2NsZmx1c2g7CiAJdW5zaWdu ZWQgaW50IGlkeCwgb2Zmc2V0OwogCWludCByZXQ7CiAKLQlvYmpfZG9fYml0MTdfc3dpenpsaW5n ID0gMDsKLQlpZiAoaTkxNV9nZW1fb2JqZWN0X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkKLQkJ b2JqX2RvX2JpdDE3X3N3aXp6bGluZyA9IEJJVCgxNyk7Ci0KIAlyZXQgPSBtdXRleF9sb2NrX2lu dGVycnVwdGlibGUoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKQEAgLTExMjcsMTQgKzEwMjEsMTQgQEAgaTkxNV9nZW1fc2htZW1fcHJlYWQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlvZmZzZXQgPSBvZmZzZXRfaW5fcGFn ZShhcmdzLT5vZmZzZXQpOwogCWZvciAoaWR4ID0gYXJncy0+b2Zmc2V0ID4+IFBBR0VfU0hJRlQ7 IHJlbWFpbjsgaWR4KyspIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2Uob2JqLCBpZHgpOwotCQlpbnQgbGVuZ3RoOworCQl1bnNpZ25lZCBpbnQgbGVuZ3Ro OwogCi0JCWxlbmd0aCA9IHJlbWFpbjsKLQkJaWYgKG9mZnNldCArIGxlbmd0aCA+IFBBR0VfU0la RSkKKwkJaWYgKHJlbWFpbiA+IFBBR0VfU0laRSAtIG9mZnNldCkKIAkJCWxlbmd0aCA9IFBBR0Vf U0laRSAtIG9mZnNldDsKKwkJZWxzZQorCQkJbGVuZ3RoID0gcmVtYWluOwogCiAJCXJldCA9IHNo bWVtX3ByZWFkKHBhZ2UsIG9mZnNldCwgbGVuZ3RoLCB1c2VyX2RhdGEsCi0JCQkJICBwYWdlX3Rv X3BoeXMocGFnZSkgJiBvYmpfZG9fYml0MTdfc3dpenpsaW5nLAogCQkJCSAgbmVlZHNfY2xmbHVz aCk7CiAJCWlmIChyZXQpCiAJCQlicmVhazsKQEAgLTE0NzUsMzMgKzEzNjksNiBAQCBpOTE1X2dl bV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlyZXR1 cm4gcmV0OwogfQogCi1zdGF0aWMgaW50Ci1zaG1lbV9wd3JpdGVfc2xvdyhzdHJ1Y3QgcGFnZSAq cGFnZSwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwKLQkJICBjaGFyIF9fdXNlciAqdXNlcl9kYXRh LAotCQkgIGJvb2wgcGFnZV9kb19iaXQxN19zd2l6emxpbmcsCi0JCSAgYm9vbCBuZWVkc19jbGZs dXNoX2JlZm9yZSwKLQkJICBib29sIG5lZWRzX2NsZmx1c2hfYWZ0ZXIpCi17Ci0JY2hhciAqdmFk ZHI7Ci0JaW50IHJldDsKLQotCXZhZGRyID0ga21hcChwYWdlKTsKLQlpZiAodW5saWtlbHkobmVl ZHNfY2xmbHVzaF9iZWZvcmUgfHwgcGFnZV9kb19iaXQxN19zd2l6emxpbmcpKQotCQlzaG1lbV9j bGZsdXNoX3N3aXp6bGVkX3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBsZW5ndGgsCi0JCQkJCSAgICAg cGFnZV9kb19iaXQxN19zd2l6emxpbmcpOwotCWlmIChwYWdlX2RvX2JpdDE3X3N3aXp6bGluZykK LQkJcmV0ID0gX19jb3B5X2Zyb21fdXNlcl9zd2l6emxlZCh2YWRkciwgb2Zmc2V0LCB1c2VyX2Rh dGEsCi0JCQkJCQlsZW5ndGgpOwotCWVsc2UKLQkJcmV0ID0gX19jb3B5X2Zyb21fdXNlcih2YWRk ciArIG9mZnNldCwgdXNlcl9kYXRhLCBsZW5ndGgpOwotCWlmIChuZWVkc19jbGZsdXNoX2FmdGVy KQotCQlzaG1lbV9jbGZsdXNoX3N3aXp6bGVkX3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBsZW5ndGgs Ci0JCQkJCSAgICAgcGFnZV9kb19iaXQxN19zd2l6emxpbmcpOwotCWt1bm1hcChwYWdlKTsKLQot CXJldHVybiByZXQgPyAtRUZBVUxUIDogMDsKLX0KLQogLyogUGVyLXBhZ2UgY29weSBmdW5jdGlv biBmb3IgdGhlIHNobWVtIHB3cml0ZSBmYXN0cGF0aC4KICAqIEZsdXNoZXMgaW52YWxpZCBjYWNo ZWxpbmVzIGJlZm9yZSB3cml0aW5nIHRvIHRoZSB0YXJnZXQgaWYKICAqIG5lZWRzX2NsZmx1c2hf YmVmb3JlIGlzIHNldCBhbmQgZmx1c2hlcyBvdXQgYW55IHdyaXR0ZW4gY2FjaGVsaW5lcyBhZnRl cgpAQCAtMTUwOSwzMSArMTM3NiwyNCBAQCBzaG1lbV9wd3JpdGVfc2xvdyhzdHJ1Y3QgcGFnZSAq cGFnZSwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwKICAqLwogc3RhdGljIGludAogc2htZW1fcHdy aXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBjaGFyIF9fdXNlciAq dXNlcl9kYXRhLAotCSAgICAgYm9vbCBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZywKIAkgICAgIGJv b2wgbmVlZHNfY2xmbHVzaF9iZWZvcmUsCiAJICAgICBib29sIG5lZWRzX2NsZmx1c2hfYWZ0ZXIp CiB7CisJY2hhciAqdmFkZHI7CiAJaW50IHJldDsKIAotCXJldCA9IC1FTk9ERVY7Ci0JaWYgKCFw YWdlX2RvX2JpdDE3X3N3aXp6bGluZykgewotCQljaGFyICp2YWRkciA9IGttYXBfYXRvbWljKHBh Z2UpOworCXZhZGRyID0ga21hcChwYWdlKTsKIAotCQlpZiAobmVlZHNfY2xmbHVzaF9iZWZvcmUp Ci0JCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBsZW4pOwotCQlyZXQg PSBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxl bik7Ci0JCWlmIChuZWVkc19jbGZsdXNoX2FmdGVyKQotCQkJZHJtX2NsZmx1c2hfdmlydF9yYW5n ZSh2YWRkciArIG9mZnNldCwgbGVuKTsKKwlpZiAobmVlZHNfY2xmbHVzaF9iZWZvcmUpCisJCWRy bV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbik7CiAKLQkJa3VubWFwX2F0 b21pYyh2YWRkcik7Ci0JfQotCWlmIChyZXQgPT0gMCkKLQkJcmV0dXJuIHJldDsKKwlyZXQgPSBf X2NvcHlfZnJvbV91c2VyKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxlbik7CisJaWYgKCFy ZXQgJiYgbmVlZHNfY2xmbHVzaF9hZnRlcikKKwkJZHJtX2NsZmx1c2hfdmlydF9yYW5nZSh2YWRk ciArIG9mZnNldCwgbGVuKTsKKworCWt1bm1hcChwYWdlKTsKIAotCXJldHVybiBzaG1lbV9wd3Jp dGVfc2xvdyhwYWdlLCBvZmZzZXQsIGxlbiwgdXNlcl9kYXRhLAotCQkJCSBwYWdlX2RvX2JpdDE3 X3N3aXp6bGluZywKLQkJCQkgbmVlZHNfY2xmbHVzaF9iZWZvcmUsCi0JCQkJIG5lZWRzX2NsZmx1 c2hfYWZ0ZXIpOworCXJldHVybiByZXQgPyAtRUZBVUxUIDogMDsKIH0KIAogc3RhdGljIGludApA QCAtMTU0Myw3ICsxNDAzLDYgQEAgaTkxNV9nZW1fc2htZW1fcHdyaXRlKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19p OTE1KG9iai0+YmFzZS5kZXYpOwogCXZvaWQgX191c2VyICp1c2VyX2RhdGE7CiAJdTY0IHJlbWFp bjsKLQl1bnNpZ25lZCBpbnQgb2JqX2RvX2JpdDE3X3N3aXp6bGluZzsKIAl1bnNpZ25lZCBpbnQg cGFydGlhbF9jYWNoZWxpbmVfd3JpdGU7CiAJdW5zaWduZWQgaW50IG5lZWRzX2NsZmx1c2g7CiAJ dW5zaWduZWQgaW50IG9mZnNldCwgaWR4OwpAQCAtMTU1OCwxMCArMTQxNyw2IEBAIGk5MTVfZ2Vt X3NobWVtX3B3cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CiAKLQlvYmpfZG9fYml0MTdfc3dpenpsaW5nID0gMDsKLQlpZiAoaTkx NV9nZW1fb2JqZWN0X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkKLQkJb2JqX2RvX2JpdDE3X3N3 aXp6bGluZyA9IEJJVCgxNyk7Ci0KIAkvKiBJZiB3ZSBkb24ndCBvdmVyd3JpdGUgYSBjYWNoZWxp bmUgY29tcGxldGVseSB3ZSBuZWVkIHRvIGJlCiAJICogY2FyZWZ1bCB0byBoYXZlIHVwLXRvLWRh dGUgZGF0YSBieSBmaXJzdCBjbGZsdXNoaW5nLiBEb24ndAogCSAqIG92ZXJjb21wbGljYXRlIHRo aW5ncyBhbmQgZmx1c2ggdGhlIGVudGlyZSBwYXRjaC4KQEAgLTE1NzUsMTQgKzE0MzAsMTQgQEAg aTkxNV9nZW1fc2htZW1fcHdyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJ b2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UoYXJncy0+b2Zmc2V0KTsKIAlmb3IgKGlkeCA9IGFyZ3Mt Pm9mZnNldCA+PiBQQUdFX1NISUZUOyByZW1haW47IGlkeCsrKSB7CiAJCXN0cnVjdCBwYWdlICpw YWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgaWR4KTsKLQkJaW50IGxlbmd0aDsK KwkJdW5zaWduZWQgaW50IGxlbmd0aDsKIAotCQlsZW5ndGggPSByZW1haW47Ci0JCWlmIChvZmZz ZXQgKyBsZW5ndGggPiBQQUdFX1NJWkUpCisJCWlmIChyZW1haW4gPiBQQUdFX1NJWkUgLSBvZmZz ZXQpCiAJCQlsZW5ndGggPSBQQUdFX1NJWkUgLSBvZmZzZXQ7CisJCWVsc2UKKwkJCWxlbmd0aCA9 IHJlbWFpbjsKIAogCQlyZXQgPSBzaG1lbV9wd3JpdGUocGFnZSwgb2Zmc2V0LCBsZW5ndGgsIHVz ZXJfZGF0YSwKLQkJCQkgICBwYWdlX3RvX3BoeXMocGFnZSkgJiBvYmpfZG9fYml0MTdfc3dpenps aW5nLAogCQkJCSAgIChvZmZzZXQgfCBsZW5ndGgpICYgcGFydGlhbF9jYWNoZWxpbmVfd3JpdGUs CiAJCQkJICAgbmVlZHNfY2xmbHVzaCAmIENMRkxVU0hfQUZURVIpOwogCQlpZiAocmV0KQotLSAK Mi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK