From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [RFC 08/10] drm/i915: make raw access function work on uncore Date: Fri, 15 Mar 2019 16:33:24 -0700 Message-ID: <730a94b41d37625695484907dc6a656a3b72863e.camel@intel.com> References: <20190313231319.711-1-daniele.ceraolospurio@intel.com> <20190313231319.711-9-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A983A6E54D for ; Fri, 15 Mar 2019 23:33:26 +0000 (UTC) In-Reply-To: <20190313231319.711-9-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gcXVhLCAyMDE5LTAzLTEzIMOgcyAxNjoxMyAtMDcwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byBlc2NyZXZldToKPiBUaGlzIGFsbG93cyB1cyB0byBkaXRjaCBpOTE1IGluIHNvbWUgbW9yZSBw bGFjZXMuCj4gCj4gUkZDOiBzaG91bGQgd2UganVzdCBtYWtlIHRoZW0gd29yayBkaXJlY3RseSBv biB0aGUgcmVncyBwb2ludGVyIGluc3RlYWQ/CgpCb3RoIG9wdGlvbnMgbG9vayBiZXR0ZXIgdGhh biBwYXNzaW5nIEdvZCBPYmplY3QgZGV2X3ByaXYsIHNvIEknbSBmaW5lCndpdGggZWl0aGVyLgoK VG8gZ2l2ZSBhIHBhcmFsbGVsIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgaW4gZGlz cGxheSBjb2RlIHdlCnRlbmQgdG8gcGFzcyBzdHJ1Y3QgaW50ZWxfY3J0YyBhcyBtdWNoIGFzIHBv c3NpYmxlIGFuZCBvbmx5IHBhc3MgZW51bQpwaXBlIHdoZW4gaXQgZG9lc24ndCBtYWtlIHNlbnNl IGFueW1vcmUgdG8gcGFzcyBhIENSVEMuIFNvIHVuY29yZSBtYWtlcwpzZW5zZSBoZXJlLgoKTW9y ZSBiZWxvdzoKCj4gCj4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9s b3NwdXJpb0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgIHwgMTQgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMgICAg fCAgOCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgfCA5MCArKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlv bnMoKyksIDU0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4 IDI5M2JmNjhmZDhiYS4uYTFiODA1OWNkN2Y4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gQEAgLTM0ODUsMTcgKzM0ODUsMTcgQEAgc3RhdGljIGlubGluZSB1NjQgaW50ZWxfcmM2X3Jl c2lkZW5jeV91cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICNkZWZpbmUg UE9TVElOR19SRUFEMTYocmVnKQkodm9pZClJOTE1X1JFQUQxNl9OT1RSQUNFKHJlZykKPiAgCj4g ICNkZWZpbmUgX19yYXdfcmVhZCh4LCBzKSBcCj4gLXN0YXRpYyBpbmxpbmUgdWludCMjeCMjX3Qg X19yYXdfaTkxNV9yZWFkIyN4KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgXAo+ICtzdGF0aWMgaW5saW5lIHVpbnQjI3gjI190IF9fcmF3X2k5MTVfcmVhZCMjeChjb25z dCBzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsIFwKPiAgCQkJCQkgICAgIGk5MTVfcmVnX3Qg cmVnKSBcCj4gIHsgXAo+IC0JcmV0dXJuIHJlYWQjI3MoZGV2X3ByaXYtPnVuY29yZS5yZWdzICsg aTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7IFwKPiArCXJldHVybiByZWFkIyNzKHVuY29yZS0+ cmVncyArIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpOyBcCj4gIH0KPiAgCj4gICNkZWZpbmUg X19yYXdfd3JpdGUoeCwgcykgXAo+IC1zdGF0aWMgaW5saW5lIHZvaWQgX19yYXdfaTkxNV93cml0 ZSMjeChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIFwKPiArc3RhdGlj IGlubGluZSB2b2lkIF9fcmF3X2k5MTVfd3JpdGUjI3goY29uc3Qgc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlLCBcCj4gIAkJCQkgICAgICAgaTkxNV9yZWdfdCByZWcsIHVpbnQjI3gjI190IHZh bCkgXAo+ICB7IFwKPiAtCXdyaXRlIyNzKHZhbCwgZGV2X3ByaXYtPnVuY29yZS5yZWdzICsgaTkx NV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7IFwKPiArCXdyaXRlIyNzKHZhbCwgdW5jb3JlLT5yZWdz ICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7IFwKPiAgfQo+ICBfX3Jhd19yZWFkKDgsIGIp Cj4gIF9fcmF3X3JlYWQoMTYsIHcpCj4gQEAgLTM1MzYsOSArMzUzNiw5IEBAIF9fcmF3X3dyaXRl KDY0LCBxKQo+ICAgKiB0aGVyZWZvcmUgZ2VuZXJhbGx5IGJlIHNlcmlhbGlzZWQsIGJ5IGVpdGhl ciB0aGUgZGV2X3ByaXYtPnVuY29yZS5sb2NrIG9yCj4gICAqIGEgbW9yZSBsb2NhbGlzZWQgbG9j ayBndWFyZGluZyBhbGwgYWNjZXNzIHRvIHRoYXQgYmFuayBvZiByZWdpc3RlcnMuCj4gICAqLwo+ IC0jZGVmaW5lIEk5MTVfUkVBRF9GVyhyZWdfXykgX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYs IChyZWdfXykpCj4gLSNkZWZpbmUgSTkxNV9XUklURV9GVyhyZWdfXywgdmFsX18pIF9fcmF3X2k5 MTVfd3JpdGUzMihkZXZfcHJpdiwgKHJlZ19fKSwgKHZhbF9fKSkKPiAtI2RlZmluZSBJOTE1X1dS SVRFNjRfRlcocmVnX18sIHZhbF9fKSBfX3Jhd19pOTE1X3dyaXRlNjQoZGV2X3ByaXYsIChyZWdf XyksICh2YWxfXykpCj4gKyNkZWZpbmUgSTkxNV9SRUFEX0ZXKHJlZ19fKSBfX3Jhd19pOTE1X3Jl YWQzMigmZGV2X3ByaXYtPnVuY29yZSwgKHJlZ19fKSkKPiArI2RlZmluZSBJOTE1X1dSSVRFX0ZX KHJlZ19fLCB2YWxfXykgX19yYXdfaTkxNV93cml0ZTMyKCZkZXZfcHJpdi0+dW5jb3JlLCAocmVn X18pLCAodmFsX18pKQo+ICsjZGVmaW5lIEk5MTVfV1JJVEU2NF9GVyhyZWdfXywgdmFsX18pIF9f cmF3X2k5MTVfd3JpdGU2NCgmZGV2X3ByaXYtPnVuY29yZSwgKHJlZ19fKSwgKHZhbF9fKSkKCkxv b2tpbmcgZm9yd2FyZCB0byB0aGUgZGF5IGRldl9wcml2IHdvbid0IGJlIGltcGxpY2l0IGluIHJl Z2lzdGVyCnJlYWQvd3JpdGUgbWFjcm9zIDopLgoKCj4gICNkZWZpbmUgUE9TVElOR19SRUFEX0ZX KHJlZ19fKSAodm9pZClJOTE1X1JFQURfRlcocmVnX18pCj4gIAo+ICAvKiAiQnJvYWRjYXN0IFJH QiIgcHJvcGVydHkgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 Z3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+IGluZGV4IDg2OWNmNGEz YjZkZS4uNTFlNWUyNjMwZWVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdmdwdS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKPiBAQCAt NjUsMTcgKzY1LDE5IEBAIHZvaWQgaTkxNV9jaGVja192Z3B1KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKCllvdSBjb3VsZCBoYXZlIGdvbmUgZm9yIGEgbG9jYWwgaW50ZWxfdW5j b3JlIHZhcmlhYmxlIGhlcmUgdG9vLgoKV2l0aCBvciB3aXRob3V0IHRoYXQ6CgpSZXZpZXdlZC1i eTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cgo+ICAKPiAgCUJVSUxE X0JVR19PTihzaXplb2Yoc3RydWN0IHZndF9pZikgIT0gVkdUX1BWSU5GT19TSVpFKTsKPiAgCj4g LQltYWdpYyA9IF9fcmF3X2k5MTVfcmVhZDY0KGRldl9wcml2LCB2Z3RpZl9yZWcobWFnaWMpKTsK PiArCW1hZ2ljID0gX19yYXdfaTkxNV9yZWFkNjQoJmRldl9wcml2LT51bmNvcmUsIHZndGlmX3Jl ZyhtYWdpYykpOwo+ICAJaWYgKG1hZ2ljICE9IFZHVF9NQUdJQykKPiAgCQlyZXR1cm47Cj4gIAo+ IC0JdmVyc2lvbl9tYWpvciA9IF9fcmF3X2k5MTVfcmVhZDE2KGRldl9wcml2LCB2Z3RpZl9yZWco dmVyc2lvbl9tYWpvcikpOwo+ICsJdmVyc2lvbl9tYWpvciA9IF9fcmF3X2k5MTVfcmVhZDE2KCZk ZXZfcHJpdi0+dW5jb3JlLAo+ICsJCQkJCSAgdmd0aWZfcmVnKHZlcnNpb25fbWFqb3IpKTsKPiAg CWlmICh2ZXJzaW9uX21ham9yIDwgVkdUX1ZFUlNJT05fTUFKT1IpIHsKPiAgCQlEUk1fSU5GTygi VkdUIGludGVyZmFjZSB2ZXJzaW9uIG1pc21hdGNoIVxuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWRldl9wcml2LT52Z3B1LmNhcHMgPSBfX3Jhd19pOTE1X3JlYWQzMihkZXZfcHJpdiwg dmd0aWZfcmVnKHZndF9jYXBzKSk7Cj4gKwlkZXZfcHJpdi0+dmdwdS5jYXBzID0gX19yYXdfaTkx NV9yZWFkMzIoJmRldl9wcml2LT51bmNvcmUsCj4gKwkJCQkJCXZndGlmX3JlZyh2Z3RfY2Fwcykp Owo+ICAKPiAgCWRldl9wcml2LT52Z3B1LmFjdGl2ZSA9IHRydWU7Cj4gIAlEUk1fSU5GTygiVmly dHVhbCBHUFUgZm9yIEludGVsIEdWVC1nIGRldGVjdGVkLlxuIik7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKPiBpbmRleCBjZTA3NmQwNDZiNjUuLjRjMjBiMmZjMzNmZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTMxLDcgKzMxLDcgQEAKPiAgI2Rl ZmluZSBGT1JDRVdBS0VfQUNLX1RJTUVPVVRfTVMgNTAKPiAgI2RlZmluZSBHVF9GSUZPX1RJTUVP VVRfTVMJIDEwCj4gIAo+IC0jZGVmaW5lIF9fcmF3X3Bvc3RpbmdfcmVhZChkZXZfcHJpdl9fLCBy ZWdfXykgKHZvaWQpX19yYXdfaTkxNV9yZWFkMzIoKGRldl9wcml2X18pLCAocmVnX18pKQo+ICsj ZGVmaW5lIF9fcmF3X3Bvc3RpbmdfcmVhZCh1bmNvcmVfXywgcmVnX18pICh2b2lkKV9fcmF3X2k5 MTVfcmVhZDMyKCh1bmNvcmVfXyksIChyZWdfXykpCj4gIAo+ICBzdGF0aWMgY29uc3QgY2hhciAq IGNvbnN0IGZvcmNld2FrZV9kb21haW5fbmFtZXNbXSA9IHsKPiAgCSJyZW5kZXIiLAo+IEBAIC0y NzMsMjMgKzI3MywyMyBAQCBmd19kb21haW5zX3Jlc2V0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSwKPiAgCQlmd19kb21haW5fcmVzZXQoZCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUg dTMyIGd0X3RocmVhZF9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICtzdGF0aWMgaW5saW5lIHUzMiBndF90aHJlYWRfc3RhdHVzKHN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSkKPiAgewo+ICAJdTMyIHZhbDsKPiAgCj4gLQl2YWwgPSBfX3Jhd19pOTE1X3JlYWQz MihkZXZfcHJpdiwgR0VONl9HVF9USFJFQURfU1RBVFVTX1JFRyk7Cj4gKwl2YWwgPSBfX3Jhd19p OTE1X3JlYWQzMih1bmNvcmUsIEdFTjZfR1RfVEhSRUFEX1NUQVRVU19SRUcpOwo+ICAJdmFsICY9 IEdFTjZfR1RfVEhSRUFEX1NUQVRVU19DT1JFX01BU0s7Cj4gIAo+ICAJcmV0dXJuIHZhbDsKPiAg fQo+ICAKPiAtc3RhdGljIHZvaWQgX19nZW42X2d0X3dhaXRfZm9yX3RocmVhZF9jMChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIF9fZ2VuNl9ndF93YWl0 X2Zvcl90aHJlYWRfYzAoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICB7Cj4gIAkvKgo+ ICAJICogdy9hIGZvciBhIHNwb3JhZGljIHJlYWQgcmV0dXJuaW5nIDAgYnkgd2FpdGluZyBmb3Ig dGhlIEdUCj4gIAkgKiB0aHJlYWQgdG8gd2FrZSB1cC4KPiAgCSAqLwo+IC0JV0FSTl9PTkNFKHdh aXRfZm9yX2F0b21pY191cyhndF90aHJlYWRfc3RhdHVzKGRldl9wcml2KSA9PSAwLCA1MDAwKSwK PiArCVdBUk5fT05DRSh3YWl0X2Zvcl9hdG9taWNfdXMoZ3RfdGhyZWFkX3N0YXR1cyh1bmNvcmUp ID09IDAsIDUwMDApLAo+ICAJCSAgIkdUIHRocmVhZCBzdGF0dXMgd2FpdCB0aW1lZCBvdXRcbiIp Owo+ICB9Cj4gIAo+IEBAIC0yOTksMzAgKzI5OSwyOSBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5z X2dldF93aXRoX3RocmVhZF9zdGF0dXMoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJ ZndfZG9tYWluc19nZXQodW5jb3JlLCBmd19kb21haW5zKTsKPiAgCj4gIAkvKiBXYVJzRm9yY2V3 YWtlV2FpdFRDMDpzbmIsaXZiLGhzdyxiZHcsdmx2ICovCj4gLQlfX2dlbjZfZ3Rfd2FpdF9mb3Jf dGhyZWFkX2MwKHVuY29yZV90b19pOTE1KHVuY29yZSkpOwo+ICsJX19nZW42X2d0X3dhaXRfZm9y X3RocmVhZF9jMCh1bmNvcmUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHUzMiBmaWZvX2Zy ZWVfZW50cmllcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyBp bmxpbmUgdTMyIGZpZm9fZnJlZV9lbnRyaWVzKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkK PiAgewo+IC0JdTMyIGNvdW50ID0gX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsIEdURklGT0NU TCk7Cj4gKwl1MzIgY291bnQgPSBfX3Jhd19pOTE1X3JlYWQzMih1bmNvcmUsIEdURklGT0NUTCk7 Cj4gIAo+ICAJcmV0dXJuIGNvdW50ICYgR1RfRklGT19GUkVFX0VOVFJJRVNfTUFTSzsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgX19nZW42X2d0X3dhaXRfZm9yX2ZpZm8oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBfX2dlbjZfZ3Rfd2FpdF9mb3JfZmlm byhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOwo+ICAJdTMyIG47Cj4gIAo+ICAJLyogT24g VkxWLCBGSUZPIHdpbGwgYmUgc2hhcmVkIGJ5IGJvdGggU1cgYW5kIEhXLgo+ICAJICogU28sIHdl IG5lZWQgdG8gcmVhZCB0aGUgRlJFRV9FTlRSSUVTIGV2ZXJ5dGltZSAqLwo+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpKQo+IC0JCW4gPSBmaWZvX2ZyZWVfZW50cmllcyhkZXZfcHJpdik7 Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyh1bmNvcmVfdG9faTkxNSh1bmNvcmUpKSkKPiArCQluID0g Zmlmb19mcmVlX2VudHJpZXModW5jb3JlKTsKPiAgCWVsc2UKPiAgCQluID0gdW5jb3JlLT5maWZv X2NvdW50Owo+ICAKPiAgCWlmIChuIDw9IEdUX0ZJRk9fTlVNX1JFU0VSVkVEX0VOVFJJRVMpIHsK PiAtCQlpZiAod2FpdF9mb3JfYXRvbWljKChuID0gZmlmb19mcmVlX2VudHJpZXMoZGV2X3ByaXYp KSA+Cj4gKwkJaWYgKHdhaXRfZm9yX2F0b21pYygobiA9IGZpZm9fZnJlZV9lbnRyaWVzKHVuY29y ZSkpID4KPiAgCQkJCSAgICBHVF9GSUZPX05VTV9SRVNFUlZFRF9FTlRSSUVTLAo+ICAJCQkJICAg IEdUX0ZJRk9fVElNRU9VVF9NUykpIHsKPiAgCQkJRFJNX0RFQlVHKCJHVF9GSUZPIHRpbWVvdXQs IGVudHJpZXM6ICV1XG4iLCBuKTsKPiBAQCAtNDUwLDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3VuY29yZV9lZHJhbV9kZXRlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8Cj4gIAkgICAgSVNfQlJPQURXRUxMKGRl dl9wcml2KSB8fAo+ICAJICAgIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+IC0JCWRldl9w cml2LT5lZHJhbV9jYXAgPSBfX3Jhd19pOTE1X3JlYWQzMihkZXZfcHJpdiwKPiArCQlkZXZfcHJp di0+ZWRyYW1fY2FwID0gX19yYXdfaTkxNV9yZWFkMzIoJmRldl9wcml2LT51bmNvcmUsCj4gIAkJ CQkJCQlIU1dfRURSQU1fQ0FQKTsKPiAgCj4gIAkJLyogTkI6IFdlIGNhbid0IHdyaXRlIElESUNS IHlldCBiZWNhdXNlIHdlIGRvIG5vdCBoYXZlIGd0IGZ1bmNzCj4gQEAgLTQ2NSw0MyArNDY0LDQz IEBAIHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9lZHJhbV9kZXRlY3Qoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbAo+IC1mcGdhX2NoZWNr X2Zvcl91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g K2ZwZ2FfY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29y ZSkKPiAgewo+ICAJdTMyIGRiZzsKPiAgCj4gLQlkYmcgPSBfX3Jhd19pOTE1X3JlYWQzMihkZXZf cHJpdiwgRlBHQV9EQkcpOwo+ICsJZGJnID0gX19yYXdfaTkxNV9yZWFkMzIodW5jb3JlLCBGUEdB X0RCRyk7Cj4gIAlpZiAobGlrZWx5KCEoZGJnICYgRlBHQV9EQkdfUk1fTk9DTEFJTSkpKQo+ICAJ CXJldHVybiBmYWxzZTsKPiAgCj4gLQlfX3Jhd19pOTE1X3dyaXRlMzIoZGV2X3ByaXYsIEZQR0Ff REJHLCBGUEdBX0RCR19STV9OT0NMQUlNKTsKPiArCV9fcmF3X2k5MTVfd3JpdGUzMih1bmNvcmUs IEZQR0FfREJHLCBGUEdBX0RCR19STV9OT0NMQUlNKTsKPiAgCj4gIAlyZXR1cm4gdHJ1ZTsKPiAg fQo+ICAKPiAgc3RhdGljIGJvb2wKPiAtdmx2X2NoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3Zsdl9jaGVja19mb3JfdW5jbGFpbWVk X21taW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICB7Cj4gIAl1MzIgY2VyOwo+ICAK PiAtCWNlciA9IF9fcmF3X2k5MTVfcmVhZDMyKGRldl9wcml2LCBDTEFJTV9FUik7Cj4gKwljZXIg PSBfX3Jhd19pOTE1X3JlYWQzMih1bmNvcmUsIENMQUlNX0VSKTsKPiAgCWlmIChsaWtlbHkoIShj ZXIgJiAoQ0xBSU1fRVJfT1ZFUkZMT1cgfCBDTEFJTV9FUl9DVFJfTUFTSykpKSkKPiAgCQlyZXR1 cm4gZmFsc2U7Cj4gIAo+IC0JX19yYXdfaTkxNV93cml0ZTMyKGRldl9wcml2LCBDTEFJTV9FUiwg Q0xBSU1fRVJfQ0xSKTsKPiArCV9fcmF3X2k5MTVfd3JpdGUzMih1bmNvcmUsIENMQUlNX0VSLCBD TEFJTV9FUl9DTFIpOwo+ICAKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9v bAo+IC1nZW42X2NoZWNrX2Zvcl9maWZvX2RlYnVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArZ2VuNl9jaGVja19mb3JfZmlmb19kZWJ1ZyhzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUpCj4gIHsKPiAgCXUzMiBmaWZvZGJnOwo+ICAKPiAtCWZpZm9kYmcgPSBfX3Jhd19p OTE1X3JlYWQzMihkZXZfcHJpdiwgR1RGSUZPREJHKTsKPiArCWZpZm9kYmcgPSBfX3Jhd19pOTE1 X3JlYWQzMih1bmNvcmUsIEdURklGT0RCRyk7Cj4gIAo+ICAJaWYgKHVubGlrZWx5KGZpZm9kYmcp KSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiR1RGSUZPREJHID0gMHgwOCV4XG4iLCBmaWZvZGJn KTsKPiAtCQlfX3Jhd19pOTE1X3dyaXRlMzIoZGV2X3ByaXYsIEdURklGT0RCRywgZmlmb2RiZyk7 Cj4gKwkJX19yYXdfaTkxNV93cml0ZTMyKHVuY29yZSwgR1RGSUZPREJHLCBmaWZvZGJnKTsKPiAg CX0KPiAgCj4gIAlyZXR1cm4gZmlmb2RiZzsKPiBAQCAtNTEwLDE2ICs1MDksMTcgQEAgZ2VuNl9j aGVja19mb3JfZmlmb19kZWJ1ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IHN0YXRpYyBib29sCj4gIGNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9 ICZkZXZfcHJpdi0+dW5jb3JlOwo+ICAJYm9vbCByZXQgPSBmYWxzZTsKPiAgCj4gIAlpZiAoSEFT X0ZQR0FfREJHX1VOQ0xBSU1FRChkZXZfcHJpdikpCj4gLQkJcmV0IHw9IGZwZ2FfY2hlY2tfZm9y X3VuY2xhaW1lZF9tbWlvKGRldl9wcml2KTsKPiArCQlyZXQgfD0gZnBnYV9jaGVja19mb3JfdW5j bGFpbWVkX21taW8odW5jb3JlKTsKPiAgCj4gIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gLQkJcmV0IHw9IHZsdl9jaGVja19mb3JfdW5j bGFpbWVkX21taW8oZGV2X3ByaXYpOwo+ICsJCXJldCB8PSB2bHZfY2hlY2tfZm9yX3VuY2xhaW1l ZF9tbWlvKHVuY29yZSk7Cj4gIAo+ICAJaWYgKElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNiwgNykp Cj4gLQkJcmV0IHw9IGdlbjZfY2hlY2tfZm9yX2ZpZm9fZGVidWcoZGV2X3ByaXYpOwo+ICsJCXJl dCB8PSBnZW42X2NoZWNrX2Zvcl9maWZvX2RlYnVnKHVuY29yZSk7Cj4gIAo+ICAJcmV0dXJuIHJl dDsKPiAgfQo+IEBAIC01MzUsOCArNTM1LDggQEAgc3RhdGljIHZvaWQgX19pbnRlbF91bmNvcmVf ZWFybHlfc2FuaXRpemUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAKPiAgCS8qIFdh RGlzYWJsZVNoYWRvd1JlZ0ZvckNwZDpjaHYgKi8KPiAgCWlmIChJU19DSEVSUllWSUVXKGk5MTUp KSB7Cj4gLQkJX19yYXdfaTkxNV93cml0ZTMyKGk5MTUsIEdURklGT0NUTCwKPiAtCQkJCSAgIF9f cmF3X2k5MTVfcmVhZDMyKGk5MTUsIEdURklGT0NUTCkgfAo+ICsJCV9fcmF3X2k5MTVfd3JpdGUz Mih1bmNvcmUsIEdURklGT0NUTCwKPiArCQkJCSAgIF9fcmF3X2k5MTVfcmVhZDMyKHVuY29yZSwg R1RGSUZPQ1RMKSB8Cj4gIAkJCQkgICBHVF9GSUZPX0NUTF9CTE9DS19BTExfUE9MSUNZX1NUQUxM IHwKPiAgCQkJCSAgIEdUX0ZJRk9fQ1RMX1JDNl9QT0xJQ1lfU1RBTEwpOwo+ICAJfQo+IEBAIC01 NDgsNyArNTQ4LDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUo c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJCXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2Fr ZV9nZXQodW5jb3JlLCByZXN0b3JlX2ZvcmNld2FrZSk7Cj4gIAo+ICAJCWlmIChJU19HRU5fUkFO R0UoaTkxNSwgNiwgNykpCj4gLQkJCXVuY29yZS0+Zmlmb19jb3VudCA9IGZpZm9fZnJlZV9lbnRy aWVzKGk5MTUpOwo+ICsJCQl1bmNvcmUtPmZpZm9fY291bnQgPSBmaWZvX2ZyZWVfZW50cmllcyh1 bmNvcmUpOwo+ICAJCXNwaW5fdW5sb2NrX2lycSgmdW5jb3JlLT5sb2NrKTsKPiAgCX0KPiAgCWlv c2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPiBAQCAtMTA2MSwxMiArMTA2MSwxMiBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX2ZvcmNld2FrZV9yYW5nZSBfX2dlbjExX2Z3X3Jhbmdlc1tdID0g ewo+ICB9Owo+ICAKPiAgc3RhdGljIHZvaWQKPiAtaWxrX2R1bW15X3dyaXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAraWxrX2R1bW15X3dyaXRlKHN0cnVjdCBpbnRlbF91 bmNvcmUgKnVuY29yZSkKPiAgewo+ICAJLyogV2FJc3N1ZUR1bW15V3JpdGVUb1dha2V1cEZyb21S QzY6aWxrIElzc3VlIGEgZHVtbXkgd3JpdGUgdG8gd2FrZSB1cAo+ICAJICogdGhlIGNoaXAgZnJv bSByYzYgYmVmb3JlIHRvdWNoaW5nIGl0IGZvciByZWFsLiBNSV9NT0RFIGlzIG1hc2tlZCwKPiAg CSAqIGhlbmNlIGhhcm1sZXNzIHRvIHdyaXRlIDAgaW50by4gKi8KPiAtCV9fcmF3X2k5MTVfd3Jp dGUzMihkZXZfcHJpdiwgTUlfTU9ERSwgMCk7Cj4gKwlfX3Jhd19pOTE1X3dyaXRlMzIodW5jb3Jl LCBNSV9NT0RFLCAwKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAtMTA5Niw2ICsxMDk2 LDcgQEAgdW5jbGFpbWVkX3JlZ19kZWJ1ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIH0KPiAgCj4gICNkZWZpbmUgR0VOMl9SRUFEX0hFQURFUih4KSBcCj4gKwlzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsgXAo+ICAJdSMjeCB2YWwg PSAwOyBcCj4gIAlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYpOwo+ICAKPiBAQCAt MTEwNyw3ICsxMTA4LDcgQEAgdW5jbGFpbWVkX3JlZ19kZWJ1ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyB1IyN4IFwKPiAgZ2VuMl9yZWFkIyN4KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCByZWcsIGJvb2wgdHJhY2UpIHsg XAo+ICAJR0VOMl9SRUFEX0hFQURFUih4KTsgXAo+IC0JdmFsID0gX19yYXdfaTkxNV9yZWFkIyN4 KGRldl9wcml2LCByZWcpOyBcCj4gKwl2YWwgPSBfX3Jhd19pOTE1X3JlYWQjI3godW5jb3JlLCBy ZWcpOyBcCj4gIAlHRU4yX1JFQURfRk9PVEVSOyBcCj4gIH0KPiAgCj4gQEAgLTExMTUsOCArMTEx Niw4IEBAIGdlbjJfcmVhZCMjeChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5 MTVfcmVnX3QgcmVnLCBib29sIHRyYWNlKSB7IFwKPiAgc3RhdGljIHUjI3ggXAo+ICBnZW41X3Jl YWQjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3JlZ190IHJlZywg Ym9vbCB0cmFjZSkgeyBcCj4gIAlHRU4yX1JFQURfSEVBREVSKHgpOyBcCj4gLQlpbGtfZHVtbXlf d3JpdGUoZGV2X3ByaXYpOyBcCj4gLQl2YWwgPSBfX3Jhd19pOTE1X3JlYWQjI3goZGV2X3ByaXYs IHJlZyk7IFwKPiArCWlsa19kdW1teV93cml0ZSh1bmNvcmUpOyBcCj4gKwl2YWwgPSBfX3Jhd19p OTE1X3JlYWQjI3godW5jb3JlLCByZWcpOyBcCj4gIAlHRU4yX1JFQURfRk9PVEVSOyBcCj4gIH0K PiAgCj4gQEAgLTExODYsNyArMTE4Nyw3IEBAIGZ1bmMjI19yZWFkIyN4KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCByZWcsIGJvb2wgdHJhY2UpIHsKPiAgCWZ3 X2VuZ2luZSA9IF9fIyNmdW5jIyNfcmVnX3JlYWRfZndfZG9tYWlucyh1bmNvcmUsIG9mZnNldCk7 IFwKPiAgCWlmIChmd19lbmdpbmUpIFwKPiAgCQlfX2ZvcmNlX3dha2VfYXV0byh1bmNvcmUsIGZ3 X2VuZ2luZSk7IFwKPiAtCXZhbCA9IF9fcmF3X2k5MTVfcmVhZCMjeChkZXZfcHJpdiwgcmVnKTsg XAo+ICsJdmFsID0gX19yYXdfaTkxNV9yZWFkIyN4KHVuY29yZSwgcmVnKTsgXAo+ICAJR0VONl9S RUFEX0ZPT1RFUjsgXAo+ICB9Cj4gICNkZWZpbmUgX19nZW42X3JlYWQoeCkgX19nZW5fcmVhZChn ZW42LCB4KQo+IEBAIC0xMjEzLDYgKzEyMTQsNyBAQCBfX2dlbjZfcmVhZCg2NCkKPiAgI3VuZGVm IEdFTjZfUkVBRF9IRUFERVIKPiAgCj4gICNkZWZpbmUgR0VOMl9XUklURV9IRUFERVIgXAo+ICsJ c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7IFwKPiAgCXRy YWNlX2k5MTVfcmVnX3J3KHRydWUsIHJlZywgdmFsLCBzaXplb2YodmFsKSwgdHJhY2UpOyBcCj4g IAlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYpOyBcCj4gIAo+IEBAIC0xMjIyLDcg KzEyMjQsNyBAQCBfX2dlbjZfcmVhZCg2NCkKPiAgc3RhdGljIHZvaWQgXAo+ICBnZW4yX3dyaXRl IyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCByZWcsIHUj I3ggdmFsLCBib29sIHRyYWNlKSB7IFwKPiAgCUdFTjJfV1JJVEVfSEVBREVSOyBcCj4gLQlfX3Jh d19pOTE1X3dyaXRlIyN4KGRldl9wcml2LCByZWcsIHZhbCk7IFwKPiArCV9fcmF3X2k5MTVfd3Jp dGUjI3godW5jb3JlLCByZWcsIHZhbCk7IFwKPiAgCUdFTjJfV1JJVEVfRk9PVEVSOyBcCj4gIH0K PiAgCj4gQEAgLTEyMzAsOCArMTIzMiw4IEBAIGdlbjJfd3JpdGUjI3goc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3JlZ190IHJlZywgdSMjeCB2YWwsIGJvb2wKPiAgc3Rh dGljIHZvaWQgXAo+ICBnZW41X3dyaXRlIyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgaTkxNV9yZWdfdCByZWcsIHUjI3ggdmFsLCBib29sIHRyYWNlKSB7IFwKPiAgCUdFTjJf V1JJVEVfSEVBREVSOyBcCj4gLQlpbGtfZHVtbXlfd3JpdGUoZGV2X3ByaXYpOyBcCj4gLQlfX3Jh d19pOTE1X3dyaXRlIyN4KGRldl9wcml2LCByZWcsIHZhbCk7IFwKPiArCWlsa19kdW1teV93cml0 ZSh1bmNvcmUpOyBcCj4gKwlfX3Jhd19pOTE1X3dyaXRlIyN4KHVuY29yZSwgcmVnLCB2YWwpOyBc Cj4gIAlHRU4yX1dSSVRFX0ZPT1RFUjsgXAo+ICB9Cj4gIAo+IEBAIC0xMjY2LDggKzEyNjgsOCBA QCBzdGF0aWMgdm9pZCBcCj4gIGdlbjZfd3JpdGUjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpOTE1X3JlZ190IHJlZywgdSMjeCB2YWwsIGJvb2wgdHJhY2UpIHsgXAo+ICAJ R0VONl9XUklURV9IRUFERVI7IFwKPiAgCWlmIChORUVEU19GT1JDRV9XQUtFKG9mZnNldCkpIFwK PiAtCQlfX2dlbjZfZ3Rfd2FpdF9mb3JfZmlmbyhkZXZfcHJpdik7IFwKPiAtCV9fcmF3X2k5MTVf d3JpdGUjI3goZGV2X3ByaXYsIHJlZywgdmFsKTsgXAo+ICsJCV9fZ2VuNl9ndF93YWl0X2Zvcl9m aWZvKHVuY29yZSk7IFwKPiArCV9fcmF3X2k5MTVfd3JpdGUjI3godW5jb3JlLCByZWcsIHZhbCk7 IFwKPiAgCUdFTjZfV1JJVEVfRk9PVEVSOyBcCj4gIH0KPiAgCj4gQEAgLTEyNzksNyArMTI4MSw3 IEBAIGZ1bmMjI193cml0ZSMjeChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5 MTVfcmVnX3QgcmVnLCB1IyN4IHZhbCwgYm9vCj4gIAlmd19lbmdpbmUgPSBfXyMjZnVuYyMjX3Jl Z193cml0ZV9md19kb21haW5zKHVuY29yZSwgb2Zmc2V0KTsgXAo+ICAJaWYgKGZ3X2VuZ2luZSkg XAo+ICAJCV9fZm9yY2Vfd2FrZV9hdXRvKHVuY29yZSwgZndfZW5naW5lKTsgXAo+IC0JX19yYXdf aTkxNV93cml0ZSMjeChkZXZfcHJpdiwgcmVnLCB2YWwpOyBcCj4gKwlfX3Jhd19pOTE1X3dyaXRl IyN4KHVuY29yZSwgcmVnLCB2YWwpOyBcCj4gIAlHRU42X1dSSVRFX0ZPT1RFUjsgXAo+ICB9Cj4g ICNkZWZpbmUgX19nZW44X3dyaXRlKHgpIF9fZ2VuX3dyaXRlKGdlbjgsIHgpCj4gQEAgLTE0Nzcs MTUgKzE0NzksMTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gIAkJICogYmVmb3JlIHRoZSBlY29idXMgY2hl Y2suCj4gIAkJICovCj4gIAo+IC0JCV9fcmF3X2k5MTVfd3JpdGUzMihpOTE1LCBGT1JDRVdBS0Us IDApOwo+IC0JCV9fcmF3X3Bvc3RpbmdfcmVhZChpOTE1LCBFQ09CVVMpOwo+ICsJCV9fcmF3X2k5 MTVfd3JpdGUzMih1bmNvcmUsIEZPUkNFV0FLRSwgMCk7Cj4gKwkJX19yYXdfcG9zdGluZ19yZWFk KHVuY29yZSwgRUNPQlVTKTsKPiAgCj4gIAkJZndfZG9tYWluX2luaXQodW5jb3JlLCBGV19ET01B SU5fSURfUkVOREVSLAo+ICAJCQkgICAgICAgRk9SQ0VXQUtFX01ULCBGT1JDRVdBS0VfTVRfQUNL KTsKPiAgCj4gIAkJc3Bpbl9sb2NrX2lycSgmdW5jb3JlLT5sb2NrKTsKPiAgCQlmd19kb21haW5z X2dldF93aXRoX3RocmVhZF9zdGF0dXModW5jb3JlLCBGT1JDRVdBS0VfUkVOREVSKTsKPiAtCQll Y29idXMgPSBfX3Jhd19pOTE1X3JlYWQzMihpOTE1LCBFQ09CVVMpOwo+ICsJCWVjb2J1cyA9IF9f cmF3X2k5MTVfcmVhZDMyKHVuY29yZSwgRUNPQlVTKTsKPiAgCQlmd19kb21haW5zX3B1dCh1bmNv cmUsIEZPUkNFV0FLRV9SRU5ERVIpOwo+ICAJCXNwaW5fdW5sb2NrX2lycSgmdW5jb3JlLT5sb2Nr KTsKPiAgCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=