From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 07/11] drm/i915/gtt: Use NULL to encode scratch shadow entries Date: Sun, 7 Jul 2019 22:00:20 +0100 Message-ID: <20190707210024.26192-8-chris@chris-wilson.co.uk> References: <20190707210024.26192-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 A296989ABA for ; Sun, 7 Jul 2019 21:00:50 +0000 (UTC) In-Reply-To: <20190707210024.26192-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 V2UgY2FuIHNpbXBsaWZ5IG91ciBndHQgd2Fsa2luZyBjb2RlIGJ5IGNvbXBhcmluZyBhZ2FpbnN0 IE5VTEwgZm9yCnNjcmF0Y2ggZW50cmllcyBhcyBvcHBvc2VkIHRvIGxvb2tpbmcgdXAgdGhlIGRp c3RpbmN0IHBlci1sZXZlbCBzY3JhdGNoCnBvaW50ZXIuCgpUaGUgb25seSBjYXZlYXQgaXMgdG8g cmVtZW1iZXIgdG8gcHJvdGVjdCBleHRlcm5hbCBwYXJ0aWVzIGFuZCBtYXAgdGhlCk5VTEwgdG8g dGhlIHNjcmF0Y2ggdG9wIHBkLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgfCAxMjQgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmggfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9u cygrKSwgODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRl eCBiNzg4MmYwNjIxNGEuLmE5OWI4OTUwMmE5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKQEAgLTU5NiwxOCArNTk2LDE3IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfcGFnZV9kbWEo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKICNkZWZpbmUga21hcF9hdG9taWNfcHgo cHgpIGttYXBfYXRvbWljKHB4X2Jhc2UocHgpLT5wYWdlKQogCi0jZGVmaW5lIGZpbGxfcHgocHgs IHYpIGZpbGxfcGFnZV9kbWEocHhfYmFzZShweCksICh2KSkKLSNkZWZpbmUgZmlsbDMyX3B4KHB4 LCB2KSBmaWxsX3BhZ2VfZG1hXzMyKHB4X2Jhc2UocHgpLCAodikpCi0KLXN0YXRpYyB2b2lkIGZp bGxfcGFnZV9kbWEoc3RydWN0IGk5MTVfcGFnZV9kbWEgKnAsIGNvbnN0IHU2NCB2YWwpCitzdGF0 aWMgdm9pZAorZmlsbF9wYWdlX2RtYShzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqcCwgY29uc3QgdTY0 IHZhbCwgdW5zaWduZWQgaW50IGNvdW50KQogewotCWt1bm1hcF9hdG9taWMobWVtc2V0NjQoa21h cF9hdG9taWMocC0+cGFnZSksIHZhbCwgSTkxNV9QREVTKSk7CisJa3VubWFwX2F0b21pYyhtZW1z ZXQ2NChrbWFwX2F0b21pYyhwLT5wYWdlKSwgdmFsLCBjb3VudCkpOwogfQogCi1zdGF0aWMgdm9p ZCBmaWxsX3BhZ2VfZG1hXzMyKHN0cnVjdCBpOTE1X3BhZ2VfZG1hICpwLCBjb25zdCB1MzIgdikK LXsKLQlmaWxsX3BhZ2VfZG1hKHAsICh1NjQpdiA8PCAzMiB8IHYpOwotfQorI2RlZmluZSBmaWxs X3B4KHB4LCB2KSBmaWxsX3BhZ2VfZG1hKHB4X2Jhc2UocHgpLCAodiksIEk5MTVfUERFUykKKyNk ZWZpbmUgZmlsbDMyX3B4KHB4LCB2KSBkbyB7IFwKKwl1NjQgdnYgPSBsb3dlcl8zMl9iaXRzKHYp OyBcCisJZmlsbF9weChweCwgdnYgPDwgMzIgfCB2dik7IFwKK30gd2hpbGUgKDApCiAKIHN0YXRp YyBpbnQKIHNldHVwX3NjcmF0Y2hfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwg Z2ZwX3QgZ2ZwKQpAQCAtNzExLDcgKzcxMCw2IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX3Rh YmxlICphbGxvY19wdChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIAl9CiAKIAlhdG9t aWNfc2V0KCZwdC0+dXNlZCwgMCk7Ci0KIAlyZXR1cm4gcHQ7CiB9CiAKQEAgLTcxOSwxMyArNzE3 LDExIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqX19hbGxvY19wZCh2b2lk KQogewogCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKIAotCXBkID0ga21hbGxvYyhz aXplb2YoKnBkKSwgSTkxNV9HRlBfQUxMT1dfRkFJTCk7CisJcGQgPSBremFsbG9jKHNpemVvZigq cGQpLCBJOTE1X0dGUF9BTExPV19GQUlMKTsKIAlpZiAodW5saWtlbHkoIXBkKSkKIAkJcmV0dXJu IE5VTEw7CiAKLQlhdG9taWNfc2V0KHB4X3VzZWQocGQpLCAwKTsKIAlzcGluX2xvY2tfaW5pdCgm cGQtPmxvY2spOwotCiAJcmV0dXJuIHBkOwogfQogCkBAIC03NTMsNjMgKzc0OSw1NiBAQCBzdGF0 aWMgdm9pZCBmcmVlX3BkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBzdHJ1Y3QgaTkx NV9wYWdlX2RtYSAqcGQpCiAKICNkZWZpbmUgZnJlZV9weCh2bSwgcHgpIGZyZWVfcGQodm0sIHB4 X2Jhc2UocHgpKQogCi1zdGF0aWMgdm9pZCBpbml0X3BkKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0 b3J5ICpwZCwKLQkJICAgIHN0cnVjdCBpOTE1X3BhZ2Vfc2NyYXRjaCAqc2NyYXRjaCkKLXsKLQlm aWxsX3B4KHBkLCBzY3JhdGNoLT5lbmNvZGUpOwotCW1lbXNldF9wKHBkLT5lbnRyeSwgc2NyYXRj aCwgNTEyKTsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkCiB3cml0ZV9kbWFfZW50cnkoc3RydWN0 IGk5MTVfcGFnZV9kbWEgKiBjb25zdCBwZG1hLAotCQljb25zdCB1bnNpZ25lZCBzaG9ydCBwZGUs CisJCWNvbnN0IHVuc2lnbmVkIHNob3J0IGlkeCwKIAkJY29uc3QgdTY0IGVuY29kZWRfZW50cnkp CiB7CiAJdTY0ICogY29uc3QgdmFkZHIgPSBrbWFwX2F0b21pYyhwZG1hLT5wYWdlKTsKIAotCXZh ZGRyW3BkZV0gPSBlbmNvZGVkX2VudHJ5OworCXZhZGRyW2lkeF0gPSBlbmNvZGVkX2VudHJ5Owog CWt1bm1hcF9hdG9taWModmFkZHIpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIF9fc2V0X3Bk X2VudHJ5KHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICogY29uc3QgcGQsCi0JICAgICAgIGNv bnN0IHVuc2lnbmVkIHNob3J0IHBkZSwKKwkgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgaWR4 LAogCSAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqIGNvbnN0IHRvLAogCSAgICAgICB1NjQg KCplbmNvZGUpKGNvbnN0IGRtYV9hZGRyX3QsIGNvbnN0IGVudW0gaTkxNV9jYWNoZV9sZXZlbCkp CiB7CiAJR0VNX0JVR19PTihhdG9taWNfcmVhZChweF91c2VkKHBkKSkgPiA1MTIpOwogCiAJYXRv bWljX2luYyhweF91c2VkKHBkKSk7Ci0JcGQtPmVudHJ5W3BkZV0gPSB0bzsKLQl3cml0ZV9kbWFf ZW50cnkocHhfYmFzZShwZCksIHBkZSwgZW5jb2RlKHRvLT5kYWRkciwgSTkxNV9DQUNIRV9MTEMp KTsKKwlwZC0+ZW50cnlbaWR4XSA9IHRvOworCXdyaXRlX2RtYV9lbnRyeShweF9iYXNlKHBkKSwg aWR4LCBlbmNvZGUodG8tPmRhZGRyLCBJOTE1X0NBQ0hFX0xMQykpOwogfQogCi0jZGVmaW5lIHNl dF9wZF9lbnRyeShwZCwgcGRlLCB0bykgXAotCV9fc2V0X3BkX2VudHJ5KChwZCksIChwZGUpLCBw eF9iYXNlKHRvKSwgZ2VuOF9wZGVfZW5jb2RlKQorI2RlZmluZSBzZXRfcGRfZW50cnkocGQsIGlk eCwgdG8pIFwKKwlfX3NldF9wZF9lbnRyeSgocGQpLCAoaWR4KSwgcHhfYmFzZSh0byksIGdlbjhf cGRlX2VuY29kZSkKIAogc3RhdGljIGlubGluZSB2b2lkCiBjbGVhcl9wZF9lbnRyeShzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkLAotCSAgICAgICBjb25zdCB1bnNpZ25lZCBz aG9ydCBwZGUsCi0JICAgICAgIHN0cnVjdCBpOTE1X3BhZ2Vfc2NyYXRjaCAqIGNvbnN0IHNjcmF0 Y2gpCisJICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IGlkeCwKKwkgICAgICAgY29uc3Qgc3Ry dWN0IGk5MTVfcGFnZV9zY3JhdGNoICogY29uc3Qgc2NyYXRjaCkKIHsKIAlHRU1fQlVHX09OKGF0 b21pY19yZWFkKHB4X3VzZWQocGQpKSA9PSAwKTsKIAotCXdyaXRlX2RtYV9lbnRyeShweF9iYXNl KHBkKSwgcGRlLCBzY3JhdGNoLT5lbmNvZGUpOwotCXBkLT5lbnRyeVtwZGVdID0gc2NyYXRjaDsK Kwl3cml0ZV9kbWFfZW50cnkocHhfYmFzZShwZCksIGlkeCwgc2NyYXRjaC0+ZW5jb2RlKTsKKwlw ZC0+ZW50cnlbaWR4XSA9IE5VTEw7CiAJYXRvbWljX2RlYyhweF91c2VkKHBkKSk7CiB9CiAKIHN0 YXRpYyBib29sCiByZWxlYXNlX3BkX2VudHJ5KHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICog Y29uc3QgcGQsCi0JCSBjb25zdCB1bnNpZ25lZCBzaG9ydCBwZGUsCisJCSBjb25zdCB1bnNpZ25l ZCBzaG9ydCBpZHgsCiAJCSBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICogY29uc3QgcHQsCi0JCSBz dHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2ggKiBjb25zdCBzY3JhdGNoKQorCQkgY29uc3Qgc3RydWN0 IGk5MTVfcGFnZV9zY3JhdGNoICogY29uc3Qgc2NyYXRjaCkKIHsKIAlib29sIGZyZWUgPSBmYWxz ZTsKIAogCXNwaW5fbG9jaygmcGQtPmxvY2spOwogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZw dC0+dXNlZCkpIHsKLQkJY2xlYXJfcGRfZW50cnkocGQsIHBkZSwgc2NyYXRjaCk7CisJCWNsZWFy X3BkX2VudHJ5KHBkLCBpZHgsIHNjcmF0Y2gpOwogCQlmcmVlID0gdHJ1ZTsKIAl9CiAJc3Bpbl91 bmxvY2soJnBkLT5sb2NrKTsKQEAgLTkxMCw3ICs4OTksNyBAQCBzdGF0aWMgdm9pZCBnZW44X2Zy ZWVfcGFnZV90YWJsZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJaW50IGk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9QREVTOyBpKyspIHsKLQkJaWYgKHBkLT5lbnRyeVtpXSAh PSAmdm0tPnNjcmF0Y2hbMV0pCisJCWlmIChwZC0+ZW50cnlbaV0pCiAJCQlmcmVlX3BkKHZtLCBw ZC0+ZW50cnlbaV0pOwogCX0KIH0KQEAgLTkyMiw3ICs5MTEsNyBAQCBzdGF0aWMgdm9pZCBnZW44 X3BwZ3R0X2NsZWFudXBfM2x2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAlpbnQg aTsKIAogCWZvciAoaSA9IDA7IGkgPCBwZHBlczsgaSsrKSB7Ci0JCWlmIChwZHAtPmVudHJ5W2ld ID09ICZ2bS0+c2NyYXRjaFsyXSkKKwkJaWYgKCFwZHAtPmVudHJ5W2ldKQogCQkJY29udGludWU7 CiAKIAkJZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHZtLCBwZHAtPmVudHJ5W2ldKTsKQEAgLTk0MCw3 ICs5MjksNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2bChzdHJ1Y3QgaTkx NV9wcGd0dCAqcHBndHQpCiAJZm9yIChpID0gMDsgaSA8IEdFTjhfUE1MNEVTX1BFUl9QTUw0OyBp KyspIHsKIAkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkcCA9IGk5MTVfcGRwX2VudHJ5 KHBtbDQsIGkpOwogCi0JCWlmIChweF9iYXNlKHBkcCkgPT0gcHhfYmFzZSgmcHBndHQtPnZtLnNj cmF0Y2hbM10pKQorCQlpZiAoIXBkcCkKIAkJCWNvbnRpbnVlOwogCiAJCWdlbjhfcHBndHRfY2xl YW51cF8zbHZsKCZwcGd0dC0+dm0sIHBkcCk7CkBAIC05OTQsOCArOTgzLDYgQEAgc3RhdGljIHZv aWQgZ2VuOF9wcGd0dF9jbGVhcl9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAl1 MzIgcGRlOwogCiAJZ2VuOF9mb3JfZWFjaF9wZGUocHQsIHBkLCBzdGFydCwgbGVuZ3RoLCBwZGUp IHsKLQkJR0VNX0JVR19PTihweF9iYXNlKHB0KSA9PSBweF9iYXNlKCZ2bS0+c2NyYXRjaFsxXSkp OwotCiAJCWF0b21pY19pbmMoJnB0LT51c2VkKTsKIAkJZ2VuOF9wcGd0dF9jbGVhcl9wdCh2bSwg cHQsIHN0YXJ0LCBsZW5ndGgpOwogCQlpZiAocmVsZWFzZV9wZF9lbnRyeShwZCwgcGRlLCBwdCwg JnZtLT5zY3JhdGNoWzFdKSkKQEAgLTEwMTQsOCArMTAwMSw2IEBAIHN0YXRpYyB2b2lkIGdlbjhf cHBndHRfY2xlYXJfcGRwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCXVuc2lnbmVk IGludCBwZHBlOwogCiAJZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgs IHBkcGUpIHsKLQkJR0VNX0JVR19PTihweF9iYXNlKHBkKSA9PSBweF9iYXNlKCZ2bS0+c2NyYXRj aFsyXSkpOwotCiAJCWF0b21pY19pbmMocHhfdXNlZChwZCkpOwogCQlnZW44X3BwZ3R0X2NsZWFy X3BkKHZtLCBwZCwgc3RhcnQsIGxlbmd0aCk7CiAJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwg cGRwZSwgJnBkLT5wdCwgJnZtLT5zY3JhdGNoWzJdKSkKQEAgLTEwNDQsOCArMTAyOSw2IEBAIHN0 YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYXJfNGx2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKIAlHRU1fQlVHX09OKCFpOTE1X3ZtX2lzXzRsdmwodm0pKTsKIAogCWdlbjhfZm9yX2Vh Y2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCBwbWw0ZSkgewotCQlHRU1fQlVHX09O KHB4X2Jhc2UocGRwKSA9PSBweF9iYXNlKCZ2bS0+c2NyYXRjaFszXSkpOwotCiAJCWF0b21pY19p bmMocHhfdXNlZChwZHApKTsKIAkJZ2VuOF9wcGd0dF9jbGVhcl9wZHAodm0sIHBkcCwgc3RhcnQs IGxlbmd0aCk7CiAJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBtbDQsIHBtbDRlLCAmcGRwLT5wdCwg JnZtLT5zY3JhdGNoWzNdKSkKQEAgLTEwNjYsNyArMTA0OSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9w cGd0dF9hbGxvY19wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAlnZW44X2Zvcl9l YWNoX3BkZShwdCwgcGQsIHN0YXJ0LCBsZW5ndGgsIHBkZSkgewogCQljb25zdCBpbnQgY291bnQg PSBnZW44X3B0ZV9jb3VudChzdGFydCwgbGVuZ3RoKTsKIAotCQlpZiAocHhfYmFzZShwdCkgPT0g cHhfYmFzZSgmdm0tPnNjcmF0Y2hbMV0pKSB7CisJCWlmICghcHQpIHsKIAkJCXNwaW5fdW5sb2Nr KCZwZC0+bG9jayk7CiAKIAkJCXB0ID0gZmV0Y2hfYW5kX3plcm8oJmFsbG9jKTsKQEAgLTEwODEs NyArMTA2NCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wZChzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKIAkJCQlmaWxsX3B4KHB0LCB2bS0+c2NyYXRjaFswXS5lbmNvZGUp OwogCiAJCQlzcGluX2xvY2soJnBkLT5sb2NrKTsKLQkJCWlmIChwZC0+ZW50cnlbcGRlXSA9PSAm dm0tPnNjcmF0Y2hbMV0pIHsKKwkJCWlmICghcGQtPmVudHJ5W3BkZV0pIHsKIAkJCQlzZXRfcGRf ZW50cnkocGQsIHBkZSwgcHQpOwogCQkJfSBlbHNlIHsKIAkJCQlhbGxvYyA9IHB0OwpAQCAtMTEx Myw3ICsxMDk2LDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BkcChzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKIAogCXNwaW5fbG9jaygmcGRwLT5sb2NrKTsKIAlnZW44X2Zv cl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwgcGRwZSkgewotCQlpZiAocHhfYmFz ZShwZCkgPT0gcHhfYmFzZSgmdm0tPnNjcmF0Y2hbMl0pKSB7CisJCWlmICghcGQpIHsKIAkJCXNw aW5fdW5sb2NrKCZwZHAtPmxvY2spOwogCiAJCQlwZCA9IGZldGNoX2FuZF96ZXJvKCZhbGxvYyk7 CkBAIC0xMTI0LDEwICsxMTA3LDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wZHAo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJZ290byB1bndpbmQ7CiAJCQl9CiAK LQkJCWluaXRfcGQocGQsICZ2bS0+c2NyYXRjaFsxXSk7CisJCQlmaWxsX3B4KHBkLCB2bS0+c2Ny YXRjaFsxXS5lbmNvZGUpOwogCiAJCQlzcGluX2xvY2soJnBkcC0+bG9jayk7Ci0JCQlpZiAocGRw LT5lbnRyeVtwZHBlXSA9PSAmdm0tPnNjcmF0Y2hbMl0pIHsKKwkJCWlmICghcGRwLT5lbnRyeVtw ZHBlXSkgewogCQkJCXNldF9wZF9lbnRyeShwZHAsIHBkcGUsIHBkKTsKIAkJCX0gZWxzZSB7CiAJ CQkJYWxsb2MgPSBwZDsKQEAgLTExNzcsNyArMTE2MCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0 dF9hbGxvY180bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCiAJc3Bpbl9sb2Nr KCZwbWw0LT5sb2NrKTsKIAlnZW44X2Zvcl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxl bmd0aCwgcG1sNGUpIHsKLQkJaWYgKHB4X2Jhc2UocGRwKSA9PSBweF9iYXNlKCZ2bS0+c2NyYXRj aFszXSkpIHsKKwkJaWYgKCFwZHApIHsKIAkJCXNwaW5fdW5sb2NrKCZwbWw0LT5sb2NrKTsKIAog CQkJcGRwID0gZmV0Y2hfYW5kX3plcm8oJmFsbG9jKTsKQEAgLTExODgsMTAgKzExNzEsMTAgQEAg c3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQkJZ290byB1bndpbmQ7CiAJCQl9CiAKLQkJCWluaXRfcGQocGRwLCAmdm0tPnNj cmF0Y2hbMl0pOworCQkJZmlsbF9weChwZHAsIHZtLT5zY3JhdGNoWzJdLmVuY29kZSk7CiAKIAkJ CXNwaW5fbG9jaygmcG1sNC0+bG9jayk7Ci0JCQlpZiAocG1sNC0+ZW50cnlbcG1sNGVdID09ICZ2 bS0+c2NyYXRjaFszXSkgeworCQkJaWYgKCFwbWw0LT5lbnRyeVtwbWw0ZV0pIHsKIAkJCQlzZXRf cGRfZW50cnkocG1sNCwgcG1sNGUsIHBkcCk7CiAJCQl9IGVsc2UgewogCQkJCWFsbG9jID0gcGRw OwpAQCAtMTUyNyw3ICsxNTEwLDcgQEAgc3RhdGljIGludCBnZW44X3ByZWFsbG9jYXRlX3RvcF9s ZXZlbF9wZHAoc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0KQogCQlpZiAoSVNfRVJSKHBkKSkKIAkJ CWdvdG8gdW53aW5kOwogCi0JCWluaXRfcGQocGQsICZ2bS0+c2NyYXRjaFsxXSk7CisJCWZpbGxf cHgocGQsIHZtLT5zY3JhdGNoWzFdLmVuY29kZSk7CiAJCXNldF9wZF9lbnRyeShwZHAsIHBkcGUs IHBkKTsKIAl9CiAKQEAgLTE1NTgsNDYgKzE1NDEsMTkgQEAgc3RhdGljIHZvaWQgcHBndHRfaW5p dChzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQsIHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJcHBndHQt PnZtLnRvcCA9IGk5MTVfdm1faXNfNGx2bCgmcHBndHQtPnZtKSA/IDMgOiAyOwogfQogCi1zdGF0 aWMgdm9pZCBpbml0X3BkX24oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCi0JCSAgICAg IHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCwKLQkJICAgICAgc3RydWN0IGk5MTVfcGFn ZV9zY3JhdGNoICpzY3JhdGNoLAotCQkgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgZW50cmllcykK LXsKLQl1NjQgKiBjb25zdCB2YWRkciA9IGttYXBfYXRvbWljX3B4KHBkKTsKLQotCW1lbXNldDY0 KHZhZGRyLCBzY3JhdGNoLT5lbmNvZGUsIGVudHJpZXMpOwotCWt1bm1hcF9hdG9taWModmFkZHIp OwotCi0JbWVtc2V0X3AocGQtPmVudHJ5LCBzY3JhdGNoLCBlbnRyaWVzKTsKLX0KLQogc3RhdGlj IHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICoKIGdlbjhfYWxsb2NfdG9wX3BkKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogeworCWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IHZt LT50b3RhbCA+PiBfX2dlbjhfcHRlX3NoaWZ0KHZtLT50b3ApOwogCXN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5ICpwZDsKIAotCWlmIChpOTE1X3ZtX2lzXzRsdmwodm0pKSB7Ci0JCXBkID0gYWxs b2NfcGQodm0pOwotCQlpZiAoIUlTX0VSUihwZCkpCi0JCQlpbml0X3BkKHBkLCAmdm0tPnNjcmF0 Y2hbM10pOworCUdFTV9CVUdfT04oY291bnQgPiBBUlJBWV9TSVpFKHBkLT5lbnRyeSkpOwogCisJ cGQgPSBhbGxvY19wZCh2bSk7CisJaWYgKElTX0VSUihwZCkpCiAJCXJldHVybiBwZDsKLQl9Ci0K LQkvKiAzbHZsICovCi0JcGQgPSBfX2FsbG9jX3BkKCk7Ci0JaWYgKCFwZCkKLQkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7Ci0KLQlwZC0+ZW50cnlbR0VOOF8zTFZMX1BEUEVTXSA9IE5VTEw7Ci0K LQlpZiAodW5saWtlbHkoc2V0dXBfcGFnZV9kbWEodm0sIHB4X2Jhc2UocGQpKSkpIHsKLQkJa2Zy ZWUocGQpOwotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKLQl9Ci0KLQlpbml0X3BkX24odm0s IHBkLCAmdm0tPnNjcmF0Y2hbMl0sIEdFTjhfM0xWTF9QRFBFUyk7CiAKKwlmaWxsX3BhZ2VfZG1h KHB4X2Jhc2UocGQpLCB2bS0+c2NyYXRjaFt2bS0+dG9wXS5lbmNvZGUsIGNvdW50KTsKIAlyZXR1 cm4gcGQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggNjY5YjIwNGQ0 YzEzLi4yMzQxOTQ0YjliMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC02 MTAsNyArNjEwLDcgQEAgaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihjb25zdCBzdHJ1Y3QgaTkxNV9w cGd0dCAqcHBndHQsIGNvbnN0IHVuc2lnbmVkIGludCBuKQogewogCXN0cnVjdCBpOTE1X3BhZ2Vf ZG1hICpwdCA9IHBwZ3R0LT5wZC0+ZW50cnlbbl07CiAKLQlyZXR1cm4gcHhfZG1hKHB0KTsKKwly ZXR1cm4gcHhfZG1hKHB0ID86IHB4X2Jhc2UoJnBwZ3R0LT52bS5zY3JhdGNoW3BwZ3R0LT52bS50 b3BdKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfZ2d0dCAqCi0tIAoyLjIwLjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==