From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH v4 02/10] drm/i915: Unduplicate CHV signal level code Date: Wed, 27 Apr 2016 15:44:17 +0300 Message-ID: <1461761065-21195-3-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1461761065-21195-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 8D79F6EAB3 for ; Wed, 27 Apr 2016 12:44:35 +0000 (UTC) In-Reply-To: <1461761065-21195-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 bGUsIGludGVsX2RwaW9fcGh5LmMuCgp2MjogS2VlcCB0aGUgIlVzZSA4MDBtVi0wZEIiIGNvbW1l bnQgaW4gdGhlIEhETUkgY29kZS4gKFZpbGxlKQpTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2 YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+ClJl dmlld2VkLWJ5OiBKaW0gQnJpZGUgPGppbS5icmlkZUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgIHwgICA1ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jICAgICAgIHwgMTAzICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgfCAxMjIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICB8 ICA3MCArLS0tLS0tLS0tLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDEzNiBpbnNlcnRpb25z KCspLCAxNjUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBpb19waHkuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNzIzYzUwMi4u NjNjNGQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTU5LDYgKzU5LDcgQEAgaTkxNS15ICs9 IGludGVsX2F1ZGlvLm8gXAogCSAgaW50ZWxfYmlvcy5vIFwKIAkgIGludGVsX2NvbG9yLm8gXAog CSAgaW50ZWxfZGlzcGxheS5vIFwKKwkgIGludGVsX2RwaW9fcGh5Lm8gXAogCSAgaW50ZWxfZHBs bF9tZ3IubyBcCiAJICBpbnRlbF9mYmMubyBcCiAJICBpbnRlbF9maWZvX3VuZGVycnVuLm8gXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMzJmMDU5Ny4uOTc2MGI0MiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCkBAIC0zNTc3LDYgKzM1NzcsMTEgQEAgdm9pZCBpbnRlbF9zYmlfd3JpdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVnLCB1MzIgdmFsdWUsCiB1 MzIgdmx2X2ZsaXNkc2lfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiByZWcpOwogdm9pZCB2bHZfZmxpc2RzaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHUzMiByZWcsIHUzMiB2YWwpOwogCisvKiBpbnRlbF9kcGlvX3BoeS5jICovCit2 b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKKwkJCSAgICAgIHUzMiBkZWVtcGhfcmVnX3ZhbHVlLCB1MzIgbWFyZ2luX3JlZ192YWx1ZSwK KwkJCSAgICAgIGJvb2wgdW5pcV90cmFuc19zY2FsZSk7CisKIGludCBpbnRlbF9ncHVfZnJlcShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpOwogaW50IGludGVsX2Zy ZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IGMxMmM0MTQuLmJkYWZkNzIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwpAQCAtMzI3NiwyMyArMzI3NiwxMiBAQCBzdGF0aWMgdWludDMyX3Qgdmx2 X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlyZXR1cm4gMDsKIH0K IAotc3RhdGljIGJvb2wgY2h2X25lZWRfdW5pcV90cmFuc19zY2FsZSh1aW50OF90IHRyYWluX3Nl dCkKLXsKLQlyZXR1cm4gKHRyYWluX3NldCAmIERQX1RSQUlOX1BSRV9FTVBIQVNJU19NQVNLKSA9 PSBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wICYmCi0JCSh0cmFpbl9zZXQgJiBEUF9UUkFJTl9W T0xUQUdFX1NXSU5HX01BU0spID09IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKLX0K LQogc3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRl bF9kcCk7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCA9IGRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoZHBvcnQtPmJhc2UuYmFzZS5jcnRjKTsKLQl1MzIgZGVlbXBoX3JlZ192YWx1ZSwgbWFyZ2lu X3JlZ192YWx1ZSwgdmFsOworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3Rv X2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKKwl1MzIgZGVlbXBoX3JlZ192YWx1ZSwgbWFyZ2lu X3JlZ192YWx1ZTsKKwlib29sIHVuaXFfdHJhbnNfc2NhbGUgPSBmYWxzZTsKIAl1aW50OF90IHRy YWluX3NldCA9IGludGVsX2RwLT50cmFpbl9zZXRbMF07Ci0JZW51bSBkcGlvX2NoYW5uZWwgY2gg PSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9j cnRjLT5waXBlOwotCWludCBpOwogCiAJc3dpdGNoICh0cmFpbl9zZXQgJiBEUF9UUkFJTl9QUkVf RU1QSEFTSVNfTUFTSykgewogCWNhc2UgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMDoKQEAgLTMz MTIsNyArMzMwMSw3IEBAIHN0YXRpYyB1aW50MzJfdCBjaHZfc2lnbmFsX2xldmVscyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQogCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxf MzoKIAkJCWRlZW1waF9yZWdfdmFsdWUgPSAxMjg7CiAJCQltYXJnaW5fcmVnX3ZhbHVlID0gMTU0 OwotCQkJLyogRklYTUUgZXh0cmEgdG8gc2V0IGZvciAxMjAwICovCisJCQl1bmlxX3RyYW5zX3Nj YWxlID0gdHJ1ZTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIDA7CkBAIC0zMzY0 LDg4ICszMzUzLDggQEAgc3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCiAJCXJldHVybiAwOwogCX0KIAotCW11dGV4X2xvY2soJmRldl9w cml2LT5zYl9sb2NrKTsKLQotCS8qIENsZWFyIGNhbGMgaW5pdCAqLwotCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSk7Ci0JdmFsICY9IH4oRFBJ T19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzKTsK LQl2YWwgJj0gfihEUElPX1BDU19UWDFERUVNUF9NQVNLIHwgRFBJT19QQ1NfVFgyREVFTVBfTUFT Syk7Ci0JdmFsIHw9IERQSU9fUENTX1RYMURFRU1QXzlQNSB8IERQSU9fUENTX1RYMkRFRU1QXzlQ NTsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpLCB2 YWwpOwotCi0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKLQkJdmFs ID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTAoY2gpKTsKLQkJ dmFsICY9IH4oRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FM Q19UWDFfVFgzKTsKLQkJdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQSU9fUENT X1RYMkRFRU1QX01BU0spOwotCQl2YWwgfD0gRFBJT19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19Q Q1NfVFgyREVFTVBfOVA1OwotCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzIzX0RXMTAoY2gpLCB2YWwpOwotCX0KLQotCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIFZMVl9QQ1MwMV9EVzkoY2gpKTsKLQl2YWwgJj0gfihEUElPX1BDU19UWDFNQVJHSU5f TUFTSyB8IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKLQl2YWwgfD0gRFBJT19QQ1NfVFgxTUFS R0lOXzAwMCB8IERQSU9fUENTX1RYMk1BUkdJTl8wMDA7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3By aXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzkoY2gpLCB2YWwpOwotCi0JaWYgKGludGVsX2NydGMtPmNv bmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwg cGlwZSwgVkxWX1BDUzIzX0RXOShjaCkpOwotCQl2YWwgJj0gfihEUElPX1BDU19UWDFNQVJHSU5f TUFTSyB8IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKLQkJdmFsIHw9IERQSU9fUENTX1RYMU1B UkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOwotCQl2bHZfZHBpb193cml0ZShkZXZf cHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXOShjaCksIHZhbCk7Ci0JfQotCi0JLyogUHJvZ3JhbSBz d2luZyBkZWVtcGggKi8KLQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5l X2NvdW50OyBpKyspIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hW X1RYX0RXNChjaCwgaSkpOwotCQl2YWwgJj0gfkRQSU9fU1dJTkdfREVFTVBIOVA1X01BU0s7Ci0J CXZhbCB8PSBkZWVtcGhfcmVnX3ZhbHVlIDw8IERQSU9fU1dJTkdfREVFTVBIOVA1X1NISUZUOwot CQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSksIHZhbCk7 Ci0JfQotCi0JLyogUHJvZ3JhbSBzd2luZyBtYXJnaW4gKi8KLQlmb3IgKGkgPSAwOyBpIDwgaW50 ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVh ZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMihjaCwgaSkpOwotCi0JCXZhbCAmPSB+RFBJT19T V0lOR19NQVJHSU4wMDBfTUFTSzsKLQkJdmFsIHw9IG1hcmdpbl9yZWdfdmFsdWUgPDwgRFBJT19T V0lOR19NQVJHSU4wMDBfU0hJRlQ7Ci0KLQkJLyoKLQkJICogU3VwcG9zZWRseSB0aGlzIHZhbHVl IHNob3VsZG4ndCBtYXR0ZXIgd2hlbiB1bmlxdWUgdHJhbnNpdGlvbgotCQkgKiBzY2FsZSBpcyBk aXNhYmxlZCwgYnV0IGluIGZhY3QgaXQgZG9lcyBtYXR0ZXIuIExldCdzIGp1c3QKLQkJICogYWx3 YXlzIHByb2dyYW0gdGhlIHNhbWUgdmFsdWUgYW5kIGhvcGUgaXQncyBPSy4KLQkJICovCi0JCXZh bCAmPSB+KDB4ZmYgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUKTsKLQkJdmFsIHw9IDB4 OWEgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUOwotCi0JCXZsdl9kcGlvX3dyaXRlKGRl dl9wcml2LCBwaXBlLCBDSFZfVFhfRFcyKGNoLCBpKSwgdmFsKTsKLQl9Ci0KLQkvKgotCSAqIFRo ZSBkb2N1bWVudCBzYWlkIGl0IG5lZWRzIHRvIHNldCBiaXQgMjcgZm9yIGNoMCBhbmQgYml0IDI2 Ci0JICogZm9yIGNoMS4gTWlnaHQgYmUgYSB0eXBvIGluIHRoZSBkb2MuCi0JICogRm9yIG5vdywg Zm9yIHRoaXMgdW5pcXVlIHRyYW5zaXRpb24gc2NhbGUgc2VsZWN0aW9uLCBzZXQgYml0Ci0JICog MjcgZm9yIGNoMCBhbmQgY2gxLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5j b25maWctPmxhbmVfY291bnQ7IGkrKykgewotCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2 LCBwaXBlLCBDSFZfVFhfRFczKGNoLCBpKSk7Ci0JCWlmIChjaHZfbmVlZF91bmlxX3RyYW5zX3Nj YWxlKHRyYWluX3NldCkpCi0JCQl2YWwgfD0gRFBJT19UWF9VTklRX1RSQU5TX1NDQUxFX0VOOwot CQllbHNlCi0JCQl2YWwgJj0gfkRQSU9fVFhfVU5JUV9UUkFOU19TQ0FMRV9FTjsKLQkJdmx2X2Rw aW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzMoY2gsIGkpLCB2YWwpOwotCX0KLQot CS8qIFN0YXJ0IHN3aW5nIGNhbGN1bGF0aW9uICovCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZf cHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpKTsKLQl2YWwgfD0gRFBJT19QQ1NfU1dJTkdf Q0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzOwotCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCksIHZhbCk7Ci0KLQlpZiAoaW50 ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewotCQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwotCQl2YWwgfD0gRFBJT19QQ1Nf U1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzOwotCQl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTAoY2gpLCB2YWwpOwotCX0K LQotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOworCWNodl9zZXRfcGh5X3NpZ25h bF9sZXZlbChlbmNvZGVyLCBkZWVtcGhfcmVnX3ZhbHVlLAorCQkJCSBtYXJnaW5fcmVnX3ZhbHVl LCB1bmlxX3RyYW5zX3NjYWxlKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwaW9fcGh5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JlMTcw M2QKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3Bo eS5jCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KKyAqLworCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisKK3ZvaWQgY2h2X3NldF9waHlfc2ln bmFsX2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICAgdTMyIGRl ZW1waF9yZWdfdmFsdWUsIHUzMiBtYXJnaW5fcmVnX3ZhbHVlLAorCQkJICAgICAgYm9vbCB1bmlx X3RyYW5zX3NjYWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRw b3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZHBvcnQtPmJhc2UuYmFzZS5jcnRjKTsKKwll bnVtIGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGRwb3J0KTsKKwllbnVt IHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJdTMyIHZhbDsKKwlpbnQgaTsKKworCW11 dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKKworCS8qIENsZWFyIGNhbGMgaW5pdCAqLwor CXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSk7 CisJdmFsICY9IH4oRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdf Q0FMQ19UWDFfVFgzKTsKKwl2YWwgJj0gfihEUElPX1BDU19UWDFERUVNUF9NQVNLIHwgRFBJT19Q Q1NfVFgyREVFTVBfTUFTSyk7CisJdmFsIHw9IERQSU9fUENTX1RYMURFRU1QXzlQNSB8IERQSU9f UENTX1RYMkRFRU1QXzlQNTsKKwl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzAxX0RXMTAoY2gpLCB2YWwpOworCisJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3Vu dCA+IDIpIHsKKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIz X0RXMTAoY2gpKTsKKwkJdmFsICY9IH4oRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJ T19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzKTsKKwkJdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBf TUFTSyB8IERQSU9fUENTX1RYMkRFRU1QX01BU0spOworCQl2YWwgfD0gRFBJT19QQ1NfVFgxREVF TVBfOVA1IHwgRFBJT19QQ1NfVFgyREVFTVBfOVA1OworCQl2bHZfZHBpb193cml0ZShkZXZfcHJp diwgcGlwZSwgVkxWX1BDUzIzX0RXMTAoY2gpLCB2YWwpOworCX0KKworCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzkoY2gpKTsKKwl2YWwgJj0gfihEUElP X1BDU19UWDFNQVJHSU5fTUFTSyB8IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKKwl2YWwgfD0g RFBJT19QQ1NfVFgxTUFSR0lOXzAwMCB8IERQSU9fUENTX1RYMk1BUkdJTl8wMDA7CisJdmx2X2Rw aW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzkoY2gpLCB2YWwpOworCisJaWYg KGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKKwkJdmFsID0gdmx2X2RwaW9f cmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXOShjaCkpOworCQl2YWwgJj0gfihEUElP X1BDU19UWDFNQVJHSU5fTUFTSyB8IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKKwkJdmFsIHw9 IERQSU9fUENTX1RYMU1BUkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOworCQl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXOShjaCksIHZhbCk7CisJfQor CisJLyogUHJvZ3JhbSBzd2luZyBkZWVtcGggKi8KKwlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfY3J0 Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZf cHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSkpOworCQl2YWwgJj0gfkRQSU9fU1dJTkdfREVF TVBIOVA1X01BU0s7CisJCXZhbCB8PSBkZWVtcGhfcmVnX3ZhbHVlIDw8IERQSU9fU1dJTkdfREVF TVBIOVA1X1NISUZUOworCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RX NChjaCwgaSksIHZhbCk7CisJfQorCisJLyogUHJvZ3JhbSBzd2luZyBtYXJnaW4gKi8KKwlmb3Ig KGkgPSAwOyBpIDwgaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKKwkJdmFs ID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMihjaCwgaSkpOworCisJ CXZhbCAmPSB+RFBJT19TV0lOR19NQVJHSU4wMDBfTUFTSzsKKwkJdmFsIHw9IG1hcmdpbl9yZWdf dmFsdWUgPDwgRFBJT19TV0lOR19NQVJHSU4wMDBfU0hJRlQ7CisKKwkJLyoKKwkJICogU3VwcG9z ZWRseSB0aGlzIHZhbHVlIHNob3VsZG4ndCBtYXR0ZXIgd2hlbiB1bmlxdWUgdHJhbnNpdGlvbgor CQkgKiBzY2FsZSBpcyBkaXNhYmxlZCwgYnV0IGluIGZhY3QgaXQgZG9lcyBtYXR0ZXIuIExldCdz IGp1c3QKKwkJICogYWx3YXlzIHByb2dyYW0gdGhlIHNhbWUgdmFsdWUgYW5kIGhvcGUgaXQncyBP Sy4KKwkJICovCisJCXZhbCAmPSB+KDB4ZmYgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZU KTsKKwkJdmFsIHw9IDB4OWEgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUOworCisJCXZs dl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFcyKGNoLCBpKSwgdmFsKTsKKwl9 CisKKwkvKgorCSAqIFRoZSBkb2N1bWVudCBzYWlkIGl0IG5lZWRzIHRvIHNldCBiaXQgMjcgZm9y IGNoMCBhbmQgYml0IDI2CisJICogZm9yIGNoMS4gTWlnaHQgYmUgYSB0eXBvIGluIHRoZSBkb2Mu CisJICogRm9yIG5vdywgZm9yIHRoaXMgdW5pcXVlIHRyYW5zaXRpb24gc2NhbGUgc2VsZWN0aW9u LCBzZXQgYml0CisJICogMjcgZm9yIGNoMCBhbmQgY2gxLgorCSAqLworCWZvciAoaSA9IDA7IGkg PCBpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQ7IGkrKykgeworCQl2YWwgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFczKGNoLCBpKSk7CisJCWlmICh1bmlxX3Ry YW5zX3NjYWxlKQorCQkJdmFsIHw9IERQSU9fVFhfVU5JUV9UUkFOU19TQ0FMRV9FTjsKKwkJZWxz ZQorCQkJdmFsICY9IH5EUElPX1RYX1VOSVFfVFJBTlNfU0NBTEVfRU47CisJCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFczKGNoLCBpKSwgdmFsKTsKKwl9CisKKwkvKiBT dGFydCBzd2luZyBjYWxjdWxhdGlvbiAqLworCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSk7CisJdmFsIHw9IERQSU9fUENTX1NXSU5HX0NBTENf VFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMzsKKwl2bHZfZHBpb193cml0ZShk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpLCB2YWwpOworCisJaWYgKGludGVsX2Ny dGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZf cHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTAoY2gpKTsKKwkJdmFsIHw9IERQSU9fUENTX1NXSU5H X0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMzsKKwkJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKKwl9CisKKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKKworfQorCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMKaW5kZXggNzE4ZWJhMi4uNDk0ZTAyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk bWkuYwpAQCAtMTkyMSw3NyArMTkyMSwxMSBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCS8qIERlYXNzZXJ0IGRhdGEgbGFu ZSByZXNldCAqLwogCWNodl9kYXRhX2xhbmVfc29mdF9yZXNldChlbmNvZGVyLCBmYWxzZSk7CiAK LQkvKiBDbGVhciBjYWxjIGluaXQgKi8KLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBw aXBlLCBWTFZfUENTMDFfRFcxMChjaCkpOwotCXZhbCAmPSB+KERQSU9fUENTX1NXSU5HX0NBTENf VFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMyk7Ci0JdmFsICY9IH4oRFBJT19Q Q1NfVFgxREVFTVBfTUFTSyB8IERQSU9fUENTX1RYMkRFRU1QX01BU0spOwotCXZhbCB8PSBEUElP X1BDU19UWDFERUVNUF85UDUgfCBEUElPX1BDU19UWDJERUVNUF85UDU7Ci0Jdmx2X2RwaW9fd3Jp dGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSwgdmFsKTsKLQotCXZhbCA9IHZs dl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSk7Ci0JdmFsICY9 IH4oRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFf VFgzKTsKLQl2YWwgJj0gfihEUElPX1BDU19UWDFERUVNUF9NQVNLIHwgRFBJT19QQ1NfVFgyREVF TVBfTUFTSyk7Ci0JdmFsIHw9IERQSU9fUENTX1RYMURFRU1QXzlQNSB8IERQSU9fUENTX1RYMkRF RU1QXzlQNTsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTAo Y2gpLCB2YWwpOwotCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzAxX0RXOShjaCkpOwotCXZhbCAmPSB+KERQSU9fUENTX1RYMU1BUkdJTl9NQVNLIHwgRFBJT19Q Q1NfVFgyTUFSR0lOX01BU0spOwotCXZhbCB8PSBEUElPX1BDU19UWDFNQVJHSU5fMDAwIHwgRFBJ T19QQ1NfVFgyTUFSR0lOXzAwMDsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BDUzAxX0RXOShjaCksIHZhbCk7Ci0KLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBw aXBlLCBWTFZfUENTMjNfRFc5KGNoKSk7Ci0JdmFsICY9IH4oRFBJT19QQ1NfVFgxTUFSR0lOX01B U0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7Ci0JdmFsIHw9IERQSU9fUENTX1RYMU1BUkdJ Tl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOwotCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSwgdmFsKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5zYl9sb2NrKTsKIAogCS8qIEZJWE1FOiBQcm9ncmFtIHRoZSBzdXBwb3J0IHh4eCBWLWRCICov CiAJLyogVXNlIDgwMG1WLTBkQiAqLwotCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKLQkJdmFs ID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSkpOwotCQl2 YWwgJj0gfkRQSU9fU1dJTkdfREVFTVBIOVA1X01BU0s7Ci0JCXZhbCB8PSAxMjggPDwgRFBJT19T V0lOR19ERUVNUEg5UDVfU0hJRlQ7Ci0JCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBD SFZfVFhfRFc0KGNoLCBpKSwgdmFsKTsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7 Ci0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzIoY2gsIGkp KTsKLQotCQl2YWwgJj0gfkRQSU9fU1dJTkdfTUFSR0lOMDAwX01BU0s7Ci0JCXZhbCB8PSAxMDIg PDwgRFBJT19TV0lOR19NQVJHSU4wMDBfU0hJRlQ7Ci0KLQkJLyoKLQkJICogU3VwcG9zZWRseSB0 aGlzIHZhbHVlIHNob3VsZG4ndCBtYXR0ZXIgd2hlbiB1bmlxdWUgdHJhbnNpdGlvbgotCQkgKiBz Y2FsZSBpcyBkaXNhYmxlZCwgYnV0IGluIGZhY3QgaXQgZG9lcyBtYXR0ZXIuIExldCdzIGp1c3QK LQkJICogYWx3YXlzIHByb2dyYW0gdGhlIHNhbWUgdmFsdWUgYW5kIGhvcGUgaXQncyBPSy4KLQkJ ICovCi0JCXZhbCAmPSB+KDB4ZmYgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUKTsKLQkJ dmFsIHw9IDB4OWEgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUOwotCi0JCXZsdl9kcGlv X3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFcyKGNoLCBpKSwgdmFsKTsKLQl9Ci0KLQkv KgotCSAqIFRoZSBkb2N1bWVudCBzYWlkIGl0IG5lZWRzIHRvIHNldCBiaXQgMjcgZm9yIGNoMCBh bmQgYml0IDI2Ci0JICogZm9yIGNoMS4gTWlnaHQgYmUgYSB0eXBvIGluIHRoZSBkb2MuCi0JICog Rm9yIG5vdywgZm9yIHRoaXMgdW5pcXVlIHRyYW5zaXRpb24gc2NhbGUgc2VsZWN0aW9uLCBzZXQg Yml0Ci0JICogMjcgZm9yIGNoMCBhbmQgY2gxLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCA0OyBp KyspIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMyhj aCwgaSkpOwotCQl2YWwgJj0gfkRQSU9fVFhfVU5JUV9UUkFOU19TQ0FMRV9FTjsKLQkJdmx2X2Rw aW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzMoY2gsIGkpLCB2YWwpOwotCX0KLQot CS8qIFN0YXJ0IHN3aW5nIGNhbGN1bGF0aW9uICovCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZf cHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpKTsKLQl2YWwgfD0gRFBJT19QQ1NfU1dJTkdf Q0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzOwotCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCksIHZhbCk7Ci0KLQl2YWwgPSB2 bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwotCXZhbCB8 PSBEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9U WDM7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwg dmFsKTsKLQotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOworCWNodl9zZXRfcGh5 X3NpZ25hbF9sZXZlbChlbmNvZGVyLCAxMjgsIDEwMiwgZmFsc2UpOwogCiAJaW50ZWxfaGRtaS0+ c2V0X2luZm9mcmFtZXMoJmVuY29kZXItPmJhc2UsCiAJCQkJICAgaW50ZWxfY3J0Yy0+Y29uZmln LT5oYXNfaGRtaV9zaW5rLAotLSAKMi40LjExCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK