From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFCv6 2/2] drm/i915: Introduce private PAT management Date: Wed, 30 Aug 2017 02:14:08 +0800 Message-ID: <1504030448-31973-2-git-send-email-zhi.a.wang@intel.com> References: <1504030448-31973-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: In-Reply-To: <1504030448-31973-1-git-send-email-zhi.a.wang@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, intel-gvt-dev@lists.freedesktop.org Cc: Rodrigo Vivi , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org VGhlIHByaXZhdGUgUEFUIG1hbmFnZW1lbnQgaXMgdG8gc3VwcG9ydCBQUEFUIGVudHJ5IG1hbmlw dWxhdGlvbi4gVHdvCkFQSXMgYXJlIGludHJvZHVjZWQgZm9yIGR5bmFtaWNhbGx5IG1hbmFnaW5n IFBQQVQgZW50cmllczogaW50ZWxfcHBhdF9nZXQKYW5kIGludGVsX3BwYXRfcHV0LgoKaW50ZWxf cHBhdF9nZXQgd2lsbCBzZWFyY2ggZm9yIGFuIGV4aXN0aW5nIFBQQVQgZW50cnkgd2hpY2ggcGVy ZmVjdGx5Cm1hdGNoZXMgdGhlIHJlcXVpcmVkIFBQQVQgdmFsdWUuIElmIG5vdCwgaXQgd2lsbCB0 cnkgdG8gYWxsb2NhdGUgb3IKcmV0dXJuIGEgcGFydGlhbGx5IG1hdGNoZWQgUFBBVCBlbnRyeSBp ZiB0aGVyZSBpcyBhbnkgYXZhaWxhYmxlIFBQQVQKaW5kZXhlcyBvciBub3QuCgppbnRlbF9wcGF0 X3B1dCB3aWxsIHB1dCBiYWNrIHRoZSBQUEFUIGVudHJ5IHdoaWNoIGNvbWVzIGZyb20KaW50ZWxf cHBhdF9nZXQuIElmIGl0J3MgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCB0aGUgcmVmZXJlbmNlIGNv dW50IHdpbGwKYmUgZGVjcmVhc2VkLiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IHR1cm5zIGludG8g emVybywgdGhlIFBQQVQgaW5kZXggaXMKZnJlZWQgYWdhaW4uCgpCZXNpZGVzLCBhbm90aGVyIHR3 byBjYWxsYmFja3MgYXJlIGludHJvZHVjZWQgdG8gc3VwcG9ydCB0aGUgcHJpdmF0ZSBQQVQKbWFu YWdlbWVudCBmcmFtZXdvcmsuIE9uZSBpcyBwcGF0LT51cGRhdGVfaHcoKSwgd2hpY2ggd3JpdGVz IHRoZSBQUEFUCmNvbmZpZ3VyYXRpb25zIGluIHBwYXQtPmVudHJpZXMgaW50byBIVy4gQW5vdGhl ciBvbmUgaXMgcHBhdC0+bWF0Y2gsIHdoaWNoCndpbGwgcmV0dXJuIGEgc2NvcmUgdG8gc2hvdyBo b3cgdHdvIFBQQVQgdmFsdWVzIG1hdGNoIHdpdGggZWFjaCBvdGhlci4KCnY2OgoKLSBBZGRyZXNz IGFsbCBjb21tZW50cyBmcm9tIENocmlzOgpodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2lu dGVsLWdmeC9tc2cxMzY4NTAuaHRtbAoKLSBBZGRyZXNzIGFsbCBjb21tZW50cyBmcm9tIEpvb25h czoKaHR0cDovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9pbnRlbC1nZngvbXNnMTM2ODQ1Lmh0bWwK CnY1OgoKLSBBZGQgY2hlY2sgYW5kIHdhcm5uaW5ncyBmb3IgdGhvc2UgcGxhdGZvcm1zIHdoaWNo IGRvbid0IGhhdmUgUFBBVC4KCnYzOgoKLSBJbnRyb2R1Y2UgZGlydHkgYml0bWFwIGZvciBQUEFU IHJlZ2lzdGVycy4gKENocmlzKQotIENoYW5nZSB0aGUgbmFtZSBvZiB0aGUgcG9pbnRlciAiZGV2 X3ByaXYiIHRvICJpOTE1Ii4gKENocmlzKQotIGludGVsX3BwYXRfe2dldCwgcHV0fSByZXR1cm5z L3Rha2VzIGEgY29uc3QgaW50ZWxfcHBhdF9lbnRyeSAqLiAoQ2hyaXMpCgp2MjoKCi0gQVBJIHJl LWRlc2lnbi4gKENocmlzKQoKQ2M6IEJlbiBXaWRhd3NreSA8YmVuamFtaW4ud2lkYXdza3lAaW50 ZWwuY29tPgpDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpoaSBXYW5n IDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDI3 MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5oIHwgIDM2ICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI2MiBpbnNl cnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA3 NTg3ZWY1Li41ZmZkZTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIzMTIsNiArMjMx Miw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAlERUNMQVJFX0hBU0hUQUJMRShtbV9z dHJ1Y3RzLCA3KTsKIAlzdHJ1Y3QgbXV0ZXggbW1fbG9jazsKIAorCXN0cnVjdCBpbnRlbF9wcGF0 IHBwYXQ7CisKIAkvKiBLZXJuZWwgTW9kZXNldHRpbmcgKi8KIAogCXN0cnVjdCBpbnRlbF9jcnRj ICpwbGFuZV90b19jcnRjX21hcHBpbmdbSTkxNV9NQVhfUElQRVNdOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwppbmRleCBiNzRmYTlkLi4zMTA2MTQyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwpAQCAtMjgxNiw0MSArMjgxNiwyMDAgQEAgc3RhdGljIGludCBnZ3R0X3By b2JlX2NvbW1vbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LCB1NjQgc2l6ZSkKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIHZvaWQgY25sX3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgc3RydWN0IGludGVsX3BwYXRfZW50cnkgKgorX19h bGxvY19wcGF0X2VudHJ5KHN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0LCB1bnNpZ25lZCBpbnQgaW5k ZXgsIHU4IHZhbHVlKQogeworCXN0cnVjdCBpbnRlbF9wcGF0X2VudHJ5ICplbnRyeSA9ICZwcGF0 LT5lbnRyaWVzW2luZGV4XTsKKworCUdFTV9CVUdfT04oaW5kZXggPj0gcHBhdC0+bWF4X2VudHJp ZXMpOworCUdFTV9CVUdfT04odGVzdF9iaXQoaW5kZXgsIHBwYXQtPnVzZWQpKTsKKworCWVudHJ5 LT5wcGF0ID0gcHBhdDsKKwllbnRyeS0+dmFsdWUgPSB2YWx1ZTsKKwlrcmVmX2luaXQoJmVudHJ5 LT5yZWYpOworCXNldF9iaXQoaW5kZXgsIHBwYXQtPnVzZWQpOworCXNldF9iaXQoaW5kZXgsIHBw YXQtPmRpcnR5KTsKKworCXJldHVybiBlbnRyeTsKK30KKworc3RhdGljIHZvaWQgX19mcmVlX3Bw YXRfZW50cnkoc3RydWN0IGludGVsX3BwYXRfZW50cnkgKmVudHJ5KQoreworCXN0cnVjdCBpbnRl bF9wcGF0ICpwcGF0ID0gZW50cnktPnBwYXQ7CisJdW5zaWduZWQgaW50IGluZGV4ID0gZW50cnkg LSBwcGF0LT5lbnRyaWVzOworCisJR0VNX0JVR19PTihpbmRleCA+PSBwcGF0LT5tYXhfZW50cmll cyk7CisJR0VNX0JVR19PTighdGVzdF9iaXQoaW5kZXgsIHBwYXQtPnVzZWQpKTsKKworCWVudHJ5 LT52YWx1ZSA9IHBwYXQtPmNsZWFyX3ZhbHVlOworCWNsZWFyX2JpdChpbmRleCwgcHBhdC0+dXNl ZCk7CisJc2V0X2JpdChpbmRleCwgcHBhdC0+ZGlydHkpOworfQorCisvKioKKyAqIGludGVsX3Bw YXRfZ2V0IC0gZ2V0IGEgdXNhYmxlIFBQQVQgZW50cnkKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBp bnN0YW5jZQorICogQHZhbHVlOiB0aGUgUFBBVCB2YWx1ZSByZXF1aXJlZCBieSB0aGUgY2FsbGVy CisgKgorICogVGhlIGZ1bmN0aW9uIHRyaWVzIHRvIHNlYXJjaCBpZiB0aGVyZSBpcyBhbiBleGlz dGluZyBQUEFUIGVudHJ5IHdoaWNoCisgKiBtYXRjaGVzIHdpdGggdGhlIHJlcXVpcmVkIHZhbHVl LiBJZiBwZXJmZWN0bHkgbWF0Y2hlZCwgdGhlIGV4aXN0aW5nIFBQQVQKKyAqIGVudHJ5IHdpbGwg YmUgdXNlZC4gSWYgb25seSBwYXJ0aWFsbHkgbWF0Y2hlZCwgaXQgd2lsbCB0cnkgdG8gY2hlY2sg aWYKKyAqIHRoZXJlIGlzIGFueSBhdmFpbGFibGUgUFBBVCBpbmRleC4gSWYgeWVzLCBpdCB3aWxs IGFsbG9jYXRlIGEgbmV3IFBQQVQKKyAqIGluZGV4IGZvciB0aGUgcmVxdWlyZWQgZW50cnkgYW5k IHVwZGF0ZSB0aGUgSFcuIElmIG5vdCwgdGhlIHBhcnRpYWxseQorICogbWF0Y2hlZCBlbnRyeSB3 aWxsIGJlIHVzZWQuCisgKi8KK2NvbnN0IHN0cnVjdCBpbnRlbF9wcGF0X2VudHJ5ICoKK2ludGVs X3BwYXRfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCB2YWx1ZSkKK3sKKwlz dHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCA9ICZpOTE1LT5wcGF0OworCXN0cnVjdCBpbnRlbF9wcGF0 X2VudHJ5ICplbnRyeTsKKwl1bnNpZ25lZCBpbnQgc2Nhbm5lZCwgYmVzdF9zY29yZTsKKwlpbnQg aTsKKworCUdFTV9CVUdfT04oIXBwYXQtPm1heF9lbnRyaWVzKTsKKworCXNjYW5uZWQgPSBiZXN0 X3Njb3JlID0gMDsKKworCWZvcl9lYWNoX3NldF9iaXQoaSwgcHBhdC0+dXNlZCwgcHBhdC0+bWF4 X2VudHJpZXMpIHsKKwkJdW5zaWduZWQgaW50IHNjb3JlOworCisJCWVudHJ5ID0gJnBwYXQtPmVu dHJpZXNbaV07CisJCXNjb3JlID0gcHBhdC0+bWF0Y2goZW50cnktPnZhbHVlLCB2YWx1ZSk7CisJ CWlmIChzY29yZSA+IGJlc3Rfc2NvcmUpIHsKKwkJCWlmIChzY29yZSA9PSBJTlRFTF9QUEFUX1BF UkZFQ1RfTUFUQ0gpIHsKKwkJCQlrcmVmX2dldCgmZW50cnktPnJlZik7CisJCQkJcmV0dXJuIGVu dHJ5OworCQkJfQorCQkJYmVzdF9zY29yZSA9IHNjb3JlOworCQl9CisJCXNjYW5uZWQrKzsKKwl9 CisKKwlpZiAoc2Nhbm5lZCA9PSBwcGF0LT5tYXhfZW50cmllcykgeworCQlpZiAoIWJlc3Rfc2Nv cmUpCisJCQlyZXR1cm4gRVJSX1BUUigtRU5PU1BDKTsKKworCQlrcmVmX2dldCgmZW50cnktPnJl Zik7CisJCXJldHVybiBlbnRyeTsKKwl9CisKKwlpID0gZmluZF9maXJzdF96ZXJvX2JpdChwcGF0 LT51c2VkLCBwcGF0LT5tYXhfZW50cmllcyk7CisJZW50cnkgPSBfX2FsbG9jX3BwYXRfZW50cnko cHBhdCwgaSwgdmFsdWUpOworCXBwYXQtPnVwZGF0ZV9odyhpOTE1KTsKKwlyZXR1cm4gZW50cnk7 Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VfcHBhdChzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlz dHJ1Y3QgaW50ZWxfcHBhdF9lbnRyeSAqZW50cnkgPQorCQljb250YWluZXJfb2Yoa3JlZiwgc3Ry dWN0IGludGVsX3BwYXRfZW50cnksIHJlZik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBlbnRyeS0+cHBhdC0+aTkxNTsKKworCV9fZnJlZV9wcGF0X2VudHJ5KGVudHJ5KTsKKwll bnRyeS0+cHBhdC0+dXBkYXRlX2h3KGk5MTUpOworfQorCisvKioKKyAqIGludGVsX3BwYXRfcHV0 IC0gcHV0IGJhY2sgdGhlIFBQQVQgZW50cnkgZ290IGZyb20gaW50ZWxfcHBhdF9nZXQoKQorICog QGVudHJ5OiBhbiBpbnRlbCBQUEFUIGVudHJ5CisgKgorICogUHV0IGJhY2sgdGhlIFBQQVQgZW50 cnkgZ290IGZyb20gaW50ZWxfcHBhdF9nZXQoKS4gSWYgdGhlIFBQQVQgaW5kZXggb2YgdGhlCisg KiBlbnRyeSBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQsIGl0cyByZWZlcmVuY2UgY291bnQgd2ls bCBiZSBkZWNyZWFzZWQuIE9uY2UKKyAqIHRoZSByZWZlcmVuY2UgY291bnQgYmVjb21lcyBpbnRv IHplcm8sIHRoZSBQUEFUIGluZGV4IGJlY29tZXMgZnJlZSBhZ2Fpbi4KKyAqLwordm9pZCBpbnRl bF9wcGF0X3B1dChjb25zdCBzdHJ1Y3QgaW50ZWxfcHBhdF9lbnRyeSAqZW50cnkpCit7CisJc3Ry dWN0IGludGVsX3BwYXQgKnBwYXQgPSBlbnRyeS0+cHBhdDsKKwl1bnNpZ25lZCBpbnQgaW5kZXgg PSBlbnRyeSAtIHBwYXQtPmVudHJpZXM7CisKKwlHRU1fQlVHX09OKCFwcGF0LT5tYXhfZW50cmll cyk7CisKKwlrcmVmX3B1dCgmcHBhdC0+ZW50cmllc1tpbmRleF0ucmVmLCByZWxlYXNlX3BwYXQp OworfQorCitzdGF0aWMgdm9pZCBjbmxfcHJpdmF0ZV9wYXRfdXBkYXRlX2h3KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCA9ICZk ZXZfcHJpdi0+cHBhdDsKKwlpbnQgaTsKKworCWZvcl9lYWNoX3NldF9iaXQoaSwgcHBhdC0+ZGly dHksIHBwYXQtPm1heF9lbnRyaWVzKSB7CisJCUk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKGkp LCBwcGF0LT5lbnRyaWVzW2ldLnZhbHVlKTsKKwkJY2xlYXJfYml0KGksIHBwYXQtPmRpcnR5KTsK Kwl9Cit9CisKK3N0YXRpYyB2b2lkIGJkd19wcml2YXRlX3BhdF91cGRhdGVfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0ID0g JmRldl9wcml2LT5wcGF0OworCXU2NCBwYXQgPSAwOworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IHBwYXQtPm1heF9lbnRyaWVzOyBpKyspCisJCXBhdCB8PSBHRU44X1BQQVQoaSwgcHBhdC0+ ZW50cmllc1tpXS52YWx1ZSk7CisKKwliaXRtYXBfY2xlYXIocHBhdC0+ZGlydHksIDAsIHBwYXQt Pm1heF9lbnRyaWVzKTsKKworCUk5MTVfV1JJVEUoR0VOOF9QUklWQVRFX1BBVF9MTywgbG93ZXJf MzJfYml0cyhwYXQpKTsKKwlJOTE1X1dSSVRFKEdFTjhfUFJJVkFURV9QQVRfSEksIHVwcGVyXzMy X2JpdHMocGF0KSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYmR3X3ByaXZhdGVfcGF0X21h dGNoKHU4IHNyYywgdTggZHN0KQoreworCXVuc2lnbmVkIGludCBzY29yZSA9IDA7CisKKwkvKiBD YWNoZSBhdHRyaWJ1dGUgaGFzIHRvIGJlIG1hdGNoZWQuICovCisJaWYgKEdFTjhfUFBBVF9HRVRf Q0Eoc3JjKSAhPSBHRU44X1BQQVRfR0VUX0NBKGRzdCkpCisJCXJldHVybiAwOworCisJaWYgKEdF TjhfUFBBVF9HRVRfVEMoc3JjKSA9PSBHRU44X1BQQVRfR0VUX1RDKGRzdCkpCisJCXNjb3JlICs9 IDI7CisKKwlpZihHRU44X1BQQVRfR0VUX0FHRShzcmMpID09IEdFTjhfUFBBVF9HRVRfQUdFKGRz dCkpCisJCXNjb3JlICs9IDE7CisKKwlpZiAoc2NvcmUgPT0gMykKKwkJcmV0dXJuIElOVEVMX1BQ QVRfUEVSRkVDVF9NQVRDSDsKKworCXJldHVybiBzY29yZTsKK30KKworc3RhdGljIHVuc2lnbmVk IGludCBjaHZfcHJpdmF0ZV9wYXRfbWF0Y2godTggc3JjLCB1OCBkc3QpCit7CisJcmV0dXJuIChD SFZfUFBBVF9HRVRfU05PT1Aoc3JjKSA9PSBDSFZfUFBBVF9HRVRfU05PT1AoZHN0KSkgPworCQlJ TlRFTF9QUEFUX1BFUkZFQ1RfTUFUQ0ggOiAwOworfQorCitzdGF0aWMgdm9pZCBjbmxfc2V0dXBf cHJpdmF0ZV9wcGF0KHN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0KQoreworCXBwYXQtPm1heF9lbnRy aWVzID0gODsKKwlwcGF0LT51cGRhdGVfaHcgPSBjbmxfcHJpdmF0ZV9wYXRfdXBkYXRlX2h3Owor CXBwYXQtPm1hdGNoID0gYmR3X3ByaXZhdGVfcGF0X21hdGNoOworCXBwYXQtPmNsZWFyX3ZhbHVl ID0gR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRfQUdFKDMpOworCiAJLyogWFhYOiBzcGVj IGlzIHVuY2xlYXIgaWYgdGhpcyBpcyBzdGlsbCBuZWVkZWQgZm9yIENOTCsgKi8KLQlpZiAoIVVT RVNfUFBHVFQoZGV2X3ByaXYpKSB7Ci0JCUk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDApLCBH RU44X1BQQVRfVUMpOworCWlmICghVVNFU19QUEdUVChwcGF0LT5pOTE1KSkgeworCQlfX2FsbG9j X3BwYXRfZW50cnkocHBhdCwgUFBBVF9DQUNIRURfUERFX0lOREVYLCBHRU44X1BQQVRfVUMpOwog CQlyZXR1cm47CiAJfQogCi0JSTkxNV9XUklURShHRU4xMF9QQVRfSU5ERVgoMCksIEdFTjhfUFBB VF9XQiB8IEdFTjhfUFBBVF9MTEMpOwotCUk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDEpLCBH RU44X1BQQVRfV0MgfCBHRU44X1BQQVRfTExDRUxMQyk7Ci0JSTkxNV9XUklURShHRU4xMF9QQVRf SU5ERVgoMiksIEdFTjhfUFBBVF9XVCB8IEdFTjhfUFBBVF9MTENFTExDKTsKLQlJOTE1X1dSSVRF KEdFTjEwX1BBVF9JTkRFWCgzKSwgR0VOOF9QUEFUX1VDKTsKLQlJOTE1X1dSSVRFKEdFTjEwX1BB VF9JTkRFWCg0KSwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRfQUdFKDApKTsKLQlJOTE1 X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCg1KSwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRf QUdFKDEpKTsKLQlJOTE1X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCg2KSwgR0VOOF9QUEFUX0xMQ0VM TEMgfCBHRU44X1BQQVRfQUdFKDIpKTsKLQlJOTE1X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCg3KSwg R0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRfQUdFKDMpKTsKKwkvKiBTZWUgZ2VuOF9wdGVf ZW5jb2RlKCkgZm9yIHRoZSBtYXBwaW5nIGZyb20gY2FjaGUtbGV2ZWwgdG8gUFBBVCAqLworCV9f YWxsb2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX0NBQ0hFRF9QREVfSU5ERVgsIEdFTjhfUFBBVF9X QiB8IEdFTjhfUFBBVF9MTEMpOworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX0RJU1BM QVlfRUxMQ19JTkRFWCwgR0VOOF9QUEFUX1dUIHwgR0VOOF9QUEFUX0xMQ0VMTEMpOworCV9fYWxs b2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX1VOQ0FDSEVEX0lOREVYLCBHRU44X1BQQVRfVUMpOwor CV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX0NBQ0hFRF9JTkRFWCwgR0VOOF9QUEFUX0xM Q0VMTEMgfCBHRU44X1BQQVRfQUdFKDApKTsKIH0KIAogLyogVGhlIEdHVFQgYW5kIFBQR1RUIG5l ZWQgYSBwcml2YXRlIFBQQVQgc2V0dXAgaW4gb3JkZXIgdG8gaGFuZGxlIGNhY2hlYWJpbGl0eQog ICogYml0cy4gV2hlbiB1c2luZyBhZHZhbmNlZCBjb250ZXh0cyBlYWNoIGNvbnRleHQgc3RvcmVz IGl0cyBvd24gUEFULCBidXQKICAqIHdyaXRpbmcgdGhpcyBkYXRhIHNob3VsZG4ndCBiZSBoYXJt ZnVsIGV2ZW4gaW4gdGhvc2UgY2FzZXMuICovCi1zdGF0aWMgdm9pZCBiZHdfc2V0dXBfcHJpdmF0 ZV9wcGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGJk d19zZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGludGVsX3BwYXQgKnBwYXQpCiB7Ci0JdTY0IHBh dDsKKwlwcGF0LT5tYXhfZW50cmllcyA9IDg7CisJcHBhdC0+dXBkYXRlX2h3ID0gYmR3X3ByaXZh dGVfcGF0X3VwZGF0ZV9odzsKKwlwcGF0LT5tYXRjaCA9IGJkd19wcml2YXRlX3BhdF9tYXRjaDsK KwlwcGF0LT5jbGVhcl92YWx1ZSA9IEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwg R0VOOF9QUEFUX0FHRSgzKTsKIAotCXBhdCA9IEdFTjhfUFBBVCgwLCBHRU44X1BQQVRfV0IgfCBH RU44X1BQQVRfTExDKSAgICAgfCAvKiBmb3Igbm9ybWFsIG9iamVjdHMsIG5vIGVMTEMgKi8KLQkg ICAgICBHRU44X1BQQVQoMSwgR0VOOF9QUEFUX1dDIHwgR0VOOF9QUEFUX0xMQ0VMTEMpIHwgLyog Zm9yIHNvbWV0aGluZyBwb2ludGluZyB0byBwdGVzPyAqLwotCSAgICAgIEdFTjhfUFBBVCgyLCBH RU44X1BQQVRfV1QgfCBHRU44X1BQQVRfTExDRUxMQykgfCAvKiBmb3Igc2Nhbm91dCB3aXRoIGVM TEMgKi8KLQkgICAgICBHRU44X1BQQVQoMywgR0VOOF9QUEFUX1VDKSAgICAgICAgICAgICAgICAg ICAgIHwgLyogVW5jYWNoZWQgb2JqZWN0cywgbW9zdGx5IGZvciBzY2Fub3V0ICovCi0JICAgICAg R0VOOF9QUEFUKDQsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFU X0FHRSgwKSkgfAotCSAgICAgIEdFTjhfUFBBVCg1LCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRf TExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMSkpIHwKLQkgICAgICBHRU44X1BQQVQoNiwgR0VOOF9Q UEFUX1dCIHwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRfQUdFKDIpKSB8Ci0JICAgICAg R0VOOF9QUEFUKDcsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFU X0FHRSgzKSk7Ci0KLQlpZiAoIVVTRVNfUFBHVFQoZGV2X3ByaXYpKQorCWlmICghVVNFU19QUEdU VChwcGF0LT5pOTE1KSkgewogCQkvKiBTcGVjOiAiRm9yIEdHVFQsIHRoZXJlIGlzIE5PIHBhdF9z ZWxbMjowXSBmcm9tIHRoZSBlbnRyeSwKIAkJICogc28gUlRMIHdpbGwgYWx3YXlzIHVzZSB0aGUg dmFsdWUgY29ycmVzcG9uZGluZyB0bwogCQkgKiBwYXRfc2VsID0gMDAwIi4KQEAgLTI4NjQsMTcg KzMwMjMsMjYgQEAgc3RhdGljIHZvaWQgYmR3X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqIFNvIHdlIGNhbiBzdGlsbCBob2xkIG9udG8g YWxsIG91ciBhc3N1bXB0aW9ucyB3cnQgY3B1CiAJCSAqIGNsZmx1c2hpbmcgb24gTExDIG1hY2hp bmVzLgogCQkgKi8KLQkJcGF0ID0gR0VOOF9QUEFUKDAsIEdFTjhfUFBBVF9VQyk7CisJCV9fYWxs b2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX0NBQ0hFRF9QREVfSU5ERVgsIEdFTjhfUFBBVF9VQyk7 CisJCXJldHVybjsKKwl9CiAKLQkvKiBYWFg6IHNwZWMgZGVmaW5lcyB0aGlzIGFzIDIgZGlzdGlu Y3QgcmVnaXN0ZXJzLiBJdCdzIHVuY2xlYXIgaWYgYSA2NGIKLQkgKiB3cml0ZSB3b3VsZCB3b3Jr LiAqLwotCUk5MTVfV1JJVEUoR0VOOF9QUklWQVRFX1BBVF9MTywgcGF0KTsKLQlJOTE1X1dSSVRF KEdFTjhfUFJJVkFURV9QQVRfSEksIHBhdCA+PiAzMik7CisJLyogU2VlIGdlbjhfcHRlX2VuY29k ZSgpIGZvciB0aGUgbWFwcGluZyBmcm9tIGNhY2hlLWxldmVsIHRvIFBQQVQgKi8KKwkvKiBmb3Ig bm9ybWFsIG9iamVjdHMsIG5vIGVMTEMgKi8KKwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgUFBB VF9DQUNIRURfUERFX0lOREVYLCBHRU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDKTsKKwkvKiBm b3Igc2Nhbm91dCB3aXRoIGVMTEMgKi8KKwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgUFBBVF9E SVNQTEFZX0VMTENfSU5ERVgsIEdFTjhfUFBBVF9XVCB8IEdFTjhfUFBBVF9MTENFTExDKTsKKwkv KiBVbmNhY2hlZCBvYmplY3RzLCBtb3N0bHkgZm9yIHNjYW5vdXQgKi8KKwlfX2FsbG9jX3BwYXRf ZW50cnkocHBhdCwgUFBBVF9VTkNBQ0hFRF9JTkRFWCwgR0VOOF9QUEFUX1VDKTsKKwlfX2FsbG9j X3BwYXRfZW50cnkocHBhdCwgUFBBVF9DQUNIRURfSU5ERVgsIEdFTjhfUFBBVF9XQiB8IEdFTjhf UFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgwKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNodl9z ZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3Rh dGljIHZvaWQgY2h2X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCkK IHsKLQl1NjQgcGF0OworCXBwYXQtPm1heF9lbnRyaWVzID0gODsKKwlwcGF0LT51cGRhdGVfaHcg PSBiZHdfcHJpdmF0ZV9wYXRfdXBkYXRlX2h3OworCXBwYXQtPm1hdGNoID0gY2h2X3ByaXZhdGVf cGF0X21hdGNoOworCXBwYXQtPmNsZWFyX3ZhbHVlID0gQ0hWX1BQQVRfU05PT1A7CiAKIAkvKgog CSAqIE1hcCBXQiBvbiBCRFcgdG8gc25vb3BlZCBvbiBDSFYuCkBAIC0yODk0LDE3ICszMDYyLDEy IEBAIHN0YXRpYyB2b2lkIGNodl9zZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCSAqIFdoaWNoIG1lYW5zIHdlIG11c3Qgc2V0IHRoZSBzbm9vcCBi aXQgaW4gUEFUIGVudHJ5IDAKIAkgKiBpbiBvcmRlciB0byBrZWVwIHRoZSBnbG9iYWwgc3RhdHVz IHBhZ2Ugd29ya2luZy4KIAkgKi8KLQlwYXQgPSBHRU44X1BQQVQoMCwgQ0hWX1BQQVRfU05PT1Ap IHwKLQkgICAgICBHRU44X1BQQVQoMSwgMCkgfAotCSAgICAgIEdFTjhfUFBBVCgyLCAwKSB8Ci0J ICAgICAgR0VOOF9QUEFUKDMsIDApIHwKLQkgICAgICBHRU44X1BQQVQoNCwgQ0hWX1BQQVRfU05P T1ApIHwKLQkgICAgICBHRU44X1BQQVQoNSwgQ0hWX1BQQVRfU05PT1ApIHwKLQkgICAgICBHRU44 X1BQQVQoNiwgQ0hWX1BQQVRfU05PT1ApIHwKLQkgICAgICBHRU44X1BQQVQoNywgQ0hWX1BQQVRf U05PT1ApOwogCi0JSTkxNV9XUklURShHRU44X1BSSVZBVEVfUEFUX0xPLCBwYXQpOwotCUk5MTVf V1JJVEUoR0VOOF9QUklWQVRFX1BBVF9ISSwgcGF0ID4+IDMyKTsKKwkvKiBTZWUgZ2VuOF9wdGVf ZW5jb2RlKCkgZm9yIHRoZSBtYXBwaW5nIGZyb20gY2FjaGUtbGV2ZWwgdG8gUFBBVCAqLworCV9f YWxsb2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX0NBQ0hFRF9QREVfSU5ERVgsIENIVl9QUEFUX1NO T09QKTsKKwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgUFBBVF9ESVNQTEFZX0VMTENfSU5ERVgs IDApOworCV9fYWxsb2NfcHBhdF9lbnRyeShwcGF0LCBQUEFUX1VOQ0FDSEVEX0lOREVYLCAwKTsK KwlfX2FsbG9jX3BwYXRfZW50cnkocHBhdCwgUFBBVF9DQUNIRURfSU5ERVgsIENIVl9QUEFUX1NO T09QKTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuNl9nbWNoX3JlbW92ZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSkKQEAgLTI5MTcsMTIgKzMwODAsMjcgQEAgc3RhdGljIHZvaWQgZ2VuNl9n bWNoX3JlbW92ZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIAogc3RhdGljIHZvaWQg c2V0dXBfcHJpdmF0ZV9wYXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewor CXN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0ID0gJmRldl9wcml2LT5wcGF0OworCWludCBpOworCisJ cHBhdC0+aTkxNSA9IGRldl9wcml2OworCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAp Ci0JCWNubF9zZXR1cF9wcml2YXRlX3BwYXQoZGV2X3ByaXYpOworCQljbmxfc2V0dXBfcHJpdmF0 ZV9wcGF0KHBwYXQpOwogCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0dF TjlfTFAoZGV2X3ByaXYpKQotCQljaHZfc2V0dXBfcHJpdmF0ZV9wcGF0KGRldl9wcml2KTsKKwkJ Y2h2X3NldHVwX3ByaXZhdGVfcHBhdChwcGF0KTsKIAllbHNlCi0JCWJkd19zZXR1cF9wcml2YXRl X3BwYXQoZGV2X3ByaXYpOworCQliZHdfc2V0dXBfcHJpdmF0ZV9wcGF0KHBwYXQpOworCisJR0VN X0JVR19PTihwcGF0LT5tYXhfZW50cmllcyA+IElOVEVMX01BWF9QUEFUX0VOVFJJRVMpOworCisJ Zm9yX2VhY2hfY2xlYXJfYml0KGksIHBwYXQtPnVzZWQsIHBwYXQtPm1heF9lbnRyaWVzKSB7CisJ CXBwYXQtPmVudHJpZXNbaV0udmFsdWUgPSBwcGF0LT5jbGVhcl92YWx1ZTsKKwkJcHBhdC0+ZW50 cmllc1tpXS5wcGF0ID0gcHBhdDsKKwkJc2V0X2JpdChpLCBwcGF0LT5kaXJ0eSk7CisJfQorCisJ cHBhdC0+dXBkYXRlX2h3KGRldl9wcml2KTsKIH0KIAogc3RhdGljIGludCBnZW44X2dtY2hfcHJv YmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKQEAgLTMyMzYsMTMgKzM0MTQsMTAgQEAgdm9pZCBp OTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJZ2d0dC0+YmFzZS5jbG9zZWQgPSBmYWxzZTsKIAogCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDgpIHsKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCi0JCQljbmxf c2V0dXBfcHJpdmF0ZV9wcGF0KGRldl9wcml2KTsKLQkJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikgfHwgSVNfR0VOOV9MUChkZXZfcHJpdikpCi0JCQljaHZfc2V0dXBfcHJpdmF0ZV9w cGF0KGRldl9wcml2KTsKLQkJZWxzZQotCQkJYmR3X3NldHVwX3ByaXZhdGVfcHBhdChkZXZfcHJp dik7CisJCXN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0ID0gJmRldl9wcml2LT5wcGF0OwogCisJCWJp dG1hcF9zZXQocHBhdC0+ZGlydHksIDAsIHBwYXQtPm1heF9lbnRyaWVzKTsKKwkJZGV2X3ByaXYt PnBwYXQudXBkYXRlX2h3KGRldl9wcml2KTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaAppbmRleCBiNGUzYWE3Li5lMTBjYTg5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaApAQCAtMTQzLDYgKzE0MywxMSBAQCB0eXBlZGVmIHU2NCBnZW44X3Bw Z3R0X3BtbDRlX3Q7CiAjZGVmaW5lIEdFTjhfUFBBVF9FTExDX09WRVJSSURFCQkoMDw8MikKICNk ZWZpbmUgR0VOOF9QUEFUKGksIHgpCQkJKCh1NjQpKHgpIDw8ICgoaSkgKiA4KSkKIAorI2RlZmlu ZSBHRU44X1BQQVRfR0VUX0NBKHgpICgoeCkgJiAzKQorI2RlZmluZSBHRU44X1BQQVRfR0VUX1RD KHgpICgoeCkgJiAoMyA8PCAyKSkKKyNkZWZpbmUgR0VOOF9QUEFUX0dFVF9BR0UoeCkgKCh4KSAm ICgzIDw8IDQpKQorI2RlZmluZSBDSFZfUFBBVF9HRVRfU05PT1AoeCkgKCh4KSAmICgxIDw8IDYp KQorCiBzdHJ1Y3Qgc2dfdGFibGU7CiAKIHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvIHsKQEAg LTUzNiw2ICs1NDEsMzcgQEAgaTkxNV92bV90b19nZ3R0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtKQogCXJldHVybiBjb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2dndHQsIGJhc2Up OwogfQogCisjZGVmaW5lIElOVEVMX01BWF9QUEFUX0VOVFJJRVMgOAorI2RlZmluZSBJTlRFTF9Q UEFUX1BFUkZFQ1RfTUFUQ0ggKH4wVSkKKworc3RydWN0IGludGVsX3BwYXQ7CisKK3N0cnVjdCBp bnRlbF9wcGF0X2VudHJ5IHsKKwlzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdDsKKwlzdHJ1Y3Qga3Jl ZiByZWY7CisJdTggdmFsdWU7Cit9OworCitzdHJ1Y3QgaW50ZWxfcHBhdCB7CisJc3RydWN0IGlu dGVsX3BwYXRfZW50cnkgZW50cmllc1tJTlRFTF9NQVhfUFBBVF9FTlRSSUVTXTsKKwlERUNMQVJF X0JJVE1BUCh1c2VkLCBJTlRFTF9NQVhfUFBBVF9FTlRSSUVTKTsKKwlERUNMQVJFX0JJVE1BUChk aXJ0eSwgSU5URUxfTUFYX1BQQVRfRU5UUklFUyk7CisJdW5zaWduZWQgaW50IG1heF9lbnRyaWVz OworCXU4IGNsZWFyX3ZhbHVlOworCS8qCisJICogUmV0dXJuIGEgc2NvcmUgdG8gc2hvdyBob3cg dHdvIFBQQVQgdmFsdWVzIG1hdGNoLAorCSAqIGEgSU5URUxfUFBBVF9QRVJGRUNUX01BVENIIGlu ZGljYXRlcyBhIHBlcmZlY3QgbWF0Y2gKKwkgKi8KKwl1bnNpZ25lZCBpbnQgKCptYXRjaCkodTgg c3JjLCB1OCBkc3QpOworCXZvaWQgKCp1cGRhdGVfaHcpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KTsKKworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworfTsKKworY29uc3Qg c3RydWN0IGludGVsX3BwYXRfZW50cnkgKgoraW50ZWxfcHBhdF9nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHU4IHZhbHVlKTsKK3ZvaWQgaW50ZWxfcHBhdF9wdXQoY29uc3Qgc3Ry dWN0IGludGVsX3BwYXRfZW50cnkgKmVudHJ5KTsKKwogaW50IGk5MTVfZ2VtX2luaXRfYWxpYXNp bmdfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBpOTE1X2dlbV9m aW5pX2FsaWFzaW5nX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIAotLSAK Mi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=