From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH] drm/i915: Execlists small cleanups and micro-optimisations Date: Fri, 26 Feb 2016 15:37:35 +0000 Message-ID: <1456501055-15860-1-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 832D16EB13 for ; Fri, 26 Feb 2016 15:37:38 +0000 (UTC) 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 CiAqIENvbW1pdCBtZXNzYWdlIHVwZGF0ZXMuCgpWZXJzaW9uIDMgbm93IG1ha2VzIHRoZSBpcnEg aGFuZGxpbmcgY29kZSBwYXRoIH4yMCUgc21hbGxlciBvbgo0OC1iaXQgUFBHVFQgaGFyZHdhcmUs IGFuZCBhIGxpdHRsZSBiaXQgbGVzcyBlbHNld2hlcmUuIEhvdApwYXRocyBhcmUgbW9zdGx5IGlu LWxpbmUgbm93IGFuZCBoYW1tZXJpbmcgb24gdGhlIHVuY29yZQpzcGlubG9jayBpcyBncmVhdGx5 IHJlZHVjZWQgdG9nZXRoZXIgd2l0aCBtbWlvIHRyYWZmaWMgdG8gYW4KZXh0ZW50LgoKQmVuY2ht YXJraW5nIHdpdGggImdlbV9sYXRlbmN5IC1uIDEwMCIgKGtlZXAgc3VibWl0dGluZwpiYXRjaGVz IHdpdGggMTAwIG5vcCBpbnN0cnVjdGlvbikgc2hvd3MgYXBwcm94aW1hdGVseSA0JSBoaWdoZXIK dGhyb3VnaHB1dCwgMiUgbGVzcyBDUFUgdGltZSBhbmQgMjIlIHNtYWxsZXIgbGF0ZW5jaWVzLiBU aGlzIHdhcwpvbiBhIGJpZy1jb3JlIHdoaWxlIHNtYWxsLWNvcmVzIGNvdWxkIGJlbmVmaXQgZXZl biBtb3JlLgoKTW9zdCBsaWtlbHkgcmVhc29uIGZvciB0aGUgaW1wcm92ZW1lbnRzIGFyZSB0aGUg TU1JTwpvcHRpbWl6YXRpb24gYW5kIHVuY29yZSBsb2NrIHRyYWZmaWMgcmVkdWN0aW9uLgoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8IDIwOCArKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAz ICstCiAyIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBmMGE1N2FmYzhkZmYuLjBmNGRhZTI1N2Zh NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTI2OSw2ICsyNjksOSBAQCBsb2dpY2Fs X3JpbmdfaW5pdF9wbGF0Zm9ybV9pbnZhcmlhbnRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKIAorCWlmIChJU19H RU44KGRldikgfHwgSVNfR0VOOShkZXYpKQorCQlyaW5nLT5pZGxlX2xpdGVfcmVzdG9yZV93YSA9 IH4wOworCiAJcmluZy0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EgPSAoSVNfU0tMX1JFVklEKGRl diwgMCwgU0tMX1JFVklEX0IwKSB8fAogCQkJCQlJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVW SURfQTEpKSAmJgogCQkJCQkocmluZy0+aWQgPT0gVkNTIHx8IHJpbmctPmlkID09IFZDUzIpOwpA QCAtMzcyLDggKzM3NSw2IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLAogCXJxMC0+ZWxzcF9zdWJtaXR0ZWQrKzsKIAog CS8qIFlvdSBtdXN0IGFsd2F5cyB3cml0ZSBib3RoIGRlc2NyaXB0b3JzIGluIHRoZSBvcmRlciBi ZWxvdy4gKi8KLQlzcGluX2xvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7Ci0JaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CiAJSTkx NV9XUklURV9GVyhSSU5HX0VMU1AocmluZyksIHVwcGVyXzMyX2JpdHMoZGVzY1sxXSkpOwogCUk5 MTVfV1JJVEVfRlcoUklOR19FTFNQKHJpbmcpLCBsb3dlcl8zMl9iaXRzKGRlc2NbMV0pKTsKIApA QCAtMzgzLDExICszODQsMTggQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2Vsc3Bfd3JpdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTAsCiAKIAkvKiBFTFNQIGlzIGEgd28gcmVnaXN0 ZXIsIHVzZSBhbm90aGVyIG5lYXJieSByZWcgZm9yIHBvc3RpbmcgKi8KIAlQT1NUSU5HX1JFQURf RlcoUklOR19FWEVDTElTVF9TVEFUVVNfTE8ocmluZykpOwotCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwotCXNwaW5fdW5sb2NrKCZk ZXZfcHJpdi0+dW5jb3JlLmxvY2spOwogfQogCi1zdGF0aWMgaW50IGV4ZWNsaXN0c191cGRhdGVf Y29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQorc3RhdGljIHZvaWQKK2V4 ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwg dTMyICpyZWdfc3RhdGUpCit7CisJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7 CisJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMik7CisJQVNTSUdOX0NUWF9QRFAo cHBndHQsIHJlZ19zdGF0ZSwgMSk7CisJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwg MCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcg PSBycS0+cmluZzsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBycS0+Y3R4LT5wcGd0 dDsKQEAgLTM5NSwxOSArNDAzLDEzIEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX3VwZGF0ZV9jb250 ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAKIAlyZWdfc3RhdGVbQ1RYX1JJ TkdfVEFJTCsxXSA9IHJxLT50YWlsOwogCi0JaWYgKHBwZ3R0ICYmICFVU0VTX0ZVTExfNDhCSVRf UFBHVFQocHBndHQtPmJhc2UuZGV2KSkgewotCQkvKiBUcnVlIDMyYiBQUEdUVCB3aXRoIGR5bmFt aWMgcGFnZSBhbGxvY2F0aW9uOiB1cGRhdGUgUERQCi0JCSAqIHJlZ2lzdGVycyBhbmQgcG9pbnQg dGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgotCQkgKiBQTUw0IGlzIGFsbG9j YXRlZCBkdXJpbmcgcHBndHQgaW5pdCwgc28gdGhpcyBpcyBub3QgbmVlZGVkCi0JCSAqIGluIDQ4 LWJpdCBtb2RlLgotCQkgKi8KLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7 Ci0JCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDIpOwotCQlBU1NJR05fQ1RYX1BE UChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0 ZSwgMCk7Ci0JfQotCi0JcmV0dXJuIDA7CisJLyogVHJ1ZSAzMmIgUFBHVFQgd2l0aCBkeW5hbWlj IHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRlIFBEUAorCSAqIHJlZ2lzdGVycyBhbmQgcG9pbnQgdGhl IHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgorCSAqIFBNTDQgaXMgYWxsb2NhdGVk IGR1cmluZyBwcGd0dCBpbml0LCBzbyB0aGlzIGlzIG5vdCBuZWVkZWQKKwkgKiBpbiA0OC1iaXQg bW9kZS4KKwkgKi8KKwlpZiAocHBndHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+ YmFzZS5kZXYpKQorCQlleGVjbGlzdHNfdXBkYXRlX2NvbnRleHRfcGRwcyhwcGd0dCwgcmVnX3N0 YXRlKTsKIH0KIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0cyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxMCwKQEAgLTQyNCw3ICs0MjYsNyBAQCBzdGF0aWMgdm9p ZCBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cnEwLAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxMCA9 IE5VTEwsICpyZXExID0gTlVMTDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1cnNv ciA9IE5VTEwsICp0bXAgPSBOVUxMOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vy c29yLCAqdG1wOwogCiAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsK IApAQCAtNDM0LDkgKzQzNiw2IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVl dWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkgKi8KIAlXQVJOX09OKCFpbnRlbF9p cnFzX2VuYWJsZWQocmluZy0+ZGV2LT5kZXZfcHJpdmF0ZSkpOwogCi0JaWYgKGxpc3RfZW1wdHko JnJpbmctPmV4ZWNsaXN0X3F1ZXVlKSkKLQkJcmV0dXJuOwotCiAJLyogVHJ5IHRvIHJlYWQgaW4g cGFpcnMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3Vyc29yLCB0bXAsICZyaW5nLT5l eGVjbGlzdF9xdWV1ZSwKIAkJCQkgZXhlY2xpc3RfbGluaykgewpAQCAtNDUxLDM3ICs0NTAsMzUg QEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKQogCQkJcmVxMCA9IGN1cnNvcjsKIAkJfSBlbHNlIHsKIAkJCXJlcTEgPSBj dXJzb3I7CisJCQlXQVJOX09OKHJlcTEtPmVsc3Bfc3VibWl0dGVkKTsKIAkJCWJyZWFrOwogCQl9 CiAJfQogCi0JaWYgKElTX0dFTjgocmluZy0+ZGV2KSB8fCBJU19HRU45KHJpbmctPmRldikpIHsK KwlpZiAodW5saWtlbHkoIXJlcTApKQorCQlyZXR1cm47CisKKwlpZiAocmVxMC0+ZWxzcF9zdWJt aXR0ZWQgJiByaW5nLT5pZGxlX2xpdGVfcmVzdG9yZV93YSkgewogCQkvKgotCQkgKiBXYUlkbGVM aXRlUmVzdG9yZTogbWFrZSBzdXJlIHdlIG5ldmVyIGNhdXNlIGEgbGl0ZQotCQkgKiByZXN0b3Jl IHdpdGggSEVBRD09VEFJTAorCQkgKiBXYUlkbGVMaXRlUmVzdG9yZTogbWFrZSBzdXJlIHdlIG5l dmVyIGNhdXNlIGEgbGl0ZSByZXN0b3JlCisJCSAqIHdpdGggSEVBRD09VEFJTC4KKwkJICoKKwkJ ICogQXBwbHkgdGhlIHdhIE5PT1BTIHRvIHByZXZlbnQgcmluZzpIRUFEID09IHJlcTpUQUlMIGFz IHdlCisJCSAqIHJlc3VibWl0IHRoZSByZXF1ZXN0LiBTZWUgZ2VuOF9lbWl0X3JlcXVlc3QoKSBm b3Igd2hlcmUgd2UKKwkJICogcHJlcGFyZSB0aGUgcGFkZGluZyBhZnRlciB0aGUgZW5kIG9mIHRo ZSByZXF1ZXN0LgogCQkgKi8KLQkJaWYgKHJlcTAtPmVsc3Bfc3VibWl0dGVkKSB7Ci0JCQkvKgot CQkJICogQXBwbHkgdGhlIHdhIE5PT1BTIHRvIHByZXZlbnQgcmluZzpIRUFEID09IHJlcTpUQUlM Ci0JCQkgKiBhcyB3ZSByZXN1Ym1pdCB0aGUgcmVxdWVzdC4gU2VlIGdlbjhfZW1pdF9yZXF1ZXN0 KCkKLQkJCSAqIGZvciB3aGVyZSB3ZSBwcmVwYXJlIHRoZSBwYWRkaW5nIGFmdGVyIHRoZSBlbmQg b2YgdGhlCi0JCQkgKiByZXF1ZXN0LgotCQkJICovCi0JCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZjsKKwkJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7CiAKLQkJCXJp bmdidWYgPSByZXEwLT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKLQkJCXJlcTAtPnRh aWwgKz0gODsKLQkJCXJlcTAtPnRhaWwgJj0gcmluZ2J1Zi0+c2l6ZSAtIDE7Ci0JCX0KKwkJcmlu Z2J1ZiA9IHJlcTAtPmN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOworCQlyZXEwLT50YWls ICs9IDg7CisJCXJlcTAtPnRhaWwgJj0gcmluZ2J1Zi0+c2l6ZSAtIDE7CiAJfQogCi0JV0FSTl9P TihyZXExICYmIHJlcTEtPmVsc3Bfc3VibWl0dGVkKTsKLQogCWV4ZWNsaXN0c19zdWJtaXRfcmVx dWVzdHMocmVxMCwgcmVxMSk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWNsaXN0c19jaGVja19yZW1v dmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAotCQkJCQkgICB1MzIgcmVx dWVzdF9pZCkKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2V4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIgcmVxdWVzdF9pZCkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmhlYWRfcmVxOwogCkBAIC00OTEsMzMgKzQ4OCw0 MSBAQCBzdGF0aWMgYm9vbCBleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3Qoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKIAkJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCwKIAkJCQkJICAgIGV4ZWNsaXN0X2xpbmspOwogCi0JaWYgKGhlYWRfcmVxICE9IE5VTEwpIHsK LQkJaWYgKGludGVsX2V4ZWNsaXN0c19jdHhfaWQoaGVhZF9yZXEtPmN0eCwgcmluZykgPT0gcmVx dWVzdF9pZCkgewotCQkJV0FSTihoZWFkX3JlcS0+ZWxzcF9zdWJtaXR0ZWQgPT0gMCwKLQkJCSAg ICAgIk5ldmVyIHN1Ym1pdHRlZCBoZWFkIHJlcXVlc3RcbiIpOworCWlmICghaGVhZF9yZXEpCisJ CXJldHVybiAwOwogCi0JCQlpZiAoLS1oZWFkX3JlcS0+ZWxzcF9zdWJtaXR0ZWQgPD0gMCkgewot CQkJCWxpc3RfbW92ZV90YWlsKCZoZWFkX3JlcS0+ZXhlY2xpc3RfbGluaywKLQkJCQkJICAgICAg ICZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJ CX0KLQkJfQotCX0KKwlpZiAodW5saWtlbHkoaW50ZWxfZXhlY2xpc3RzX2N0eF9pZChoZWFkX3Jl cS0+Y3R4LCByaW5nKSAhPSByZXF1ZXN0X2lkKSkKKwkJcmV0dXJuIDA7CisKKwlXQVJOKGhlYWRf cmVxLT5lbHNwX3N1Ym1pdHRlZCA9PSAwLCAiTmV2ZXIgc3VibWl0dGVkIGhlYWQgcmVxdWVzdFxu Iik7CisKKwlpZiAoLS1oZWFkX3JlcS0+ZWxzcF9zdWJtaXR0ZWQgPiAwKQorCQlyZXR1cm4gMDsK IAotCXJldHVybiBmYWxzZTsKKwlsaXN0X21vdmVfdGFpbCgmaGVhZF9yZXEtPmV4ZWNsaXN0X2xp bmssCisJCSAgICAgICAmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7CisKKwlyZXR1 cm4gMTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCi0JCQkgICAgICAgdTggcmVhZF9wb2ludGVyLAotCQkJICAgICAgIHUz MiAqc3RhdHVzLCB1MzIgKmNvbnRleHRfaWQpCitzdGF0aWMgdTMyCitnZXRfY29udGV4dF9zdGF0 dXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdW5zaWduZWQgaW50IHJlYWRfcG9pbnRl ciwKKwkJICAgdTMyICpjb250ZXh0X2lkKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJdTMyIHN0YXR1czsKIAotCWlmIChX QVJOX09OKHJlYWRfcG9pbnRlciA+PSBHRU44X0NTQl9FTlRSSUVTKSkKLQkJcmV0dXJuOworCXJl YWRfcG9pbnRlciAlPSBHRU44X0NTQl9FTlRSSUVTOworCisJc3RhdHVzID0gSTkxNV9SRUFEX0ZX KFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGX0xPKHJpbmcsIHJlYWRfcG9pbnRlcikpOwogCi0JKnN0 YXR1cyA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9MTyhyaW5nLCByZWFkX3Bv aW50ZXIpKTsKLQkqY29udGV4dF9pZCA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JV Rl9ISShyaW5nLCByZWFkX3BvaW50ZXIpKTsKKwlpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVT X0lETEVfQUNUSVZFKQorCQlyZXR1cm4gMDsKKworCSpjb250ZXh0X2lkID0gSTkxNV9SRUFEX0ZX KFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGX0hJKHJpbmcsCisJCQkJCQkJICAgICAgcmVhZF9wb2lu dGVyKSk7CisKKwlyZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTUzMSwzMCArNTM2LDI3IEBA IHZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZf cHJpdmF0ZTsKIAl1MzIgc3RhdHVzX3BvaW50ZXI7Ci0JdTggcmVhZF9wb2ludGVyOwotCXU4IHdy aXRlX3BvaW50ZXI7CisJdW5zaWduZWQgaW50IHJlYWRfcG9pbnRlciwgd3JpdGVfcG9pbnRlcjsK IAl1MzIgc3RhdHVzID0gMDsKIAl1MzIgc3RhdHVzX2lkOwotCXUzMiBzdWJtaXRfY29udGV4dHMg PSAwOworCXVuc2lnbmVkIGludCBzdWJtaXRfY29udGV4dHMgPSAwOwogCi0Jc3RhdHVzX3BvaW50 ZXIgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZykpOworCXNwaW5fbG9j aygmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisKKwlzcGluX2xvY2soJmRldl9wcml2LT51bmNvcmUu bG9jayk7CisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7CisKKwlzdGF0dXNfcG9pbnRlciA9IEk5MTVfUkVBRF9GVyhSSU5HX0NPTlRF WFRfU1RBVFVTX1BUUihyaW5nKSk7CiAKIAlyZWFkX3BvaW50ZXIgPSByaW5nLT5uZXh0X2NvbnRl eHRfc3RhdHVzX2J1ZmZlcjsKIAl3cml0ZV9wb2ludGVyID0gR0VOOF9DU0JfV1JJVEVfUFRSKHN0 YXR1c19wb2ludGVyKTsKIAlpZiAocmVhZF9wb2ludGVyID4gd3JpdGVfcG9pbnRlcikKIAkJd3Jp dGVfcG9pbnRlciArPSBHRU44X0NTQl9FTlRSSUVTOwogCi0Jc3Bpbl9sb2NrKCZyaW5nLT5leGVj bGlzdF9sb2NrKTsKLQogCXdoaWxlIChyZWFkX3BvaW50ZXIgPCB3cml0ZV9wb2ludGVyKSB7CisJ CXN0YXR1cyA9IGdldF9jb250ZXh0X3N0YXR1cyhyaW5nLCArK3JlYWRfcG9pbnRlciwgJnN0YXR1 c19pZCk7CiAKLQkJZ2V0X2NvbnRleHRfc3RhdHVzKHJpbmcsICsrcmVhZF9wb2ludGVyICUgR0VO OF9DU0JfRU5UUklFUywKLQkJCQkgICAmc3RhdHVzLCAmc3RhdHVzX2lkKTsKLQotCQlpZiAoc3Rh dHVzICYgR0VOOF9DVFhfU1RBVFVTX0lETEVfQUNUSVZFKQotCQkJY29udGludWU7Ci0KLQkJaWYg KHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpIHsKKwkJaWYgKHVubGlrZWx5KHN0 YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpKSB7CiAJCQlpZiAoc3RhdHVzICYgR0VO OF9DVFhfU1RBVFVTX0xJVEVfUkVTVE9SRSkgewogCQkJCWlmIChleGVjbGlzdHNfY2hlY2tfcmVt b3ZlX3JlcXVlc3QocmluZywgc3RhdHVzX2lkKSkKIAkJCQkJV0FSTigxLCAiTGl0ZSBSZXN0b3Jl ZCByZXF1ZXN0IHJlbW92ZWQgZnJvbSBxdWV1ZVxuIik7CkBAIC01NjIsMzggKzU2NCwzNyBAQCB2 b2lkIGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQog CQkJCVdBUk4oMSwgIlByZWVtcHRpb24gd2l0aG91dCBMaXRlIFJlc3RvcmVcbiIpOwogCQl9CiAK LQkJaWYgKChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpIHx8Ci0JCSAgICAo c3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0VMRU1FTlRfU1dJVENIKSkgewotCQkJaWYgKGV4ZWNs aXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChyaW5nLCBzdGF0dXNfaWQpKQotCQkJCXN1Ym1pdF9j b250ZXh0cysrOwotCQl9CisJCWlmIChzdGF0dXMgJiAoR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9J RExFIHwKKwkJICAgIEdFTjhfQ1RYX1NUQVRVU19FTEVNRU5UX1NXSVRDSCkpCisJCQlzdWJtaXRf Y29udGV4dHMgKz0KKwkJCQlleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3QocmluZywgc3Rh dHVzX2lkKTsKIAl9CiAKLQlpZiAocmluZy0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EpIHsKLQkJ LyogUHJldmVudCBhIGN0eCB0byBwcmVlbXB0IGl0c2VsZiAqLwotCQlpZiAoKHN0YXR1cyAmIEdF TjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSkgJiYKLQkJICAgIChzdWJtaXRfY29udGV4dHMgIT0g MCkpCi0JCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJpbmcpOwotCX0gZWxzZSBpZiAoc3Vi bWl0X2NvbnRleHRzICE9IDApIHsKKwlpZiAoc3VibWl0X2NvbnRleHRzICYmICghcmluZy0+ZGlz YWJsZV9saXRlX3Jlc3RvcmVfd2EgfHwKKwkgICAgKHJpbmctPmRpc2FibGVfbGl0ZV9yZXN0b3Jl X3dhICYmIChzdGF0dXMgJgorCSAgICBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpKSkpCiAJ CWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUocmluZyk7Ci0JfQotCi0Jc3Bpbl91bmxvY2soJnJp bmctPmV4ZWNsaXN0X2xvY2spOwotCi0JaWYgKHVubGlrZWx5KHN1Ym1pdF9jb250ZXh0cyA+IDIp KQotCQlEUk1fRVJST1IoIk1vcmUgdGhhbiB0d28gY29udGV4dCBjb21wbGV0ZSBldmVudHM/XG4i KTsKIAogCXJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyID0gd3JpdGVfcG9pbnRlciAl IEdFTjhfQ1NCX0VOVFJJRVM7CiAKIAkvKiBVcGRhdGUgdGhlIHJlYWQgcG9pbnRlciB0byB0aGUg b2xkIHdyaXRlIHBvaW50ZXIuIE1hbnVhbCByaW5nYnVmZmVyCiAJICogbWFuYWdlbWVudCBmdHcg PC9zYXJjYXNtPiAqLwotCUk5MTVfV1JJVEUoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZyks Ci0JCSAgIF9NQVNLRURfRklFTEQoR0VOOF9DU0JfUkVBRF9QVFJfTUFTSywKLQkJCQkgcmluZy0+ bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXIgPDwgOCkpOworCUk5MTVfV1JJVEVfRlcoUklOR19D T05URVhUX1NUQVRVU19QVFIocmluZyksCisJCSAgICAgIF9NQVNLRURfRklFTEQoR0VOOF9DU0Jf UkVBRF9QVFJfTUFTSywKKwkJCQkgICAgcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXIg PDwgOCkpOworCisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwg Rk9SQ0VXQUtFX0FMTCk7CisJc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CisK KwlzcGluX3VubG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisKKwlpZiAodW5saWtlbHkoc3Vi bWl0X2NvbnRleHRzID4gMikpCisJCURSTV9FUlJPUigiTW9yZSB0aGFuIHR3byBjb250ZXh0IGNv bXBsZXRlIGV2ZW50cz9cbiIpOwogfQogCi1zdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X3F1 ZXVlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lkIGV4 ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCkKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXF1ZXN0LT5pOTE1 OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwogCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yOwogCWludCBudW1fZWxlbWVudHMgPSAwOwpA QCAtNjI1LDEyICs2MjYsMTcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJfQogCiAJbGlzdF9hZGRfdGFp bCgmcmVxdWVzdC0+ZXhlY2xpc3RfbGluaywgJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKTsKLQlpZiAo bnVtX2VsZW1lbnRzID09IDApCisJaWYgKG51bV9lbGVtZW50cyA9PSAwKSB7CisJCXNwaW5fbG9j aygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRf X2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKIAkJZXhlY2xpc3RzX2NvbnRleHRf dW5xdWV1ZShyaW5nKTsKIAotCXNwaW5fdW5sb2NrX2lycSgmcmluZy0+ZXhlY2xpc3RfbG9jayk7 CisJCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOworCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKKwl9CiAKLQly ZXR1cm4gMDsKKwlzcGluX3VubG9ja19pcnEoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogfQogCiBz dGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCkBAIC0xNTQ5LDcgKzE1NTUsNyBAQCBzdGF0aWMgaW50IGdl bjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQl1OCBuZXh0X2NvbnRleHRfc3RhdHVz X2J1ZmZlcl9odzsKKwl1bnNpZ25lZCBpbnQgbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXJfaHc7 CiAKIAlscmNfc2V0dXBfaGFyZHdhcmVfc3RhdHVzX3BhZ2UocmluZywKIAkJCQlkZXZfcHJpdi0+ a2VybmVsX2NvbnRleHQtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGUpOwpAQCAtMjAxMiw2ICsyMDE4 LDcgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKQogCQlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBOVUxMOwogCX0KIAorCXJpbmct PmlkbGVfbGl0ZV9yZXN0b3JlX3dhID0gMDsKIAlyaW5nLT5kaXNhYmxlX2xpdGVfcmVzdG9yZV93 YSA9IGZhbHNlOwogCXJpbmctPmN0eF9kZXNjX3RlbXBsYXRlID0gMDsKIApAQCAtMjQxNiwxMCAr MjQyMyw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAJCSAqIFdpdGggZHluYW1pYyBwYWdl IGFsbG9jYXRpb24sIFBEUHMgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgYXQKIAkJICogdGhpcyBwb2lu dC4gUG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gdGhlIHNjcmF0Y2ggcGFnZQogCQkgKi8K LQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7Ci0JCUFTU0lHTl9DVFhfUERQ KHBwZ3R0LCByZWdfc3RhdGUsIDIpOwotCQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRl LCAxKTsKLQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMCk7CisJCWV4ZWNsaXN0 c191cGRhdGVfY29udGV4dF9wZHBzKHBwZ3R0LCByZWdfc3RhdGUpOwogCX0KIAogCWlmIChyaW5n LT5pZCA9PSBSQ1MpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRl eCA1NjZiMGFlMTBjZTAuLmRkOTEwZDMwYTM4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaApAQCAtMjcxLDcgKzI3MSw4IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5lX2Nz IHsKIAlzcGlubG9ja190IGV4ZWNsaXN0X2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlz dF9xdWV1ZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3Q7Ci0J dTggbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXI7CisJdW5zaWduZWQgaW50IG5leHRfY29udGV4 dF9zdGF0dXNfYnVmZmVyOworCXVuc2lnbmVkIGludCBpZGxlX2xpdGVfcmVzdG9yZV93YTsKIAli b29sIGRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhOwogCXUzMiBjdHhfZGVzY190ZW1wbGF0ZTsKIAl1 MzIgICAgICAgICAgICAgaXJxX2tlZXBfbWFzazsgLyogYml0bWFzayBmb3IgaW50ZXJydXB0cyB0 aGF0IHNob3VsZCBub3QgYmUgbWFza2VkICovCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==