From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH 08/18] drm/i915: Add a relay backed debugfs interface for capturing GuC logs Date: Thu, 8 Sep 2016 16:09:08 +0530 Message-ID: <1473331158-21082-9-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 559266EE0C for ; Thu, 8 Sep 2016 10:25:51 +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 , Sourab Gupta List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRlbC5jb20+CgpBZGRlZCBhIG5ldyBkZWJ1 Z2ZzIGludGVyZmFjZSAnL3N5cy9rZXJuZWwvZGVidWcvZHJpL2d1Y19sb2cnIGZvciB0aGUKVXNl ciB0byBjYXB0dXJlIEd1QyBmaXJtd2FyZSBsb2dzLiBBdmFpbGVkIHJlbGF5IGZyYW1ld29yayB0 byBpbXBsZW1lbnQKdGhlIGludGVyZmFjZSwgd2hlcmUgRHJpdmVyIHdpbGwgaGF2ZSB0byBqdXN0 IHVzZSBhIHJlbGF5IEFQSSB0byBzdG9yZQpzbmFwc2hvdHMgb2YgdGhlIEd1QyBsb2cgYnVmZmVy IGluIHRoZSBidWZmZXIgbWFuYWdlZCBieSByZWxheS4KVGhlIHNuYXBzaG90IHdpbGwgYmUgdGFr ZW4gd2hlbiBHdUMgZmlybXdhcmUgc2VuZHMgYSBsb2cgYnVmZmVyIGZsdXNoCmludGVycnVwdCBh bmQgdXAgdG8gZm91ciBzbmFwc2hvdHMgY291bGQgYmUgc3RvcmVkIGluIHRoZSByZWxheSBidWZm ZXIuClRoZSByZWxheSBidWZmZXIgd2lsbCBiZSBvcGVyYXRlZCBpbiBhIG1vZGUgd2hlcmUgaXQg d2lsbCBvdmVyd3JpdGUgdGhlCmRhdGEgbm90IHlldCBjb2xsZWN0ZWQgYnkgVXNlci4KQmVzaWRl cyBtbWFwIG1ldGhvZCwgdGhyb3VnaCB3aGljaCBVc2VyIGNhbiBkaXJlY3RseSBhY2Nlc3MgdGhl IHJlbGF5CmJ1ZmZlciBjb250ZW50cywgcmVsYXkgYWxzbyBzdXBwb3J0cyB0aGUgJ3BvbGwnIG1l dGhvZC4gVGhyb3VnaCB0aGUgJ3BvbGwnCmNhbGwgb24gbG9nIGZpbGUsIFVzZXIgY2FuIGNvbWUg dG8ga25vdyB3aGVuZXZlciBhIG5ldyBzbmFwc2hvdCBvZiB0aGUKbG9nIGJ1ZmZlciBpcyB0YWtl biBieSBEcml2ZXIsIHNvIGNhbiBydW4gaW4gdGFuZGVtIHdpdGggdGhlIERyaXZlciBhbmQKY2Fw dHVyZSB0aGUgbG9ncyBpbiBhIHN1c3RhaW5lZC9zdHJlYW1pbmcgbWFubmVyLCB3aXRob3V0IGFu eSBsb3NzIG9mIGRhdGEuCgp2MjogRGVmZXIgdGhlIGNyZWF0aW9uIG9mIHJlbGF5IGNoYW5uZWwg JiBhc3NvY2lhdGVkIGRlYnVnZnMgZmlsZSwgYXMKICAgIGRlYnVnZnMgc2V0dXAgaXMgbm93IGRv bmUgYXQgdGhlIGVuZCBvZiBpOTE1IERyaXZlciBsb2FkLiAoQ2hyaXMpCgp2MzoKLSBTd2l0Y2gg dG8gbm8tb3ZlcndyaXRlIG1vZGUgZm9yIHJlbGF5LgotIEZpeCB0aGUgcmVsYXkgc3ViIGJ1ZmZl ciBzd2l0Y2hpbmcgc2VxdWVuY2UuCgp2NDoKLSBVcGRhdGUgaTkxNSBLY29uZmlnIHRvIHNlbGVj dCBSRUxBWSBjb25maWcuIChUdnJ0S28pCi0gTG9nIGEgbWVzc2FnZSB3aGVuIHRoZXJlIGlzIG5v IHN1YiBidWZmZXIgYXZhaWxhYmxlIHRvIGNhcHR1cmUKICB0aGUgR3VDIGxvZyBidWZmZXIuIChU dnJ0a28pCi0gSW5jcmVhc2UgdGhlIG51bWJlciBvZiByZWxheSBzdWIgYnVmZmVycyB0byA4IGZy b20gNCwgdG8gaGF2ZQogIHN1ZmZpY2llbnQgYnVmZmVyaW5nIGZvciBib290IHRpbWUgbG9ncwoK djU6Ci0gRml4IHRoZSBhbGlnbm1lbnQsIGluZGVudGF0aW9uIGlzc3VlcyBhbmQgc29tZSBtaW5v ciBjbGVhbnVwLiAoVHZydGtvKQotIFVwZGF0ZSB0aGUgY29tbWVudCB0byBlbGFib3JhdGUgb24g d2h5IGEgcmVsYXkgY2hhbm5lbCBoYXMgdG8gYmUKICBhc3NvY2lhdGVkIHdpdGggdGhlIGRlYnVn ZnMgZmlsZS4gKFR2cnRrbykKCnY2OgotIE1vdmUgdGhlIHdyaXRlIHRvICdpc19nbG9iYWwnIGFm dGVyIHRoZSBOVUxMIGNoZWNrIG9uIHBhcmVudCBkaXJlY3RvcnkKICBkZW50cnkgcG9pbnRlci4g KFR2cnRrbykKCnY3OiBBZGQgYSBCVUdfT04gdG8gdmFsaWRhdGUgcmVsYXkgYnVmZmVyIGFsbG9j YXRpb24gc2l6ZS4gKENocmlzKQoKVGVzdGNhc2U6IGlndC90b29scy9pbnRlbF9ndWNfbG9nZ2Vy CgpTdWdnZXN0ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpT aWduZWQtb2ZmLWJ5OiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9LY29uZmlnICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgICAgIHwgICAzICsKIDQg ZmlsZXMgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L0tjb25maWcKaW5kZXggNzc2OWU0Ni4uZmM5MDBkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCkBAIC0x MSw2ICsxMSw3IEBAIGNvbmZpZyBEUk1fSTkxNQogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgogCXNl bGVjdCBEUk1fUEFORUwKIAlzZWxlY3QgRFJNX01JUElfRFNJCisJc2VsZWN0IFJFTEFZCiAJIyBp OTE1IGRlcGVuZHMgb24gQUNQSV9WSURFTyB3aGVuIEFDUEkgaXMgZW5hYmxlZAogCSMgYnV0IGZv ciBzZWxlY3QgdG8gd29yaywgbmVlZCB0byBzZWxlY3QgQUNQSV9WSURFTydzIGRlcGVuZGVuY2ll cywgaWNrCiAJc2VsZWN0IEJBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpZiBBQ1BJCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwppbmRleCAwMmMzNGQ2Li5iNjFmMWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKQEAgLTExMjIsNiArMTEyMiw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkvKiBSZXZlYWwgb3VyIHByZXNl bmNlIHRvIHVzZXJzcGFjZSAqLwogCWlmIChkcm1fZGV2X3JlZ2lzdGVyKGRldiwgMCkgPT0gMCkg ewogCQlpOTE1X2RlYnVnZnNfcmVnaXN0ZXIoZGV2X3ByaXYpOworCQlpOTE1X2d1Y19yZWdpc3Rl cihkZXZfcHJpdik7CiAJCWk5MTVfc2V0dXBfc3lzZnMoZGV2X3ByaXYpOwogCX0gZWxzZQogCQlE Uk1fRVJST1IoIkZhaWxlZCB0byByZWdpc3RlciBkcml2ZXIgZm9yIHVzZXJzcGFjZSBhY2Nlc3Mh XG4iKTsKQEAgLTExNjAsNiArMTE2MSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3VucmVn aXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVsX29wcmVnaW9u X3VucmVnaXN0ZXIoZGV2X3ByaXYpOwogCiAJaTkxNV90ZWFyZG93bl9zeXNmcyhkZXZfcHJpdik7 CisJaTkxNV9ndWNfdW5yZWdpc3RlcihkZXZfcHJpdik7CiAJaTkxNV9kZWJ1Z2ZzX3VucmVnaXN0 ZXIoZGV2X3ByaXYpOwogCWRybV9kZXZfdW5yZWdpc3RlcigmZGV2X3ByaXYtPmRybSk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCAyMWU3YzE4My4u ZTI4NjNiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpA QCAtMjMsNiArMjMsOCBAQAogICovCiAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KICNpbmNs dWRlIDxsaW51eC9jaXJjX2J1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KKyNpbmNs dWRlIDxsaW51eC9yZWxheS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50 ZWxfZ3VjLmgiCiAKQEAgLTgzNSwxMyArODM3LDE2MCBAQCBlcnI6CiAJcmV0dXJuIE5VTEw7CiB9 CiAKKy8qCisgKiBTdWIgYnVmZmVyIHN3aXRjaCBjYWxsYmFjay4gQ2FsbGVkIHdoZW5ldmVyIHJl bGF5IGhhcyB0byBzd2l0Y2ggdG8gYSBuZXcKKyAqIHN1YiBidWZmZXIsIHJlbGF5IHN0YXlzIG9u IHRoZSBzYW1lIHN1YiBidWZmZXIgaWYgMCBpcyByZXR1cm5lZC4KKyAqLworc3RhdGljIGludCBz dWJidWZfc3RhcnRfY2FsbGJhY2soc3RydWN0IHJjaGFuX2J1ZiAqYnVmLAorCQkJCSB2b2lkICpz dWJidWYsCisJCQkJIHZvaWQgKnByZXZfc3ViYnVmLAorCQkJCSBzaXplX3QgcHJldl9wYWRkaW5n KQoreworCS8qIFVzZSBuby1vdmVyd3JpdGUgbW9kZSBieSBkZWZhdWx0LCB3aGVyZSByZWxheSB3 aWxsIHN0b3AgYWNjZXB0aW5nCisJICogbmV3IGRhdGEgaWYgdGhlcmUgYXJlIG5vIGVtcHR5IHN1 YiBidWZmZXJzIGxlZnQuCisJICogVGhlcmUgaXMgbm8gc3RyaWN0IHN5bmNocm9uaXphdGlvbiBl bmZvcmNlZCBieSByZWxheSBiZXR3ZWVuIENvbnN1bWVyCisJICogYW5kIFByb2R1Y2VyLiBJbiBv dmVyd3JpdGUgbW9kZSwgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZiBnZXR0aW5nCisJICogaW5j b25zaXN0ZW50L2dhcmJsZWQgZGF0YSwgdGhlIHByb2R1Y2VyIGNvdWxkIGJlIHdyaXRpbmcgb24g dG8gdGhlCisJICogc2FtZSBzdWIgYnVmZmVyIGZyb20gd2hpY2ggQ29uc3VtZXIgaXMgcmVhZGlu Zy4gVGhpcyBjYW4ndCBiZSBhdm9pZGVkCisJICogdW5sZXNzIENvbnN1bWVyIGlzIGZhc3QgZW5v dWdoIGFuZCBjYW4gYWx3YXlzIHJ1biBpbiB0YW5kZW0gd2l0aAorCSAqIFByb2R1Y2VyLgorCSAq LworCWlmIChyZWxheV9idWZfZnVsbChidWYpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiAxOwor fQorCisvKgorICogZmlsZV9jcmVhdGUoKSBjYWxsYmFjay4gQ3JlYXRlcyByZWxheSBmaWxlIGlu IGRlYnVnZnMuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjcmVhdGVfYnVmX2ZpbGVfY2Fs bGJhY2soY29uc3QgY2hhciAqZmlsZW5hbWUsCisJCQkJCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpw YXJlbnQsCisJCQkJCSAgICAgICB1bW9kZV90IG1vZGUsCisJCQkJCSAgICAgICBzdHJ1Y3QgcmNo YW5fYnVmICpidWYsCisJCQkJCSAgICAgICBpbnQgKmlzX2dsb2JhbCkKK3sKKwlzdHJ1Y3QgZGVu dHJ5ICpidWZfZmlsZTsKKworCWlmICghcGFyZW50KQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFRo aXMgdG8gZW5hYmxlIHRoZSB1c2Ugb2YgYSBzaW5nbGUgYnVmZmVyIGZvciB0aGUgcmVsYXkgY2hh bm5lbCBhbmQKKwkgKiBjb3JyZXNwb25kaW5nbHkgaGF2ZSBhIHNpbmdsZSBmaWxlIGV4cG9zZWQg dG8gVXNlciwgdGhyb3VnaCB3aGljaAorCSAqIGl0IGNhbiBjb2xsZWN0IHRoZSBsb2dzIGluIG9y ZGVyIHdpdGhvdXQgYW55IHBvc3QtcHJvY2Vzc2luZy4KKwkgKi8KKwkqaXNfZ2xvYmFsID0gMTsK KworCS8qIE5vdCB1c2luZyB0aGUgY2hhbm5lbCBmaWxlbmFtZSBwYXNzZWQgYXMgYW4gYXJndW1l bnQsIHNpbmNlIGZvciBlYWNoCisJICogY2hhbm5lbCByZWxheSBhcHBlbmRzIHRoZSBjb3JyZXNw b25kaW5nIENQVSBudW1iZXIgdG8gdGhlIGZpbGVuYW1lCisJICogcGFzc2VkIGluIHJlbGF5X29w ZW4oKS4gVGhpcyBzaG91bGQgYmUgZmluZSBhcyByZWxheSBqdXN0IG5lZWRzIGEKKwkgKiBkZW50 cnkgb2YgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaGFubmVsIGJ1ZmZlciBhbmQgdGhh dCBmaWxlJ3MKKwkgKiBuYW1lIG5lZWQgbm90IGJlIHNhbWUgYXMgdGhlIGZpbGVuYW1lIHBhc3Nl ZCBhcyBhbiBhcmd1bWVudC4KKwkgKi8KKwlidWZfZmlsZSA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUo Imd1Y19sb2ciLCBtb2RlLAorCQkJCSAgICAgICBwYXJlbnQsIGJ1ZiwgJnJlbGF5X2ZpbGVfb3Bl cmF0aW9ucyk7CisJcmV0dXJuIGJ1Zl9maWxlOworfQorCisvKgorICogZmlsZV9yZW1vdmUoKSBk ZWZhdWx0IGNhbGxiYWNrLiBSZW1vdmVzIHJlbGF5IGZpbGUgaW4gZGVidWdmcy4KKyAqLworc3Rh dGljIGludCByZW1vdmVfYnVmX2ZpbGVfY2FsbGJhY2soc3RydWN0IGRlbnRyeSAqZGVudHJ5KQor eworCWRlYnVnZnNfcmVtb3ZlKGRlbnRyeSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIHJlbGF5IGNo YW5uZWwgY2FsbGJhY2tzICovCitzdGF0aWMgc3RydWN0IHJjaGFuX2NhbGxiYWNrcyByZWxheV9j YWxsYmFja3MgPSB7CisJLnN1YmJ1Zl9zdGFydCA9IHN1YmJ1Zl9zdGFydF9jYWxsYmFjaywKKwku Y3JlYXRlX2J1Zl9maWxlID0gY3JlYXRlX2J1Zl9maWxlX2NhbGxiYWNrLAorCS5yZW1vdmVfYnVm X2ZpbGUgPSByZW1vdmVfYnVmX2ZpbGVfY2FsbGJhY2ssCit9OworCitzdGF0aWMgdm9pZCBndWNf cmVtb3ZlX2xvZ19yZWxheV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlyZWxheV9j bG9zZShndWMtPmxvZy5yZWxheV9jaGFuKTsKK30KKworc3RhdGljIGludCBndWNfY3JlYXRlX2xv Z19yZWxheV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOworCXN0cnVjdCByY2hhbiAqZ3Vj X2xvZ19yZWxheV9jaGFuOworCXN0cnVjdCBkZW50cnkgKmxvZ19kaXI7CisJc2l6ZV90IG5fc3Vi YnVmcywgc3ViYnVmX3NpemU7CisKKwkvKiBGb3Igbm93IGNyZWF0ZSB0aGUgbG9nIGZpbGUgaW4g L3N5cy9rZXJuZWwvZGVidWcvZHJpLzAgZGlyICovCisJbG9nX2RpciA9IGRldl9wcml2LT5kcm0u cHJpbWFyeS0+ZGVidWdmc19yb290OworCisJLyogSWYgL3N5cy9rZXJuZWwvZGVidWcvZHJpLzAg bG9jYXRpb24gZG8gbm90IGV4aXN0LCB0aGVuIGRlYnVnZnMgaXMKKwkgKiBub3QgbW91bnRlZCBh bmQgc28gY2FuJ3QgY3JlYXRlIHRoZSByZWxheSBmaWxlLgorCSAqIFRoZSByZWxheSBBUEkgc2Vl bXMgdG8gZml0IHdlbGwgd2l0aCBkZWJ1Z2ZzIG9ubHksIGZvciBhdmFpbGluZyByZWxheQorCSAq IHRoZXJlIGFyZSAzIHJlcXVpcmVtZW50cyB3aGljaCBjYW4gYmUgbWV0IGZvciBkZWJ1Z2ZzIGZp bGUgb25seSBpbiBhCisJICogc3RyYWlnaHRmb3J3YXJkL2NsZWFuIG1hbm5lciA6LQorCSAqIGkp ICAgTmVlZCB0aGUgYXNzb2NpYXRlZCBkZW50cnkgcG9pbnRlciBvZiB0aGUgZmlsZSwgd2hpbGUg b3BlbmluZyB0aGUKKwkgKiAgICAgIHJlbGF5IGNoYW5uZWwuCisJICogaWkpICBTaG91bGQgYmUg YWJsZSB0byB1c2UgJ3JlbGF5X2ZpbGVfb3BlcmF0aW9ucycgZm9wcyBmb3IgdGhlIGZpbGUuCisJ ICogaWlpKSBTZXQgdGhlICdpX3ByaXZhdGUnIGZpZWxkIG9mIGZpbGUncyBpbm9kZSB0byB0aGUg cG9pbnRlciBvZgorCSAqCXJlbGF5IGNoYW5uZWwgYnVmZmVyLgorCSAqLworCWlmICghbG9nX2Rp cikgeworCQlEUk1fRVJST1IoIkRlYnVnZnMgZGlyIG5vdCBhdmFpbGFibGUgeWV0IGZvciBHdUMg bG9nIGZpbGVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBLZWVwIHRoZSBzaXpl IG9mIHN1YiBidWZmZXJzIHNhbWUgYXMgc2hhcmVkIGxvZyBidWZmZXIgKi8KKwlzdWJidWZfc2l6 ZSA9IGd1Yy0+bG9nLnZtYS0+b2JqLT5iYXNlLnNpemU7CisKKwkvKiBTdG9yZSB1cCB0byA4IHNu YXBzaG90cywgd2hpY2ggaXMgbGFyZ2UgZW5vdWdoIHRvIGJ1ZmZlciBzdWZmaWNpZW50CisJICog Ym9vdCB0aW1lIGxvZ3MgYW5kIHByb3ZpZGVzIGVub3VnaCBsZWV3YXkgdG8gVXNlciwgaW4gdGVy bXMgb2YKKwkgKiBsYXRlbmN5LCBmb3IgY29uc3VtaW5nIHRoZSBsb2dzIGZyb20gcmVsYXkuIEFs c28gZG9lc24ndCB0YWtlCisJICogdXAgdG9vIG11Y2ggbWVtb3J5LgorCSAqLworCW5fc3ViYnVm cyA9IDg7CisKKwlndWNfbG9nX3JlbGF5X2NoYW4gPSByZWxheV9vcGVuKCJndWNfbG9nIiwgbG9n X2Rpciwgc3ViYnVmX3NpemUsCisJCQkJCW5fc3ViYnVmcywgJnJlbGF5X2NhbGxiYWNrcywgZGV2 X3ByaXYpOworCWlmICghZ3VjX2xvZ19yZWxheV9jaGFuKSB7CisJCURSTV9FUlJPUigiQ291bGRu J3QgY3JlYXRlIHJlbGF5IGNoYW4gZm9yIEd1QyBsb2dnaW5nXG4iKTsKKwkJcmV0dXJuIC1FTk9N RU07CisJfQorCisJR0VNX0JVR19PTihndWNfbG9nX3JlbGF5X2NoYW4tPnN1YmJ1Zl9zaXplIDwg c3ViYnVmX3NpemUpOworCS8qIEZJWE1FOiBDb3ZlciB0aGUgdXBkYXRlIHVuZGVyIGEgbG9jayA/ ICovCisJZ3VjLT5sb2cucmVsYXlfY2hhbiA9IGd1Y19sb2dfcmVsYXlfY2hhbjsKKwlyZXR1cm4g MDsKK30KKwogc3RhdGljIHZvaWQgZ3VjX21vdmVfdG9fbmV4dF9idWYoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQogeworCS8qIE1ha2Ugc3VyZSB0aGUgdXBkYXRlcyBtYWRlIGluIHRoZSBzdWIgYnVm ZmVyIGFyZSB2aXNpYmxlIHdoZW4KKwkgKiBDb25zdW1lciBzZWVzIHRoZSBmb2xsb3dpbmcgdXBk YXRlIHRvIG9mZnNldCBpbnNpZGUgdGhlIHN1YiBidWZmZXIuCisJICovCisJc21wX3dtYigpOwor CisJLyogQWxsIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgc28gbm93IG1vdmUgdGhlIG9mZnNldCBv ZiBzdWIgYnVmZmVyLiAqLworCXJlbGF5X3Jlc2VydmUoZ3VjLT5sb2cucmVsYXlfY2hhbiwgZ3Vj LT5sb2cudm1hLT5vYmotPmJhc2Uuc2l6ZSk7CisKKwkvKiBTd2l0Y2ggdG8gdGhlIG5leHQgc3Vi IGJ1ZmZlciAqLworCXJlbGF5X2ZsdXNoKGd1Yy0+bG9nLnJlbGF5X2NoYW4pOwogfQogCiBzdGF0 aWMgdm9pZCAqZ3VjX2dldF93cml0ZV9idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewot CXJldHVybiBOVUxMOworCS8qIEZJWE1FOiBDb3ZlciB0aGUgY2hlY2sgdW5kZXIgYSBsb2NrID8g Ki8KKwlpZiAoIWd1Yy0+bG9nLnJlbGF5X2NoYW4pCisJCXJldHVybiBOVUxMOworCisJLyogSnVz dCBnZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBhIG5ldyBzdWIgYnVmZmVyIGFuZCBjb3B5IGRhdGEg aW50byBpdAorCSAqIG91cnNlbHZlcy4gTlVMTCB3aWxsIGJlIHJldHVybmVkIGluIG5vLW92ZXJ3 cml0ZSBtb2RlLCBpZiBhbGwgc3ViCisJICogYnVmZmVycyBhcmUgZnVsbC4gQ291bGQgaGF2ZSB1 c2VkIHRoZSByZWxheV93cml0ZSgpIHRvIGluZGlyZWN0bHkKKwkgKiBjb3B5IHRoZSBkYXRhLCBi dXQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYml0IGNvbnZvbHV0ZWQsIGFzIHdlIG5lZWQgdG8KKwkg KiB3cml0ZSB0byBvbmx5IGNlcnRhaW4gbG9jYXRpb25zIGluc2lkZSBhIHN1YiBidWZmZXIgd2hp Y2ggY2Fubm90IGJlCisJICogZG9uZSB3aXRob3V0IHVzaW5nIHJlbGF5X3Jlc2VydmUoKSBhbG9u ZyB3aXRoIHJlbGF5X3dyaXRlKCkuIFNvIGl0cworCSAqIGJldHRlciB0byB1c2UgcmVsYXlfcmVz ZXJ2ZSgpIGFsb25lLgorCSAqLworCXJldHVybiByZWxheV9yZXNlcnZlKGd1Yy0+bG9nLnJlbGF5 X2NoYW4sIDApOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGd1Y19nZXRfbG9nX2J1ZmZlcl9z aXplKGVudW0gZ3VjX2xvZ19idWZmZXJfdHlwZSB0eXBlKQpAQCAtOTIyLDYgKzEwNzEsMTIgQEAg c3RhdGljIHZvaWQgZ3VjX3JlYWRfdXBkYXRlX2xvZ19idWZmZXIoc3RydWN0IGludGVsX2d1YyAq Z3VjKQogCiAJaWYgKGxvZ19idWZfc25hcHNob3Rfc3RhdGUpCiAJCWd1Y19tb3ZlX3RvX25leHRf YnVmKGd1Yyk7CisJZWxzZSB7CisJCS8qIFVzZWQgcmF0ZSBsaW1pdGVkIHRvIGF2b2lkIGRlbHVn ZSBvZiBtZXNzYWdlcywgbG9ncyBtaWdodCBiZQorCQkgKiBnZXR0aW5nIGNvbnN1bWVkIGJ5IFVz ZXIgYXQgYSBzbG93IHJhdGUuCisJCSAqLworCQlEUk1fRVJST1JfUkFURUxJTUlURUQoIm5vIHN1 Yi1idWZmZXIgdG8gY2FwdHVyZSBsb2dzXG4iKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGd1Y19j YXB0dXJlX2xvZ3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC05NDYsNiArMTEw MSwxMSBAQCBzdGF0aWMgdm9pZCBndWNfbG9nX2NsZWFudXAoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQogCiAJZ3VjLT5sb2cuZmx1c2hfd3EgPSBOVUxMOwogCisJaWYgKGd1Yy0+bG9nLnJlbGF5X2No YW4pCisJCWd1Y19yZW1vdmVfbG9nX3JlbGF5X2ZpbGUoZ3VjKTsKKworCWd1Yy0+bG9nLnJlbGF5 X2NoYW4gPSBOVUxMOworCiAJaWYgKGd1Yy0+bG9nLmJ1Zl9hZGRyKQogCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fbWFwKGd1Yy0+bG9nLnZtYS0+b2JqKTsKIApAQCAtMTAzNiw2ICsxMTk2LDM2IEBA IHN0YXRpYyB2b2lkIGd1Y19jcmVhdGVfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlndWMt PmxvZy5mbGFncyA9IChvZmZzZXQgPDwgR1VDX0xPR19CVUZfQUREUl9TSElGVCkgfCBmbGFnczsK IH0KIAorc3RhdGljIGludCBndWNfbG9nX2xhdGVfc2V0dXAoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1 Yyk7CisJaW50IHJldDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3Ry dWN0X211dGV4KTsKKworCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCS8qIElmIGxvZ19sZXZlbCB3YXMgc2V0IGFzIC0xIGF0IGJvb3QgdGltZSwgdGhl biBzZXR1cCBuZWVkZWQgdG8KKwkgKiBoYW5kbGUgbG9nIGJ1ZmZlciBmbHVzaCBpbnRlcnJ1cHRz IHdvdWxkIG5vdCBoYXZlIGJlZW4gZG9uZSB5ZXQsCisJICogc28gZG8gdGhhdCBub3cuCisJICov CisJcmV0ID0gZ3VjX2NyZWF0ZV9sb2dfZXh0cmFzKGd1Yyk7CisJaWYgKHJldCkKKwkJZ290byBl cnI7CisKKwlyZXQgPSBndWNfY3JlYXRlX2xvZ19yZWxheV9maWxlKGd1Yyk7CisJaWYgKHJldCkK KwkJZ290byBlcnI7CisKKwlyZXR1cm4gMDsKK2VycjoKKwlndWNfbG9nX2NsZWFudXAoZ3VjKTsK KwkvKiBsb2dnaW5nIHdpbGwgcmVtYWluIG9mZiAqLworCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IC0x OworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyB2b2lkIGluaXRfZ3VjX3BvbGljaWVzKHN0cnVj dCBndWNfcG9saWNpZXMgKnBvbGljaWVzKQogewogCXN0cnVjdCBndWNfcG9saWN5ICpwb2xpY3k7 CkBAIC0xMjA1LDcgKzEzOTUsNiBAQCB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0g JmRldl9wcml2LT5ndWM7CiAKIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5hZHNf dm1hKTsKLQlndWNfbG9nX2NsZWFudXAoZ3VjKTsKIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFz ZSgmZ3VjLT5sb2cudm1hKTsKIAogCWlmIChndWMtPmN0eF9wb29sX3ZtYSkKQEAgLTEyNzksMyAr MTQ2OCwyMyBAQCB2b2lkIGk5MTVfZ3VjX2NhcHR1cmVfbG9ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJaG9zdDJndWNfbG9nYnVmZmVyX2ZsdXNoX2NvbXBsZXRlKCZkZXZf cHJpdi0+Z3VjKTsKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiB9CisKK3ZvaWQg aTkxNV9ndWNfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKKwkJcmV0dXJuOworCisJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWd1Y19sb2dfY2xlYW51cCgmZGV2 X3ByaXYtPmd1Yyk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cit9CisKK3ZvaWQgaTkxNV9ndWNfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCWlmICghaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCisJCXJldHVybjsK KworCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwlndWNfbG9nX2xh dGVfc2V0dXAoJmRldl9wcml2LT5ndWMpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAppbmRleCBkMDUzYTE4Li4z Mjk5Y2NlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHN0 cnVjdCBpbnRlbF9ndWNfbG9nIHsKIAl2b2lkICpidWZfYWRkcjsKIAlzdHJ1Y3Qgd29ya3F1ZXVl X3N0cnVjdCAqZmx1c2hfd3E7CiAJc3RydWN0IHdvcmtfc3RydWN0IGZsdXNoX3dvcms7CisJc3Ry dWN0IHJjaGFuICpyZWxheV9jaGFuOwogfTsKIAogc3RydWN0IGludGVsX2d1YyB7CkBAIC0xNzEs NSArMTcyLDcgQEAgaW50IGk5MTVfZ3VjX3dxX2NoZWNrX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcnEpOwogdm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9ndWNfc3VibWlzc2lvbl9m aW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfZ3VjX2Nh cHR1cmVfbG9ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpOTE1 X2d1Y19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBp OTE1X2d1Y191bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAK ICNlbmRpZgotLSAKMS45LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=