From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH 06/18] drm/i915: Handle log buffer flush interrupt event from GuC Date: Thu, 8 Sep 2016 16:09:06 +0530 Message-ID: <1473331158-21082-7-git-send-email-akash.goel@intel.com> References: <1473331158-21082-1-git-send-email-akash.goel@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 0C45188161 for ; Thu, 8 Sep 2016 10:25:48 +0000 (UTC) In-Reply-To: <1473331158-21082-1-git-send-email-akash.goel@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 Cc: Akash Goel List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KCkd1QyB1 a2VybmVsIHNlbmRzIGFuIGludGVycnVwdCB0byBIb3N0IHRvIGZsdXNoIHRoZSBsb2cgYnVmZmVy CmFuZCBleHBlY3RzIEhvc3QgdG8gY29ycmVzcG9uZGluZ2x5IHVwZGF0ZSB0aGUgcmVhZCBwb2lu dGVyCmluZm9ybWF0aW9uIGluIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUsIG9uY2UgaXQgaGFzIGNvbnN1 bWVkIHRoZQpsb2cgYnVmZmVyIGNvbnRlbnRzIGJ5IGNvcHlpbmcgdGhlbSB0byBhIGZpbGUgb3Ig YnVmZmVyLgpFdmVuIGlmIEhvc3QgY291bGRuJ3QgY29weSB0aGUgY29udGVudHMsIGl0IGNhbiBz dGlsbCB1cGRhdGUgdGhlCnJlYWQgcG9pbnRlciBzbyB0aGF0IGxvZ2dpbmcgc3RhdGUgaXMgbm90 IGRpc3R1cmJlZCBvbiBHdUMgc2lkZS4KCnYyOgotIFVzZSBhIGRlZGljYXRlZCB3b3JrcXVldWUg Zm9yIGhhbmRsaW5nIGZsdXNoIGludGVycnVwdC4gKFR2cnRrbykKLSBSZWR1Y2UgdGhlIG92ZXJh bGwgbG9nIGJ1ZmZlciBjb3B5aW5nIHRpbWUgYnkgc2tpcHBpbmcgdGhlIGNvcHkgb2YKICBjcmFz aCBidWZmZXIgYXJlYSBmb3IgcmVndWxhciBjYXNlcyBhbmQgY29weWluZyBvbmx5IHRoZSBzdGF0 ZQogIHN0cnVjdHVyZSBkYXRhIGluIGZpcnN0IHBhZ2UuCgp2MzoKIC0gQ3JlYXRlIGEgdm1hbGxv YyBtYXBwaW5nIG9mIGxvZyBidWZmZXIuIChDaHJpcykKIC0gQ292ZXIgdGhlIGZsdXNoIGFja25v d2xlZGdtZW50IHVuZGVyIHJwbSBnZXQgJiBwdXQuKENocmlzKQogLSBSZXZlcnQgdGhlIGNoYW5n ZSBvZiBza2lwcGluZyB0aGUgY29weSBvZiBjcmFzaCBkdW1wIGFyZWEsIGFzCiAgIG5vdCByZWFs bHkgbmVlZGVkLCB3aWxsIGJlIGNvdmVyZWQgYnkgc3Vic2VxdWVudCBwYXRjaC4KCnY0OgogLSBE ZXN0cm95IHRoZSB3cSB1bmRlciB0aGUgc2FtZSBjb25kaXRpb24gaW4gd2hpY2ggaXQgd2FzIGNy ZWF0ZWQsCiAgIHBhc3MgZGV2X3BpdiBwb2ludGVyIGluc3RlYWQgb2YgZGV2IHRvIG5ld2x5IGFk ZGVkIEd1QyBmdW5jdGlvbiwKICAgYWRkIG1vcmUgY29tbWVudHMgJiByZW5hbWUgdmFyaWFibGUg Zm9yIGNsYXJpdHkuIChUdnJ0a28pCgp2NToKLSBBbGxvY2F0ZSAmIGRlc3Ryb3kgdGhlIGRlZGlj YXRlZCB3cSwgZm9yIGhhbmRsaW5nIGZsdXNoIGludGVycnVwdCwKICBmcm9tIHRoZSBzZXR1cC90 ZWFyZG93biByb3V0aW5lcyBvZiBHdUMgbG9nZ2luZy4gKENocmlzKQotIFZhbGlkYXRlIHRoZSBs b2cgYnVmZmVyIHNpemUgdmFsdWUgcmV0cmlldmVkIGZyb20gc3RhdGUgc3RydWN0dXJlCiAgYW5k IGRvIHNvbWUgbWlub3IgY2xlYW51cC4gKFR2cnRrbykKLSBGaXggZXJyb3Ivd2FybmluZ3MgcmVw b3J0ZWQgYnkgY2hlY2twYXRjaC4gKFR2cnRrbykKLSBSZWJhc2UuCgp2NjoKIC0gUmVtb3ZlIHRo ZSBpbnRlcnJ1cHRzX2VuYWJsZWQgY2hlY2sgZnJvbSBndWNfY2FwdHVyZV9sb2dzX3dvcmssIG5l ZWQKICAgdG8gcHJvY2VzcyB0aGF0IGxhc3Qgd29yayBpdGVtIGFsc28sIHF1ZXVlZCBqdXN0IGJl Zm9yZSBkaXNhYmxpbmcgdGhlCiAgIGludGVycnVwdCBhcyBsb2cgYnVmZmVyIGZsdXNoIGludGVy cnVwdCBoYW5kbGluZyBpcyBhIGJpdCBkaWZmZXJlbnQKICAgY2FzZSB3aGVyZSBHdUMgaXMgYWN0 dWFsbHkgZXhwZWN0aW5nIGFuIEFDSyBmcm9tIGhvc3QsIHdoaWNoIHNob3VsZCBiZQogICBwcm92 aWRlZCB0byBrZWVwIHRoZSBsb2dnaW5nIGdvaW5nLgogICBTeW5jIGFnYWluc3QgdGhlIHdvcmsg d2lsbCBiZSBkb25lIGJ5IGNhbGxlciBkaXNhYmxpbmcgdGhlIGludGVycnVwdC4KIC0gRG9uJ3Qg c2FtcGxlIHRoZSBsb2cgYnVmZmVyIHNpemUgdmFsdWUgZnJvbSBzdGF0ZSBzdHJ1Y3R1cmUsIGRp cmVjdGx5CiAgIHVzZSB0aGUgZXhwZWN0ZWQgdmFsdWUgdG8gbW92ZSB0aGUgcG9pbnRlciAmIGRv IHRoZSBjb3B5IGFuZCB0aGF0IGNhbm5vdAogICBnbyB3cm9uZyAob3V0IG9mIGJvdW5kcykgYXMg RHJpdmVyIG9ubHkgYWxsb2NhdGVkIHRoZSBsb2cgYnVmZmVyIGFuZCB0aGUKICAgcmVsYXkgYnVm ZmVycy4gRHJpdmVyIHNob3VsZCByZWZyYWluIGZyb20gaW50ZXJwcmV0aW5nIHRoZSBsb2cgcGFj a2V0LAogICBhcyBtdWNoIHBvc3NpYmxlIGFuZCBsZXQgVXNlcnNwYWNlIHBhcnNlciBkZXRlY3Qg dGhlIGFub21hbHkuIChDaHJpcykKCnY3OgotIFVzZSBzd2l0Y2ggc3RhdGVtZW50IGluc3RlYWQg b2YgJ2lmIGVsc2UnIGZvciByZXRyaWV2aW5nIHRoZSBHdUMgbG9nCiAgYnVmZmVyIHNpemUuIChU dnJ0a28pCi0gUmVmYWN0b3JlZCB0aGUgbG9nIGJ1ZmZlciBjb3B5aW5nIGZ1bmN0aW9uIGFuZCBz aG9ydGVuZGVkIHRoZSBuYW1lIG9mCiAgY291cGxlIG9mIHZhcmlhYmxlcyBmb3IgYmV0dGVyIHJl YWRhYmlsaXR5LiAoVHZydGtvKQoKU2lnbmVkLW9mZi1ieTogU2FnYXIgQXJ1biBLYW1ibGUgPHNh Z2FyLmEua2FtYmxlQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQWthc2ggR29lbCA8YWthc2gu Z29lbEBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Np b24uYyB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDI4ICsrKystCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgIDQgKwogMyBmaWxlcyBjaGFuZ2VkLCAyMTcg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYwppbmRleCBhY2Q5YzNkLi4yMWU3YzE4MyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTcwLDYgKzE3MCwxNSBAQCBzdGF0 aWMgaW50IGhvc3QyZ3VjX3NhbXBsZV9mb3JjZXdha2Uoc3RydWN0IGludGVsX2d1YyAqZ3VjLAog CXJldHVybiBob3N0Mmd1Y19hY3Rpb24oZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKIH0K IAorc3RhdGljIGludCBob3N0Mmd1Y19sb2didWZmZXJfZmx1c2hfY29tcGxldGUoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQoreworCXUzMiBkYXRhWzFdOworCisJZGF0YVswXSA9IEhPU1QyR1VDX0FD VElPTl9MT0dfQlVGRkVSX0ZJTEVfRkxVU0hfQ09NUExFVEU7CisKKwlyZXR1cm4gaG9zdDJndWNf YWN0aW9uKGd1YywgZGF0YSwgMSk7Cit9CisKIC8qCiAgKiBJbml0aWFsaXNlLCB1cGRhdGUsIG9y IGNsZWFyIGRvb3JiZWxsIGRhdGEgc2hhcmVkIHdpdGggdGhlIEd1QwogICoKQEAgLTgyNiw2ICs4 MzUsMTYzIEBAIGVycjoKIAlyZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIHZvaWQgZ3VjX21vdmVf dG9fbmV4dF9idWYoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworfQorCitzdGF0aWMgdm9pZCAq Z3VjX2dldF93cml0ZV9idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXJldHVybiBO VUxMOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGd1Y19nZXRfbG9nX2J1ZmZlcl9zaXplKGVu dW0gZ3VjX2xvZ19idWZmZXJfdHlwZSB0eXBlKQoreworCXN3aXRjaCAodHlwZSkgeworCWNhc2Ug R1VDX0lTUl9MT0dfQlVGRkVSOgorCQlyZXR1cm4gKEdVQ19MT0dfSVNSX1BBR0VTICsgMSkgKiBQ QUdFX1NJWkU7CisJY2FzZSBHVUNfRFBDX0xPR19CVUZGRVI6CisJCXJldHVybiAoR1VDX0xPR19E UENfUEFHRVMgKyAxKSAqIFBBR0VfU0laRTsKKwljYXNlIEdVQ19DUkFTSF9EVU1QX0xPR19CVUZG RVI6CisJCXJldHVybiAoR1VDX0xPR19DUkFTSF9QQUdFUyArIDEpICogUEFHRV9TSVpFOworCWRl ZmF1bHQ6CisJCU1JU1NJTkdfQ0FTRSh0eXBlKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgZ3VjX3JlYWRfdXBkYXRlX2xvZ19idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQoreworCXN0cnVjdCBndWNfbG9nX2J1ZmZlcl9zdGF0ZSAqbG9nX2J1Zl9zdGF0ZSwgKmxvZ19i dWZfc25hcHNob3Rfc3RhdGU7CisJc3RydWN0IGd1Y19sb2dfYnVmZmVyX3N0YXRlIGxvZ19idWZf c3RhdGVfbG9jYWw7CisJdW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplLCB3cml0ZV9vZmZzZXQ7CisJ ZW51bSBndWNfbG9nX2J1ZmZlcl90eXBlIHR5cGU7CisJdm9pZCAqc3JjX2RhdGEsICpkc3RfZGF0 YTsKKworCWlmIChXQVJOX09OKCFndWMtPmxvZy5idWZfYWRkcikpCisJCXJldHVybjsKKworCS8q IEdldCB0aGUgcG9pbnRlciB0byBzaGFyZWQgR3VDIGxvZyBidWZmZXIgKi8KKwlsb2dfYnVmX3N0 YXRlID0gc3JjX2RhdGEgPSBndWMtPmxvZy5idWZfYWRkcjsKKworCS8qIEdldCB0aGUgcG9pbnRl ciB0byBsb2NhbCBidWZmZXIgdG8gc3RvcmUgdGhlIGxvZ3MgKi8KKwlsb2dfYnVmX3NuYXBzaG90 X3N0YXRlID0gZHN0X2RhdGEgPSBndWNfZ2V0X3dyaXRlX2J1ZmZlcihndWMpOworCisJLyogQWN0 dWFsIGxvZ3MgYXJlIHByZXNlbnQgZnJvbSB0aGUgMm5kIHBhZ2UgKi8KKwlzcmNfZGF0YSArPSBQ QUdFX1NJWkU7CisJZHN0X2RhdGEgKz0gUEFHRV9TSVpFOworCisJZm9yICh0eXBlID0gR1VDX0lT Ul9MT0dfQlVGRkVSOyB0eXBlIDwgR1VDX01BWF9MT0dfQlVGRkVSOyB0eXBlKyspIHsKKwkJLyog TWFrZSBhIGNvcHkgb2YgdGhlIHN0YXRlIHN0cnVjdHVyZSwgaW5zaWRlIEd1QyBsb2cgYnVmZmVy CisJCSAqICh3aGljaCBpcyB1bmNhY2hlZCBtYXBwZWQpLCBvbiB0aGUgc3RhY2sgdG8gYXZvaWQg cmVhZGluZworCQkgKiBmcm9tIGl0IG11bHRpcGxlIHRpbWVzLgorCQkgKi8KKwkJbWVtY3B5KCZs b2dfYnVmX3N0YXRlX2xvY2FsLCBsb2dfYnVmX3N0YXRlLAorCQkgICAgICAgc2l6ZW9mKHN0cnVj dCBndWNfbG9nX2J1ZmZlcl9zdGF0ZSkpOworCQlidWZmZXJfc2l6ZSA9IGd1Y19nZXRfbG9nX2J1 ZmZlcl9zaXplKHR5cGUpOworCQl3cml0ZV9vZmZzZXQgPSBsb2dfYnVmX3N0YXRlX2xvY2FsLnNh bXBsZWRfd3JpdGVfcHRyOworCisJCS8qIFVwZGF0ZSB0aGUgc3RhdGUgb2Ygc2hhcmVkIGxvZyBi dWZmZXIgKi8KKwkJbG9nX2J1Zl9zdGF0ZS0+cmVhZF9wdHIgPSB3cml0ZV9vZmZzZXQ7CisJCWxv Z19idWZfc3RhdGUtPmZsdXNoX3RvX2ZpbGUgPSAwOworCQlsb2dfYnVmX3N0YXRlKys7CisKKwkJ aWYgKHVubGlrZWx5KCFsb2dfYnVmX3NuYXBzaG90X3N0YXRlKSkKKwkJCWNvbnRpbnVlOworCisJ CS8qIEZpcnN0IGNvcHkgdGhlIHN0YXRlIHN0cnVjdHVyZSBpbiBzbmFwc2hvdCBidWZmZXIgKi8K KwkJbWVtY3B5KGxvZ19idWZfc25hcHNob3Rfc3RhdGUsICZsb2dfYnVmX3N0YXRlX2xvY2FsLAor CQkgICAgICAgc2l6ZW9mKHN0cnVjdCBndWNfbG9nX2J1ZmZlcl9zdGF0ZSkpOworCisJCS8qIFRo ZSB3cml0ZSBwb2ludGVyIGNvdWxkIGhhdmUgYmVlbiB1cGRhdGVkIGJ5IEd1QyBmaXJtd2FyZSwK KwkJICogYWZ0ZXIgc2VuZGluZyB0aGUgZmx1c2ggaW50ZXJydXB0IHRvIEhvc3QsIGZvciBjb25z aXN0ZW5jeQorCQkgKiBzZXQgd3JpdGUgcG9pbnRlciB2YWx1ZSB0byBzYW1lIHZhbHVlIG9mIHNh bXBsZWRfd3JpdGVfcHRyCisJCSAqIGluIHRoZSBzbmFwc2hvdCBidWZmZXIuCisJCSAqLworCQls b2dfYnVmX3NuYXBzaG90X3N0YXRlLT53cml0ZV9wdHIgPSB3cml0ZV9vZmZzZXQ7CisJCWxvZ19i dWZfc25hcHNob3Rfc3RhdGUrKzsKKworCQkvKiBOb3cgY29weSB0aGUgYWN0dWFsIGxvZ3MuICov CisJCW1lbWNweShkc3RfZGF0YSwgc3JjX2RhdGEsIGJ1ZmZlcl9zaXplKTsKKworCQlzcmNfZGF0 YSArPSBidWZmZXJfc2l6ZTsKKwkJZHN0X2RhdGEgKz0gYnVmZmVyX3NpemU7CisKKwkJLyogRklY TUU6IGludmFsaWRhdGUvZmx1c2ggZm9yIGxvZyBidWZmZXIgbmVlZGVkICovCisJfQorCisJaWYg KGxvZ19idWZfc25hcHNob3Rfc3RhdGUpCisJCWd1Y19tb3ZlX3RvX25leHRfYnVmKGd1Yyk7Cit9 CisKK3N0YXRpYyB2b2lkIGd1Y19jYXB0dXJlX2xvZ3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFp bmVyX29mKHdvcmssIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLCBndWMubG9nLmZsdXNoX3dvcmsp OworCisJaTkxNV9ndWNfY2FwdHVyZV9sb2dzKGRldl9wcml2KTsKK30KKworc3RhdGljIHZvaWQg Z3VjX2xvZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOworCisJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJLyogRmlyc3QgZGlzYWJs ZSB0aGUgZmx1c2ggaW50ZXJydXB0ICovCisJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRl dl9wcml2KTsKKworCWlmIChndWMtPmxvZy5mbHVzaF93cSkKKwkJZGVzdHJveV93b3JrcXVldWUo Z3VjLT5sb2cuZmx1c2hfd3EpOworCisJZ3VjLT5sb2cuZmx1c2hfd3EgPSBOVUxMOworCisJaWYg KGd1Yy0+bG9nLmJ1Zl9hZGRyKQorCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1Yy0+bG9n LnZtYS0+b2JqKTsKKworCWd1Yy0+bG9nLmJ1Zl9hZGRyID0gTlVMTDsKK30KKworc3RhdGljIGlu dCBndWNfY3JlYXRlX2xvZ19leHRyYXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CisJdm9pZCAq dmFkZHI7CisJaW50IHJldDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKKworCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlpZiAoaTkxNS5ndWNfbG9n X2xldmVsIDwgMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWd1Yy0+bG9nLmJ1Zl9hZGRyKSB7CisJ CS8qIENyZWF0ZSBhIHZtYWxsb2MgbWFwcGluZyBvZiBsb2cgYnVmZmVyIHBhZ2VzICovCisJCXZh ZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5sb2cudm1hLT5vYmosIEk5MTVfTUFQ X1dCKTsKKwkJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJCXJldCA9IFBUUl9FUlIodmFkZHIpOwor CQkJRFJNX0VSUk9SKCJDb3VsZG4ndCBtYXAgbG9nIGJ1ZmZlciBwYWdlcyAlZFxuIiwgcmV0KTsK KwkJCXJldHVybiByZXQ7CisJCX0KKworCQlndWMtPmxvZy5idWZfYWRkciA9IHZhZGRyOworCX0K KworCWlmICghZ3VjLT5sb2cuZmx1c2hfd3EpIHsKKwkJSU5JVF9XT1JLKCZndWMtPmxvZy5mbHVz aF93b3JrLCBndWNfY2FwdHVyZV9sb2dzX3dvcmspOworCisJCS8qIE5lZWQgYSBkZWRpY2F0ZWQg d3EgdG8gcHJvY2VzcyBsb2cgYnVmZmVyIGZsdXNoIGludGVycnVwdHMKKwkJICogZnJvbSBHdUMg d2l0aG91dCBtdWNoIGRlbGF5IHNvIGFzIHRvIGF2b2lkIGFueSBsb3NzIG9mIGxvZ3MuCisJCSAq LworCQlndWMtPmxvZy5mbHVzaF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWd1 Y19sb2ciLCAwKTsKKwkJaWYgKGd1Yy0+bG9nLmZsdXNoX3dxID09IE5VTEwpIHsKKwkJCURSTV9F UlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgdGhlIHdxIGZvciBHdUMgbG9nZ2luZ1xuIik7CisJCQly ZXR1cm4gLUVOT01FTTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCBn dWNfY3JlYXRlX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGk5MTVfdm1h ICp2bWE7CkBAIC04NTEsNiArMTAxNywxMyBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2xvZyhz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJCX0KIAogCQlndWMtPmxvZy52bWEgPSB2bWE7CisKKwkJ aWYgKGd1Y19jcmVhdGVfbG9nX2V4dHJhcyhndWMpKSB7CisJCQlndWNfbG9nX2NsZWFudXAoZ3Vj KTsKKwkJCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmxvZy52bWEpOworCQkJaTkx NS5ndWNfbG9nX2xldmVsID0gLTE7CisJCQlyZXR1cm47CisJCX0KIAl9CiAKIAkvKiBlYWNoIGFs bG9jYXRlZCB1bml0IGlzIGEgcGFnZSAqLwpAQCAtMTAzMiw2ICsxMjA1LDcgQEAgdm9pZCBpOTE1 X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwogCiAJaTkxNV92bWFfdW5w aW5fYW5kX3JlbGVhc2UoJmd1Yy0+YWRzX3ZtYSk7CisJZ3VjX2xvZ19jbGVhbnVwKGd1Yyk7CiAJ aTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+bG9nLnZtYSk7CiAKIAlpZiAoZ3VjLT5j dHhfcG9vbF92bWEpCkBAIC0xMDkzLDMgKzEyNjcsMTUgQEAgaW50IGludGVsX2d1Y19yZXN1bWUo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCXJldHVybiBob3N0Mmd1Y19hY3Rpb24oZ3VjLCBk YXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKIH0KKwordm9pZCBpOTE1X2d1Y19jYXB0dXJlX2xvZ3Mo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWd1Y19yZWFkX3VwZGF0ZV9s b2dfYnVmZmVyKCZkZXZfcHJpdi0+Z3VjKTsKKworCS8qIEdlbmVyYWxseSBkZXZpY2UgaXMgZXhw ZWN0ZWQgdG8gYmUgYWN0aXZlIG9ubHkgYXQgdGhpcworCSAqIHRpbWUsIHNvIGdldC9wdXQgc2hv dWxkIGJlIHJlYWxseSBxdWljay4KKwkgKi8KKwlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CisJaG9zdDJndWNfbG9nYnVmZmVyX2ZsdXNoX2NvbXBsZXRlKCZkZXZfcHJpdi0+Z3VjKTsK KwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YwppbmRleCAwNGM0OGZmLi5jZmI1MjUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTE2 NjIsNyArMTY2MiwzMyBAQCBzdGF0aWMgdm9pZCBnZW42X3Jwc19pcnFfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwbV9paXIpCiBzdGF0aWMgdm9pZCBnZW45 X2d1Y19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBn dF9paXIpCiB7CiAJaWYgKGd0X2lpciAmIEdFTjlfR1VDX1RPX0hPU1RfSU5UX0VWRU5UKSB7Ci0J CS8qIFRPRE86IEhhbmRsZSBldmVudHMgZm9yIHdoaWNoIEd1QyBpbnRlcnJ1cHRlZCBob3N0ICov CisJCS8qIFNhbXBsZSB0aGUgbG9nIGJ1ZmZlciBmbHVzaCByZWxhdGVkIGJpdHMgJiBjbGVhciB0 aGVtIG91dCBub3cKKwkJICogaXRzZWxmIGZyb20gdGhlIG1lc3NhZ2UgaWRlbnRpdHkgcmVnaXN0 ZXIgdG8gbWluaW1pemUgdGhlCisJCSAqIHByb2JhYmlsaXR5IG9mIGxvc2luZyBhIGZsdXNoIGlu dGVycnVwdCwgd2hlbiB0aGVyZSBhcmUgYmFjaworCQkgKiB0byBiYWNrIGZsdXNoIGludGVycnVw dHMuCisJCSAqIFRoZXJlIGNhbiBiZSBhIG5ldyBmbHVzaCBpbnRlcnJ1cHQsIGZvciBkaWZmZXJl bnQgbG9nIGJ1ZmZlcgorCQkgKiB0eXBlIChsaWtlIGZvciBJU1IpLCB3aGlsc3QgSG9zdCBpcyBo YW5kbGluZyBvbmUgKGZvciBEUEMpLgorCQkgKiBTaW5jZSBzYW1lIGJpdCBpcyB1c2VkIGluIG1l c3NhZ2UgcmVnaXN0ZXIgZm9yIElTUiAmIERQQywgaXQKKwkJICogY291bGQgaGFwcGVuIHRoYXQg R3VDIHNldHMgdGhlIGJpdCBmb3IgMm5kIGludGVycnVwdCBidXQgSG9zdAorCQkgKiBjbGVhcnMg b3V0IHRoZSBiaXQgb24gaGFuZGxpbmcgdGhlIDFzdCBpbnRlcnJ1cHQuCisJCSAqLworCQl1MzIg bXNnLCBmbHVzaDsKKworCQltc2cgPSBJOTE1X1JFQUQoU09GVF9TQ1JBVENIKDE1KSk7CisJCWZs dXNoID0gbXNnICYgKEdVQzJIT1NUX01TR19DUkFTSF9EVU1QX1BPU1RFRCB8CisJCQkgICAgICAg R1VDMkhPU1RfTVNHX0ZMVVNIX0xPR19CVUZGRVIpOworCQlpZiAoZmx1c2gpIHsKKwkJCS8qIENs ZWFyIHRoZSBtZXNzYWdlIGJpdHMgdGhhdCBhcmUgaGFuZGxlZCAqLworCQkJSTkxNV9XUklURShT T0ZUX1NDUkFUQ0goMTUpLCBtc2cgJiB+Zmx1c2gpOworCisJCQkvKiBIYW5kbGUgZmx1c2ggaW50 ZXJydXB0IGluIGJvdHRvbSBoYWxmICovCisJCQlxdWV1ZV93b3JrKGRldl9wcml2LT5ndWMubG9n LmZsdXNoX3dxLAorCQkJCSAgICZkZXZfcHJpdi0+Z3VjLmxvZy5mbHVzaF93b3JrKTsKKwkJfSBl bHNlIHsKKwkJCS8qIE5vdCBjbGVhcmluZyBvZiB1bmhhbmRsZWQgZXZlbnQgYml0cyB3b24ndCBy ZXN1bHQgaW4KKwkJCSAqIHJlLXRyaWdnZXJpbmcgb2YgdGhlIGludGVycnVwdC4KKwkJCSAqLwor CQl9CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCmluZGV4IDFmYzYzZmUuLmQwNTNh MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBAIC0xMjQsNiArMTI0LDkgQEAgc3RydWN0 IGludGVsX2d1Y19mdyB7CiBzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyB7CiAJdWludDMyX3QgZmxhZ3M7 CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdm9pZCAqYnVmX2FkZHI7CisJc3RydWN0IHdvcmtx dWV1ZV9zdHJ1Y3QgKmZsdXNoX3dxOworCXN0cnVjdCB3b3JrX3N0cnVjdCBmbHVzaF93b3JrOwog fTsKIAogc3RydWN0IGludGVsX2d1YyB7CkBAIC0xNjcsNSArMTcwLDYgQEAgaW50IGk5MTVfZ3Vj X3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBp bnQgaTkxNV9ndWNfd3FfY2hlY2tfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy cSk7CiB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgaTkxNV9ndWNfY2FwdHVyZV9sb2dzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKICNlbmRpZgotLSAKMS45LjIKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=