From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 2/6] drm/i915: Unduplicate CHV signal level code Date: Fri, 8 Apr 2016 18:31:42 +0300 Message-ID: <1460129506-6293-3-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1460129506-6293-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 383116EA86 for ; Fri, 8 Apr 2016 15:32:01 +0000 (UTC) In-Reply-To: <1460129506-6293-1-git-send-email-ander.conselvan.de.oliveira@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: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org VGhlIGNvZGUgZm9yIHByb2dyYW1taW5nIHZvbHRhZ2Ugc3dpbmcgYW5kIGVtcGhhc2lzIHdhcyBk dXBsaWNhdGVkCmJldHdlZW4gRFAgYW5kIEhETUkgY29kZS4gTW92ZSB0aGF0IHRvIGEgbmV3IGZp bGUsIGludGVsX2RwaW9fcGh5LmMuCgpTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUg T2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgIHwgICA1ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jICAgICAgIHwgMTAzICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgfCAxMjIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICB8 ICA3MiArLS0tLS0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxMzYgaW5zZXJ0aW9u cygrKSwgMTY3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDdmZmI1MWIu LmViNDVlMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC01Nyw2ICs1Nyw3IEBAIGk5MTUteSAr PSBpbnRlbF9hdWRpby5vIFwKIAkgIGludGVsX2Jpb3MubyBcCiAJICBpbnRlbF9jb2xvci5vIFwK IAkgIGludGVsX2Rpc3BsYXkubyBcCisJICBpbnRlbF9kcGlvX3BoeS5vIFwKIAkgIGludGVsX2Rw bGxfbWdyLm8gXAogCSAgaW50ZWxfZmJjLm8gXAogCSAgaW50ZWxfZmlmb191bmRlcnJ1bi5vIFwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDRlYmQzZmYuLjNjMzkzZTMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaApAQCAtMzUwNCw2ICszNTA0LDExIEBAIHZvaWQgaW50ZWxfc2JpX3dyaXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVlLAog dTMyIHZsdl9mbGlzZHNpX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgcmVnKTsKIHZvaWQgdmx2X2ZsaXNkc2lfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKTsKIAorLyogaW50ZWxfZHBpb19waHkuYyAqLwor dm9pZCBjaHZfc2V0X3BoeV9zaWduYWxfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkgICAgICB1MzIgZGVlbXBoX3JlZ192YWx1ZSwgdTMyIG1hcmdpbl9yZWdfdmFsdWUs CisJCQkgICAgICBib29sIHVuaXFfdHJhbnNfc2NhbGUpOworCiBpbnQgaW50ZWxfZ3B1X2ZyZXEo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKTsKIGludCBpbnRlbF9m cmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBkYTBjM2QyLi41YmE3MmIwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKQEAgLTMzMzksMjMgKzMzMzksMTIgQEAgc3RhdGljIHVpbnQzMl90IHZs dl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyBib29sIGNodl9uZWVkX3VuaXFfdHJhbnNfc2NhbGUodWludDhfdCB0cmFpbl9z ZXQpCi17Ci0JcmV0dXJuICh0cmFpbl9zZXQgJiBEUF9UUkFJTl9QUkVfRU1QSEFTSVNfTUFTSykg PT0gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMCAmJgotCQkodHJhaW5fc2V0ICYgRFBfVFJBSU5f Vk9MVEFHRV9TV0lOR19NQVNLKSA9PSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Ci19 Ci0KIHN0YXRpYyB1aW50MzJfdCBjaHZfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19kZXYoaW50 ZWxfZHApOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Ci0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBkcF90b19kaWdfcG9y dChpbnRlbF9kcCk7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGRwb3J0LT5iYXNlLmJhc2UuY3J0Yyk7Ci0JdTMyIGRlZW1waF9yZWdfdmFsdWUsIG1hcmdp bl9yZWdfdmFsdWUsIHZhbDsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZkcF90 b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7CisJdTMyIGRlZW1waF9yZWdfdmFsdWUsIG1hcmdp bl9yZWdfdmFsdWU7CisJYm9vbCB1bmlxX3RyYW5zX3NjYWxlID0gZmFsc2U7CiAJdWludDhfdCB0 cmFpbl9zZXQgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBdOwotCWVudW0gZHBpb19jaGFubmVsIGNo ID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZHBvcnQpOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKLQlpbnQgaTsKIAogCXN3aXRjaCAodHJhaW5fc2V0ICYgRFBfVFJBSU5fUFJF X0VNUEhBU0lTX01BU0spIHsKIAljYXNlIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA6CkBAIC0z Mzc1LDcgKzMzNjQsNyBAQCBzdGF0aWMgdWludDMyX3QgY2h2X3NpZ25hbF9sZXZlbHMoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKIAkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVM XzM6CiAJCQlkZWVtcGhfcmVnX3ZhbHVlID0gMTI4OwogCQkJbWFyZ2luX3JlZ192YWx1ZSA9IDE1 NDsKLQkJCS8qIEZJWE1FIGV4dHJhIHRvIHNldCBmb3IgMTIwMCAqLworCQkJdW5pcV90cmFuc19z Y2FsZSA9IHRydWU7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAwOwpAQCAtMzQy Nyw4OCArMzQxNiw4IEBAIHN0YXRpYyB1aW50MzJfdCBjaHZfc2lnbmFsX2xldmVscyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQogCQlyZXR1cm4gMDsKIAl9CiAKLQltdXRleF9sb2NrKCZkZXZf cHJpdi0+c2JfbG9jayk7Ci0KLQkvKiBDbGVhciBjYWxjIGluaXQgKi8KLQl2YWwgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCkpOwotCXZhbCAmPSB+KERQ SU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMyk7 Ci0JdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQSU9fUENTX1RYMkRFRU1QX01B U0spOwotCXZhbCB8PSBEUElPX1BDU19UWDFERUVNUF85UDUgfCBEUElPX1BDU19UWDJERUVNUF85 UDU7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSwg dmFsKTsKLQotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7Ci0JCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSk7Ci0J CXZhbCAmPSB+KERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NB TENfVFgxX1RYMyk7Ci0JCXZhbCAmPSB+KERQSU9fUENTX1RYMURFRU1QX01BU0sgfCBEUElPX1BD U19UWDJERUVNUF9NQVNLKTsKLQkJdmFsIHw9IERQSU9fUENTX1RYMURFRU1QXzlQNSB8IERQSU9f UENTX1RYMkRFRU1QXzlQNTsKLQkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MyM19EVzEwKGNoKSwgdmFsKTsKLQl9Ci0KLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMDFfRFc5KGNoKSk7Ci0JdmFsICY9IH4oRFBJT19QQ1NfVFgxTUFSR0lO X01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7Ci0JdmFsIHw9IERQSU9fUENTX1RYMU1B UkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOwotCXZsdl9kcGlvX3dyaXRlKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMDFfRFc5KGNoKSwgdmFsKTsKLQotCWlmIChpbnRlbF9jcnRjLT5j b25maWctPmxhbmVfY291bnQgPiAyKSB7Ci0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpKTsKLQkJdmFsICY9IH4oRFBJT19QQ1NfVFgxTUFSR0lO X01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7Ci0JCXZhbCB8PSBEUElPX1BDU19UWDFN QVJHSU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKLQkJdmx2X2RwaW9fd3JpdGUoZGV2 X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpLCB2YWwpOwotCX0KLQotCS8qIFByb2dyYW0g c3dpbmcgZGVlbXBoICovCi0JZm9yIChpID0gMDsgaSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFu ZV9jb3VudDsgaSsrKSB7Ci0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENI Vl9UWF9EVzQoY2gsIGkpKTsKLQkJdmFsICY9IH5EUElPX1NXSU5HX0RFRU1QSDlQNV9NQVNLOwot CQl2YWwgfD0gZGVlbXBoX3JlZ192YWx1ZSA8PCBEUElPX1NXSU5HX0RFRU1QSDlQNV9TSElGVDsK LQkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzQoY2gsIGkpLCB2YWwp OwotCX0KLQotCS8qIFByb2dyYW0gc3dpbmcgbWFyZ2luICovCi0JZm9yIChpID0gMDsgaSA8IGlu dGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7Ci0JCXZhbCA9IHZsdl9kcGlvX3Jl YWQoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzIoY2gsIGkpKTsKLQotCQl2YWwgJj0gfkRQSU9f U1dJTkdfTUFSR0lOMDAwX01BU0s7Ci0JCXZhbCB8PSBtYXJnaW5fcmVnX3ZhbHVlIDw8IERQSU9f U1dJTkdfTUFSR0lOMDAwX1NISUZUOwotCi0JCS8qCi0JCSAqIFN1cHBvc2VkbHkgdGhpcyB2YWx1 ZSBzaG91bGRuJ3QgbWF0dGVyIHdoZW4gdW5pcXVlIHRyYW5zaXRpb24KLQkJICogc2NhbGUgaXMg ZGlzYWJsZWQsIGJ1dCBpbiBmYWN0IGl0IGRvZXMgbWF0dGVyLiBMZXQncyBqdXN0Ci0JCSAqIGFs d2F5cyBwcm9ncmFtIHRoZSBzYW1lIHZhbHVlIGFuZCBob3BlIGl0J3MgT0suCi0JCSAqLwotCQl2 YWwgJj0gfigweGZmIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FMRV9TSElGVCk7Ci0JCXZhbCB8PSAw eDlhIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FMRV9TSElGVDsKLQotCQl2bHZfZHBpb193cml0ZShk ZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMihjaCwgaSksIHZhbCk7Ci0JfQotCi0JLyoKLQkgKiBU aGUgZG9jdW1lbnQgc2FpZCBpdCBuZWVkcyB0byBzZXQgYml0IDI3IGZvciBjaDAgYW5kIGJpdCAy NgotCSAqIGZvciBjaDEuIE1pZ2h0IGJlIGEgdHlwbyBpbiB0aGUgZG9jLgotCSAqIEZvciBub3cs IGZvciB0aGlzIHVuaXF1ZSB0cmFuc2l0aW9uIHNjYWxlIHNlbGVjdGlvbiwgc2V0IGJpdAotCSAq IDI3IGZvciBjaDAgYW5kIGNoMS4KLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfY3J0Yy0+ Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJp diwgcGlwZSwgQ0hWX1RYX0RXMyhjaCwgaSkpOwotCQlpZiAoY2h2X25lZWRfdW5pcV90cmFuc19z Y2FsZSh0cmFpbl9zZXQpKQotCQkJdmFsIHw9IERQSU9fVFhfVU5JUV9UUkFOU19TQ0FMRV9FTjsK LQkJZWxzZQotCQkJdmFsICY9IH5EUElPX1RYX1VOSVFfVFJBTlNfU0NBTEVfRU47Ci0JCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFczKGNoLCBpKSwgdmFsKTsKLQl9Ci0K LQkvKiBTdGFydCBzd2luZyBjYWxjdWxhdGlvbiAqLwotCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2 X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSk7Ci0JdmFsIHw9IERQSU9fUENTX1NXSU5H X0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMzsKLQl2bHZfZHBpb193 cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpLCB2YWwpOwotCi0JaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVh ZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTAoY2gpKTsKLQkJdmFsIHw9IERQSU9fUENT X1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMzsKLQkJdmx2 X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKLQl9 Ci0KLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKKwljaHZfc2V0X3BoeV9zaWdu YWxfbGV2ZWwoZW5jb2RlciwgZGVlbXBoX3JlZ192YWx1ZSwKKwkJCQkgbWFyZ2luX3JlZ192YWx1 ZSwgdW5pcV90cmFuc19zY2FsZSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcGlvX3BoeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZTE3 MDNkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19w aHkuYwpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0LTIwMTYgSW50 ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCisgKi8KKworI2luY2x1ZGUgImludGVsX2Rydi5oIgorCit2b2lkIGNodl9zZXRfcGh5X3Np Z25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgIHUzMiBk ZWVtcGhfcmVnX3ZhbHVlLCB1MzIgbWFyZ2luX3JlZ192YWx1ZSwKKwkJCSAgICAgIGJvb2wgdW5p cV90cmFuc19zY2FsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpk cG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGRwb3J0LT5iYXNlLmJhc2UuY3J0Yyk7CisJ ZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7CisJZW51 bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOworCXUzMiB2YWw7CisJaW50IGk7CisKKwlt dXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7CisKKwkvKiBDbGVhciBjYWxjIGluaXQgKi8K Kwl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCkp OworCXZhbCAmPSB+KERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5H X0NBTENfVFgxX1RYMyk7CisJdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQSU9f UENTX1RYMkRFRU1QX01BU0spOworCXZhbCB8PSBEUElPX1BDU19UWDFERUVNUF85UDUgfCBEUElP X1BDU19UWDJERUVNUF85UDU7CisJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MwMV9EVzEwKGNoKSwgdmFsKTsKKworCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291 bnQgPiAyKSB7CisJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1My M19EVzEwKGNoKSk7CisJCXZhbCAmPSB+KERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQ SU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMyk7CisJCXZhbCAmPSB+KERQSU9fUENTX1RYMURFRU1Q X01BU0sgfCBEUElPX1BDU19UWDJERUVNUF9NQVNLKTsKKwkJdmFsIHw9IERQSU9fUENTX1RYMURF RU1QXzlQNSB8IERQSU9fUENTX1RYMkRFRU1QXzlQNTsKKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3By aXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKKwl9CisKKwl2YWwgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc5KGNoKSk7CisJdmFsICY9IH4oRFBJ T19QQ1NfVFgxTUFSR0lOX01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7CisJdmFsIHw9 IERQSU9fUENTX1RYMU1BUkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOworCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc5KGNoKSwgdmFsKTsKKworCWlm IChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7CisJCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpKTsKKwkJdmFsICY9IH4oRFBJ T19QQ1NfVFgxTUFSR0lOX01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7CisJCXZhbCB8 PSBEUElPX1BDU19UWDFNQVJHSU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKKwkJdmx2 X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpLCB2YWwpOworCX0K KworCS8qIFByb2dyYW0gc3dpbmcgZGVlbXBoICovCisJZm9yIChpID0gMDsgaSA8IGludGVsX2Ny dGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7CisJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2 X3ByaXYsIHBpcGUsIENIVl9UWF9EVzQoY2gsIGkpKTsKKwkJdmFsICY9IH5EUElPX1NXSU5HX0RF RU1QSDlQNV9NQVNLOworCQl2YWwgfD0gZGVlbXBoX3JlZ192YWx1ZSA8PCBEUElPX1NXSU5HX0RF RU1QSDlQNV9TSElGVDsKKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9E VzQoY2gsIGkpLCB2YWwpOworCX0KKworCS8qIFByb2dyYW0gc3dpbmcgbWFyZ2luICovCisJZm9y IChpID0gMDsgaSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7CisJCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzIoY2gsIGkpKTsKKwor CQl2YWwgJj0gfkRQSU9fU1dJTkdfTUFSR0lOMDAwX01BU0s7CisJCXZhbCB8PSBtYXJnaW5fcmVn X3ZhbHVlIDw8IERQSU9fU1dJTkdfTUFSR0lOMDAwX1NISUZUOworCisJCS8qCisJCSAqIFN1cHBv c2VkbHkgdGhpcyB2YWx1ZSBzaG91bGRuJ3QgbWF0dGVyIHdoZW4gdW5pcXVlIHRyYW5zaXRpb24K KwkJICogc2NhbGUgaXMgZGlzYWJsZWQsIGJ1dCBpbiBmYWN0IGl0IGRvZXMgbWF0dGVyLiBMZXQn cyBqdXN0CisJCSAqIGFsd2F5cyBwcm9ncmFtIHRoZSBzYW1lIHZhbHVlIGFuZCBob3BlIGl0J3Mg T0suCisJCSAqLworCQl2YWwgJj0gfigweGZmIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FMRV9TSElG VCk7CisJCXZhbCB8PSAweDlhIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FMRV9TSElGVDsKKworCQl2 bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMihjaCwgaSksIHZhbCk7CisJ fQorCisJLyoKKwkgKiBUaGUgZG9jdW1lbnQgc2FpZCBpdCBuZWVkcyB0byBzZXQgYml0IDI3IGZv ciBjaDAgYW5kIGJpdCAyNgorCSAqIGZvciBjaDEuIE1pZ2h0IGJlIGEgdHlwbyBpbiB0aGUgZG9j LgorCSAqIEZvciBub3csIGZvciB0aGlzIHVuaXF1ZSB0cmFuc2l0aW9uIHNjYWxlIHNlbGVjdGlv biwgc2V0IGJpdAorCSAqIDI3IGZvciBjaDAgYW5kIGNoMS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBp IDwgaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKKwkJdmFsID0gdmx2X2Rw aW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMyhjaCwgaSkpOworCQlpZiAodW5pcV90 cmFuc19zY2FsZSkKKwkJCXZhbCB8PSBEUElPX1RYX1VOSVFfVFJBTlNfU0NBTEVfRU47CisJCWVs c2UKKwkJCXZhbCAmPSB+RFBJT19UWF9VTklRX1RSQU5TX1NDQUxFX0VOOworCQl2bHZfZHBpb193 cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMyhjaCwgaSksIHZhbCk7CisJfQorCisJLyog U3RhcnQgc3dpbmcgY2FsY3VsYXRpb24gKi8KKwl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCkpOworCXZhbCB8PSBEUElPX1BDU19TV0lOR19DQUxD X1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDM7CisJdmx2X2RwaW9fd3JpdGUo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSwgdmFsKTsKKworCWlmIChpbnRlbF9j cnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7CisJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2 X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSk7CisJCXZhbCB8PSBEUElPX1BDU19TV0lO R19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDM7CisJCXZsdl9kcGlv X3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7CisJfQorCisJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7CisKK30KKwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCmluZGV4IDJkYzZlMDAuLjEwN2E4MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZG1pLmMKQEAgLTE5MTEsNzggKzE5MTEsMTAgQEAgc3RhdGljIHZvaWQgY2h2X2hkbWlfcHJlX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkvKiBEZWFzc2VydCBkYXRhIGxh bmUgcmVzZXQgKi8KIAljaHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQoZW5jb2RlciwgZmFsc2UpOwog Ci0JLyogQ2xlYXIgY2FsYyBpbml0ICovCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwg cGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpKTsKLQl2YWwgJj0gfihEUElPX1BDU19TV0lOR19DQUxD X1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDMpOwotCXZhbCAmPSB+KERQSU9f UENTX1RYMURFRU1QX01BU0sgfCBEUElPX1BDU19UWDJERUVNUF9NQVNLKTsKLQl2YWwgfD0gRFBJ T19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19QQ1NfVFgyREVFTVBfOVA1OwotCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCksIHZhbCk7Ci0KLQl2YWwgPSB2 bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwotCXZhbCAm PSB+KERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgx X1RYMyk7Ci0JdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQSU9fUENTX1RYMkRF RU1QX01BU0spOwotCXZhbCB8PSBEUElPX1BDU19UWDFERUVNUF85UDUgfCBEUElPX1BDU19UWDJE RUVNUF85UDU7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEw KGNoKSwgdmFsKTsKLQotCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MwMV9EVzkoY2gpKTsKLQl2YWwgJj0gfihEUElPX1BDU19UWDFNQVJHSU5fTUFTSyB8IERQSU9f UENTX1RYMk1BUkdJTl9NQVNLKTsKLQl2YWwgfD0gRFBJT19QQ1NfVFgxTUFSR0lOXzAwMCB8IERQ SU9fUENTX1RYMk1BUkdJTl8wMDA7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1MwMV9EVzkoY2gpLCB2YWwpOwotCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwg cGlwZSwgVkxWX1BDUzIzX0RXOShjaCkpOwotCXZhbCAmPSB+KERQSU9fUENTX1RYMU1BUkdJTl9N QVNLIHwgRFBJT19QQ1NfVFgyTUFSR0lOX01BU0spOwotCXZhbCB8PSBEUElPX1BDU19UWDFNQVJH SU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJp diwgcGlwZSwgVkxWX1BDUzIzX0RXOShjaCksIHZhbCk7Ci0KLQkvKiBGSVhNRTogUHJvZ3JhbSB0 aGUgc3VwcG9ydCB4eHggVi1kQiAqLwotCS8qIFVzZSA4MDBtVi0wZEIgKi8KLQlmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKSB7Ci0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENI Vl9UWF9EVzQoY2gsIGkpKTsKLQkJdmFsICY9IH5EUElPX1NXSU5HX0RFRU1QSDlQNV9NQVNLOwot CQl2YWwgfD0gMTI4IDw8IERQSU9fU1dJTkdfREVFTVBIOVA1X1NISUZUOwotCQl2bHZfZHBpb193 cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSksIHZhbCk7Ci0JfQotCi0JZm9y IChpID0gMDsgaSA8IDQ7IGkrKykgewotCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBw aXBlLCBDSFZfVFhfRFcyKGNoLCBpKSk7Ci0KLQkJdmFsICY9IH5EUElPX1NXSU5HX01BUkdJTjAw MF9NQVNLOwotCQl2YWwgfD0gMTAyIDw8IERQSU9fU1dJTkdfTUFSR0lOMDAwX1NISUZUOwotCi0J CS8qCi0JCSAqIFN1cHBvc2VkbHkgdGhpcyB2YWx1ZSBzaG91bGRuJ3QgbWF0dGVyIHdoZW4gdW5p cXVlIHRyYW5zaXRpb24KLQkJICogc2NhbGUgaXMgZGlzYWJsZWQsIGJ1dCBpbiBmYWN0IGl0IGRv ZXMgbWF0dGVyLiBMZXQncyBqdXN0Ci0JCSAqIGFsd2F5cyBwcm9ncmFtIHRoZSBzYW1lIHZhbHVl IGFuZCBob3BlIGl0J3MgT0suCi0JCSAqLwotCQl2YWwgJj0gfigweGZmIDw8IERQSU9fVU5JUV9U UkFOU19TQ0FMRV9TSElGVCk7Ci0JCXZhbCB8PSAweDlhIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FM RV9TSElGVDsKLQotCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMihj aCwgaSksIHZhbCk7Ci0JfQotCi0JLyoKLQkgKiBUaGUgZG9jdW1lbnQgc2FpZCBpdCBuZWVkcyB0 byBzZXQgYml0IDI3IGZvciBjaDAgYW5kIGJpdCAyNgotCSAqIGZvciBjaDEuIE1pZ2h0IGJlIGEg dHlwbyBpbiB0aGUgZG9jLgotCSAqIEZvciBub3csIGZvciB0aGlzIHVuaXF1ZSB0cmFuc2l0aW9u IHNjYWxlIHNlbGVjdGlvbiwgc2V0IGJpdAotCSAqIDI3IGZvciBjaDAgYW5kIGNoMS4KLQkgKi8K LQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3By aXYsIHBpcGUsIENIVl9UWF9EVzMoY2gsIGkpKTsKLQkJdmFsICY9IH5EUElPX1RYX1VOSVFfVFJB TlNfU0NBTEVfRU47Ci0JCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFcz KGNoLCBpKSwgdmFsKTsKLQl9Ci0KLQkvKiBTdGFydCBzd2luZyBjYWxjdWxhdGlvbiAqLwotCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSk7Ci0J dmFsIHw9IERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENf VFgxX1RYMzsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAo Y2gpLCB2YWwpOwotCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzIzX0RXMTAoY2gpKTsKLQl2YWwgfD0gRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJ T19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzOwotCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7Ci0KIAltdXRleF91bmxvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKIAorCWNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChlbmNvZGVyLCAxMjgsIDEwMiwg ZmFsc2UpOworCiAJaW50ZWxfaGRtaS0+c2V0X2luZm9mcmFtZXMoJmVuY29kZXItPmJhc2UsCiAJ CQkJICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfaGRtaV9zaW5rLAogCQkJCSAgIGFkanVzdGVk X21vZGUpOwotLSAKMi40LjExCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK