From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v2] drm/i915: Execlist irq handler micro optimisations Date: Fri, 12 Feb 2016 12:00:40 +0000 Message-ID: <1455278440-25694-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1455213790-4724-2-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id A11436E2F2 for ; Fri, 12 Feb 2016 04:00:43 -0800 (PST) In-Reply-To: <1455213790-4724-2-git-send-email-tvrtko.ursulin@linux.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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkFzc29ydGVk IGNoYW5nZXMgbW9zdCBsaWtlbHkgd2l0aG91dCBhbnkgcHJhY3RpY2FsIGVmZmVjdAphcGFydCBm cm9tIGEgdGlueSByZWR1Y3Rpb24gaW4gZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBpbnRlcnJ1cHQK aGFuZGxlciBhbmQgcmVxdWVzdCBzdWJtaXNzaW9uLgoKICogUmVtb3ZlIG5lZWRsZXNzIGluaXRp YWxpemF0aW9uLgogKiBJbXByb3ZlIGNhY2hlIGxvY2FsaXR5IGJ5IHJlb3JnYW5pemluZyBjb2Rl IGFuZC9vciB1c2luZwogICBicmFuY2ggaGludHMgdG8ga2VlcCB1bmV4cGVjdGVkIG9yIGVycm9y IGNvbmRpdGlvbnMgb3V0CiAgIG9mIGxpbmUuCiAqIEZhdm9yIGJ1c3kgc3VibWl0IHBhdGggdnMu IGVtcHR5IHF1ZXVlLgogKiBMZXNzIGJyYW5jaGluZyBpbiBob3QtcGF0aHMuCgp2MjoKCiAqIEF2 b2lkIG1taW8gcmVhZHMgd2hlbiBwb3NzaWJsZS4gKENocmlzIFdpbHNvbikKICogVXNlIG5hdHVy YWwgaW50ZWdlciBzaXplIGZvciBjc2IgaW5kaWNlcy4KICogUmVtb3ZlIHVzZWxlc3MgcmV0dXJu IHZhbHVlIGZyb20gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0LgogKiBFeHRyYWN0IDMyLWJpdCBw cGd0dCBQRFBzIHVwZGF0ZSBzbyBpdCBpcyBvdXQgb2YgbGluZSBhbmQKICAgc2hhcmVkIHdpdGgg dHdvIGNhbGxlcnMuCiAqIEdyYWIgZm9yY2V3YWtlIGFjcm9zcyBhbGwgbW1pbyBvcGVyYXRpb25z IHRvIGVhc2UgdGhlCiAgIGxvYWQgb24gdW5jb3JlIGxvY2sgYW5kIHVzZSBjaGVwZWFyIG1taW8g b3BzLgoKVmVyc2lvbiAyIG5vdyBtYWtlcyB0aGUgaXJxIGhhbmRsaW5nIGNvZGUgcGF0aCB+MjAl IHNtYWxsZXIgb24KNDgtYml0IFBQR1RUIGhhcmR3YXJlLCBhbmQgYSBsaXR0bGUgYml0IGxlc3Mg ZWxzZXdoZXJlLiBIb3QKcGF0aHMgYXJlIG1vc3RseSBpbi1saW5lIG5vdyBhbmQgaGFtbWVyaW5n IG9uIHRoZSB1bmNvcmUKc3BpbmxvY2sgaXMgZ3JlYXRseSByZWR1Y2VkIHRvZ2V0aGVyIHdpdGgg bW1pbyB0cmFmZmljIHRvIGFuCmV4dGVudC4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgfCAxODcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMyArLQogMiBmaWxlcyBjaGFuZ2VkLCA5OSBp bnNlcnRpb25zKCspLCA5MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmlu ZGV4IGE1MTNhNzVkMWZjOS4uYTQ3NGUwMGJlNTBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwpAQCAtMjY5LDYgKzI2OSw5IEBAIGxvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFu dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcmluZy0+ZGV2OwogCisJaWYgKElTX0dFTjgoZGV2KSB8fCBJU19HRU45KGRldikpCisJ CXJpbmctPmlkbGVfbGl0ZV9yZXN0b3JlX3dhID0gfjA7CisKIAlyaW5nLT5kaXNhYmxlX2xpdGVf cmVzdG9yZV93YSA9IChJU19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQjApIHx8CiAJCQkJ CUlTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpICYmCiAJCQkJCShyaW5nLT5pZCA9 PSBWQ1MgfHwgcmluZy0+aWQgPT0gVkNTMik7CkBAIC0zNzIsOCArMzc1LDYgQEAgc3RhdGljIHZv aWQgZXhlY2xpc3RzX2Vsc3Bfd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTAs CiAJcnEwLT5lbHNwX3N1Ym1pdHRlZCsrOwogCiAJLyogWW91IG11c3QgYWx3YXlzIHdyaXRlIGJv dGggZGVzY3JpcHRvcnMgaW4gdGhlIG9yZGVyIGJlbG93LiAqLwotCXNwaW5fbG9jaygmZGV2X3By aXYtPnVuY29yZS5sb2NrKTsKLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9ja2VkKGRl dl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAlJOTE1X1dSSVRFX0ZXKFJJTkdfRUxTUChyaW5nKSwg dXBwZXJfMzJfYml0cyhkZXNjWzFdKSk7CiAJSTkxNV9XUklURV9GVyhSSU5HX0VMU1AocmluZyks IGxvd2VyXzMyX2JpdHMoZGVzY1sxXSkpOwogCkBAIC0zODMsMTEgKzM4NCwxOCBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfZWxzcF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJx MCwKIAogCS8qIEVMU1AgaXMgYSB3byByZWdpc3RlciwgdXNlIGFub3RoZXIgbmVhcmJ5IHJlZyBm b3IgcG9zdGluZyAqLwogCVBPU1RJTkdfUkVBRF9GVyhSSU5HX0VYRUNMSVNUX1NUQVRVU19MTyhy aW5nKSk7Ci0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Ci0Jc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CiB9CiAK LXN0YXRpYyBpbnQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcnEpCitzdGF0aWMgdm9pZAorZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0X3BkcHMo c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCB1MzIgKnJlZ19zdGF0ZSkKK3sKKwlBU1NJR05f Q1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAzKTsKKwlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVn X3N0YXRlLCAyKTsKKwlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKKwlBU1NJ R05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAwKTsKK30KKworc3RhdGljIHZvaWQgZXhlY2xp c3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiB7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJxLT5yaW5nOwogCXN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCA9IHJxLT5jdHgtPnBwZ3R0OwpAQCAtMzk1LDE5ICs0MDMsMTMgQEAgc3Rh dGljIGludCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpycSkKIAogCXJlZ19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gcnEtPnRhaWw7CiAKLQlp ZiAocHBndHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKSB7Ci0J CS8qIFRydWUgMzJiIFBQR1RUIHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQ RFAKLQkJICogcmVnaXN0ZXJzIGFuZCBwb2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byBzY3Jh dGNoIHBhZ2UuCi0JCSAqIFBNTDQgaXMgYWxsb2NhdGVkIGR1cmluZyBwcGd0dCBpbml0LCBzbyB0 aGlzIGlzIG5vdCBuZWVkZWQKLQkJICogaW4gNDgtYml0IG1vZGUuCi0JCSAqLwotCQlBU1NJR05f Q1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAzKTsKLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJl Z19zdGF0ZSwgMik7Ci0JCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDEpOwotCQlB U1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAwKTsKLQl9Ci0KLQlyZXR1cm4gMDsKKwkv KiBUcnVlIDMyYiBQUEdUVCB3aXRoIGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uOiB1cGRhdGUgUERQ CisJICogcmVnaXN0ZXJzIGFuZCBwb2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byBzY3JhdGNo IHBhZ2UuCisJICogUE1MNCBpcyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQsIHNvIHRoaXMg aXMgbm90IG5lZWRlZAorCSAqIGluIDQ4LWJpdCBtb2RlLgorCSAqLworCWlmIChwcGd0dCAmJiAh VVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJCWV4ZWNsaXN0c191cGRh dGVfY29udGV4dF9wZHBzKHBwZ3R0LCByZWdfc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZCBleGVj bGlzdHNfc3VibWl0X3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLApA QCAtNDI0LDcgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdHMo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTAsCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNf Y29udGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEwID0gTlVMTCwgKnJlcTEgPSBOVUxMOwotCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yID0gTlVMTCwgKnRtcCA9IE5VTEw7CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpjdXJzb3IsICp0bXA7CiAKIAlhc3NlcnRfc3Bpbl9s b2NrZWQoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCkBAIC00MzQsOSArNDM2LDYgQEAgc3RhdGlj IHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQogCSAqLwogCVdBUk5fT04oIWludGVsX2lycXNfZW5hYmxlZChyaW5nLT5kZXYtPmRldl9w cml2YXRlKSk7CiAKLQlpZiAobGlzdF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfcXVldWUpKQotCQly ZXR1cm47Ci0KIAkvKiBUcnkgdG8gcmVhZCBpbiBwYWlycyAqLwogCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShjdXJzb3IsIHRtcCwgJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAogCQkJCSBleGVjbGlz dF9saW5rKSB7CkBAIC00NTEsMzcgKzQ1MCwzNSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29u dGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCQlyZXEwID0gY3Vy c29yOwogCQl9IGVsc2UgewogCQkJcmVxMSA9IGN1cnNvcjsKKwkJCVdBUk5fT04ocmVxMS0+ZWxz cF9zdWJtaXR0ZWQpOwogCQkJYnJlYWs7CiAJCX0KIAl9CiAKLQlpZiAoSVNfR0VOOChyaW5nLT5k ZXYpIHx8IElTX0dFTjkocmluZy0+ZGV2KSkgeworCWlmICh1bmxpa2VseSghcmVxMCkpCisJCXJl dHVybjsKKworCWlmIChyZXEwLT5lbHNwX3N1Ym1pdHRlZCAmIHJpbmctPmlkbGVfbGl0ZV9yZXN0 b3JlX3dhKSB7CiAJCS8qCi0JCSAqIFdhSWRsZUxpdGVSZXN0b3JlOiBtYWtlIHN1cmUgd2UgbmV2 ZXIgY2F1c2UgYSBsaXRlCi0JCSAqIHJlc3RvcmUgd2l0aCBIRUFEPT1UQUlMCisJCSAqIFdhSWRs ZUxpdGVSZXN0b3JlOiBtYWtlIHN1cmUgd2UgbmV2ZXIgY2F1c2UgYSBsaXRlIHJlc3RvcmUKKwkJ ICogd2l0aCBIRUFEPT1UQUlMLgorCQkgKgorCQkgKiBBcHBseSB0aGUgd2EgTk9PUFMgdG8gcHJl dmVudCByaW5nOkhFQUQgPT0gcmVxOlRBSUwgYXMgd2UKKwkJICogcmVzdWJtaXQgdGhlIHJlcXVl c3QuIFNlZSBnZW44X2VtaXRfcmVxdWVzdCgpIGZvciB3aGVyZSB3ZQorCQkgKiBwcmVwYXJlIHRo ZSBwYWRkaW5nIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHJlcXVlc3QuCiAJCSAqLwotCQlpZiAocmVx MC0+ZWxzcF9zdWJtaXR0ZWQpIHsKLQkJCS8qCi0JCQkgKiBBcHBseSB0aGUgd2EgTk9PUFMgdG8g cHJldmVudCByaW5nOkhFQUQgPT0gcmVxOlRBSUwKLQkJCSAqIGFzIHdlIHJlc3VibWl0IHRoZSBy ZXF1ZXN0LiBTZWUgZ2VuOF9lbWl0X3JlcXVlc3QoKQotCQkJICogZm9yIHdoZXJlIHdlIHByZXBh cmUgdGhlIHBhZGRpbmcgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKLQkJCSAqIHJlcXVlc3QuCi0JCQkg Ki8KLQkJCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmOworCQlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZjsKIAotCQkJcmluZ2J1ZiA9IHJlcTAtPmN0eC0+ZW5naW5lW3Jp bmctPmlkXS5yaW5nYnVmOwotCQkJcmVxMC0+dGFpbCArPSA4OwotCQkJcmVxMC0+dGFpbCAmPSBy aW5nYnVmLT5zaXplIC0gMTsKLQkJfQorCQlyaW5nYnVmID0gcmVxMC0+Y3R4LT5lbmdpbmVbcmlu Zy0+aWRdLnJpbmdidWY7CisJCXJlcTAtPnRhaWwgKz0gODsKKwkJcmVxMC0+dGFpbCAmPSByaW5n YnVmLT5zaXplIC0gMTsKIAl9CiAKLQlXQVJOX09OKHJlcTEgJiYgcmVxMS0+ZWxzcF9zdWJtaXR0 ZWQpOwotCiAJZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0cyhyZXEwLCByZXExKTsKIH0KIAotc3Rh dGljIGJvb2wgZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCi0JCQkJCSAgIHUzMiByZXF1ZXN0X2lkKQorc3RhdGljIHVuc2lnbmVkIGlu dAorZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIHUzMiByZXF1ZXN0X2lkKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq aGVhZF9yZXE7CiAKQEAgLTQ5MSwzMiArNDg4LDM5IEBAIHN0YXRpYyBib29sIGV4ZWNsaXN0c19j aGVja19yZW1vdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJCQkg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAogCQkJCQkgICAgZXhlY2xpc3RfbGluayk7 CiAKLQlpZiAoaGVhZF9yZXEgIT0gTlVMTCkgewotCQlpZiAoaW50ZWxfZXhlY2xpc3RzX2N0eF9p ZChoZWFkX3JlcS0+Y3R4LCByaW5nKSA9PSByZXF1ZXN0X2lkKSB7Ci0JCQlXQVJOKGhlYWRfcmVx LT5lbHNwX3N1Ym1pdHRlZCA9PSAwLAotCQkJICAgICAiTmV2ZXIgc3VibWl0dGVkIGhlYWQgcmVx dWVzdFxuIik7CisJaWYgKCFoZWFkX3JlcSkKKwkJcmV0dXJuIDA7CiAKLQkJCWlmICgtLWhlYWRf cmVxLT5lbHNwX3N1Ym1pdHRlZCA8PSAwKSB7Ci0JCQkJbGlzdF9tb3ZlX3RhaWwoJmhlYWRfcmVx LT5leGVjbGlzdF9saW5rLAotCQkJCQkgICAgICAgJnJpbmctPmV4ZWNsaXN0X3JldGlyZWRfcmVx X2xpc3QpOwotCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQl9Ci0JfQorCWlmICh1bmxpa2VseShp bnRlbF9leGVjbGlzdHNfY3R4X2lkKGhlYWRfcmVxLT5jdHgsIHJpbmcpICE9IHJlcXVlc3RfaWQp KQorCQlyZXR1cm4gMDsKKworCVdBUk4oaGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkID09IDAsICJO ZXZlciBzdWJtaXR0ZWQgaGVhZCByZXF1ZXN0XG4iKTsKKworCWlmICgtLWhlYWRfcmVxLT5lbHNw X3N1Ym1pdHRlZCA+IDApCisJCXJldHVybiAwOworCisJbGlzdF9tb3ZlX3RhaWwoJmhlYWRfcmVx LT5leGVjbGlzdF9saW5rLAorCQkgICAgICAgJnJpbmctPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xp c3QpOwogCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiAxOwogfQogCiBzdGF0aWMgdTMyIGdldF9j b250ZXh0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1OCByZWFkX3BvaW50 ZXIsCiAJCQkgICAgICB1MzIgKmNvbnRleHRfaWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwl1MzIgc3RhdHVzOwogCiAJ cmVhZF9wb2ludGVyICU9IEdFTjhfQ1NCX0VOVFJJRVM7CiAKLQkqY29udGV4dF9pZCA9IEk5MTVf UkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9ISShyaW5nLCByZWFkX3BvaW50ZXIpKTsKKwlz dGF0dXMgPSBJOTE1X1JFQURfRlcoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8ocmluZywgcmVh ZF9wb2ludGVyKSk7CiAKLQlyZXR1cm4gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVG X0xPKHJpbmcsIHJlYWRfcG9pbnRlcikpOworCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNf SURMRV9BQ1RJVkUpCisJCXJldHVybiAwOworCisJKmNvbnRleHRfaWQgPSBJOTE1X1JFQURfRlco UklOR19DT05URVhUX1NUQVRVU19CVUZfSEkocmluZywgcmVhZF9wb2ludGVyKSk7CisKKwlyZXR1 cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTUzMCwyOCArNTM0LDI3IEBAIHZvaWQgaW50ZWxfbHJj X2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIg c3RhdHVzX3BvaW50ZXI7Ci0JdTggcmVhZF9wb2ludGVyOwotCXU4IHdyaXRlX3BvaW50ZXI7CisJ dW5zaWduZWQgaW50IHJlYWRfcG9pbnRlciwgd3JpdGVfcG9pbnRlcjsKIAl1MzIgc3RhdHVzID0g MDsKIAl1MzIgc3RhdHVzX2lkOwotCXUzMiBzdWJtaXRfY29udGV4dHMgPSAwOworCXVuc2lnbmVk IGludCBzdWJtaXRfY29udGV4dHMgPSAwOworCisJc3Bpbl9sb2NrKCZyaW5nLT5leGVjbGlzdF9s b2NrKTsKKworCXNwaW5fbG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldF9fbG9ja2VkKGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAotCXN0 YXR1c19wb2ludGVyID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJpbmcpKTsK KwlzdGF0dXNfcG9pbnRlciA9IEk5MTVfUkVBRF9GVyhSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihy aW5nKSk7CiAKIAlyZWFkX3BvaW50ZXIgPSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZl cjsKIAl3cml0ZV9wb2ludGVyID0gR0VOOF9DU0JfV1JJVEVfUFRSKHN0YXR1c19wb2ludGVyKTsK IAlpZiAocmVhZF9wb2ludGVyID4gd3JpdGVfcG9pbnRlcikKIAkJd3JpdGVfcG9pbnRlciArPSBH RU44X0NTQl9FTlRSSUVTOwogCi0Jc3Bpbl9sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKLQog CXdoaWxlIChyZWFkX3BvaW50ZXIgPCB3cml0ZV9wb2ludGVyKSB7CiAJCXN0YXR1cyA9IGdldF9j b250ZXh0X3N0YXR1cyhyaW5nLCArK3JlYWRfcG9pbnRlciwgJnN0YXR1c19pZCk7CiAKLQkJaWYg KHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19JRExFX0FDVElWRSkKLQkJCWNvbnRpbnVlOwotCi0J CWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSB7CisJCWlmICh1bmxpa2Vs eShzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSkgewogCQkJaWYgKHN0YXR1cyAm IEdFTjhfQ1RYX1NUQVRVU19MSVRFX1JFU1RPUkUpIHsKIAkJCQlpZiAoZXhlY2xpc3RzX2NoZWNr X3JlbW92ZV9yZXF1ZXN0KHJpbmcsIHN0YXR1c19pZCkpCiAJCQkJCVdBUk4oMSwgIkxpdGUgUmVz dG9yZWQgcmVxdWVzdCByZW1vdmVkIGZyb20gcXVldWVcbiIpOwpAQCAtNTU5LDM4ICs1NjIsMzcg QEAgdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKIAkJCQlXQVJOKDEsICJQcmVlbXB0aW9uIHdpdGhvdXQgTGl0ZSBSZXN0b3JlXG4iKTsKIAkJ fQogCi0JCWlmICgoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSB8fAotCQkg ICAgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19FTEVNRU5UX1NXSVRDSCkpIHsKLQkJCWlmIChl eGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3QocmluZywgc3RhdHVzX2lkKSkKLQkJCQlzdWJt aXRfY29udGV4dHMrKzsKLQkJfQorCQlpZiAoc3RhdHVzICYgKEdFTjhfQ1RYX1NUQVRVU19BQ1RJ VkVfSURMRSB8CisJCSAgICBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKQorCQkJc3Vi bWl0X2NvbnRleHRzICs9CisJCQkJZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHJpbmcs IHN0YXR1c19pZCk7CiAJfQogCi0JaWYgKHJpbmctPmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhKSB7 Ci0JCS8qIFByZXZlbnQgYSBjdHggdG8gcHJlZW1wdCBpdHNlbGYgKi8KLQkJaWYgKChzdGF0dXMg JiBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpICYmCi0JCSAgICAoc3VibWl0X2NvbnRleHRz ICE9IDApKQotCQkJZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShyaW5nKTsKLQl9IGVsc2UgaWYg KHN1Ym1pdF9jb250ZXh0cyAhPSAwKSB7CisJaWYgKHN1Ym1pdF9jb250ZXh0cyAmJiAoIXJpbmct PmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhIHx8CisJICAgIChyaW5nLT5kaXNhYmxlX2xpdGVfcmVz dG9yZV93YSAmJiAoc3RhdHVzICYKKwkgICAgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSkp KQogCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJpbmcpOwotCX0KLQotCXNwaW5fdW5sb2Nr KCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKLQotCWlmICh1bmxpa2VseShzdWJtaXRfY29udGV4dHMg PiAyKSkKLQkJRFJNX0VSUk9SKCJNb3JlIHRoYW4gdHdvIGNvbnRleHQgY29tcGxldGUgZXZlbnRz P1xuIik7CiAKIAlyaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA9IHdyaXRlX3BvaW50 ZXIgJSBHRU44X0NTQl9FTlRSSUVTOwogCiAJLyogVXBkYXRlIHRoZSByZWFkIHBvaW50ZXIgdG8g dGhlIG9sZCB3cml0ZSBwb2ludGVyLiBNYW51YWwgcmluZ2J1ZmZlcgogCSAqIG1hbmFnZW1lbnQg ZnR3IDwvc2FyY2FzbT4gKi8KLQlJOTE1X1dSSVRFKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJp bmcpLAotCQkgICBfTUFTS0VEX0ZJRUxEKEdFTjhfQ1NCX1JFQURfUFRSX01BU0ssCi0JCQkJIHJp bmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyIDw8IDgpKTsKKwlJOTE1X1dSSVRFX0ZXKFJJ TkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJpbmcpLAorCQkgICAgICBfTUFTS0VEX0ZJRUxEKEdFTjhf Q1NCX1JFQURfUFRSX01BU0ssCisJCQkJICAgIHJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVm ZmVyIDw8IDgpKTsKKworCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2X3By aXYsIEZPUkNFV0FLRV9BTEwpOworCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2sp OworCisJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOworCisJaWYgKHVubGlrZWx5 KHN1Ym1pdF9jb250ZXh0cyA+IDIpKQorCQlEUk1fRVJST1IoIk1vcmUgdGhhbiB0d28gY29udGV4 dCBjb21wbGV0ZSBldmVudHM/XG4iKTsKIH0KIAogc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4 dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxdWVzdC0+aTkxNTsKIAlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxdWVzdC0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKmN1cnNvcjsKIAlpbnQgbnVtX2VsZW1lbnRzID0gMDsKQEAgLTYyMiw5ICs2MjQs MTYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJfQogCiAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+ZXhl Y2xpc3RfbGluaywgJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKTsKLQlpZiAobnVtX2VsZW1lbnRzID09 IDApCisJaWYgKG51bV9lbGVtZW50cyA9PSAwKSB7CisJCXNwaW5fbG9jaygmZGV2X3ByaXYtPnVu Y29yZS5sb2NrKTsKKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZfcHJp diwgRk9SQ0VXQUtFX0FMTCk7CisKIAkJZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShyaW5nKTsK IAorCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKGRldl9wcml2LCBGT1JDRVdB S0VfQUxMKTsKKwkJc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CisJfQorCiAJ c3Bpbl91bmxvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKIAogCXJldHVybiAwOwpAQCAt MjAxMyw2ICsyMDIyLDcgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBOVUxMOwog CX0KIAorCXJpbmctPmlkbGVfbGl0ZV9yZXN0b3JlX3dhID0gMDsKIAlyaW5nLT5kaXNhYmxlX2xp dGVfcmVzdG9yZV93YSA9IGZhbHNlOwogCXJpbmctPmN0eF9kZXNjX3RlbXBsYXRlID0gMDsKIApA QCAtMjQxNywxMCArMjQyNyw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAJCSAqIFdpdGgg ZHluYW1pYyBwYWdlIGFsbG9jYXRpb24sIFBEUHMgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgYXQKIAkJ ICogdGhpcyBwb2ludC4gUG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gdGhlIHNjcmF0Y2gg cGFnZQogCQkgKi8KLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7Ci0JCUFT U0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDIpOwotCQlBU1NJR05fQ1RYX1BEUChwcGd0 dCwgcmVnX3N0YXRlLCAxKTsKLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMCk7 CisJCWV4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHBwZ3R0LCByZWdfc3RhdGUpOwogCX0K IAogCWlmIChyaW5nLT5pZCA9PSBSQ1MpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAppbmRleCA1NjZiMGFlMTBjZTAuLmRkOTEwZDMwYTM4MCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMjcxLDcgKzI3MSw4IEBAIHN0cnVjdCAgaW50 ZWxfZW5naW5lX2NzIHsKIAlzcGlubG9ja190IGV4ZWNsaXN0X2xvY2s7CiAJc3RydWN0IGxpc3Rf aGVhZCBleGVjbGlzdF9xdWV1ZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X3JldGlyZWRf cmVxX2xpc3Q7Ci0JdTggbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXI7CisJdW5zaWduZWQgaW50 IG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyOworCXVuc2lnbmVkIGludCBpZGxlX2xpdGVfcmVz dG9yZV93YTsKIAlib29sIGRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhOwogCXUzMiBjdHhfZGVzY190 ZW1wbGF0ZTsKIAl1MzIgICAgICAgICAgICAgaXJxX2tlZXBfbWFzazsgLyogYml0bWFzayBmb3Ig aW50ZXJydXB0cyB0aGF0IHNob3VsZCBub3QgYmUgbWFza2VkICovCi0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==