From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v4] drm/i915: Execlists small cleanups and micro-optimisations Date: Fri, 26 Feb 2016 16:58:32 +0000 Message-ID: <1456505912-22286-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20160226163631.GB31502@nuc-i3427.alporthouse.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 ESMTP id 696D16EB45 for ; Fri, 26 Feb 2016 16:58:43 +0000 (UTC) In-Reply-To: <20160226163631.GB31502@nuc-i3427.alporthouse.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 IGNoYW5nZXMgaW4gdGhlIGFyZWFzIG9mIGNvZGUgY2xlYW51cCwgcmVkdWN0aW9uIG9mCmludmFy aWFudCBjb25kaXRpb25hbCBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYW5kIGxvY2sKY29udGVu dGlvbiBhbmQgTU1JTyBhY2Nlc3Mgb3B0aW1pc2F0aW9uLgoKICogUmVtb3ZlIG5lZWRsZXNzIGlu aXRpYWxpemF0aW9uLgogKiBJbXByb3ZlIGNhY2hlIGxvY2FsaXR5IGJ5IHJlb3JnYW5pemluZyBj b2RlIGFuZC9vciB1c2luZwogICBicmFuY2ggaGludHMgdG8ga2VlcCB1bmV4cGVjdGVkIG9yIGVy cm9yIGNvbmRpdGlvbnMgb3V0CiAgIG9mIGxpbmUuCiAqIEZhdm9yIGJ1c3kgc3VibWl0IHBhdGgg dnMuIGVtcHR5IHF1ZXVlLgogKiBMZXNzIGJyYW5jaGluZyBpbiBob3QtcGF0aHMuCgp2MjoKCiAq IEF2b2lkIG1taW8gcmVhZHMgd2hlbiBwb3NzaWJsZS4gKENocmlzIFdpbHNvbikKICogVXNlIG5h dHVyYWwgaW50ZWdlciBzaXplIGZvciBjc2IgaW5kaWNlcy4KICogUmVtb3ZlIHVzZWxlc3MgcmV0 dXJuIHZhbHVlIGZyb20gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0LgogKiBFeHRyYWN0IDMyLWJp dCBwcGd0dCBQRFBzIHVwZGF0ZSBzbyBpdCBpcyBvdXQgb2YgbGluZSBhbmQKICAgc2hhcmVkIHdp dGggdHdvIGNhbGxlcnMuCiAqIEdyYWIgZm9yY2V3YWtlIGFjcm9zcyBhbGwgbW1pbyBvcGVyYXRp b25zIHRvIGVhc2UgdGhlCiAgIGxvYWQgb24gdW5jb3JlIGxvY2sgYW5kIHVzZSBjaGVwZWFyIG1t aW8gb3BzLgoKdjM6CgogKiBSZW1vdmVkIHNvbWUgbW9yZSBwb2ludGxlc3MgdTggZGF0YSB0eXBl cy4KICogUmVtb3ZlZCB1bnVzZWQgcmV0dXJuIGZyb20gZXhlY2xpc3RzX2NvbnRleHRfcXVldWUu CiAqIENvbW1pdCBtZXNzYWdlIHVwZGF0ZXMuCgp2NDoKICogVW5jbHVtc2lmeSB0aGUgdW5xdWV1 ZSBpZiBzdGF0ZW1lbnQuIChDaHJpcyBXaWxzb24pCiAqIEhpZGUgZm9yY2V3YWtlIGZyb20gdGhl IHF1ZXVpbmcgZnVuY3Rpb24uIChDaHJpcyBXaWxzb24pCgpWZXJzaW9uIDMgbm93IG1ha2VzIHRo ZSBpcnEgaGFuZGxpbmcgY29kZSBwYXRoIH4yMCUgc21hbGxlciBvbgo0OC1iaXQgUFBHVFQgaGFy ZHdhcmUsIGFuZCBhIGxpdHRsZSBiaXQgbGVzcyBlbHNld2hlcmUuIEhvdApwYXRocyBhcmUgbW9z dGx5IGluLWxpbmUgbm93IGFuZCBoYW1tZXJpbmcgb24gdGhlIHVuY29yZQpzcGlubG9jayBpcyBn cmVhdGx5IHJlZHVjZWQgdG9nZXRoZXIgd2l0aCBtbWlvIHRyYWZmaWMgdG8gYW4KZXh0ZW50LgoK QmVuY2htYXJraW5nIHdpdGggImdlbV9sYXRlbmN5IC1uIDEwMCIgKGtlZXAgc3VibWl0dGluZwpi YXRjaGVzIHdpdGggMTAwIG5vcCBpbnN0cnVjdGlvbikgc2hvd3MgYXBwcm94aW1hdGVseSA0JSBo aWdoZXIKdGhyb3VnaHB1dCwgMiUgbGVzcyBDUFUgdGltZSBhbmQgMjIlIHNtYWxsZXIgbGF0ZW5j aWVzLiBUaGlzIHdhcwpvbiBhIGJpZy1jb3JlIHdoaWxlIHNtYWxsLWNvcmVzIGNvdWxkIGJlbmVm aXQgZXZlbiBtb3JlLgoKTW9zdCBsaWtlbHkgcmVhc29uIGZvciB0aGUgaW1wcm92ZW1lbnRzIGFy ZSB0aGUgTU1JTwpvcHRpbWl6YXRpb24gYW5kIHVuY29yZSBsb2NrIHRyYWZmaWMgcmVkdWN0aW9u LgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8IDIxNCArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o IHwgICAzICstCiAyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBmMGE1N2FmYzhkZmYuLjI0N2Rh ZjgwNjY0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTI2OSw2ICsyNjksOSBAQCBs b2dpY2FsX3JpbmdfaW5pdF9wbGF0Zm9ybV9pbnZhcmlhbnRzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKIAorCWlm IChJU19HRU44KGRldikgfHwgSVNfR0VOOShkZXYpKQorCQlyaW5nLT5pZGxlX2xpdGVfcmVzdG9y ZV93YSA9IH4wOworCiAJcmluZy0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EgPSAoSVNfU0tMX1JF VklEKGRldiwgMCwgU0tMX1JFVklEX0IwKSB8fAogCQkJCQlJU19CWFRfUkVWSUQoZGV2LCAwLCBC WFRfUkVWSURfQTEpKSAmJgogCQkJCQkocmluZy0+aWQgPT0gVkNTIHx8IHJpbmctPmlkID09IFZD UzIpOwpAQCAtMzcyLDggKzM3NSw2IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRl KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLAogCXJxMC0+ZWxzcF9zdWJtaXR0ZWQr KzsKIAogCS8qIFlvdSBtdXN0IGFsd2F5cyB3cml0ZSBib3RoIGRlc2NyaXB0b3JzIGluIHRoZSBv cmRlciBiZWxvdy4gKi8KLQlzcGluX2xvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7Ci0JaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7 CiAJSTkxNV9XUklURV9GVyhSSU5HX0VMU1AocmluZyksIHVwcGVyXzMyX2JpdHMoZGVzY1sxXSkp OwogCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQKHJpbmcpLCBsb3dlcl8zMl9iaXRzKGRlc2NbMV0p KTsKIApAQCAtMzgzLDExICszODQsMTggQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2Vsc3Bfd3Jp dGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTAsCiAKIAkvKiBFTFNQIGlzIGEgd28g cmVnaXN0ZXIsIHVzZSBhbm90aGVyIG5lYXJieSByZWcgZm9yIHBvc3RpbmcgKi8KIAlQT1NUSU5H X1JFQURfRlcoUklOR19FWEVDTElTVF9TVEFUVVNfTE8ocmluZykpOwotCWludGVsX3VuY29yZV9m b3JjZXdha2VfcHV0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwotCXNwaW5fdW5s b2NrKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwogfQogCi1zdGF0aWMgaW50IGV4ZWNsaXN0c191 cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQorc3RhdGljIHZv aWQKK2V4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCwgdTMyICpyZWdfc3RhdGUpCit7CisJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0 ZSwgMyk7CisJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMik7CisJQVNTSUdOX0NU WF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMSk7CisJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19z dGF0ZSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcgPSBycS0+cmluZzsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBycS0+Y3R4 LT5wcGd0dDsKQEAgLTM5NSwxOSArNDAzLDEzIEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX3VwZGF0 ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAKIAlyZWdfc3RhdGVb Q1RYX1JJTkdfVEFJTCsxXSA9IHJxLT50YWlsOwogCi0JaWYgKHBwZ3R0ICYmICFVU0VTX0ZVTExf NDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgewotCQkvKiBUcnVlIDMyYiBQUEdUVCB3aXRo IGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uOiB1cGRhdGUgUERQCi0JCSAqIHJlZ2lzdGVycyBhbmQg cG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgotCQkgKiBQTUw0IGlz IGFsbG9jYXRlZCBkdXJpbmcgcHBndHQgaW5pdCwgc28gdGhpcyBpcyBub3QgbmVlZGVkCi0JCSAq IGluIDQ4LWJpdCBtb2RlLgotCQkgKi8KLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0 ZSwgMyk7Ci0JCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDIpOwotCQlBU1NJR05f Q1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJl Z19zdGF0ZSwgMCk7Ci0JfQotCi0JcmV0dXJuIDA7CisJLyogVHJ1ZSAzMmIgUFBHVFQgd2l0aCBk eW5hbWljIHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRlIFBEUAorCSAqIHJlZ2lzdGVycyBhbmQgcG9p bnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgorCSAqIFBNTDQgaXMgYWxs b2NhdGVkIGR1cmluZyBwcGd0dCBpbml0LCBzbyB0aGlzIGlzIG5vdCBuZWVkZWQKKwkgKiBpbiA0 OC1iaXQgbW9kZS4KKwkgKi8KKwlpZiAocHBndHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChw cGd0dC0+YmFzZS5kZXYpKQorCQlleGVjbGlzdHNfdXBkYXRlX2NvbnRleHRfcGRwcyhwcGd0dCwg cmVnX3N0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0cyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxMCwKQEAgLTQyMSwxMCArNDIzLDEwIEBAIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpycTAsCiAJZXhlY2xpc3RzX2Vsc3Bfd3JpdGUocnEwLCBycTEpOwogfQogCi1zdGF0 aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCitzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlX19sb2NrZWQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcTAgPSBOVUxMLCAqcmVxMSA9IE5VTEw7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpjdXJzb3IgPSBOVUxMLCAqdG1wID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKmN1cnNvciwgKnRtcDsKIAogCWFzc2VydF9zcGluX2xvY2tlZCgmcmluZy0+ZXhlY2xp c3RfbG9jayk7CiAKQEAgLTQzNCw5ICs0MzYsNiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29u dGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJICovCiAJV0FSTl9P TighaW50ZWxfaXJxc19lbmFibGVkKHJpbmctPmRldi0+ZGV2X3ByaXZhdGUpKTsKIAotCWlmIChs aXN0X2VtcHR5KCZyaW5nLT5leGVjbGlzdF9xdWV1ZSkpCi0JCXJldHVybjsKLQogCS8qIFRyeSB0 byByZWFkIGluIHBhaXJzICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1cnNvciwgdG1w LCAmcmluZy0+ZXhlY2xpc3RfcXVldWUsCiAJCQkJIGV4ZWNsaXN0X2xpbmspIHsKQEAgLTQ1MSwz NyArNDUwLDQ4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkJCXJlcTAgPSBjdXJzb3I7CiAJCX0gZWxzZSB7CiAJ CQlyZXExID0gY3Vyc29yOworCQkJV0FSTl9PTihyZXExLT5lbHNwX3N1Ym1pdHRlZCk7CiAJCQli cmVhazsKIAkJfQogCX0KIAotCWlmIChJU19HRU44KHJpbmctPmRldikgfHwgSVNfR0VOOShyaW5n LT5kZXYpKSB7CisJaWYgKHVubGlrZWx5KCFyZXEwKSkKKwkJcmV0dXJuOworCisJaWYgKHJlcTAt PmVsc3Bfc3VibWl0dGVkICYgcmluZy0+aWRsZV9saXRlX3Jlc3RvcmVfd2EpIHsKIAkJLyoKLQkJ ICogV2FJZGxlTGl0ZVJlc3RvcmU6IG1ha2Ugc3VyZSB3ZSBuZXZlciBjYXVzZSBhIGxpdGUKLQkJ ICogcmVzdG9yZSB3aXRoIEhFQUQ9PVRBSUwKKwkJICogV2FJZGxlTGl0ZVJlc3RvcmU6IG1ha2Ug c3VyZSB3ZSBuZXZlciBjYXVzZSBhIGxpdGUgcmVzdG9yZQorCQkgKiB3aXRoIEhFQUQ9PVRBSUwu CisJCSAqCisJCSAqIEFwcGx5IHRoZSB3YSBOT09QUyB0byBwcmV2ZW50IHJpbmc6SEVBRCA9PSBy ZXE6VEFJTCBhcyB3ZQorCQkgKiByZXN1Ym1pdCB0aGUgcmVxdWVzdC4gU2VlIGdlbjhfZW1pdF9y ZXF1ZXN0KCkgZm9yIHdoZXJlIHdlCisJCSAqIHByZXBhcmUgdGhlIHBhZGRpbmcgYWZ0ZXIgdGhl IGVuZCBvZiB0aGUgcmVxdWVzdC4KIAkJICovCi0JCWlmIChyZXEwLT5lbHNwX3N1Ym1pdHRlZCkg ewotCQkJLyoKLQkJCSAqIEFwcGx5IHRoZSB3YSBOT09QUyB0byBwcmV2ZW50IHJpbmc6SEVBRCA9 PSByZXE6VEFJTAotCQkJICogYXMgd2UgcmVzdWJtaXQgdGhlIHJlcXVlc3QuIFNlZSBnZW44X2Vt aXRfcmVxdWVzdCgpCi0JCQkgKiBmb3Igd2hlcmUgd2UgcHJlcGFyZSB0aGUgcGFkZGluZyBhZnRl ciB0aGUgZW5kIG9mIHRoZQotCQkJICogcmVxdWVzdC4KLQkJCSAqLwotCQkJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWY7CisJCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm OwogCi0JCQlyaW5nYnVmID0gcmVxMC0+Y3R4LT5lbmdpbmVbcmluZy0+aWRdLnJpbmdidWY7Ci0J CQlyZXEwLT50YWlsICs9IDg7Ci0JCQlyZXEwLT50YWlsICY9IHJpbmdidWYtPnNpemUgLSAxOwot CQl9CisJCXJpbmdidWYgPSByZXEwLT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKKwkJ cmVxMC0+dGFpbCArPSA4OworCQlyZXEwLT50YWlsICY9IHJpbmdidWYtPnNpemUgLSAxOwogCX0K IAotCVdBUk5fT04ocmVxMSAmJiByZXExLT5lbHNwX3N1Ym1pdHRlZCk7Ci0KIAlleGVjbGlzdHNf c3VibWl0X3JlcXVlc3RzKHJlcTAsIHJlcTEpOwogfQogCi1zdGF0aWMgYm9vbCBleGVjbGlzdHNf Y2hlY2tfcmVtb3ZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKLQkJCQkJ ICAgdTMyIHJlcXVlc3RfaWQpCitzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnF1ZXVl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKworCXNwaW5fbG9jaygmZGV2 X3ByaXYtPnVuY29yZS5sb2NrKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9ja2Vk KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWVf X2xvY2tlZChyaW5nKTsKKworCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2 X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2spOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50CitleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3Jl cXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHJlcXVlc3RfaWQpCiB7CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpoZWFkX3JlcTsKIApAQCAtNDkxLDMzICs1MDEs NDEgQEAgc3RhdGljIGJvb2wgZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QsCiAJCQkJCSAgICBleGVjbGlzdF9saW5rKTsKIAotCWlmIChoZWFkX3JlcSAhPSBOVUxMKSB7 Ci0JCWlmIChpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGhlYWRfcmVxLT5jdHgsIHJpbmcpID09IHJl cXVlc3RfaWQpIHsKLQkJCVdBUk4oaGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkID09IDAsCi0JCQkg ICAgICJOZXZlciBzdWJtaXR0ZWQgaGVhZCByZXF1ZXN0XG4iKTsKKwlpZiAoIWhlYWRfcmVxKQor CQlyZXR1cm4gMDsKIAotCQkJaWYgKC0taGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkIDw9IDApIHsK LQkJCQlsaXN0X21vdmVfdGFpbCgmaGVhZF9yZXEtPmV4ZWNsaXN0X2xpbmssCi0JCQkJCSAgICAg ICAmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7Ci0JCQkJcmV0dXJuIHRydWU7Ci0J CQl9Ci0JCX0KLQl9CisJaWYgKHVubGlrZWx5KGludGVsX2V4ZWNsaXN0c19jdHhfaWQoaGVhZF9y ZXEtPmN0eCwgcmluZykgIT0gcmVxdWVzdF9pZCkpCisJCXJldHVybiAwOworCisJV0FSTihoZWFk X3JlcS0+ZWxzcF9zdWJtaXR0ZWQgPT0gMCwgIk5ldmVyIHN1Ym1pdHRlZCBoZWFkIHJlcXVlc3Rc biIpOworCisJaWYgKC0taGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkID4gMCkKKwkJcmV0dXJuIDA7 CisKKwlsaXN0X21vdmVfdGFpbCgmaGVhZF9yZXEtPmV4ZWNsaXN0X2xpbmssCisJCSAgICAgICAm cmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7CiAKLQlyZXR1cm4gZmFsc2U7CisJcmV0 dXJuIDE7CiB9CiAKLXN0YXRpYyB2b2lkIGdldF9jb250ZXh0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAotCQkJICAgICAgIHU4IHJlYWRfcG9pbnRlciwKLQkJCSAgICAgICB1 MzIgKnN0YXR1cywgdTMyICpjb250ZXh0X2lkKQorc3RhdGljIHUzMgorZ2V0X2NvbnRleHRfc3Rh dHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHVuc2lnbmVkIGludCByZWFkX3BvaW50 ZXIsCisJCSAgIHUzMiAqY29udGV4dF9pZCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXUzMiBzdGF0dXM7CiAKLQlpZiAo V0FSTl9PTihyZWFkX3BvaW50ZXIgPj0gR0VOOF9DU0JfRU5UUklFUykpCi0JCXJldHVybjsKKwly ZWFkX3BvaW50ZXIgJT0gR0VOOF9DU0JfRU5UUklFUzsKKworCXN0YXR1cyA9IEk5MTVfUkVBRF9G VyhSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9MTyhyaW5nLCByZWFkX3BvaW50ZXIpKTsKKworCWlm IChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpCisJCXJldHVybiAwOwogCi0J KnN0YXR1cyA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9MTyhyaW5nLCByZWFk X3BvaW50ZXIpKTsKLQkqY29udGV4dF9pZCA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVT X0JVRl9ISShyaW5nLCByZWFkX3BvaW50ZXIpKTsKKwkqY29udGV4dF9pZCA9IEk5MTVfUkVBRF9G VyhSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9ISShyaW5nLAorCQkJCQkJCSAgICAgIHJlYWRfcG9p bnRlcikpOworCisJcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC01MzEsMzAgKzU0OSwyNyBA QCB2b2lkIGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2 X3ByaXZhdGU7CiAJdTMyIHN0YXR1c19wb2ludGVyOwotCXU4IHJlYWRfcG9pbnRlcjsKLQl1OCB3 cml0ZV9wb2ludGVyOworCXVuc2lnbmVkIGludCByZWFkX3BvaW50ZXIsIHdyaXRlX3BvaW50ZXI7 CiAJdTMyIHN0YXR1cyA9IDA7CiAJdTMyIHN0YXR1c19pZDsKLQl1MzIgc3VibWl0X2NvbnRleHRz ID0gMDsKKwl1bnNpZ25lZCBpbnQgc3VibWl0X2NvbnRleHRzID0gMDsKKworCXNwaW5fbG9jaygm cmluZy0+ZXhlY2xpc3RfbG9jayk7CiAKLQlzdGF0dXNfcG9pbnRlciA9IEk5MTVfUkVBRChSSU5H X0NPTlRFWFRfU1RBVFVTX1BUUihyaW5nKSk7CisJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2spOworCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoZGV2X3ByaXYsIEZP UkNFV0FLRV9BTEwpOworCisJc3RhdHVzX3BvaW50ZXIgPSBJOTE1X1JFQURfRlcoUklOR19DT05U RVhUX1NUQVRVU19QVFIocmluZykpOwogCiAJcmVhZF9wb2ludGVyID0gcmluZy0+bmV4dF9jb250 ZXh0X3N0YXR1c19idWZmZXI7CiAJd3JpdGVfcG9pbnRlciA9IEdFTjhfQ1NCX1dSSVRFX1BUUihz dGF0dXNfcG9pbnRlcik7CiAJaWYgKHJlYWRfcG9pbnRlciA+IHdyaXRlX3BvaW50ZXIpCiAJCXdy aXRlX3BvaW50ZXIgKz0gR0VOOF9DU0JfRU5UUklFUzsKIAotCXNwaW5fbG9jaygmcmluZy0+ZXhl Y2xpc3RfbG9jayk7Ci0KIAl3aGlsZSAocmVhZF9wb2ludGVyIDwgd3JpdGVfcG9pbnRlcikgewor CQlzdGF0dXMgPSBnZXRfY29udGV4dF9zdGF0dXMocmluZywgKytyZWFkX3BvaW50ZXIsICZzdGF0 dXNfaWQpOwogCi0JCWdldF9jb250ZXh0X3N0YXR1cyhyaW5nLCArK3JlYWRfcG9pbnRlciAlIEdF TjhfQ1NCX0VOVFJJRVMsCi0JCQkJICAgJnN0YXR1cywgJnN0YXR1c19pZCk7Ci0KLQkJaWYgKHN0 YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19JRExFX0FDVElWRSkKLQkJCWNvbnRpbnVlOwotCi0JCWlm IChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSB7CisJCWlmICh1bmxpa2VseShz dGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSkgewogCQkJaWYgKHN0YXR1cyAmIEdF TjhfQ1RYX1NUQVRVU19MSVRFX1JFU1RPUkUpIHsKIAkJCQlpZiAoZXhlY2xpc3RzX2NoZWNrX3Jl bW92ZV9yZXF1ZXN0KHJpbmcsIHN0YXR1c19pZCkpCiAJCQkJCVdBUk4oMSwgIkxpdGUgUmVzdG9y ZWQgcmVxdWVzdCByZW1vdmVkIGZyb20gcXVldWVcbiIpOwpAQCAtNTYyLDM3ICs1NzcsMzYgQEAg dm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykK IAkJCQlXQVJOKDEsICJQcmVlbXB0aW9uIHdpdGhvdXQgTGl0ZSBSZXN0b3JlXG4iKTsKIAkJfQog Ci0JCWlmICgoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSB8fAotCQkgICAg KHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19FTEVNRU5UX1NXSVRDSCkpIHsKLQkJCWlmIChleGVj bGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3QocmluZywgc3RhdHVzX2lkKSkKLQkJCQlzdWJtaXRf Y29udGV4dHMrKzsKLQkJfQorCQlpZiAoc3RhdHVzICYgKEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVf SURMRSB8CisJCSAgICBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKQorCQkJc3VibWl0 X2NvbnRleHRzICs9CisJCQkJZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHJpbmcsIHN0 YXR1c19pZCk7CiAJfQogCi0JaWYgKHJpbmctPmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhKSB7Ci0J CS8qIFByZXZlbnQgYSBjdHggdG8gcHJlZW1wdCBpdHNlbGYgKi8KLQkJaWYgKChzdGF0dXMgJiBH RU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpICYmCi0JCSAgICAoc3VibWl0X2NvbnRleHRzICE9 IDApKQotCQkJZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShyaW5nKTsKLQl9IGVsc2UgaWYgKHN1 Ym1pdF9jb250ZXh0cyAhPSAwKSB7Ci0JCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUocmluZyk7 CisJaWYgKHN1Ym1pdF9jb250ZXh0cykgeworCQlpZiAoIXJpbmctPmRpc2FibGVfbGl0ZV9yZXN0 b3JlX3dhIHx8CisJCSAgICAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSkK KwkJCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWVfX2xvY2tlZChyaW5nKTsKIAl9CiAKLQlzcGlu X3VubG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7Ci0KLQlpZiAodW5saWtlbHkoc3VibWl0X2Nv bnRleHRzID4gMikpCi0JCURSTV9FUlJPUigiTW9yZSB0aGFuIHR3byBjb250ZXh0IGNvbXBsZXRl IGV2ZW50cz9cbiIpOwotCiAJcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXIgPSB3cml0 ZV9wb2ludGVyICUgR0VOOF9DU0JfRU5UUklFUzsKIAogCS8qIFVwZGF0ZSB0aGUgcmVhZCBwb2lu dGVyIHRvIHRoZSBvbGQgd3JpdGUgcG9pbnRlci4gTWFudWFsIHJpbmdidWZmZXIKIAkgKiBtYW5h Z2VtZW50IGZ0dyA8L3NhcmNhc20+ICovCi0JSTkxNV9XUklURShSSU5HX0NPTlRFWFRfU1RBVFVT X1BUUihyaW5nKSwKLQkJICAgX01BU0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BUUl9NQVNLLAot CQkJCSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA8PCA4KSk7CisJSTkxNV9XUklU RV9GVyhSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihyaW5nKSwKKwkJICAgICAgX01BU0tFRF9GSUVM RChHRU44X0NTQl9SRUFEX1BUUl9NQVNLLAorCQkJCSAgICByaW5nLT5uZXh0X2NvbnRleHRfc3Rh dHVzX2J1ZmZlciA8PCA4KSk7CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2Vk KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKwlzcGluX3VubG9jaygmZGV2X3ByaXYtPnVuY29y ZS5sb2NrKTsKKworCXNwaW5fdW5sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKKworCWlmICh1 bmxpa2VseShzdWJtaXRfY29udGV4dHMgPiAyKSkKKwkJRFJNX0VSUk9SKCJNb3JlIHRoYW4gdHdv IGNvbnRleHQgY29tcGxldGUgZXZlbnRzP1xuIik7CiB9CiAKLXN0YXRpYyBpbnQgZXhlY2xpc3Rz X2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQorc3Rh dGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXF1ZXN0 LT5yaW5nOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yOwpAQCAtNjI5LDgg KzY0Myw2IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJp bmcpOwogCiAJc3Bpbl91bmxvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbnZhbGlkYXRlX2FsbF9jYWNoZXMo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCkBAIC0xNTQ5LDcgKzE1NjEsNyBAQCBz dGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQl1OCBuZXh0X2Nv bnRleHRfc3RhdHVzX2J1ZmZlcl9odzsKKwl1bnNpZ25lZCBpbnQgbmV4dF9jb250ZXh0X3N0YXR1 c19idWZmZXJfaHc7CiAKIAlscmNfc2V0dXBfaGFyZHdhcmVfc3RhdHVzX3BhZ2UocmluZywKIAkJ CQlkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGUpOwpAQCAt MjAxMiw2ICsyMDI0LDcgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBOVUxMOwog CX0KIAorCXJpbmctPmlkbGVfbGl0ZV9yZXN0b3JlX3dhID0gMDsKIAlyaW5nLT5kaXNhYmxlX2xp dGVfcmVzdG9yZV93YSA9IGZhbHNlOwogCXJpbmctPmN0eF9kZXNjX3RlbXBsYXRlID0gMDsKIApA QCAtMjQxNiwxMCArMjQyOSw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAJCSAqIFdpdGgg ZHluYW1pYyBwYWdlIGFsbG9jYXRpb24sIFBEUHMgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgYXQKIAkJ ICogdGhpcyBwb2ludC4gUG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gdGhlIHNjcmF0Y2gg cGFnZQogCQkgKi8KLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7Ci0JCUFT U0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDIpOwotCQlBU1NJR05fQ1RYX1BEUChwcGd0 dCwgcmVnX3N0YXRlLCAxKTsKLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMCk7 CisJCWV4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHBwZ3R0LCByZWdfc3RhdGUpOwogCX0K IAogCWlmIChyaW5nLT5pZCA9PSBSQ1MpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAppbmRleCA1NjZiMGFlMTBjZTAuLmRkOTEwZDMwYTM4MCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMjcxLDcgKzI3MSw4IEBAIHN0cnVjdCAgaW50 ZWxfZW5naW5lX2NzIHsKIAlzcGlubG9ja190IGV4ZWNsaXN0X2xvY2s7CiAJc3RydWN0IGxpc3Rf aGVhZCBleGVjbGlzdF9xdWV1ZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X3JldGlyZWRf cmVxX2xpc3Q7Ci0JdTggbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXI7CisJdW5zaWduZWQgaW50 IG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyOworCXVuc2lnbmVkIGludCBpZGxlX2xpdGVfcmVz dG9yZV93YTsKIAlib29sIGRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhOwogCXUzMiBjdHhfZGVzY190 ZW1wbGF0ZTsKIAl1MzIgICAgICAgICAgICAgaXJxX2tlZXBfbWFzazsgLyogYml0bWFzayBmb3Ig aW50ZXJydXB0cyB0aGF0IHNob3VsZCBub3QgYmUgbWFza2VkICovCi0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==