From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH 4/6] drm/i915/gen9: Make skl_wm_level per-plane Date: Wed, 5 Oct 2016 11:33:14 -0400 Message-ID: <1475681598-12081-5-git-send-email-cpaul@redhat.com> References: <1475681598-12081-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1475681598-12081-1-git-send-email-cpaul@redhat.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: David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org SGF2aW5nIHNrbF93bV9sZXZlbCBjb250YWluIGFsbCBvZiB0aGUgd2F0ZXJtYXJrcyBmb3IgZWFj aCBwbGFuZSBpcwphbm5veWluZyBzaW5jZSBpdCBwcmV2ZW50cyB1cyBmcm9tIGhhdmluZyBhbnkg c29ydCBvZiBvYmplY3QgdG8KcmVwcmVzZW50IGEgc2luZ2xlIHdhdGVybWFyayBsZXZlbCwgc29t ZXRoaW5nIHdlIHRha2UgYWR2YW50YWdlIG9mIGluCnRoZSBuZXh0IGNvbW1pdCB0byBjdXQgZG93 biBvbiBhbGwgb2YgdGhlIGNvcHkgcGFzdGUgY29kZSBpbiBoZXJlLgoKU2lnbmVkLW9mZi1ieTog THl1ZGUgPGNwYXVsQHJlZGhhdC5jb20+CkNjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAgIDYgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jICB8IDIwOCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkMjZlNTk5OS4uMGY5N2Q0MyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xNjQ4LDkgKzE2NDgsOSBAQCBzdHJ1Y3Qgc2tsX3dtX3Zh bHVlcyB7CiB9OwogCiBzdHJ1Y3Qgc2tsX3dtX2xldmVsIHsKLQlib29sIHBsYW5lX2VuW0k5MTVf TUFYX1BMQU5FU107Ci0JdWludDE2X3QgcGxhbmVfcmVzX2JbSTkxNV9NQVhfUExBTkVTXTsKLQl1 aW50OF90IHBsYW5lX3Jlc19sW0k5MTVfTUFYX1BMQU5FU107CisJYm9vbCBwbGFuZV9lbjsKKwl1 aW50MTZfdCBwbGFuZV9yZXNfYjsKKwl1aW50OF90IHBsYW5lX3Jlc19sOwogfTsKIAogLyoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMzViYTI4Mi4uZDY4NGY0ZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKQEAgLTQ2OCw5ICs0NjgsMTMgQEAgc3RydWN0IGludGVsX3BpcGVfd20g ewogCWJvb2wgc3ByaXRlc19zY2FsZWQ7CiB9OwogCi1zdHJ1Y3Qgc2tsX3BpcGVfd20geworc3Ry dWN0IHNrbF9wbGFuZV93bSB7CiAJc3RydWN0IHNrbF93bV9sZXZlbCB3bVs4XTsKIAlzdHJ1Y3Qg c2tsX3dtX2xldmVsIHRyYW5zX3dtOworfTsKKworc3RydWN0IHNrbF9waXBlX3dtIHsKKwlzdHJ1 Y3Qgc2tsX3BsYW5lX3dtIHBsYW5lc1tJOTE1X01BWF9QTEFORVNdOwogCXVpbnQzMl90IGxpbmV0 aW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggYWY5Njg4OC4uMjUwZjEyZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0zNjY4LDY3ICszNjY4LDUyIEBAIHN0YXRpYyBp bnQKIHNrbF9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCiAJCSAgICAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfcGxh bmUgKmludGVsX3BsYW5lLAogCQkgICAgIGludCBsZXZlbCwKIAkJICAgICBzdHJ1Y3Qgc2tsX3dt X2xldmVsICpyZXN1bHQpCiB7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0 YXRlLT5iYXNlLnN0YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0J c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKmludGVsX3BzdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9wbGFu ZS0+YmFzZTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9IE5VTEw7 CiAJdWludDE2X3QgZGRiX2Jsb2NrczsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7CiAJaW50IHJldDsKKwlpbnQgaSA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7CisK KwlpZiAoc3RhdGUpCisJCWludGVsX3BzdGF0ZSA9CisJCQlpbnRlbF9hdG9taWNfZ2V0X2V4aXN0 aW5nX3BsYW5lX3N0YXRlKHN0YXRlLAorCQkJCQkJCSAgICAgIGludGVsX3BsYW5lKTsKIAogCS8q Ci0JICogV2UnbGwgb25seSBjYWxjdWxhdGUgd2F0ZXJtYXJrcyBmb3IgcGxhbmVzIHRoYXQgYXJl IGFjdHVhbGx5Ci0JICogZW5hYmxlZCwgc28gbWFrZSBzdXJlIGFsbCBvdGhlciBwbGFuZXMgYXJl IHNldCBhcyBkaXNhYmxlZC4KKwkgKiBOb3RlOiBJZiB3ZSBzdGFydCBzdXBwb3J0aW5nIG11bHRp cGxlIHBlbmRpbmcgYXRvbWljIGNvbW1pdHMgYWdhaW5zdAorCSAqIHRoZSBzYW1lIHBsYW5lcy9D UlRDJ3MgaW4gdGhlIGZ1dHVyZSwgcGxhbmUtPnN0YXRlIHdpbGwgbm8gbG9uZ2VyIGJlCisJICog dGhlIGNvcnJlY3QgcHJlLXN0YXRlIHRvIHVzZSBmb3IgdGhlIGNhbGN1bGF0aW9ucyBoZXJlIGFu ZCB3ZSdsbAorCSAqIG5lZWQgdG8gY2hhbmdlIHdoZXJlIHdlIGdldCB0aGUgJ3VuY2hhbmdlZCcg cGxhbmUgZGF0YSBmcm9tLgorCSAqCisJICogRm9yIG5vdyB0aGlzIGlzIGZpbmUgYmVjYXVzZSB3 ZSBvbmx5IGFsbG93IG9uZSBxdWV1ZWQgY29tbWl0IGFnYWluc3QKKwkgKiBhIENSVEMuICBFdmVu IGlmIHRoZSBwbGFuZSBpc24ndCBtb2RpZmllZCBieSB0aGlzIHRyYW5zYWN0aW9uIGFuZCB3ZQor CSAqIGRvbid0IGhhdmUgYSBwbGFuZSBsb2NrLCB3ZSBzdGlsbCBoYXZlIHRoZSBDUlRDJ3MgbG9j aywgc28gd2Uga25vdworCSAqIHRoYXQgbm8gb3RoZXIgdHJhbnNhY3Rpb25zIGFyZSByYWNpbmcg d2l0aCB1cyB0byB1cGRhdGUgaXQuCiAJICovCi0JbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZW9mKCpy ZXN1bHQpKTsKLQotCWZvcl9lYWNoX2ludGVsX3BsYW5lX21hc2soJmRldl9wcml2LT5kcm0sCi0J CQkJICBpbnRlbF9wbGFuZSwKLQkJCQkgIGNzdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7Ci0JCWlu dCBpID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKLQotCQlwbGFuZSA9ICZpbnRlbF9w bGFuZS0+YmFzZTsKLQkJaW50ZWxfcHN0YXRlID0gTlVMTDsKLQkJaWYgKHN0YXRlKQotCQkJaW50 ZWxfcHN0YXRlID0KLQkJCQlpbnRlbF9hdG9taWNfZ2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKHN0 YXRlLAotCQkJCQkJCQkgICAgICBpbnRlbF9wbGFuZSk7CisJaWYgKCFpbnRlbF9wc3RhdGUpCisJ CWludGVsX3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7CiAKLQkJ LyoKLQkJICogTm90ZTogSWYgd2Ugc3RhcnQgc3VwcG9ydGluZyBtdWx0aXBsZSBwZW5kaW5nIGF0 b21pYyBjb21taXRzCi0JCSAqIGFnYWluc3QgdGhlIHNhbWUgcGxhbmVzL0NSVEMncyBpbiB0aGUg ZnV0dXJlLCBwbGFuZS0+c3RhdGUKLQkJICogd2lsbCBubyBsb25nZXIgYmUgdGhlIGNvcnJlY3Qg cHJlLXN0YXRlIHRvIHVzZSBmb3IgdGhlCi0JCSAqIGNhbGN1bGF0aW9ucyBoZXJlIGFuZCB3ZSds bCBuZWVkIHRvIGNoYW5nZSB3aGVyZSB3ZSBnZXQgdGhlCi0JCSAqICd1bmNoYW5nZWQnIHBsYW5l IGRhdGEgZnJvbS4KLQkJICoKLQkJICogRm9yIG5vdyB0aGlzIGlzIGZpbmUgYmVjYXVzZSB3ZSBv bmx5IGFsbG93IG9uZSBxdWV1ZWQgY29tbWl0Ci0JCSAqIGFnYWluc3QgYSBDUlRDLiAgRXZlbiBp ZiB0aGUgcGxhbmUgaXNuJ3QgbW9kaWZpZWQgYnkgdGhpcwotCQkgKiB0cmFuc2FjdGlvbiBhbmQg d2UgZG9uJ3QgaGF2ZSBhIHBsYW5lIGxvY2ssIHdlIHN0aWxsIGhhdmUKLQkJICogdGhlIENSVEMn cyBsb2NrLCBzbyB3ZSBrbm93IHRoYXQgbm8gb3RoZXIgdHJhbnNhY3Rpb25zIGFyZQotCQkgKiBy YWNpbmcgd2l0aCB1cyB0byB1cGRhdGUgaXQuCi0JCSAqLwotCQlpZiAoIWludGVsX3BzdGF0ZSkK LQkJCWludGVsX3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7CisJ V0FSTl9PTighaW50ZWxfcHN0YXRlLT5iYXNlLmZiKTsKIAotCQlXQVJOX09OKCFpbnRlbF9wc3Rh dGUtPmJhc2UuZmIpOworCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+cGxh bmVbcGlwZV1baV0pOwogCi0JCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+ cGxhbmVbcGlwZV1baV0pOwotCi0JCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRldl9wcml2 LAotCQkJCQkgICBjc3RhdGUsCi0JCQkJCSAgIGludGVsX3BzdGF0ZSwKLQkJCQkJICAgZGRiX2Js b2NrcywKLQkJCQkJICAgbGV2ZWwsCi0JCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19iW2ldLAot CQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbFtpXSwKLQkJCQkJICAgJnJlc3VsdC0+cGxhbmVf ZW5baV0pOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9CisJcmV0ID0gc2tsX2NvbXB1 dGVfcGxhbmVfd20oZGV2X3ByaXYsCisJCQkJICAgY3N0YXRlLAorCQkJCSAgIGludGVsX3BzdGF0 ZSwKKwkJCQkgICBkZGJfYmxvY2tzLAorCQkJCSAgIGxldmVsLAorCQkJCSAgICZyZXN1bHQtPnBs YW5lX3Jlc19iLAorCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19sLAorCQkJCSAgICZyZXN1bHQt PnBsYW5lX2VuKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJcmV0dXJuIDA7CiB9CkBA IC0zNzQ5LDE5ICszNzM0LDExIEBAIHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUpCiBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0aW9u X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCQkJICAgICAgc3RydWN0IHNr bF93bV9sZXZlbCAqdHJhbnNfd20gLyogb3V0ICovKQogewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwot CiAJaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKQogCQlyZXR1cm47CiAKIAkvKiBVbnRpbCB3ZSBr bm93IG1vcmUsIGp1c3QgZGlzYWJsZSB0cmFuc2l0aW9uIFdNcyAqLwotCWZvcl9lYWNoX2ludGVs X3BsYW5lX29uX2NydGMoY3J0Yy0+ZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewotCQlp bnQgaSA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7Ci0KLQkJdHJhbnNfd20tPnBsYW5l X2VuW2ldID0gZmFsc2U7Ci0JfQorCXRyYW5zX3dtLT5wbGFuZV9lbiA9IGZhbHNlOwogfQogCiBz dGF0aWMgaW50IHNrbF9idWlsZF9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUsCkBAIC0zNzcwLDE5ICszNzQ3LDMzIEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20o c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3N0YXRlLT5iYXNlLmNydGMtPmRldjsKIAljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX3BsYW5lICppbnRl bF9wbGFuZTsKKwlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bTsKIAlpbnQgbGV2ZWwsIG1heF9sZXZl bCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKIAlpbnQgcmV0OwogCi0JZm9yIChsZXZlbCA9IDA7 IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewotCQlyZXQgPSBza2xfY29tcHV0ZV93bV9s ZXZlbChkZXZfcHJpdiwgZGRiLCBjc3RhdGUsCi0JCQkJCSAgIGxldmVsLCAmcGlwZV93bS0+d21b bGV2ZWxdKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CisJLyoKKwkgKiBXZSdsbCBvbmx5 IGNhbGN1bGF0ZSB3YXRlcm1hcmtzIGZvciBwbGFuZXMgdGhhdCBhcmUgYWN0dWFsbHkKKwkgKiBl bmFibGVkLCBzbyBtYWtlIHN1cmUgYWxsIG90aGVyIHBsYW5lcyBhcmUgc2V0IGFzIGRpc2FibGVk LgorCSAqLworCW1lbXNldChwaXBlX3dtLT5wbGFuZXMsIDAsIHNpemVvZihwaXBlX3dtLT5wbGFu ZXMpKTsKKworCWZvcl9lYWNoX2ludGVsX3BsYW5lX21hc2soJmRldl9wcml2LT5kcm0sCisJCQkJ ICBpbnRlbF9wbGFuZSwKKwkJCQkgIGNzdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7CisJCXdtID0g JnBpcGVfd20tPnBsYW5lc1tza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpXTsKKworCQlmb3Ig KGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CisJCQlyZXQgPSBza2xf Y29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgZGRiLCBjc3RhdGUsCisJCQkJCQkgICBpbnRlbF9w bGFuZSwgbGV2ZWwsCisJCQkJCQkgICAmd20tPndtW2xldmVsXSk7CisJCQlpZiAocmV0KQorCQkJ CXJldHVybiByZXQ7CisJCX0KKwkJc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZ3 bS0+dHJhbnNfd20pOwogCX0KIAlwaXBlX3dtLT5saW5ldGltZSA9IHNrbF9jb21wdXRlX2xpbmV0 aW1lX3dtKGNzdGF0ZSk7CiAKLQlza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNzdGF0ZSwgJnBp cGVfd20tPnRyYW5zX3dtKTsKLQogCXJldHVybiAwOwogfQogCkBAIC0zNzkyLDUwICszNzgzLDU2 IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIHsKIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKKwlzdHJ1Y3Qgc2tsX3BsYW5l X3dtICpwbGFuZV93bTsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJdWlu dDMyX3QgdGVtcDsKIAlpbnQgaTsKIAotCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKLQkJZm9yIChpID0gMDsgaSA8IGludGVsX251bV9wbGFuZXMoaW50ZWxf Y3J0Yyk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2Ny dGMpOyBpKyspIHsKKwkJcGxhbmVfd20gPSAmcF93bS0+cGxhbmVzW2ldOworCisJCWZvciAobGV2 ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKIAkJCXRlbXAgPSAwOwogCi0J CQl0ZW1wIHw9IHBfd20tPndtW2xldmVsXS5wbGFuZV9yZXNfbFtpXSA8PAorCQkJdGVtcCB8PSBw bGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sIDw8CiAJCQkJCVBMQU5FX1dNX0xJTkVTX1NI SUZUOwotCQkJdGVtcCB8PSBwX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2JbaV07Ci0JCQlpZiAo cF93bS0+d21bbGV2ZWxdLnBsYW5lX2VuW2ldKQorCQkJdGVtcCB8PSBwbGFuZV93bS0+d21bbGV2 ZWxdLnBsYW5lX3Jlc19iOworCQkJaWYgKHBsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfZW4pCiAJ CQkJdGVtcCB8PSBQTEFORV9XTV9FTjsKIAogCQkJci0+cGxhbmVbcGlwZV1baV1bbGV2ZWxdID0g dGVtcDsKIAkJfQogCi0JCXRlbXAgPSAwOwotCi0JCXRlbXAgfD0gcF93bS0+d21bbGV2ZWxdLnBs YW5lX3Jlc19sW1BMQU5FX0NVUlNPUl0gPDwgUExBTkVfV01fTElORVNfU0hJRlQ7Ci0JCXRlbXAg fD0gcF93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19iW1BMQU5FX0NVUlNPUl07CisJfQogCi0JCWlm IChwX3dtLT53bVtsZXZlbF0ucGxhbmVfZW5bUExBTkVfQ1VSU09SXSkKKwlmb3IgKGxldmVsID0g MDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CisJCXBsYW5lX3dtID0gJnBfd20tPnBs YW5lc1tQTEFORV9DVVJTT1JdOworCQl0ZW1wID0gMDsKKwkJdGVtcCB8PSBwbGFuZV93bS0+d21b bGV2ZWxdLnBsYW5lX3Jlc19sIDw8IFBMQU5FX1dNX0xJTkVTX1NISUZUOworCQl0ZW1wIHw9IHBs YW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2I7CisJCWlmIChwbGFuZV93bS0+d21bbGV2ZWxd LnBsYW5lX2VuKQogCQkJdGVtcCB8PSBQTEFORV9XTV9FTjsKIAogCQlyLT5wbGFuZVtwaXBlXVtQ TEFORV9DVVJTT1JdW2xldmVsXSA9IHRlbXA7Ci0KIAl9CiAKIAkvKiB0cmFuc2l0aW9uIFdNcyAq LwogCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBpKyspIHsK KwkJcGxhbmVfd20gPSAmcF93bS0+cGxhbmVzW2ldOwogCQl0ZW1wID0gMDsKLQkJdGVtcCB8PSBw X3dtLT50cmFuc193bS5wbGFuZV9yZXNfbFtpXSA8PCBQTEFORV9XTV9MSU5FU19TSElGVDsKLQkJ dGVtcCB8PSBwX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYltpXTsKLQkJaWYgKHBfd20tPnRyYW5z X3dtLnBsYW5lX2VuW2ldKQorCQl0ZW1wIHw9IHBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNf bCA8PCBQTEFORV9XTV9MSU5FU19TSElGVDsKKwkJdGVtcCB8PSBwbGFuZV93bS0+dHJhbnNfd20u cGxhbmVfcmVzX2I7CisJCWlmIChwbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4pCiAJCQl0ZW1w IHw9IFBMQU5FX1dNX0VOOwogCiAJCXItPnBsYW5lX3RyYW5zW3BpcGVdW2ldID0gdGVtcDsKIAl9 CiAKKwlwbGFuZV93bSA9ICZwX3dtLT5wbGFuZXNbUExBTkVfQ1VSU09SXTsKIAl0ZW1wID0gMDsK LQl0ZW1wIHw9IHBfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sW1BMQU5FX0NVUlNPUl0gPDwgUExB TkVfV01fTElORVNfU0hJRlQ7Ci0JdGVtcCB8PSBwX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYltQ TEFORV9DVVJTT1JdOwotCWlmIChwX3dtLT50cmFuc193bS5wbGFuZV9lbltQTEFORV9DVVJTT1Jd KQorCXRlbXAgfD0gcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sIDw8IFBMQU5FX1dNX0xJ TkVTX1NISUZUOworCXRlbXAgfD0gcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19iOworCWlm IChwbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4pCiAJCXRlbXAgfD0gUExBTkVfV01fRU47CiAK IAlyLT5wbGFuZV90cmFuc1twaXBlXVtQTEFORV9DVVJTT1JdID0gdGVtcDsKQEAgLTQyNjIsNDQg KzQyNTksMjQgQEAgc3RhdGljIHZvaWQgaWxrX29wdGltaXplX3dhdGVybWFya3Moc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dtX2FjdGl2ZV9z dGF0ZSh1aW50MzJfdCB2YWwsCiAJCQkJICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKmFjdGl2ZSwK IAkJCQkgICAgIGJvb2wgaXNfdHJhbnN3bSwKLQkJCQkgICAgIGJvb2wgaXNfY3Vyc29yLAogCQkJ CSAgICAgaW50IGksCiAJCQkJICAgICBpbnQgbGV2ZWwpCiB7CisJc3RydWN0IHNrbF9wbGFuZV93 bSAqcGxhbmVfd20gPSAmYWN0aXZlLT5wbGFuZXNbaV07CiAJYm9vbCBpc19lbmFibGVkID0gKHZh bCAmIFBMQU5FX1dNX0VOKSAhPSAwOwogCiAJaWYgKCFpc190cmFuc3dtKSB7Ci0JCWlmICghaXNf Y3Vyc29yKSB7Ci0JCQlhY3RpdmUtPndtW2xldmVsXS5wbGFuZV9lbltpXSA9IGlzX2VuYWJsZWQ7 Ci0JCQlhY3RpdmUtPndtW2xldmVsXS5wbGFuZV9yZXNfYltpXSA9Ci0JCQkJCXZhbCAmIFBMQU5F X1dNX0JMT0NLU19NQVNLOwotCQkJYWN0aXZlLT53bVtsZXZlbF0ucGxhbmVfcmVzX2xbaV0gPQot CQkJCQkodmFsID4+IFBMQU5FX1dNX0xJTkVTX1NISUZUKSAmCi0JCQkJCQlQTEFORV9XTV9MSU5F U19NQVNLOwotCQl9IGVsc2UgewotCQkJYWN0aXZlLT53bVtsZXZlbF0ucGxhbmVfZW5bUExBTkVf Q1VSU09SXSA9IGlzX2VuYWJsZWQ7Ci0JCQlhY3RpdmUtPndtW2xldmVsXS5wbGFuZV9yZXNfYltQ TEFORV9DVVJTT1JdID0KLQkJCQkJdmFsICYgUExBTkVfV01fQkxPQ0tTX01BU0s7Ci0JCQlhY3Rp dmUtPndtW2xldmVsXS5wbGFuZV9yZXNfbFtQTEFORV9DVVJTT1JdID0KLQkJCQkJKHZhbCA+PiBQ TEFORV9XTV9MSU5FU19TSElGVCkgJgotCQkJCQkJUExBTkVfV01fTElORVNfTUFTSzsKLQkJfQor CQlwbGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX2VuID0gaXNfZW5hYmxlZDsKKwkJcGxhbmVfd20t PndtW2xldmVsXS5wbGFuZV9yZXNfYiA9IHZhbCAmIFBMQU5FX1dNX0JMT0NLU19NQVNLOworCQlw bGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sID0KKwkJCSh2YWwgPj4gUExBTkVfV01fTElO RVNfU0hJRlQpICYKKwkJCVBMQU5FX1dNX0xJTkVTX01BU0s7CiAJfSBlbHNlIHsKLQkJaWYgKCFp c19jdXJzb3IpIHsKLQkJCWFjdGl2ZS0+dHJhbnNfd20ucGxhbmVfZW5baV0gPSBpc19lbmFibGVk OwotCQkJYWN0aXZlLT50cmFuc193bS5wbGFuZV9yZXNfYltpXSA9Ci0JCQkJCXZhbCAmIFBMQU5F X1dNX0JMT0NLU19NQVNLOwotCQkJYWN0aXZlLT50cmFuc193bS5wbGFuZV9yZXNfbFtpXSA9Ci0J CQkJCSh2YWwgPj4gUExBTkVfV01fTElORVNfU0hJRlQpICYKLQkJCQkJCVBMQU5FX1dNX0xJTkVT X01BU0s7Ci0JCX0gZWxzZSB7Ci0JCQlhY3RpdmUtPnRyYW5zX3dtLnBsYW5lX2VuW1BMQU5FX0NV UlNPUl0gPSBpc19lbmFibGVkOwotCQkJYWN0aXZlLT50cmFuc193bS5wbGFuZV9yZXNfYltQTEFO RV9DVVJTT1JdID0KLQkJCQkJdmFsICYgUExBTkVfV01fQkxPQ0tTX01BU0s7Ci0JCQlhY3RpdmUt PnRyYW5zX3dtLnBsYW5lX3Jlc19sW1BMQU5FX0NVUlNPUl0gPQotCQkJCQkodmFsID4+IFBMQU5F X1dNX0xJTkVTX1NISUZUKSAmCi0JCQkJCQlQTEFORV9XTV9MSU5FU19NQVNLOwotCQl9CisJCXBs YW5lX3dtLT50cmFuc193bS5wbGFuZV9lbiA9IGlzX2VuYWJsZWQ7CisJCXBsYW5lX3dtLT50cmFu c193bS5wbGFuZV9yZXNfYiA9IHZhbCAmIFBMQU5FX1dNX0JMT0NLU19NQVNLOworCQlwbGFuZV93 bS0+dHJhbnNfd20ucGxhbmVfcmVzX2wgPQorCQkJKHZhbCA+PiBQTEFORV9XTV9MSU5FU19TSElG VCkgJgorCQkJUExBTkVfV01fTElORVNfTUFTSzsKIAl9CiB9CiAKQEAgLTQzMzgsMjAgKzQzMTUs MTkgQEAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7 CiAJCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBpKyspIHsK IAkJCXRlbXAgPSBody0+cGxhbmVbcGlwZV1baV1bbGV2ZWxdOwotCQkJc2tsX3BpcGVfd21fYWN0 aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgZmFsc2UsCi0JCQkJCQlmYWxzZSwgaSwgbGV2ZWwpOwor CQkJc2tsX3BpcGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgZmFsc2UsIGksIGxldmVs KTsKIAkJfQogCQl0ZW1wID0gaHctPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl1bbGV2ZWxdOwot CQlza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodGVtcCwgYWN0aXZlLCBmYWxzZSwgdHJ1ZSwgaSwg bGV2ZWwpOworCQlza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodGVtcCwgYWN0aXZlLCBmYWxzZSwg aSwgbGV2ZWwpOwogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVs X2NydGMpOyBpKyspIHsKIAkJdGVtcCA9IGh3LT5wbGFuZV90cmFuc1twaXBlXVtpXTsKLQkJc2ts X3BpcGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgdHJ1ZSwgZmFsc2UsIGksIDApOwor CQlza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodGVtcCwgYWN0aXZlLCB0cnVlLCBpLCAwKTsKIAl9 CiAKIAl0ZW1wID0gaHctPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNPUl07Ci0Jc2tsX3Bp cGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgdHJ1ZSwgdHJ1ZSwgaSwgMCk7CisJc2ts X3BpcGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgdHJ1ZSwgaSwgMCk7CiAKIAlpbnRl bF9jcnRjLT53bS5hY3RpdmUuc2tsID0gKmFjdGl2ZTsKIH0KLS0gCjIuNy40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK