From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v3 2/2] drm/i915: Make sure we have enough memory bandwidth on ICL Date: Fri, 3 May 2019 22:08:31 +0300 Message-ID: <20190503190831.1759-2-ville.syrjala@linux.intel.com> References: <20190503190831.1759-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB163898BF for ; Fri, 3 May 2019 19:08:37 +0000 (UTC) In-Reply-To: <20190503190831.1759-1-ville.syrjala@linux.intel.com> 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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklD TCBoYXMgc28gbWFueSBwbGFuZXMgdGhhdCBpdCBjYW4gZWFzaWx5IGV4Y2VlZCB0aGUgbWF4aW11 bQplZmZlY3RpdmUgbWVtb3J5IGJhbmR3aWR0aCBvZiB0aGUgc3lzdGVtLiBXZSBtdXN0IHRoZXJl Zm9yZSBjaGVjawp0aGF0IHdlIGRvbid0IGV4Y2VlZCB0aGF0IGxpbWl0LgoKVGhlIGFsZ29yaXRo bSBpcyB2ZXJ5IG1hZ2ljIG51bWJlciBoZWF2eSBhbmQgbGFja3Mgc3VmZmljaWVudApleHBsYW5h dGlvbiBmb3Igbm93LiBXZSBhbHNvIGhhdmUgbm8gc2FuZSB3YXkgdG8gcXVlcnkgdGhlCm1lbW9y eSBjbG9jayBhbmQgdGltaW5ncywgc28gd2UgbXVzdCByZWx5IG9uIGEgY29tYmluYXRpb24gb2YK cmF3IHJlYWRvdXQgZnJvbSB0aGUgbWVtb3J5IGNvbnRyb2xsZXIgYW5kIGhhcmRjb2RlZCBhc3N1 bXB0aW9ucy4KVGhlIG1lbW9yeSBjb250cm9sbGVyIHZhbHVlcyBvYnZpb3VzbHkgY2hhbmdlIGFz IHRoZSBzeXN0ZW0KanVtcHMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IFNBR1YgcG9pbnRzLCBzbyB3 ZSB0cnkgdG8gc3RhYmlsaXplCml0IGZpcnN0IGJ5IGRpc2FibGluZyBTQUdWIGZvciB0aGUgZHVy YXRpb24gb2YgdGhlIHJlYWRvdXQuCgpUaGUgdXRpbGl6ZWQgYmFuZHdpZHRoIGlzIHRyYWNrZWQg dmlhIGEgZGV2aWNlIHdpZGUgYXRvbWljCnByaXZhdGUgb2JqZWN0LiBUaGF0IGlzIGFjdHVhbGx5 IG5vdCByb2J1c3QgYmVjYXVzZSB3ZSBjYW4ndAphZmZvcmQgdG8gZW5mb3JjZSBzdHJpY3QgZ2xv YmFsIG9yZGVyaW5nIGJldHdlZW4gdGhlIHBpcGVzLgpUaHVzIEkgdGhpbmsgSSdsbCBuZWVkIHRv IGNoYW5nZSB0aGlzIHRvIHNpbXBseSBjaG9wIHVwIHRoZQphdmFpbGFibGUgYmFuZHdpZHRoIGJl dHdlZW4gYWxsIHRoZSBhY3RpdmUgcGlwZXMuIEVhY2ggcGlwZQpjYW4gdGhlbiBkbyB3aGF0ZXZl ciBpdCB3YW50cyBhcyBsb25nIGFzIGl0IGRvZXNuJ3QgZXhjZWVkCml0cyBidWRnZXQuIFRoYXQg c2NoZW1lIHdpbGwgYWxzbyByZXF1aXJlIHRoYXQgd2UgYXNzdW1lIHRoYXQKYW55IG51bWJlciBv ZiBwbGFuZXMgY291bGQgYmUgYWN0aXZlIGF0IGFueSB0aW1lLgoKVE9ETzogbWFrZSBpdCByb2J1 c3QgYW5kIGRlYWwgd2l0aCBhbGwgdGhlIG9wZW4gcXVlc3Rpb25zCgp2MjogU2xlZXAgbG9uZ2Vy IGFmdGVyIGRpc2FibGluZyBTQUdWCnYzOiBQb2xsIGZvciB0aGUgZGNsayB0byBnZXQgcmFpc2Vk IChzZWVuIGl0IHRha2UgMjUwbXMhKQogICAgSWYgdGhlIHN5c3RlbSBoYXMgMjEzM01UL3MgbWVt b3J5IHRoZW4gd2UgcG9pbnRsZXNzbHkKICAgIHdhaXQgb25lIGZ1bGwgc2Vjb25kIDooCnY0OiBV c2UgdGhlIG5ldyBwY29kZSBpbnRlcmZhY2UgdG8gZ2V0IHRoZSBxZ3YgcG9pbnRzIHJhdGhlcgog ICAgdGhhdCB1c2luZyBoYXJkY29kZWQgbnVtYmVycwoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3ly asOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jICAgICAgICAgICB8IDIyOSArKysrKysrKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICB8ICAxMCArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAyMCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljX3BsYW5lLmggfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YncuYyAgICAgICAgICAgfCAxODEgKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2J3LmggICAgICAgICAgIHwgIDQ2ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgICAgICB8ICA0MCArKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCAgICAgICAgICB8ICAgMiArCiAxMCBmaWxlcyBjaGFuZ2VkLCA1MzMgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2J3LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9idy5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA2ODEwNmZlMzVhMDQuLjEzOWEw ZmMxOTM5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTEzOCw2ICsxMzgsNyBAQCBpOTE1LXkg Kz0gaW50ZWxfYXVkaW8ubyBcCiAJICBpbnRlbF9hdG9taWMubyBcCiAJICBpbnRlbF9hdG9taWNf cGxhbmUubyBcCiAJICBpbnRlbF9iaW9zLm8gXAorCSAgaW50ZWxfYncubyBcCiAJICBpbnRlbF9j ZGNsay5vIFwKIAkgIGludGVsX2NvbG9yLm8gXAogCSAgaW50ZWxfY29tYm9fcGh5Lm8gXApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggNWVkODY0NzUyYzdiLi5iN2ZhN2I1MWMyZTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgImludGVsX292 ZXJsYXkuaCIKICNpbmNsdWRlICJpbnRlbF9waXBlX2NyYy5oIgogI2luY2x1ZGUgImludGVsX3Bt LmgiCisjaW5jbHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKICNpbmNsdWRlICJpbnRlbF9zcHJpdGUu aCIKICNpbmNsdWRlICJpbnRlbF91Yy5oIgogCkBAIC0xNDM1LDYgKzE0MzYsMjMyIEBAIGJ4dF9n ZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4g MDsKIH0KIAorc3RydWN0IGludGVsX3Fndl9wb2ludCB7CisJdTE2IGRjbGssIHRfcnAsIHRfcmRw cmUsIHRfcmMsIHRfcmFzLCB0X3JjZDsKK307CisKK3N0cnVjdCBpbnRlbF9zYWd2X2luZm8gewor CXN0cnVjdCBpbnRlbF9xZ3ZfcG9pbnQgcG9pbnRzWzNdOworCXU4IG51bV9wb2ludHM7CisJdTgg bnVtX2NoYW5uZWxzOworCXU4IHRfYmw7CisJZW51bSBpbnRlbF9kcmFtX3R5cGUgZHJhbV90eXBl OworfTsKKworc3RhdGljIGludCBpY2xfcGNvZGVfcmVhZF9tZW1fZ2xvYmFsX2luZm8oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgIHN0cnVjdCBpbnRlbF9zYWd2X2lu Zm8gKnNpKQoreworCXUzMiB2YWwgPSAwOworCWludCByZXQ7CisKKwlyZXQgPSBzYW5keWJyaWRn ZV9wY29kZV9yZWFkKGRldl9wcml2LAorCQkJCSAgICAgSUNMX1BDT0RFX01FTV9TVUJTWVNZU1RF TV9JTkZPIHwKKwkJCQkgICAgIElDTF9QQ09ERV9NRU1fU1NfUkVBRF9HTE9CQUxfSU5GTywKKwkJ CQkgICAgICZ2YWwsIE5VTEwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlzd2l0Y2gg KHZhbCAmIDB4ZikgeworCWNhc2UgMDoKKwkJc2ktPmRyYW1fdHlwZSA9IElOVEVMX0RSQU1fRERS NDsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlzaS0+ZHJhbV90eXBlID0gSU5URUxfRFJBTV9ERFIz OworCQlicmVhazsKKwljYXNlIDI6CisJCXNpLT5kcmFtX3R5cGUgPSBJTlRFTF9EUkFNX0xQRERS MzsKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlzaS0+ZHJhbV90eXBlID0gSU5URUxfRFJBTV9MUERE UjM7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCU1JU1NJTkdfQ0FTRSh2YWwgJiAweGYpOworCQli cmVhazsKKwl9CisKKwlzaS0+bnVtX2NoYW5uZWxzID0gKHZhbCAmIDB4ZjApID4+IDQ7CisJc2kt Pm51bV9wb2ludHMgPSAodmFsICYgMHhmMDApID4+IDg7CisKKwlzaS0+dF9ibCA9IHNpLT5kcmFt X3R5cGUgPT0gSU5URUxfRFJBTV9ERFI0ID8gNCA6IDg7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBpY2xfcGNvZGVfcmVhZF9xZ3ZfcG9pbnRfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCQkJCSBzdHJ1Y3QgaW50ZWxfcWd2X3BvaW50ICpzcCwKKwkJCQkJ IGludCBwb2ludCkKK3sKKwl1MzIgdmFsID0gMCwgdmFsMjsKKwlpbnQgcmV0OworCisJcmV0ID0g c2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwKKwkJCQkgICAgIElDTF9QQ09ERV9NRU1f U1VCU1lTWVNURU1fSU5GTyB8CisJCQkJICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURfUUdWX1BP SU5UX0lORk8ocG9pbnQpLAorCQkJCSAgICAgJnZhbCwgJnZhbDIpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwlzcC0+ZGNsayA9IHZhbCAmIDB4ZmZmZjsKKwlzcC0+dF9ycCA9ICh2YWwg JiAweGZmMDAwMCkgPj4gMTY7CisJc3AtPnRfcmNkID0gKHZhbCAmIDB4ZmYwMDAwMDApID4+IDI0 OworCisJc3AtPnRfcmRwcmUgPSB2YWwyICYgMHhmZjsKKwlzcC0+dF9yYXMgPSAodmFsMiAmIDB4 ZmYwMCkgPj4gODsKKworCXNwLT50X3JjID0gc3AtPnRfcnAgKyBzcC0+dF9yYXM7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBpY2xfZ2V0X3Fndl9wb2ludHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgc3RydWN0IGludGVsX3NhZ3ZfaW5mbyAqc2kp Cit7CisJaW50IGksIHJldDsKKworCXJldCA9IGljbF9wY29kZV9yZWFkX21lbV9nbG9iYWxfaW5m byhkZXZfcHJpdiwgc2kpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAoV0FSTl9P TihzaS0+bnVtX3BvaW50cyA+IEFSUkFZX1NJWkUoc2ktPnBvaW50cykpKQorCQlzaS0+bnVtX3Bv aW50cyA9IEFSUkFZX1NJWkUoc2ktPnBvaW50cyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgc2ktPm51 bV9wb2ludHM7IGkrKykgeworCQlzdHJ1Y3QgaW50ZWxfcWd2X3BvaW50ICpzcCA9ICZzaS0+cG9p bnRzW2ldOworCisJCXJldCA9IGljbF9wY29kZV9yZWFkX3Fndl9wb2ludF9pbmZvKGRldl9wcml2 LCBzcCwgaSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCURSTV9ERUJVR19LTVMo IlFHViAlZDogRENMSz0lZCB0UlA9JWQgdFJEUFJFPSVkIHRSQVM9JWQgdFJDRD0lZCB0UkM9JWRc biIsCisJCQkgICAgICBpLCBzcC0+ZGNsaywgc3AtPnRfcnAsIHNwLT50X3JkcHJlLCBzcC0+dF9y YXMsCisJCQkgICAgICBzcC0+dF9yY2QsIHNwLT50X3JjKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBpY2xfY2FsY19idyhpbnQgZGNsaywgaW50IG51bSwgaW50IGRlbikKK3sK KwkvKiBtdWx0aXBsZXMgb2YgMTYuNjY2TUh6ICgxMDAvNikgKi8KKwlyZXR1cm4gRElWX1JPVU5E X0NMT1NFU1QobnVtICogZGNsayAqIDEwMCwgZGVuICogNik7Cit9CisKK3N0YXRpYyBpbnQgaWNs X3NhZ3ZfbWF4X2RjbGsoY29uc3Qgc3RydWN0IGludGVsX3NhZ3ZfaW5mbyAqc2kpCit7CisJdTE2 IGRjbGsgPSAwOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHNpLT5udW1fcG9pbnRzOyBp KyspCisJCWRjbGsgPSBtYXgoZGNsaywgc2ktPnBvaW50c1tpXS5kY2xrKTsKKworCXJldHVybiBk Y2xrOworfQorCitzdHJ1Y3QgaW50ZWxfc2FfaW5mbyB7CisJdTggZGVidXJzdCwgbXBhZ2VzaXpl LCBkZXByb2did2xpbWl0LCBkaXNwbGF5cnRpZHM7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVsX3NhX2luZm8gaWNsX3NhX2luZm8gPSB7CisJLmRlYnVyc3QgPSA4LAorCS5tcGFnZXNp emUgPSAxNiwKKwkuZGVwcm9nYndsaW1pdCA9IDI1LCAvKiBHQi9zICovCisJLmRpc3BsYXlydGlk cyA9IDEyOCwKK307CisKK3N0YXRpYyBpbnQgaWNsX2dldF9id19pbmZvKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfc2Fndl9pbmZvIHNpID0ge307 CisJY29uc3Qgc3RydWN0IGludGVsX3NhX2luZm8gKnNhID0gJmljbF9zYV9pbmZvOworCWJvb2wg aXNfeV90aWxlID0gdHJ1ZTsgLyogYXNzdW1lIHkgdGlsZSBtYXkgYmUgdXNlZCAqLworCWludCBu dW1fY2hhbm5lbHM7CisJaW50IGRlaW50ZXJsZWF2ZTsKKwlpbnQgaXBxZGVwdGgsIGlwcWRlcHRo cGNoOworCWludCBkY2xrX21heDsKKwlpbnQgbWF4ZGVidzsKKwlpbnQgaSwgcmV0OworCisJcmV0 ID0gaWNsX2dldF9xZ3ZfcG9pbnRzKGRldl9wcml2LCAmc2kpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisJbnVtX2NoYW5uZWxzID0gc2kubnVtX2NoYW5uZWxzOworCisJZGVpbnRlcmxlYXZl ID0gRElWX1JPVU5EX1VQKG51bV9jaGFubmVscywgaXNfeV90aWxlID8gNCA6IDIpOworCWRjbGtf bWF4ID0gaWNsX3NhZ3ZfbWF4X2RjbGsoJnNpKTsKKworCWlwcWRlcHRocGNoID0gMTY7CisKKwlt YXhkZWJ3ID0gbWluKHNhLT5kZXByb2did2xpbWl0ICogMTAwMCwKKwkJICAgICAgaWNsX2NhbGNf YncoZGNsa19tYXgsIDE2LCAxKSAqIDYgLyAxMCk7IC8qIDYwJSAqLworCWlwcWRlcHRoID0gbWlu KGlwcWRlcHRocGNoLCBzYS0+ZGlzcGxheXJ0aWRzIC8gbnVtX2NoYW5uZWxzKTsKKworCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRldl9wcml2LT5tYXhfYncpOyBpKyspIHsKKwkJc3RydWN0 IGludGVsX2J3X2luZm8gKmJpID0gJmRldl9wcml2LT5tYXhfYndbaV07CisJCWludCBjbHBjaGdy b3VwOworCQlpbnQgajsKKworCQljbHBjaGdyb3VwID0gKHNhLT5kZWJ1cnN0ICogZGVpbnRlcmxl YXZlIC8gbnVtX2NoYW5uZWxzKSA8PCBpOworCQliaS0+bnVtX3BsYW5lcyA9IChpcHFkZXB0aCAt IGNscGNoZ3JvdXApIC8gY2xwY2hncm91cCArIDE7CisKKwkJZm9yIChqID0gMDsgaiA8IHNpLm51 bV9wb2ludHM7IGorKykgeworCQkJY29uc3Qgc3RydWN0IGludGVsX3Fndl9wb2ludCAqc3AgPSAm c2kucG9pbnRzW2pdOworCQkJaW50IGN0LCBidzsKKworCQkJLyoKKwkJCSAqIE1heCByb3cgY3lj bGUgdGltZQorCQkJICoKKwkJCSAqIEZJWE1FIHdoYXQgaXMgdGhlIGxvZ2ljIGJlaGluZCB0aGUK KwkJCSAqIGFzc3VtZWQgYnVyc3QgbGVuZ3RoPworCQkJICovCisJCQljdCA9IG1heF90KGludCwg c3AtPnRfcmMsIHNwLT50X3JwICsgc3AtPnRfcmNkICsKKwkJCQkgICAoY2xwY2hncm91cCAtIDEp ICogc2kudF9ibCArIHNwLT50X3JkcHJlKTsKKwkJCWJ3ID0gaWNsX2NhbGNfYncoc3AtPmRjbGss IGNscGNoZ3JvdXAgKiAzMiAqIG51bV9jaGFubmVscywgY3QpOworCisJCQliaS0+ZGVyYXRlZGJ3 W2pdID0gbWluKG1heGRlYncsCisJCQkJCSAgICAgICBidyAqIDkgLyAxMCk7IC8qIDkwJSAqLwor CisJCQlEUk1fREVCVUdfS01TKCJCVyVkIC8gUUdWICVkOiBudW1fcGxhbmVzPSVkIGRlcmF0ZWRi dz0lZFxuIiwKKwkJCQkgICAgICBpLCBqLCBiaS0+bnVtX3BsYW5lcywgYmktPmRlcmF0ZWRid1tq XSk7CisJCX0KKworCQlpZiAoYmktPm51bV9wbGFuZXMgPT0gMSkKKwkJCWJyZWFrOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGljbF9tYXhfYncoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgIGludCBudW1fcGxhbmVzLCBpbnQg cWd2X3BvaW50KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZGV2 X3ByaXYtPm1heF9idyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgaW50ZWxfYndfaW5mbyAqYmkg PQorCQkJJmRldl9wcml2LT5tYXhfYndbaV07CisKKwkJaWYgKG51bV9wbGFuZXMgPj0gYmktPm51 bV9wbGFuZXMpCisJCQlyZXR1cm4gYmktPmRlcmF0ZWRid1txZ3ZfcG9pbnRdOworCX0KKworCXJl dHVybiAwOworfQorCit1bnNpZ25lZCBpbnQgaW50ZWxfbWF4X2RhdGFfcmF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJIGludCBudW1fcGxhbmVzKQoreworCWlmIChJ U19JQ0VMQUtFKGRldl9wcml2KSkKKwkJLyoKKwkJICogRklYTUUgd2l0aCBTQUdWIGRpc2FibGVk IG1heWJlIHdlIGNhbiBhc3N1bWUKKwkJICogcG9pbnQgMSB3aWxsIGFsd2F5cyBiZSB1c2VkPyBT ZWVtcyB0byBtYXRjaAorCQkgKiB0aGUgYmVoYXZpb3VyIG9ic2VydmVkIGluIHRoZSB3aWxkLgor CQkgKi8KKwkJcmV0dXJuIG1pbjMoaWNsX21heF9idyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMCks CisJCQkgICAgaWNsX21heF9idyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMSksCisJCQkgICAgaWNs X21heF9idyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMikpOworCWVsc2UKKwkJcmV0dXJuIFVJTlRf TUFYOworfQorCiBzdGF0aWMgdm9pZAogaW50ZWxfZ2V0X2RyYW1faW5mbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CkBAIC0xNjU1LDYgKzE4ODIsOCBAQCBzdGF0aWMgaW50 IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CSAqLwogCWludGVsX2dldF9kcmFtX2luZm8oZGV2X3ByaXYpOwogCisJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEpCisJCWljbF9nZXRfYndfaW5mbyhkZXZfcHJpdik7CiAKIAlyZXR1cm4g MDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNjRmYTM1M2E2MmJiLi5kMWI5YzNmZTU4 MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg PGRybS9kcm1fY2FjaGUuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3V0aWwuaD4KICNpbmNsdWRlIDxk cm0vZHJtX2RzYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9jb25uZWN0b3IuaD4KICNpbmNsdWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2Uu aD4KIApAQCAtMTgzNyw2ICsxODM4LDEzIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJ fSB0eXBlOwogCX0gZHJhbV9pbmZvOwogCisJc3RydWN0IGludGVsX2J3X2luZm8geworCQlpbnQg bnVtX3BsYW5lczsKKwkJaW50IGRlcmF0ZWRid1szXTsKKwl9IG1heF9id1s2XTsKKworCXN0cnVj dCBkcm1fcHJpdmF0ZV9vYmogYndfb2JqOworCiAJc3RydWN0IGk5MTVfcnVudGltZV9wbSBydW50 aW1lX3BtOwogCiAJc3RydWN0IHsKQEAgLTI3MDYsNiArMjcxNCw4IEBAIGV4dGVybiB1bnNpZ25l ZCBsb25nIGk5MTVfbWNoX3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaTkxNV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgdmx2X2ZvcmNlX2dmeF9jbG9jayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgb24pOwordW5zaWduZWQgaW50IGludGVs X21heF9kYXRhX3JhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSBp bnQgbnVtX3BsYW5lcyk7CiAKIHUzMiBpbnRlbF9jYWxjdWxhdGVfbWNyX3Nfc3Nfc2VsZWN0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o CmluZGV4IGU5N2M0N2ZjYTY0NS4uMzk5MzY2YTQxNTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKQEAgLTg3NzQsNiArODc3NCw5IEBAIGVudW0gewogI2RlZmluZSAgIEdFTjZfUENPREVfV1JJ VEVfTUlOX0ZSRVFfVEFCTEUJMHg4CiAjZGVmaW5lICAgR0VONl9QQ09ERV9SRUFEX01JTl9GUkVR X1RBQkxFCTB4OQogI2RlZmluZSAgIEdFTjZfUkVBRF9PQ19QQVJBTVMJCQkweGMKKyNkZWZpbmUg ICBJQ0xfUENPREVfTUVNX1NVQlNZU1lTVEVNX0lORk8JMHhkCisjZGVmaW5lICAgICBJQ0xfUENP REVfTUVNX1NTX1JFQURfR0xPQkFMX0lORk8JKDB4MCA8PCA4KQorI2RlZmluZSAgICAgSUNMX1BD T0RFX01FTV9TU19SRUFEX1FHVl9QT0lOVF9JTkZPKHBvaW50KQkoKChwb2ludCkgPDwgMTYpIHwg KDB4MSA8PCA4KSkKICNkZWZpbmUgICBHRU42X1BDT0RFX1JFQURfRF9DT01QCQkweDEwCiAjZGVm aW5lICAgR0VONl9QQ09ERV9XUklURV9EX0NPTVAJCTB4MTEKICNkZWZpbmUgICBIU1dfUENPREVf REVfV1JJVEVfRlJFUV9SRVEJCTB4MTcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj X3BsYW5lLmMKaW5kZXggZDExNjgxZDcxYWRkLi5mMTQyYzVjMjJkN2UgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCkBAIC0xMTQsNiArMTE0LDIyIEBAIGludGVs X3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJZHJtX2F0b21p Y19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOwogfQogCit1bnNpZ25l ZCBpbnQgaW50ZWxfcGxhbmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCit7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+YmFzZS5mYjsKKwl1bnNpZ25lZCBpbnQgY3BwID0gMDsKKwlpbnQgaTsKKworCWlmICgh cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGkgPSAwOyBp IDwgZmItPmZvcm1hdC0+bnVtX3BsYW5lczsgaSsrKQorCQljcHAgKz0gZmItPmZvcm1hdC0+Y3Bw W2ldOworCisJcmV0dXJuIGNwcCAqIGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7Cit9CisKIGludCBp bnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSwKIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRf cGxhbmVfc3RhdGUsCkBAIC0xMjUsNiArMTQxLDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19j aGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18K IAluZXdfY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJbmV3 X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKIAluZXdfY3J0Y19z dGF0ZS0+YzhfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKKwluZXdfY3J0Y19zdGF0ZS0+ZGF0 YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwogCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0g ZmFsc2U7CiAKIAlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjICYmICFvbGRfcGxhbmVf c3RhdGUtPmJhc2UuY3J0YykKQEAgLTE0OSw2ICsxNjYsOSBAQCBpbnQgaW50ZWxfcGxhbmVfYXRv bWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9j cnRjXwogCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSB8fCBvbGRfcGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSkKIAkJbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9wbGFuZXMgfD0gQklU KHBsYW5lLT5pZCk7CiAKKwluZXdfY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPQor CQlpbnRlbF9wbGFuZV9kYXRhX3JhdGUobmV3X2NydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7 CisKIAlyZXR1cm4gaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhvbGRfY3J0Y19zdGF0 ZSwKIAkJCQkJICAgICAgICZuZXdfY3J0Y19zdGF0ZS0+YmFzZSwKIAkJCQkJICAgICAgIG9sZF9w bGFuZV9zdGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21p Y19wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmgKaW5k ZXggMTQ2Nzg2MjA0NDBmLi4wYTk2NTEzNzZkMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F0b21pY19wbGFuZS5oCkBAIC0xNSw2ICsxNSw4IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGludGVs X3BsYW5lX2hlbHBlcl9mdW5jczsKIAordW5zaWduZWQgaW50IGludGVsX3BsYW5lX2RhdGFfcmF0 ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKIHZvaWQgaW50ZWxfdXBk YXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJCQljb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMDRiZjg3ZjBhMmUKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9idy5jCkBAIC0wLDAgKzEsMTgxIEBACisvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50 ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfc3RhdGVfaGVs cGVyLmg+CisKKyNpbmNsdWRlICJpbnRlbF9idy5oIgorI2luY2x1ZGUgImludGVsX2Rydi5oIgor CitzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2J3X2NydGNfbnVtX2FjdGl2ZV9wbGFuZXMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJLyoKKwkgKiBXZSBh c3N1bWUgY3Vyc29ycyBhcmUgc21hbGwgZW5vdWdoCisJICogdG8gbm90IG5vdCBjYXVzZSBiYW5k d2lkdGggcHJvYmxlbXMuCisJICovCisJcmV0dXJuIGh3ZWlnaHQ4KGNydGNfc3RhdGUtPmFjdGl2 ZV9wbGFuZXMgJiB+QklUKFBMQU5FX0NVUlNPUikpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50 IGludGVsX2J3X2NydGNfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT5iYXNlLmNydGMpOworCXVuc2lnbmVkIGludCBkYXRhX3JhdGUgPSAwOworCWVu dW0gcGxhbmVfaWQgcGxhbmVfaWQ7CisKKwlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMs IHBsYW5lX2lkKSB7CisJCS8qCisJCSAqIFdlIGFzc3VtZSBjdXJzb3JzIGFyZSBzbWFsbCBlbm91 Z2gKKwkJICogdG8gbm90IG5vdCBjYXVzZSBiYW5kd2lkdGggcHJvYmxlbXMuCisJCSAqLworCQlp ZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQorCQkJY29udGludWU7CisKKwkJZGF0YV9yYXRl ICs9IGNydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZV9pZF07CisJfQorCisJcmV0dXJuIGRhdGFf cmF0ZTsKK30KKwordm9pZCBpbnRlbF9id19jcnRjX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYndfc3Rh dGUgKmJ3X3N0YXRlLAorCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKKworCWJ3X3N0YXRlLT5kYXRhX3JhdGVbY3J0Yy0+cGlwZV0gPQor CQlpbnRlbF9id19jcnRjX2RhdGFfcmF0ZShjcnRjX3N0YXRlKTsKKwlid19zdGF0ZS0+bnVtX2Fj dGl2ZV9wbGFuZXNbY3J0Yy0+cGlwZV0gPQorCQlpbnRlbF9id19jcnRjX251bV9hY3RpdmVfcGxh bmVzKGNydGNfc3RhdGUpOworCisJRFJNX0RFQlVHX0tNUygicGlwZSAlYyBkYXRhIHJhdGUgJXUg bnVtIGFjdGl2ZSBwbGFuZXMgJXVcbiIsCisJCSAgICAgIHBpcGVfbmFtZShjcnRjLT5waXBlKSwK KwkJICAgICAgYndfc3RhdGUtPmRhdGFfcmF0ZVtjcnRjLT5waXBlXSwKKwkJICAgICAgYndfc3Rh dGUtPm51bV9hY3RpdmVfcGxhbmVzW2NydGMtPnBpcGVdKTsKK30KKworc3RhdGljIHVuc2lnbmVk IGludCBpbnRlbF9id19udW1fYWN0aXZlX3BsYW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKmJ3X3N0 YXRlKQoreworCXVuc2lnbmVkIGludCBudW1fYWN0aXZlX3BsYW5lcyA9IDA7CisJZW51bSBwaXBl IHBpcGU7CisKKwlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQorCQludW1fYWN0aXZlX3Bs YW5lcyArPSBid19zdGF0ZS0+bnVtX2FjdGl2ZV9wbGFuZXNbcGlwZV07CisKKwlyZXR1cm4gbnVt X2FjdGl2ZV9wbGFuZXM7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfYndfZGF0YV9y YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICAgY29uc3Qg c3RydWN0IGludGVsX2J3X3N0YXRlICpid19zdGF0ZSkKK3sKKwl1bnNpZ25lZCBpbnQgZGF0YV9y YXRlID0gMDsKKwllbnVtIHBpcGUgcGlwZTsKKworCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBp cGUpCisJCWRhdGFfcmF0ZSArPSBid19zdGF0ZS0+ZGF0YV9yYXRlW3BpcGVdOworCisJcmV0dXJu IGRhdGFfcmF0ZTsKK30KKworaW50IGludGVsX2J3X2F0b21pY19jaGVjayhzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlLCAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGludGVsX2J3X3N0YXRl ICpid19zdGF0ZSA9IE5VTEw7CisJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgbWF4X2RhdGFfcmF0 ZTsKKwl1bnNpZ25lZCBpbnQgbnVtX2FjdGl2ZV9wbGFuZXM7CisJc3RydWN0IGludGVsX2NydGMg KmNydGM7CisJaW50IGk7CisKKwkvKiBGSVhNRSBlYXJsaWVyIGdlbnMgbmVlZCBzb21lIGNoZWNr cyB0b28gKi8KKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQorCQlyZXR1cm4gMDsKKwor CWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwKKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7CisJCXVuc2lnbmVkIGludCBv bGRfZGF0YV9yYXRlID0KKwkJCWludGVsX2J3X2NydGNfZGF0YV9yYXRlKG9sZF9jcnRjX3N0YXRl KTsKKwkJdW5zaWduZWQgaW50IG5ld19kYXRhX3JhdGUgPQorCQkJaW50ZWxfYndfY3J0Y19kYXRh X3JhdGUobmV3X2NydGNfc3RhdGUpOworCQl1bnNpZ25lZCBpbnQgb2xkX2FjdGl2ZV9wbGFuZXMg PQorCQkJaW50ZWxfYndfY3J0Y19udW1fYWN0aXZlX3BsYW5lcyhvbGRfY3J0Y19zdGF0ZSk7CisJ CXVuc2lnbmVkIGludCBuZXdfYWN0aXZlX3BsYW5lcyA9CisJCQlpbnRlbF9id19jcnRjX251bV9h Y3RpdmVfcGxhbmVzKG5ld19jcnRjX3N0YXRlKTsKKworCQkvKgorCQkgKiBBdm9pZCBsb2NraW5n IHRoZSBidyBzdGF0ZSB3aGVuCisJCSAqIG5vdGhpbmcgc2lnbmlmaWNhbnQgaGFzIGNoYW5nZWQu CisJCSAqLworCQlpZiAob2xkX2RhdGFfcmF0ZSA9PSBuZXdfZGF0YV9yYXRlICYmCisJCSAgICBv bGRfYWN0aXZlX3BsYW5lcyA9PSBuZXdfYWN0aXZlX3BsYW5lcykKKwkJCWNvbnRpbnVlOworCisJ CWJ3X3N0YXRlICA9IGludGVsX2F0b21pY19nZXRfYndfc3RhdGUoc3RhdGUpOworCQlpZiAoSVNf RVJSKGJ3X3N0YXRlKSkKKwkJCXJldHVybiBQVFJfRVJSKGJ3X3N0YXRlKTsKKworCQlid19zdGF0 ZS0+ZGF0YV9yYXRlW2NydGMtPnBpcGVdID0gbmV3X2RhdGFfcmF0ZTsKKwkJYndfc3RhdGUtPm51 bV9hY3RpdmVfcGxhbmVzW2NydGMtPnBpcGVdID0gbmV3X2FjdGl2ZV9wbGFuZXM7CisKKwkJRFJN X0RFQlVHX0tNUygicGlwZSAlYyBkYXRhIHJhdGUgJXUgbnVtIGFjdGl2ZSBwbGFuZXMgJXVcbiIs CisJCQkgICAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSksCisJCQkgICAgICBid19zdGF0ZS0+ZGF0 YV9yYXRlW2NydGMtPnBpcGVdLAorCQkJICAgICAgYndfc3RhdGUtPm51bV9hY3RpdmVfcGxhbmVz W2NydGMtPnBpcGVdKTsKKwl9CisKKwlpZiAoIWJ3X3N0YXRlKQorCQlyZXR1cm4gMDsKKworCWRh dGFfcmF0ZSA9IGludGVsX2J3X2RhdGFfcmF0ZShkZXZfcHJpdiwgYndfc3RhdGUpOworCW51bV9h Y3RpdmVfcGxhbmVzID0gaW50ZWxfYndfbnVtX2FjdGl2ZV9wbGFuZXMoZGV2X3ByaXYsIGJ3X3N0 YXRlKTsKKworCW1heF9kYXRhX3JhdGUgPSBpbnRlbF9tYXhfZGF0YV9yYXRlKGRldl9wcml2LCBu dW1fYWN0aXZlX3BsYW5lcyk7CisKKwlkYXRhX3JhdGUgPSBESVZfUk9VTkRfVVAoZGF0YV9yYXRl LCAxMDAwKTsKKworCWlmIChkYXRhX3JhdGUgPiBtYXhfZGF0YV9yYXRlKSB7CisJCURSTV9ERUJV R19LTVMoIkJhbmR3aWR0aCAldSBNQi9zIGV4Y2VlZHMgbWF4IGF2YWlsYWJsZSAlZCBNQi9zICgl ZCBhY3RpdmUgcGxhbmVzKVxuIiwKKwkJCSAgICAgIGRhdGFfcmF0ZSwgbWF4X2RhdGFfcmF0ZSwg bnVtX2FjdGl2ZV9wbGFuZXMpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqaW50ZWxfYndfZHVwbGljYXRl X3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaikKK3sKKwlzdHJ1Y3QgaW50ZWxfYndf c3RhdGUgKnN0YXRlOworCisJc3RhdGUgPSBrbWVtZHVwKG9iai0+c3RhdGUsIHNpemVvZigqc3Rh dGUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1cm4gTlVMTDsKKworCV9fZHJt X2F0b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0YXRlLT5i YXNlKTsKKworCXJldHVybiAmc3RhdGUtPmJhc2U7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2J3 X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqLAorCQkJCSAgIHN0cnVj dCBkcm1fcHJpdmF0ZV9zdGF0ZSAqc3RhdGUpCit7CisJa2ZyZWUoc3RhdGUpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1bmNzIGludGVsX2J3X2Z1bmNzID0g eworCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfYndfZHVwbGljYXRlX3N0YXRlLAor CS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX2J3X2Rlc3Ryb3lfc3RhdGUsCit9OworCitp bnQgaW50ZWxfYndfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJ c3RydWN0IGludGVsX2J3X3N0YXRlICpzdGF0ZTsKKworCXN0YXRlID0ga3phbGxvYyhzaXplb2Yo KnN0YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIC1FTk9NRU07CisK Kwlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2luaXQoJmRldl9wcml2LT5kcm0sICZkZXZfcHJpdi0+ Yndfb2JqLAorCQkJCSAgICAmc3RhdGUtPmJhc2UsICZpbnRlbF9id19mdW5jcyk7CisKKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9idy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uYzE0MjcyY2E1YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYncuaApAQCAtMCwwICsxLDQ2IEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9y YXRpb24KKyAqLworCisjaWZuZGVmIF9fSU5URUxfQldfSF9fCisjZGVmaW5lIF9fSU5URUxfQldf SF9fCisKKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorCisjaW5jbHVkZSAiaTkxNV9kcnYu aCIKKyNpbmNsdWRlICJpbnRlbF9kaXNwbGF5LmgiCisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRl Oworc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKK3N0cnVjdCBpbnRlbF9jcnRjX3N0YXRlOwor CitzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgeworCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNl OworCisJdW5zaWduZWQgaW50IGRhdGFfcmF0ZVtJOTE1X01BWF9QSVBFU107CisJdTggbnVtX2Fj dGl2ZV9wbGFuZXNbSTkxNV9NQVhfUElQRVNdOworfTsKKworI2RlZmluZSB0b19pbnRlbF9id19z dGF0ZSh4KSBjb250YWluZXJfb2YoKHgpLCBzdHJ1Y3QgaW50ZWxfYndfc3RhdGUsIGJhc2UpCisK K3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2J3X3N0YXRlICoKK2ludGVsX2F0b21pY19nZXRf Yndfc3RhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOworCXN0 cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqYndfc3RhdGU7CisKKwlid19zdGF0ZSA9IGRybV9hdG9t aWNfZ2V0X3ByaXZhdGVfb2JqX3N0YXRlKCZzdGF0ZS0+YmFzZSwKKwkJCQkJCSAgICAmZGV2X3By aXYtPmJ3X29iaik7CisJaWYgKElTX0VSUihid19zdGF0ZSkpCisJCXJldHVybiBFUlJfQ0FTVChi d19zdGF0ZSk7CisKKwlyZXR1cm4gdG9faW50ZWxfYndfc3RhdGUoYndfc3RhdGUpOworfQorCitp bnQgaW50ZWxfYndfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworaW50 IGludGVsX2J3X2F0b21pY19jaGVjayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSk7 Cit2b2lkIGludGVsX2J3X2NydGNfdXBkYXRlKHN0cnVjdCBpbnRlbF9id19zdGF0ZSAqYndfc3Rh dGUsCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKKwor I2VuZGlmIC8qIF9fSU5URUxfQldfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKaW5kZXggZDgxZWM4MGUzNGY2Li5hOTU1ODQwYjczY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJpbnRlbF9hY3BpLmgi CiAjaW5jbHVkZSAiaW50ZWxfYXRvbWljLmgiCiAjaW5jbHVkZSAiaW50ZWxfYXRvbWljX3BsYW5l LmgiCisjaW5jbHVkZSAiaW50ZWxfYncuaCIKICNpbmNsdWRlICJpbnRlbF9jb2xvci5oIgogI2lu Y2x1ZGUgImludGVsX2NkY2xrLmgiCiAjaW5jbHVkZSAiaW50ZWxfY3J0LmgiCkBAIC0yODYzLDYg KzI4NjQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCiAJaW50ZWxfc2V0X3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0 ZSwgcGxhbmVfc3RhdGUsIGZhbHNlKTsKIAlmaXh1cF9hY3RpdmVfcGxhbmVzKGNydGNfc3RhdGUp OworCWNydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKIAogCWlmIChwbGFuZS0+ aWQgPT0gUExBTkVfUFJJTUFSWSkKIAkJaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeV9ub2F0b21p YygmY3J0Yy0+YmFzZSk7CkBAIC02NTkwLDYgKzY1OTIsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9j cnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGMtPmRldik7CisJc3RydWN0IGludGVsX2J3X3N0YXRlICpid19zdGF0ZSA9CisJ CXRvX2ludGVsX2J3X3N0YXRlKGRldl9wcml2LT5id19vYmouc3RhdGUpOwogCWVudW0gaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7 CiAJdTY0IGRvbWFpbnM7CkBAIC02NjUyLDYgKzY2NTYsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9j cnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWRldl9wcml2LT5h Y3RpdmVfY3J0Y3MgJj0gfigxIDw8IGludGVsX2NydGMtPnBpcGUpOwogCWRldl9wcml2LT5taW5f Y2RjbGtbaW50ZWxfY3J0Yy0+cGlwZV0gPSAwOwogCWRldl9wcml2LT5taW5fdm9sdGFnZV9sZXZl bFtpbnRlbF9jcnRjLT5waXBlXSA9IDA7CisKKwlid19zdGF0ZS0+ZGF0YV9yYXRlW2ludGVsX2Ny dGMtPnBpcGVdID0gMDsKKwlid19zdGF0ZS0+bnVtX2FjdGl2ZV9wbGFuZXNbaW50ZWxfY3J0Yy0+ cGlwZV0gPSAwOwogfQogCiAvKgpAQCAtMTExNzYsNiArMTExODMsNyBAQCBpbnQgaW50ZWxfcGxh bmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdAogCWlmICghaXNfY3J0Y19lbmFibGVkKSB7CiAJCXBsYW5lX3N0YXRlLT52aXNp YmxlID0gdmlzaWJsZSA9IGZhbHNlOwogCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUp LT5hY3RpdmVfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKKwkJdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjX3N0YXRlKS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwogCX0KIAogCWlmICghd2Fz X3Zpc2libGUgJiYgIXZpc2libGUpCkBAIC0xMzI5Niw3ICsxMzMwNCwxNSBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyZXR1cm4gcmV0 OwogCiAJaW50ZWxfZmJjX2Nob29zZV9jcnRjKGRldl9wcml2LCBpbnRlbF9zdGF0ZSk7Ci0JcmV0 dXJuIGNhbGNfd2F0ZXJtYXJrX2RhdGEoaW50ZWxfc3RhdGUpOworCXJldCA9IGNhbGNfd2F0ZXJt YXJrX2RhdGEoaW50ZWxfc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQg PSBpbnRlbF9id19hdG9taWNfY2hlY2soaW50ZWxfc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFy ZV9jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTE1Njk2LDYgKzE1NzEyLDEwIEBA IGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWRybV9t b2RlX2NvbmZpZ19pbml0KGRldik7CiAKKwlyZXQgPSBpbnRlbF9id19pbml0KGRldl9wcml2KTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJZGV2LT5tb2RlX2NvbmZpZy5taW5fd2lkdGgg PSAwOwogCWRldi0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7CiAKQEAgLTE2MzE4LDggKzE2 MzM4LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9p dGVyKTsKIAogCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7CisJCXN0cnVjdCBpbnRl bF9id19zdGF0ZSAqYndfc3RhdGUgPQorCQkJdG9faW50ZWxfYndfc3RhdGUoZGV2X3ByaXYtPmJ3 X29iai5zdGF0ZSk7CiAJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KIAkJ CXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CisJCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmU7CiAJCWludCBtaW5fY2RjbGsgPSAwOwogCiAJCW1lbXNldCgmY3J0Yy0+YmFz ZS5tb2RlLCAwLCBzaXplb2YoY3J0Yy0+YmFzZS5tb2RlKSk7CkBAIC0xNjM1OCw2ICsxNjM4MSwy MSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJZGV2X3ByaXYtPm1pbl92b2x0YWdlX2xldmVsW2NydGMtPnBpcGVd ID0KIAkJCWNydGNfc3RhdGUtPm1pbl92b2x0YWdlX2xldmVsOwogCisJCWZvcl9lYWNoX2ludGVs X3BsYW5lX29uX2NydGMoJmRldl9wcml2LT5kcm0sIGNydGMsIHBsYW5lKSB7CisJCQljb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KKwkJCQl0b19pbnRlbF9wbGFu ZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7CisKKwkJCS8qCisJCQkgKiBGSVhNRSBkb24ndCBo YXZlIHRoZSBmYiB5ZXQsIHNvIGNhbid0CisJCQkgKiB1c2UgaW50ZWxfcGxhbmVfZGF0YV9yYXRl KCkgOigKKwkJCSAqLworCQkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJCQkJY3J0 Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPQorCQkJCQk0ICogY3J0Y19zdGF0ZS0+cGl4 ZWxfcmF0ZTsKKwkJfQorCisJCWludGVsX2J3X2NydGNfdXBkYXRlKGJ3X3N0YXRlLCBjcnRjX3N0 YXRlKTsKKwogCQlpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2X3ByaXYsIGNydGNf c3RhdGUpOwogCX0KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNDA0OWUwM2QyYzBk Li40N2Y1NTE2MDFhMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC04ODUsNiArODg1 LDggQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCiAJc3RydWN0IGludGVsX2NydGNfd21f c3RhdGUgd207CiAKKwl1MzIgZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5FU107CisKIAkvKiBHYW1t YSBtb2RlIHByb2dyYW1tZWQgb24gdGhlIHBpcGUgKi8KIAl1MzIgZ2FtbWFfbW9kZTsKIAotLSAK Mi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=