From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v2 01/16] drm/i915: Add intel_pipe_wm and prepare for watermark pre-compute Date: Wed, 9 Oct 2013 19:17:55 +0300 Message-ID: <1381335490-4906-2-git-send-email-ville.syrjala@linux.intel.com> References: <1381335490-4906-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by gabe.freedesktop.org (Postfix) with ESMTP id 03651E8136 for ; Wed, 9 Oct 2013 09:18:33 -0700 (PDT) In-Reply-To: <1381335490-4906-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklu dHJvZHVjZSBhIG5ldyBzdHJ1Y3QgaW50ZWxfcGlwZV93bSB3aGljaCBjb250YWlucyBhbGwgdGhl CndhdGVybWFya3MgZm9yIGEgc2luZ2xlIHBpcGUuIFVzZSBpdCB0byB1bmlmeSB0aGUgTFAwIGFu ZCBMUDErCndhdGVybWFyayBjb21wdXRhdGlvbnMgc28gdGhhdCB3ZSBjYW4ganVzdCBpdGVyYXRl IHRocm91Z2ggdGhlCndhdGVybWFyayBsZXZlbHMgbmVhdGx5IGFuZCBjYWxsIGlsa19jb21wdXRl X3dtX2xldmVsKCkgZm9yIGVhY2guCgpBbHNvIGFkZCBhbm90aGVyIHRvb2wgaWxrX3dtX21lcmdl KCkgdGhhdCBtZXJnZXMgdGhlIExQMSsgd2F0ZXJtYXJrcwpmcm9tIGFsbCBwaXBlcy4gRm9yIHRo YXQsIGVtYmVkIG9uZSBpbnRlbF9waXBlX3dtIGluc2lkZSBpbnRlbF9jcnRjIHRoYXQKY29udGFp bnMgdGhlIGN1cnJlbnRseSB2YWxpZCB3YXRlcm1hcmtzIGZvciBlYWNoIHBpcGUuCgpUaGlzIGlz IG1haW5seSBwcmVwYXJhdG9yeSB3b3JrIGZvciBwcmUtY29tcHV0aW5nIHRoZSB3YXRlcm1hcmtz IGZvcgplYWNoIHBpcGUgYW5kIG1lcmdpbmcgdGhlbSBhdCBhIGxhdGVyIHRpbWUuIEZvciBub3cg dGhlIG1lcmdpbmcgc3RpbGwKaGFwcGVucyBpbW1lZGlhdGVseS4KCnYyOiBBZGQgc29tZSBjb21t ZW50cyBhYm91dCBsZXZlbCAwIEREQiBzcGxpdCBhbmQgaW50ZWxfd21fY29uZmlnCiAgICBBZGQg V0FSTl9PTiBmb3IgbGV2ZWwgMCBiZWluZyBkaXNhYmxlZAogICAgcy9scF93bS9tZXJnZWQKClNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgMTIgKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICB8IDE5MiArKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDc2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNzFjZmFiZC4uMzMy NWIwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTMwOSw2ICszMDksMTIgQEAgc3Ry dWN0IGludGVsX2NydGNfY29uZmlnIHsKIAlib29sIGRvdWJsZV93aWRlOwogfTsKIAorc3RydWN0 IGludGVsX3BpcGVfd20geworCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3bVs1XTsKKwl1aW50MzJf dCBsaW5ldGltZTsKKwlib29sIGZiY193bV9lbmFibGVkOworfTsKKwogc3RydWN0IGludGVsX2Ny dGMgewogCXN0cnVjdCBkcm1fY3J0YyBiYXNlOwogCWVudW0gcGlwZSBwaXBlOwpAQCAtMzQ5LDYg KzM1NSwxMiBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7CiAJLyogQWNjZXNzIHRvIHRoZXNlIHNob3Vs ZCBiZSBwcm90ZWN0ZWQgYnkgZGV2X3ByaXYtPmlycV9sb2NrLiAqLwogCWJvb2wgY3B1X2ZpZm9f dW5kZXJydW5fZGlzYWJsZWQ7CiAJYm9vbCBwY2hfZmlmb191bmRlcnJ1bl9kaXNhYmxlZDsKKwor CS8qIHBlci1waXBlIHdhdGVybWFyayBzdGF0ZSAqLworCXN0cnVjdCB7CisJCS8qIHdhdGVybWFy a3MgY3VycmVudGx5IGJlaW5nIHVzZWQgICovCisJCXN0cnVjdCBpbnRlbF9waXBlX3dtIGFjdGl2 ZTsKKwl9IHdtOwogfTsKIAogc3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNWU3NDNlYy4uMzBiMzgwYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCkBAIC0yNDU4LDUzICsyNDU4LDYgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVf d21fbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJlc3VsdC0+ZW5h YmxlID0gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaHN3X2NvbXB1dGVfbHBfd20oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICAgaW50IGxldmVsLCBjb25zdCBzdHJ1 Y3QgaHN3X3dtX21heGltdW1zICptYXgsCi0JCQkgICAgICBjb25zdCBzdHJ1Y3QgaHN3X3BpcGVf d21fcGFyYW1ldGVycyAqcGFyYW1zLAotCQkJICAgICAgc3RydWN0IGludGVsX3dtX2xldmVsICpy ZXN1bHQpCi17Ci0JZW51bSBwaXBlIHBpcGU7Ci0Jc3RydWN0IGludGVsX3dtX2xldmVsIHJlc1sz XTsKLQotCWZvciAocGlwZSA9IFBJUEVfQTsgcGlwZSA8PSBQSVBFX0M7IHBpcGUrKykKLQkJaWxr X2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGxldmVsLCAmcGFyYW1zW3BpcGVdLCAmcmVzW3Bp cGVdKTsKLQotCXJlc3VsdC0+cHJpX3ZhbCA9IG1heDMocmVzWzBdLnByaV92YWwsIHJlc1sxXS5w cmlfdmFsLCByZXNbMl0ucHJpX3ZhbCk7Ci0JcmVzdWx0LT5zcHJfdmFsID0gbWF4MyhyZXNbMF0u c3ByX3ZhbCwgcmVzWzFdLnNwcl92YWwsIHJlc1syXS5zcHJfdmFsKTsKLQlyZXN1bHQtPmN1cl92 YWwgPSBtYXgzKHJlc1swXS5jdXJfdmFsLCByZXNbMV0uY3VyX3ZhbCwgcmVzWzJdLmN1cl92YWwp OwotCXJlc3VsdC0+ZmJjX3ZhbCA9IG1heDMocmVzWzBdLmZiY192YWwsIHJlc1sxXS5mYmNfdmFs LCByZXNbMl0uZmJjX3ZhbCk7Ci0JcmVzdWx0LT5lbmFibGUgPSB0cnVlOwotCi0JcmV0dXJuIGls a19jaGVja193bShsZXZlbCwgbWF4LCByZXN1bHQpOwotfQotCi0KLXN0YXRpYyB1aW50MzJfdCBo c3dfY29tcHV0ZV93bV9waXBlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJICAgIGNvbnN0 IHN0cnVjdCBoc3dfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMpCi17Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxf d21fY29uZmlnIGNvbmZpZyA9IHsKLQkJLm51bV9waXBlc19hY3RpdmUgPSAxLAotCQkuc3ByaXRl c19lbmFibGVkID0gcGFyYW1zLT5zcHIuZW5hYmxlZCwKLQkJLnNwcml0ZXNfc2NhbGVkID0gcGFy YW1zLT5zcHIuc2NhbGVkLAotCX07Ci0Jc3RydWN0IGhzd193bV9tYXhpbXVtcyBtYXg7Ci0Jc3Ry dWN0IGludGVsX3dtX2xldmVsIHJlczsKLQotCWlmICghcGFyYW1zLT5hY3RpdmUpCi0JCXJldHVy biAwOwotCi0JaWxrX3dtX21heChkZXYsIDAsICZjb25maWcsIElOVEVMX0REQl9QQVJUXzFfMiwg Jm1heCk7Ci0KLQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgMCwgcGFyYW1zLCAmcmVz KTsKLQotCWlsa19jaGVja193bSgwLCAmbWF4LCAmcmVzKTsKLQotCXJldHVybiAocmVzLnByaV92 YWwgPDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwKLQkgICAgICAgKHJlcy5zcHJfdmFsIDw8IFdN MF9QSVBFX1NQUklURV9TSElGVCkgfAotCSAgICAgICByZXMuY3VyX3ZhbDsKLX0KLQogc3RhdGlj IHVpbnQzMl90CiBoc3dfY29tcHV0ZV9saW5ldGltZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CkBAIC0yNjg3LDQ0ICsyNjQwLDEyMyBAQCBzdGF0 aWMgdm9pZCBoc3dfY29tcHV0ZV93bV9wYXJhbWV0ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCSpscF9tYXhfNV82ID0gKmxwX21heF8xXzI7CiB9CiAKKy8qIENvbXB1dGUgbmV3IHdhdGVy bWFya3MgZm9yIHRoZSBwaXBlICovCitzdGF0aWMgYm9vbCBpbnRlbF9jb21wdXRlX3BpcGVfd20o c3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSAgY29uc3Qgc3RydWN0IGhzd19waXBlX3dtX3Bh cmFtZXRlcnMgKnBhcmFtcywKKwkJCQkgIHN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQor eworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgbGV2ZWwsIG1heF9s ZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKKwkvKiBMUDAgd2F0ZXJtYXJrIG1heGltdW1z IGRlcGVuZCBvbiB0aGlzIHBpcGUgYWxvbmUgKi8KKwlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIGNv bmZpZyA9IHsKKwkJLm51bV9waXBlc19hY3RpdmUgPSAxLAorCQkuc3ByaXRlc19lbmFibGVkID0g cGFyYW1zLT5zcHIuZW5hYmxlZCwKKwkJLnNwcml0ZXNfc2NhbGVkID0gcGFyYW1zLT5zcHIuc2Nh bGVkLAorCX07CisJc3RydWN0IGhzd193bV9tYXhpbXVtcyBtYXg7CisKKwltZW1zZXQocGlwZV93 bSwgMCwgc2l6ZW9mKCpwaXBlX3dtKSk7CisKKwkvKiBMUDAgd2F0ZXJtYXJrcyBhbHdheXMgdXNl IDEvMiBEREIgcGFydGl0aW9uaW5nICovCisJaWxrX3dtX21heChkZXYsIDAsICZjb25maWcsIElO VEVMX0REQl9QQVJUXzFfMiwgJm1heCk7CisKKwlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4 X2xldmVsOyBsZXZlbCsrKQorCQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgbGV2ZWws IHBhcmFtcywKKwkJCQkgICAgICZwaXBlX3dtLT53bVtsZXZlbF0pOworCisJcGlwZV93bS0+bGlu ZXRpbWUgPSBoc3dfY29tcHV0ZV9saW5ldGltZV93bShkZXYsIGNydGMpOworCisJLyogQXQgbGVh c3QgTFAwIG11c3QgYmUgdmFsaWQgKi8KKwlyZXR1cm4gaWxrX2NoZWNrX3dtKDAsICZtYXgsICZw aXBlX3dtLT53bVswXSk7Cit9CisKKy8qCisgKiBNZXJnZSB0aGUgd2F0ZXJtYXJrcyBmcm9tIGFs bCBhY3RpdmUgcGlwZXMgZm9yIGEgc3BlY2lmaWMgbGV2ZWwuCisgKi8KK3N0YXRpYyB2b2lkIGls a19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICAgICAgIGludCBs ZXZlbCwKKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKnJldF93bSkKK3sKKwljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKworCWxpc3RfZm9yX2VhY2hfZW50cnko aW50ZWxfY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBiYXNlLmhlYWQpIHsKKwkJ Y29uc3Qgc3RydWN0IGludGVsX3dtX2xldmVsICp3bSA9CisJCQkmaW50ZWxfY3J0Yy0+d20uYWN0 aXZlLndtW2xldmVsXTsKKworCQlpZiAoIXdtLT5lbmFibGUpCisJCQlyZXR1cm47CisKKwkJcmV0 X3dtLT5wcmlfdmFsID0gbWF4KHJldF93bS0+cHJpX3ZhbCwgd20tPnByaV92YWwpOworCQlyZXRf d20tPnNwcl92YWwgPSBtYXgocmV0X3dtLT5zcHJfdmFsLCB3bS0+c3ByX3ZhbCk7CisJCXJldF93 bS0+Y3VyX3ZhbCA9IG1heChyZXRfd20tPmN1cl92YWwsIHdtLT5jdXJfdmFsKTsKKwkJcmV0X3dt LT5mYmNfdmFsID0gbWF4KHJldF93bS0+ZmJjX3ZhbCwgd20tPmZiY192YWwpOworCX0KKworCXJl dF93bS0+ZW5hYmxlID0gdHJ1ZTsKK30KKworLyoKKyAqIE1lcmdlIGFsbCBsb3cgcG93ZXIgd2F0 ZXJtYXJrcyBmb3IgYWxsIGFjdGl2ZSBwaXBlcy4KKyAqLworc3RhdGljIHZvaWQgaWxrX3dtX21l cmdlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkgY29uc3Qgc3RydWN0IGhzd193bV9tYXhp bXVtcyAqbWF4LAorCQkJIHN0cnVjdCBpbnRlbF9waXBlX3dtICptZXJnZWQpCit7CisJaW50IGxl dmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldik7CisKKwltZXJnZWQtPmZiY193 bV9lbmFibGVkID0gdHJ1ZTsKKworCS8qIG1lcmdlIGVhY2ggV00xKyBsZXZlbCAqLworCWZvciAo bGV2ZWwgPSAxOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKKwkJc3RydWN0IGludGVs X3dtX2xldmVsICp3bSA9ICZtZXJnZWQtPndtW2xldmVsXTsKKworCQlpbGtfbWVyZ2Vfd21fbGV2 ZWwoZGV2LCBsZXZlbCwgd20pOworCisJCWlmICghaWxrX2NoZWNrX3dtKGxldmVsLCBtYXgsIHdt KSkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIFRoZSBzcGVjIHNheXMgaXQgaXMgcHJlZmVycmVk IHRvIGRpc2FibGUKKwkJICogRkJDIFdNcyBpbnN0ZWFkIG9mIGRpc2FibGluZyBhIFdNIGxldmVs LgorCQkgKi8KKwkJaWYgKHdtLT5mYmNfdmFsID4gbWF4LT5mYmMpIHsKKwkJCW1lcmdlZC0+ZmJj X3dtX2VuYWJsZWQgPSBmYWxzZTsKKwkJCXdtLT5mYmNfdmFsID0gMDsKKwkJfQorCX0KK30KKwog c3RhdGljIHZvaWQgaHN3X2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBoc3dfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMsCiAJ CQkJICAgY29uc3Qgc3RydWN0IGhzd193bV9tYXhpbXVtcyAqbHBfbWF4aW11bXMsCiAJCQkJICAg c3RydWN0IGhzd193bV92YWx1ZXMgKnJlc3VsdHMpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7 Ci0Jc3RydWN0IGludGVsX3dtX2xldmVsIGxwX3Jlc3VsdHNbNF0gPSB7fTsKLQllbnVtIHBpcGUg cGlwZTsKLQlpbnQgbGV2ZWwsIG1heF9sZXZlbCwgd21fbHA7CisJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGM7CisJaW50IGxldmVsLCB3bV9scDsKKwlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBt ZXJnZWQgPSB7fTsKIAotCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSA0OyBsZXZlbCsrKQotCQlp ZiAoIWhzd19jb21wdXRlX2xwX3dtKGRldl9wcml2LCBsZXZlbCwKLQkJCQkgICAgICAgbHBfbWF4 aW11bXMsIHBhcmFtcywKLQkJCQkgICAgICAgJmxwX3Jlc3VsdHNbbGV2ZWwgLSAxXSkpCi0JCQli cmVhazsKLQltYXhfbGV2ZWwgPSBsZXZlbCAtIDE7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRl bF9jcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGJhc2UuaGVhZCkKKwkJaW50ZWxf Y29tcHV0ZV9waXBlX3dtKCZpbnRlbF9jcnRjLT5iYXNlLAorCQkJCSAgICAgICZwYXJhbXNbaW50 ZWxfY3J0Yy0+cGlwZV0sCisJCQkJICAgICAgJmludGVsX2NydGMtPndtLmFjdGl2ZSk7CisKKwlp bGtfd21fbWVyZ2UoZGV2LCBscF9tYXhpbXVtcywgJm1lcmdlZCk7CiAKIAltZW1zZXQocmVzdWx0 cywgMCwgc2l6ZW9mKCpyZXN1bHRzKSk7CiAKLQkvKiBUaGUgc3BlYyBzYXlzIGl0IGlzIHByZWZl cnJlZCB0byBkaXNhYmxlIEZCQyBXTXMgaW5zdGVhZCBvZiBkaXNhYmxpbmcKLQkgKiBhIFdNIGxl dmVsLiAqLwotCXJlc3VsdHMtPmVuYWJsZV9mYmNfd20gPSB0cnVlOwotCWZvciAobGV2ZWwgPSAx OyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKLQkJaWYgKGxwX3Jlc3VsdHNbbGV2ZWwg LSAxXS5mYmNfdmFsID4gbHBfbWF4aW11bXMtPmZiYykgewotCQkJcmVzdWx0cy0+ZW5hYmxlX2Zi Y193bSA9IGZhbHNlOwotCQkJbHBfcmVzdWx0c1tsZXZlbCAtIDFdLmZiY192YWwgPSAwOwotCQl9 Ci0JfQorCXJlc3VsdHMtPmVuYWJsZV9mYmNfd20gPSBtZXJnZWQuZmJjX3dtX2VuYWJsZWQ7CiAK KwkvKiBMUDErIHJlZ2lzdGVyIHZhbHVlcyAqLwogCWZvciAod21fbHAgPSAxOyB3bV9scCA8PSAz OyB3bV9scCsrKSB7CiAJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqcjsKIAotCQlsZXZl bCA9IChtYXhfbGV2ZWwgPT0gNCAmJiB3bV9scCA+IDEpID8gd21fbHAgKyAxIDogd21fbHA7Ci0J CWlmIChsZXZlbCA+IG1heF9sZXZlbCkKKwkJbGV2ZWwgPSB3bV9scCArICh3bV9scCA+PSAyICYm IG1lcmdlZC53bVs0XS5lbmFibGUpOworCisJCXIgPSAmbWVyZ2VkLndtW2xldmVsXTsKKwkJaWYg KCFyLT5lbmFibGUpCiAJCQlicmVhazsKIAotCQlyID0gJmxwX3Jlc3VsdHNbbGV2ZWwgLSAxXTsK IAkJcmVzdWx0cy0+d21fbHBbd21fbHAgLSAxXSA9IEhTV19XTV9MUF9WQUwobGV2ZWwgKiAyLAog CQkJCQkJCSAgci0+ZmJjX3ZhbCwKIAkJCQkJCQkgIHItPnByaV92YWwsCkBAIC0yNzMyLDEzICsy NzY0LDIxIEBAIHN0YXRpYyB2b2lkIGhzd19jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJcmVzdWx0cy0+d21fbHBfc3ByW3dtX2xwIC0gMV0gPSByLT5zcHJfdmFs OwogCX0KIAotCWZvcl9lYWNoX3BpcGUocGlwZSkKLQkJcmVzdWx0cy0+d21fcGlwZVtwaXBlXSA9 IGhzd19jb21wdXRlX3dtX3BpcGUoZGV2LAotCQkJCQkJCSAgICAgJnBhcmFtc1twaXBlXSk7CisJ LyogTFAwIHJlZ2lzdGVyIHZhbHVlcyAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfY3J0 YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBiYXNlLmhlYWQpIHsKKwkJZW51bSBwaXBl IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOworCQljb25zdCBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwg KnIgPQorCQkJJmludGVsX2NydGMtPndtLmFjdGl2ZS53bVswXTsKIAotCWZvcl9lYWNoX3BpcGUo cGlwZSkgewotCQljcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwot CQlyZXN1bHRzLT53bV9saW5ldGltZVtwaXBlXSA9IGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGRl diwgY3J0Yyk7CisJCWlmIChXQVJOX09OKCFyLT5lbmFibGUpKQorCQkJY29udGludWU7CisKKwkJ cmVzdWx0cy0+d21fbGluZXRpbWVbcGlwZV0gPSBpbnRlbF9jcnRjLT53bS5hY3RpdmUubGluZXRp bWU7CisKKwkJcmVzdWx0cy0+d21fcGlwZVtwaXBlXSA9CisJCQkoci0+cHJpX3ZhbCA8PCBXTTBf UElQRV9QTEFORV9TSElGVCkgfAorCQkJKHItPnNwcl92YWwgPDwgV00wX1BJUEVfU1BSSVRFX1NI SUZUKSB8CisJCQlyLT5jdXJfdmFsOwogCX0KIH0KIAotLSAKMS44LjEuNQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK