From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [PATCH v16 1/4] drm/i915: Introduce private PAT management Date: Wed, 13 Sep 2017 16:44:00 +0800 Message-ID: <1505292243-31117-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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, intel-gvt-dev@lists.freedesktop.org Cc: Rodrigo Vivi , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org VGhlIHByaXZhdGUgUEFUIG1hbmFnZW1lbnQgaXMgdG8gc3VwcG9ydCBQUEFUIGVudHJ5IG1hbmlw dWxhdGlvbi4gVHdvCkFQSXMgYXJlIGludHJvZHVjZWQgZm9yIGR5bmFtaWNhbGx5IG1hbmFnaW5n IFBQQVQgZW50cmllczogaW50ZWxfcHBhdF9nZXQKYW5kIGludGVsX3BwYXRfcHV0LgoKaW50ZWxf cHBhdF9nZXQgd2lsbCBzZWFyY2ggZm9yIGFuIGV4aXN0aW5nIFBQQVQgZW50cnkgd2hpY2ggcGVy ZmVjdGx5Cm1hdGNoZXMgdGhlIHJlcXVpcmVkIFBQQVQgdmFsdWUuIElmIG5vdCwgaXQgd2lsbCB0 cnkgdG8gYWxsb2NhdGUgYSBuZXcKZW50cnkgaWYgdGhlcmUgaXMgYW55IGF2YWlsYWJsZSBQUEFU IGluZGV4cywgb3IgcmV0dXJuIGEgcGFydGlhbGx5Cm1hdGNoZWQgUFBBVCBlbnRyeSBpZiB0aGVy ZSBpcyBubyBhdmFpbGFibGUgUFBBVCBpbmRleGVzLgoKaW50ZWxfcHBhdF9wdXQgd2lsbCBwdXQg YmFjayB0aGUgUFBBVCBlbnRyeSB3aGljaCBjb21lcyBmcm9tCmludGVsX3BwYXRfZ2V0LiBJZiBp dCdzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCwgdGhlIHJlZmVyZW5jZSBjb3VudCB3aWxsCmJlIGRl Y3JlYXNlZC4gSWYgdGhlIHJlZmVyZW5jZSBjb3VudCB0dXJucyBpbnRvIHplcm8sIHRoZSBQUEFU IGluZGV4IGlzCmZyZWVkIGFnYWluLgoKQmVzaWRlcywgYW5vdGhlciB0d28gY2FsbGJhY2tzIGFy ZSBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgdGhlIHByaXZhdGUgUEFUCm1hbmFnZW1lbnQgZnJhbWV3 b3JrLiBPbmUgaXMgcHBhdC0+dXBkYXRlX2h3KCksIHdoaWNoIHdyaXRlcyB0aGUgUFBBVApjb25m aWd1cmF0aW9ucyBpbiBwcGF0LT5lbnRyaWVzIGludG8gSFcuIEFub3RoZXIgb25lIGlzIHBwYXQt Pm1hdGNoLCB3aGljaAp3aWxsIHJldHVybiBhIHNjb3JlIHRvIHNob3cgaG93IHR3byBQUEFUIHZh bHVlcyBtYXRjaCB3aXRoIGVhY2ggb3RoZXIuCgp2MTY6CgotIEZpeCBhIGJ1ZyBpbiBQUEFUIG1h dGNoIGZ1bmN0aW9uIG9mIEJEVy4gKEpvb25hcykKCnYxNToKCi0gUmVmaW5lIHNvbWUgY29kZSBm bG93LiAoSm9vbmFzKQoKdjEyOgoKLSBGaXggYSBwcm9ibGVtICJub3QgcmV0dXJuaW5nIHRoZSBl bnRyeSBvZiBiZXN0IHNjb3JlIi4gKFpoZW55dSkKCnY3OgoKLSBLZWVwIGFsbCB0aGUgcmVnaXN0 ZXIgd3JpdGVzIHVuY2hhbmdlZCBpbiB0aGlzIHBhdGNoLiAoSm9vbmFzKQoKdjY6CgotIEFkZHJl c3MgYWxsIGNvbW1lbnRzIGZyb20gQ2hyaXM6Cmh0dHA6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMv aW50ZWwtZ2Z4L21zZzEzNjg1MC5odG1sCgotIEFkZHJlc3MgYWxsIGNvbW1lbnRzIGZyb20gSm9v bmFzOgpodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2ludGVsLWdmeC9tc2cxMzY4NDUuaHRt bAoKdjU6CgotIEFkZCBjaGVjayBhbmQgd2Fybm5pbmdzIGZvciB0aG9zZSBwbGF0Zm9ybXMgd2hp Y2ggZG9uJ3QgaGF2ZSBQUEFULgoKdjM6CgotIEludHJvZHVjZSBkaXJ0eSBiaXRtYXAgZm9yIFBQ QVQgcmVnaXN0ZXJzLiAoQ2hyaXMpCi0gQ2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBwb2ludGVyICJk ZXZfcHJpdiIgdG8gImk5MTUiLiAoQ2hyaXMpCi0gaW50ZWxfcHBhdF97Z2V0LCBwdXR9IHJldHVy bnMvdGFrZXMgYSBjb25zdCBpbnRlbF9wcGF0X2VudHJ5ICouIChDaHJpcykKCnYyOgoKLSBBUEkg cmUtZGVzaWduLiAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBaaGkgV2FuZyA8emhpLmEud2FuZ0Bp bnRlbC5jb20+CkNjOiBCZW4gV2lkYXdza3kgPGJlbmphbWluLndpZGF3c2t5QGludGVsLmNvbT4K Q2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMu bGFodGluZW5AbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+ICN2NwpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jIHwgMjgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgMzYgKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjY5IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDFjYzMxYTUuLmRlMWZiMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjM1 NCw2ICsyMzU0LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCURFQ0xBUkVfSEFTSFRB QkxFKG1tX3N0cnVjdHMsIDcpOwogCXN0cnVjdCBtdXRleCBtbV9sb2NrOwogCisJc3RydWN0IGlu dGVsX3BwYXQgcHBhdDsKKwogCS8qIEtlcm5lbCBNb2Rlc2V0dGluZyAqLwogCiAJc3RydWN0IGlu dGVsX2NydGMgKnBsYW5lX3RvX2NydGNfbWFwcGluZ1tJOTE1X01BWF9QSVBFU107CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDA5ZTUyNGQuLjhlOTU3M2QgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0yODE5LDQxICsyODE5LDIwNCBAQCBzdGF0aWMgaW50 IGdndHRfcHJvYmVfY29tbW9uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHU2NCBzaXplKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBjbmxfc2V0dXBfcHJpdmF0ZV9wcGF0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfcHBhdF9lbnRy eSAqCitfX2FsbG9jX3BwYXRfZW50cnkoc3RydWN0IGludGVsX3BwYXQgKnBwYXQsIHVuc2lnbmVk IGludCBpbmRleCwgdTggdmFsdWUpCiB7CisJc3RydWN0IGludGVsX3BwYXRfZW50cnkgKmVudHJ5 ID0gJnBwYXQtPmVudHJpZXNbaW5kZXhdOworCisJR0VNX0JVR19PTihpbmRleCA+PSBwcGF0LT5t YXhfZW50cmllcyk7CisJR0VNX0JVR19PTih0ZXN0X2JpdChpbmRleCwgcHBhdC0+dXNlZCkpOwor CisJZW50cnktPnBwYXQgPSBwcGF0OworCWVudHJ5LT52YWx1ZSA9IHZhbHVlOworCWtyZWZfaW5p dCgmZW50cnktPnJlZik7CisJc2V0X2JpdChpbmRleCwgcHBhdC0+dXNlZCk7CisJc2V0X2JpdChp bmRleCwgcHBhdC0+ZGlydHkpOworCisJcmV0dXJuIGVudHJ5OworfQorCitzdGF0aWMgdm9pZCBf X2ZyZWVfcHBhdF9lbnRyeShzdHJ1Y3QgaW50ZWxfcHBhdF9lbnRyeSAqZW50cnkpCit7CisJc3Ry dWN0IGludGVsX3BwYXQgKnBwYXQgPSBlbnRyeS0+cHBhdDsKKwl1bnNpZ25lZCBpbnQgaW5kZXgg PSBlbnRyeSAtIHBwYXQtPmVudHJpZXM7CisKKwlHRU1fQlVHX09OKGluZGV4ID49IHBwYXQtPm1h eF9lbnRyaWVzKTsKKwlHRU1fQlVHX09OKCF0ZXN0X2JpdChpbmRleCwgcHBhdC0+dXNlZCkpOwor CisJZW50cnktPnZhbHVlID0gcHBhdC0+Y2xlYXJfdmFsdWU7CisJY2xlYXJfYml0KGluZGV4LCBw cGF0LT51c2VkKTsKKwlzZXRfYml0KGluZGV4LCBwcGF0LT5kaXJ0eSk7Cit9CisKKy8qKgorICog aW50ZWxfcHBhdF9nZXQgLSBnZXQgYSB1c2FibGUgUFBBVCBlbnRyeQorICogQGk5MTU6IGk5MTUg ZGV2aWNlIGluc3RhbmNlCisgKiBAdmFsdWU6IHRoZSBQUEFUIHZhbHVlIHJlcXVpcmVkIGJ5IHRo ZSBjYWxsZXIKKyAqCisgKiBUaGUgZnVuY3Rpb24gdHJpZXMgdG8gc2VhcmNoIGlmIHRoZXJlIGlz IGFuIGV4aXN0aW5nIFBQQVQgZW50cnkgd2hpY2gKKyAqIG1hdGNoZXMgd2l0aCB0aGUgcmVxdWly ZWQgdmFsdWUuIElmIHBlcmZlY3RseSBtYXRjaGVkLCB0aGUgZXhpc3RpbmcgUFBBVAorICogZW50 cnkgd2lsbCBiZSB1c2VkLiBJZiBvbmx5IHBhcnRpYWxseSBtYXRjaGVkLCBpdCB3aWxsIHRyeSB0 byBjaGVjayBpZgorICogdGhlcmUgaXMgYW55IGF2YWlsYWJsZSBQUEFUIGluZGV4LiBJZiB5ZXMs IGl0IHdpbGwgYWxsb2NhdGUgYSBuZXcgUFBBVAorICogaW5kZXggZm9yIHRoZSByZXF1aXJlZCBl bnRyeSBhbmQgdXBkYXRlIHRoZSBIVy4gSWYgbm90LCB0aGUgcGFydGlhbGx5CisgKiBtYXRjaGVk IGVudHJ5IHdpbGwgYmUgdXNlZC4KKyAqLworY29uc3Qgc3RydWN0IGludGVsX3BwYXRfZW50cnkg KgoraW50ZWxfcHBhdF9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IHZhbHVl KQoreworCXN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0ID0gJmk5MTUtPnBwYXQ7CisJc3RydWN0IGlu dGVsX3BwYXRfZW50cnkgKmVudHJ5OworCXVuc2lnbmVkIGludCBzY2FubmVkLCBiZXN0X3Njb3Jl OworCWludCBpOworCisJR0VNX0JVR19PTighcHBhdC0+bWF4X2VudHJpZXMpOworCisJc2Nhbm5l ZCA9IGJlc3Rfc2NvcmUgPSAwOworCWZvcl9lYWNoX3NldF9iaXQoaSwgcHBhdC0+dXNlZCwgcHBh dC0+bWF4X2VudHJpZXMpIHsKKwkJdW5zaWduZWQgaW50IHNjb3JlOworCisJCXNjb3JlID0gcHBh dC0+bWF0Y2gocHBhdC0+ZW50cmllc1tpXS52YWx1ZSwgdmFsdWUpOworCQlpZiAoc2NvcmUgPiBi ZXN0X3Njb3JlKSB7CisJCQllbnRyeSA9ICZwcGF0LT5lbnRyaWVzW2ldOworCQkJaWYgKHNjb3Jl ID09IElOVEVMX1BQQVRfUEVSRkVDVF9NQVRDSCkgeworCQkJCWtyZWZfZ2V0KCZlbnRyeS0+cmVm KTsKKwkJCQlyZXR1cm4gZW50cnk7CisJCQl9CisJCQliZXN0X3Njb3JlID0gc2NvcmU7CisJCX0K KwkJc2Nhbm5lZCsrOworCX0KKworCWlmIChzY2FubmVkID09IHBwYXQtPm1heF9lbnRyaWVzKSB7 CisJCWlmICghYmVzdF9zY29yZSkKKwkJCXJldHVybiBFUlJfUFRSKC1FTk9TUEMpOworCisJCWty ZWZfZ2V0KCZlbnRyeS0+cmVmKTsKKwkJcmV0dXJuIGVudHJ5OworCX0KKworCWkgPSBmaW5kX2Zp cnN0X3plcm9fYml0KHBwYXQtPnVzZWQsIHBwYXQtPm1heF9lbnRyaWVzKTsKKwllbnRyeSA9IF9f YWxsb2NfcHBhdF9lbnRyeShwcGF0LCBpLCB2YWx1ZSk7CisJcHBhdC0+dXBkYXRlX2h3KGk5MTUp OworCXJldHVybiBlbnRyeTsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZV9wcGF0KHN0cnVjdCBr cmVmICprcmVmKQoreworCXN0cnVjdCBpbnRlbF9wcGF0X2VudHJ5ICplbnRyeSA9CisJCWNvbnRh aW5lcl9vZihrcmVmLCBzdHJ1Y3QgaW50ZWxfcHBhdF9lbnRyeSwgcmVmKTsKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVudHJ5LT5wcGF0LT5pOTE1OworCisJX19mcmVlX3BwYXRf ZW50cnkoZW50cnkpOworCWVudHJ5LT5wcGF0LT51cGRhdGVfaHcoaTkxNSk7Cit9CisKKy8qKgor ICogaW50ZWxfcHBhdF9wdXQgLSBwdXQgYmFjayB0aGUgUFBBVCBlbnRyeSBnb3QgZnJvbSBpbnRl bF9wcGF0X2dldCgpCisgKiBAZW50cnk6IGFuIGludGVsIFBQQVQgZW50cnkKKyAqCisgKiBQdXQg YmFjayB0aGUgUFBBVCBlbnRyeSBnb3QgZnJvbSBpbnRlbF9wcGF0X2dldCgpLiBJZiB0aGUgUFBB VCBpbmRleCBvZiB0aGUKKyAqIGVudHJ5IGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCwgaXRzIHJl ZmVyZW5jZSBjb3VudCB3aWxsIGJlIGRlY3JlYXNlZC4gT25jZQorICogdGhlIHJlZmVyZW5jZSBj b3VudCBiZWNvbWVzIGludG8gemVybywgdGhlIFBQQVQgaW5kZXggYmVjb21lcyBmcmVlIGFnYWlu LgorICovCit2b2lkIGludGVsX3BwYXRfcHV0KGNvbnN0IHN0cnVjdCBpbnRlbF9wcGF0X2VudHJ5 ICplbnRyeSkKK3sKKwlzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCA9IGVudHJ5LT5wcGF0OworCXVu c2lnbmVkIGludCBpbmRleCA9IGVudHJ5IC0gcHBhdC0+ZW50cmllczsKKworCUdFTV9CVUdfT04o IXBwYXQtPm1heF9lbnRyaWVzKTsKKworCWtyZWZfcHV0KCZwcGF0LT5lbnRyaWVzW2luZGV4XS5y ZWYsIHJlbGVhc2VfcHBhdCk7Cit9CisKK3N0YXRpYyB2b2lkIGNubF9wcml2YXRlX3BhdF91cGRh dGVfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRl bF9wcGF0ICpwcGF0ID0gJmRldl9wcml2LT5wcGF0OworCWludCBpOworCisJZm9yX2VhY2hfc2V0 X2JpdChpLCBwcGF0LT5kaXJ0eSwgcHBhdC0+bWF4X2VudHJpZXMpIHsKKwkJSTkxNV9XUklURShH RU4xMF9QQVRfSU5ERVgoaSksIHBwYXQtPmVudHJpZXNbaV0udmFsdWUpOworCQljbGVhcl9iaXQo aSwgcHBhdC0+ZGlydHkpOworCX0KK30KKworc3RhdGljIHZvaWQgYmR3X3ByaXZhdGVfcGF0X3Vw ZGF0ZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0IGlu dGVsX3BwYXQgKnBwYXQgPSAmZGV2X3ByaXYtPnBwYXQ7CisJdTY0IHBhdCA9IDA7CisJaW50IGk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgcHBhdC0+bWF4X2VudHJpZXM7IGkrKykKKwkJcGF0IHw9IEdF TjhfUFBBVChpLCBwcGF0LT5lbnRyaWVzW2ldLnZhbHVlKTsKKworCWJpdG1hcF9jbGVhcihwcGF0 LT5kaXJ0eSwgMCwgcHBhdC0+bWF4X2VudHJpZXMpOworCisJSTkxNV9XUklURShHRU44X1BSSVZB VEVfUEFUX0xPLCBsb3dlcl8zMl9iaXRzKHBhdCkpOworCUk5MTVfV1JJVEUoR0VOOF9QUklWQVRF X1BBVF9ISSwgdXBwZXJfMzJfYml0cyhwYXQpKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBi ZHdfcHJpdmF0ZV9wYXRfbWF0Y2godTggc3JjLCB1OCBkc3QpCit7CisJdW5zaWduZWQgaW50IHNj b3JlID0gMDsKKworCS8qIENhY2hlIGF0dHJpYnV0ZSBoYXMgdG8gYmUgbWF0Y2hlZC4gKi8KKwlp ZiAoR0VOOF9QUEFUX0dFVF9DQShzcmMpICE9IEdFTjhfUFBBVF9HRVRfQ0EoZHN0KSkKKwkJcmV0 dXJuIDA7CisKKwlzY29yZSArPSA0OworCisJaWYgKEdFTjhfUFBBVF9HRVRfVEMoc3JjKSA9PSBH RU44X1BQQVRfR0VUX1RDKGRzdCkpCisJCXNjb3JlICs9IDI7CisKKwlpZiAoR0VOOF9QUEFUX0dF VF9BR0Uoc3JjKSA9PSBHRU44X1BQQVRfR0VUX0FHRShkc3QpKQorCQlzY29yZSArPSAxOworCisJ aWYgKHNjb3JlID09IDMpCisJCXJldHVybiBJTlRFTF9QUEFUX1BFUkZFQ1RfTUFUQ0g7CisKKwly ZXR1cm4gc2NvcmU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY2h2X3ByaXZhdGVfcGF0X21h dGNoKHU4IHNyYywgdTggZHN0KQoreworCXJldHVybiAoQ0hWX1BQQVRfR0VUX1NOT09QKHNyYykg PT0gQ0hWX1BQQVRfR0VUX1NOT09QKGRzdCkpID8KKwkJSU5URUxfUFBBVF9QRVJGRUNUX01BVENI IDogMDsKK30KKworc3RhdGljIHZvaWQgY25sX3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgaW50 ZWxfcHBhdCAqcHBhdCkKK3sKKwlwcGF0LT5tYXhfZW50cmllcyA9IDg7CisJcHBhdC0+dXBkYXRl X2h3ID0gY25sX3ByaXZhdGVfcGF0X3VwZGF0ZV9odzsKKwlwcGF0LT5tYXRjaCA9IGJkd19wcml2 YXRlX3BhdF9tYXRjaDsKKwlwcGF0LT5jbGVhcl92YWx1ZSA9IEdFTjhfUFBBVF9XQiB8IEdFTjhf UFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgzKTsKKwogCS8qIFhYWDogc3BlYyBpcyB1bmNs ZWFyIGlmIHRoaXMgaXMgc3RpbGwgbmVlZGVkIGZvciBDTkwrICovCi0JaWYgKCFVU0VTX1BQR1RU KGRldl9wcml2KSkgewotCQlJOTE1X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCgwKSwgR0VOOF9QUEFU X1VDKTsKKwlpZiAoIVVTRVNfUFBHVFQocHBhdC0+aTkxNSkpIHsKKwkJX19hbGxvY19wcGF0X2Vu dHJ5KHBwYXQsIDAsIEdFTjhfUFBBVF9VQyk7CiAJCXJldHVybjsKIAl9CiAKLQlJOTE1X1dSSVRF KEdFTjEwX1BBVF9JTkRFWCgwKSwgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFUX0xMQyk7Ci0JSTkx NV9XUklURShHRU4xMF9QQVRfSU5ERVgoMSksIEdFTjhfUFBBVF9XQyB8IEdFTjhfUFBBVF9MTENF TExDKTsKLQlJOTE1X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCgyKSwgR0VOOF9QUEFUX1dUIHwgR0VO OF9QUEFUX0xMQ0VMTEMpOwotCUk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDMpLCBHRU44X1BQ QVRfVUMpOwotCUk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDQpLCBHRU44X1BQQVRfV0IgfCBH RU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMCkpOwotCUk5MTVfV1JJVEUoR0VOMTBf UEFUX0lOREVYKDUpLCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBB VF9BR0UoMSkpOwotCUk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDYpLCBHRU44X1BQQVRfV0Ig fCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMikpOwotCUk5MTVfV1JJVEUoR0VO MTBfUEFUX0lOREVYKDcpLCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhf UFBBVF9BR0UoMykpOworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCAwLCBHRU44X1BQQVRfV0Ig fCBHRU44X1BQQVRfTExDKTsKKwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgMSwgR0VOOF9QUEFU X1dDIHwgR0VOOF9QUEFUX0xMQ0VMTEMpOworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCAyLCBH RU44X1BQQVRfV1QgfCBHRU44X1BQQVRfTExDRUxMQyk7CisJX19hbGxvY19wcGF0X2VudHJ5KHBw YXQsIDMsIEdFTjhfUFBBVF9VQyk7CisJX19hbGxvY19wcGF0X2VudHJ5KHBwYXQsIDQsIEdFTjhf UFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgwKSk7CisJX19hbGxv Y19wcGF0X2VudHJ5KHBwYXQsIDUsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwg R0VOOF9QUEFUX0FHRSgxKSk7CisJX19hbGxvY19wcGF0X2VudHJ5KHBwYXQsIDYsIEdFTjhfUFBB VF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgyKSk7CisJX19hbGxvY19w cGF0X2VudHJ5KHBwYXQsIDcsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VO OF9QUEFUX0FHRSgzKSk7CiB9CiAKIC8qIFRoZSBHR1RUIGFuZCBQUEdUVCBuZWVkIGEgcHJpdmF0 ZSBQUEFUIHNldHVwIGluIG9yZGVyIHRvIGhhbmRsZSBjYWNoZWFiaWxpdHkKICAqIGJpdHMuIFdo ZW4gdXNpbmcgYWR2YW5jZWQgY29udGV4dHMgZWFjaCBjb250ZXh0IHN0b3JlcyBpdHMgb3duIFBB VCwgYnV0CiAgKiB3cml0aW5nIHRoaXMgZGF0YSBzaG91bGRuJ3QgYmUgaGFybWZ1bCBldmVuIGlu IHRob3NlIGNhc2VzLiAqLwotc3RhdGljIHZvaWQgYmR3X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBiZHdfc2V0dXBfcHJp dmF0ZV9wcGF0KHN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0KQogewotCXU2NCBwYXQ7CisJcHBhdC0+ bWF4X2VudHJpZXMgPSA4OworCXBwYXQtPnVwZGF0ZV9odyA9IGJkd19wcml2YXRlX3BhdF91cGRh dGVfaHc7CisJcHBhdC0+bWF0Y2ggPSBiZHdfcHJpdmF0ZV9wYXRfbWF0Y2g7CisJcHBhdC0+Y2xl YXJfdmFsdWUgPSBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9B R0UoMyk7CiAKLQlwYXQgPSBHRU44X1BQQVQoMCwgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFUX0xM QykgICAgIHwgLyogZm9yIG5vcm1hbCBvYmplY3RzLCBubyBlTExDICovCi0JICAgICAgR0VOOF9Q UEFUKDEsIEdFTjhfUFBBVF9XQyB8IEdFTjhfUFBBVF9MTENFTExDKSB8IC8qIGZvciBzb21ldGhp bmcgcG9pbnRpbmcgdG8gcHRlcz8gKi8KLQkgICAgICBHRU44X1BQQVQoMiwgR0VOOF9QUEFUX1dU IHwgR0VOOF9QUEFUX0xMQ0VMTEMpIHwgLyogZm9yIHNjYW5vdXQgd2l0aCBlTExDICovCi0JICAg ICAgR0VOOF9QUEFUKDMsIEdFTjhfUFBBVF9VQykgICAgICAgICAgICAgICAgICAgICB8IC8qIFVu Y2FjaGVkIG9iamVjdHMsIG1vc3RseSBmb3Igc2Nhbm91dCAqLwotCSAgICAgIEdFTjhfUFBBVCg0 LCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMCkpIHwK LQkgICAgICBHRU44X1BQQVQoNSwgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBH RU44X1BQQVRfQUdFKDEpKSB8Ci0JICAgICAgR0VOOF9QUEFUKDYsIEdFTjhfUFBBVF9XQiB8IEdF TjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgyKSkgfAotCSAgICAgIEdFTjhfUFBBVCg3 LCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMykpOwot Ci0JaWYgKCFVU0VTX1BQR1RUKGRldl9wcml2KSkKKwlpZiAoIVVTRVNfUFBHVFQocHBhdC0+aTkx NSkpIHsKIAkJLyogU3BlYzogIkZvciBHR1RULCB0aGVyZSBpcyBOTyBwYXRfc2VsWzI6MF0gZnJv bSB0aGUgZW50cnksCiAJCSAqIHNvIFJUTCB3aWxsIGFsd2F5cyB1c2UgdGhlIHZhbHVlIGNvcnJl c3BvbmRpbmcgdG8KIAkJICogcGF0X3NlbCA9IDAwMCIuCkBAIC0yODY3LDE3ICszMDMwLDI2IEBA IHN0YXRpYyB2b2lkIGJkd19zZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQkgKiBTbyB3ZSBjYW4gc3RpbGwgaG9sZCBvbnRvIGFsbCBvdXIgYXNz dW1wdGlvbnMgd3J0IGNwdQogCQkgKiBjbGZsdXNoaW5nIG9uIExMQyBtYWNoaW5lcy4KIAkJICov Ci0JCXBhdCA9IEdFTjhfUFBBVCgwLCBHRU44X1BQQVRfVUMpOworCQlfX2FsbG9jX3BwYXRfZW50 cnkocHBhdCwgMCwgR0VOOF9QUEFUX1VDKTsKKwkJcmV0dXJuOworCX0KIAotCS8qIFhYWDogc3Bl YyBkZWZpbmVzIHRoaXMgYXMgMiBkaXN0aW5jdCByZWdpc3RlcnMuIEl0J3MgdW5jbGVhciBpZiBh IDY0YgotCSAqIHdyaXRlIHdvdWxkIHdvcmsuICovCi0JSTkxNV9XUklURShHRU44X1BSSVZBVEVf UEFUX0xPLCBwYXQpOwotCUk5MTVfV1JJVEUoR0VOOF9QUklWQVRFX1BBVF9ISSwgcGF0ID4+IDMy KTsKKwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgMCwgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFU X0xMQyk7ICAgICAgLyogZm9yIG5vcm1hbCBvYmplY3RzLCBubyBlTExDICovCisJX19hbGxvY19w cGF0X2VudHJ5KHBwYXQsIDEsIEdFTjhfUFBBVF9XQyB8IEdFTjhfUFBBVF9MTENFTExDKTsgIC8q IGZvciBzb21ldGhpbmcgcG9pbnRpbmcgdG8gcHRlcz8gKi8KKwlfX2FsbG9jX3BwYXRfZW50cnko cHBhdCwgMiwgR0VOOF9QUEFUX1dUIHwgR0VOOF9QUEFUX0xMQ0VMTEMpOyAgLyogZm9yIHNjYW5v dXQgd2l0aCBlTExDICovCisJX19hbGxvY19wcGF0X2VudHJ5KHBwYXQsIDMsIEdFTjhfUFBBVF9V Qyk7ICAgICAgICAgICAgICAgICAgICAgIC8qIFVuY2FjaGVkIG9iamVjdHMsIG1vc3RseSBmb3Ig c2Nhbm91dCAqLworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCA0LCBHRU44X1BQQVRfV0IgfCBH RU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMCkpOworCV9fYWxsb2NfcHBhdF9lbnRy eShwcGF0LCA1LCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9B R0UoMSkpOworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCA2LCBHRU44X1BQQVRfV0IgfCBHRU44 X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMikpOworCV9fYWxsb2NfcHBhdF9lbnRyeShw cGF0LCA3LCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0Uo MykpOwogfQogCi1zdGF0aWMgdm9pZCBjaHZfc2V0dXBfcHJpdmF0ZV9wcGF0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGNodl9zZXR1cF9wcml2YXRlX3Bw YXQoc3RydWN0IGludGVsX3BwYXQgKnBwYXQpCiB7Ci0JdTY0IHBhdDsKKwlwcGF0LT5tYXhfZW50 cmllcyA9IDg7CisJcHBhdC0+dXBkYXRlX2h3ID0gYmR3X3ByaXZhdGVfcGF0X3VwZGF0ZV9odzsK KwlwcGF0LT5tYXRjaCA9IGNodl9wcml2YXRlX3BhdF9tYXRjaDsKKwlwcGF0LT5jbGVhcl92YWx1 ZSA9IENIVl9QUEFUX1NOT09QOwogCiAJLyoKIAkgKiBNYXAgV0Igb24gQkRXIHRvIHNub29wZWQg b24gQ0hWLgpAQCAtMjg5NywxNyArMzA2OSwxNSBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0dXBfcHJp dmF0ZV9wcGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKiBXaGljaCBt ZWFucyB3ZSBtdXN0IHNldCB0aGUgc25vb3AgYml0IGluIFBBVCBlbnRyeSAwCiAJICogaW4gb3Jk ZXIgdG8ga2VlcCB0aGUgZ2xvYmFsIHN0YXR1cyBwYWdlIHdvcmtpbmcuCiAJICovCi0JcGF0ID0g R0VOOF9QUEFUKDAsIENIVl9QUEFUX1NOT09QKSB8Ci0JICAgICAgR0VOOF9QUEFUKDEsIDApIHwK LQkgICAgICBHRU44X1BQQVQoMiwgMCkgfAotCSAgICAgIEdFTjhfUFBBVCgzLCAwKSB8Ci0JICAg ICAgR0VOOF9QUEFUKDQsIENIVl9QUEFUX1NOT09QKSB8Ci0JICAgICAgR0VOOF9QUEFUKDUsIENI Vl9QUEFUX1NOT09QKSB8Ci0JICAgICAgR0VOOF9QUEFUKDYsIENIVl9QUEFUX1NOT09QKSB8Ci0J ICAgICAgR0VOOF9QUEFUKDcsIENIVl9QUEFUX1NOT09QKTsKIAotCUk5MTVfV1JJVEUoR0VOOF9Q UklWQVRFX1BBVF9MTywgcGF0KTsKLQlJOTE1X1dSSVRFKEdFTjhfUFJJVkFURV9QQVRfSEksIHBh dCA+PiAzMik7CisJX19hbGxvY19wcGF0X2VudHJ5KHBwYXQsIDAsIENIVl9QUEFUX1NOT09QKTsK KwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgMSwgMCk7CisJX19hbGxvY19wcGF0X2VudHJ5KHBw YXQsIDIsIDApOworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCAzLCAwKTsKKwlfX2FsbG9jX3Bw YXRfZW50cnkocHBhdCwgNCwgQ0hWX1BQQVRfU05PT1ApOworCV9fYWxsb2NfcHBhdF9lbnRyeShw cGF0LCA1LCBDSFZfUFBBVF9TTk9PUCk7CisJX19hbGxvY19wcGF0X2VudHJ5KHBwYXQsIDYsIENI Vl9QUEFUX1NOT09QKTsKKwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgNywgQ0hWX1BQQVRfU05P T1ApOwogfQogCiBzdGF0aWMgdm9pZCBnZW42X2dtY2hfcmVtb3ZlKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtKQpAQCAtMjkyMCwxMiArMzA5MCwyNyBAQCBzdGF0aWMgdm9pZCBnZW42X2dt Y2hfcmVtb3ZlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogCiBzdGF0aWMgdm9pZCBz ZXR1cF9wcml2YXRlX3BhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CisJ c3RydWN0IGludGVsX3BwYXQgKnBwYXQgPSAmZGV2X3ByaXYtPnBwYXQ7CisJaW50IGk7CisKKwlw cGF0LT5pOTE1ID0gZGV2X3ByaXY7CisKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkK LQkJY25sX3NldHVwX3ByaXZhdGVfcHBhdChkZXZfcHJpdik7CisJCWNubF9zZXR1cF9wcml2YXRl X3BwYXQocHBhdCk7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwgSVNfR0VO OV9MUChkZXZfcHJpdikpCi0JCWNodl9zZXR1cF9wcml2YXRlX3BwYXQoZGV2X3ByaXYpOworCQlj aHZfc2V0dXBfcHJpdmF0ZV9wcGF0KHBwYXQpOwogCWVsc2UKLQkJYmR3X3NldHVwX3ByaXZhdGVf cHBhdChkZXZfcHJpdik7CisJCWJkd19zZXR1cF9wcml2YXRlX3BwYXQocHBhdCk7CisKKwlHRU1f QlVHX09OKHBwYXQtPm1heF9lbnRyaWVzID4gSU5URUxfTUFYX1BQQVRfRU5UUklFUyk7CisKKwlm b3JfZWFjaF9jbGVhcl9iaXQoaSwgcHBhdC0+dXNlZCwgcHBhdC0+bWF4X2VudHJpZXMpIHsKKwkJ cHBhdC0+ZW50cmllc1tpXS52YWx1ZSA9IHBwYXQtPmNsZWFyX3ZhbHVlOworCQlwcGF0LT5lbnRy aWVzW2ldLnBwYXQgPSBwcGF0OworCQlzZXRfYml0KGksIHBwYXQtPmRpcnR5KTsKKwl9CisKKwlw cGF0LT51cGRhdGVfaHcoZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgaW50IGdlbjhfZ21jaF9wcm9i ZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQpAQCAtMzIzOSwxMyArMzQyNCwxMCBAQCB2b2lkIGk5 MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlnZ3R0LT5iYXNlLmNsb3NlZCA9IGZhbHNlOwogCiAJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOCkgewotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKLQkJCWNubF9z ZXR1cF9wcml2YXRlX3BwYXQoZGV2X3ByaXYpOwotCQllbHNlIGlmIChJU19DSEVSUllWSUVXKGRl dl9wcml2KSB8fCBJU19HRU45X0xQKGRldl9wcml2KSkKLQkJCWNodl9zZXR1cF9wcml2YXRlX3Bw YXQoZGV2X3ByaXYpOwotCQllbHNlCi0JCQliZHdfc2V0dXBfcHJpdmF0ZV9wcGF0KGRldl9wcml2 KTsKKwkJc3RydWN0IGludGVsX3BwYXQgKnBwYXQgPSAmZGV2X3ByaXYtPnBwYXQ7CiAKKwkJYml0 bWFwX3NldChwcGF0LT5kaXJ0eSwgMCwgcHBhdC0+bWF4X2VudHJpZXMpOworCQlkZXZfcHJpdi0+ cHBhdC51cGRhdGVfaHcoZGV2X3ByaXYpOwogCQlyZXR1cm47CiAJfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCmluZGV4IGQ5YTA3NmEuLmYzOTQzYjYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCkBAIC0xNDMsNiArMTQzLDExIEBAIHR5cGVkZWYgdTY0IGdlbjhfcHBn dHRfcG1sNGVfdDsKICNkZWZpbmUgR0VOOF9QUEFUX0VMTENfT1ZFUlJJREUJCSgwPDwyKQogI2Rl ZmluZSBHRU44X1BQQVQoaSwgeCkJCQkoKHU2NCkoeCkgPDwgKChpKSAqIDgpKQogCisjZGVmaW5l IEdFTjhfUFBBVF9HRVRfQ0EoeCkgKCh4KSAmIDMpCisjZGVmaW5lIEdFTjhfUFBBVF9HRVRfVEMo eCkgKCh4KSAmICgzIDw8IDIpKQorI2RlZmluZSBHRU44X1BQQVRfR0VUX0FHRSh4KSAoKHgpICYg KDMgPDwgNCkpCisjZGVmaW5lIENIVl9QUEFUX0dFVF9TTk9PUCh4KSAoKHgpICYgKDEgPDwgNikp CisKIHN0cnVjdCBzZ190YWJsZTsKIAogc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gewpAQCAt NTM2LDYgKzU0MSwzNyBAQCBpOTE1X3ZtX3RvX2dndHQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCiAJcmV0dXJuIGNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfZ2d0dCwgYmFzZSk7 CiB9CiAKKyNkZWZpbmUgSU5URUxfTUFYX1BQQVRfRU5UUklFUyA4CisjZGVmaW5lIElOVEVMX1BQ QVRfUEVSRkVDVF9NQVRDSCAofjBVKQorCitzdHJ1Y3QgaW50ZWxfcHBhdDsKKworc3RydWN0IGlu dGVsX3BwYXRfZW50cnkgeworCXN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0OworCXN0cnVjdCBrcmVm IHJlZjsKKwl1OCB2YWx1ZTsKK307CisKK3N0cnVjdCBpbnRlbF9wcGF0IHsKKwlzdHJ1Y3QgaW50 ZWxfcHBhdF9lbnRyeSBlbnRyaWVzW0lOVEVMX01BWF9QUEFUX0VOVFJJRVNdOworCURFQ0xBUkVf QklUTUFQKHVzZWQsIElOVEVMX01BWF9QUEFUX0VOVFJJRVMpOworCURFQ0xBUkVfQklUTUFQKGRp cnR5LCBJTlRFTF9NQVhfUFBBVF9FTlRSSUVTKTsKKwl1bnNpZ25lZCBpbnQgbWF4X2VudHJpZXM7 CisJdTggY2xlYXJfdmFsdWU7CisJLyoKKwkgKiBSZXR1cm4gYSBzY29yZSB0byBzaG93IGhvdyB0 d28gUFBBVCB2YWx1ZXMgbWF0Y2gsCisJICogYSBJTlRFTF9QUEFUX1BFUkZFQ1RfTUFUQ0ggaW5k aWNhdGVzIGEgcGVyZmVjdCBtYXRjaAorCSAqLworCXVuc2lnbmVkIGludCAoKm1hdGNoKSh1OCBz cmMsIHU4IGRzdCk7CisJdm9pZCAoKnVwZGF0ZV9odykoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpOworCisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cit9OworCitjb25zdCBz dHJ1Y3QgaW50ZWxfcHBhdF9lbnRyeSAqCitpbnRlbF9wcGF0X2dldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgdTggdmFsdWUpOwordm9pZCBpbnRlbF9wcGF0X3B1dChjb25zdCBzdHJ1 Y3QgaW50ZWxfcHBhdF9lbnRyeSAqZW50cnkpOworCiBpbnQgaTkxNV9nZW1faW5pdF9hbGlhc2lu Z19wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiB2b2lkIGk5MTVfZ2VtX2Zp bmlfYWxpYXNpbmdfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogCi0tIAoy LjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==