From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH 49/53] drm/i915: Make intel_logical_ring_begin() static Date: Thu, 19 Feb 2015 17:18:01 +0000 Message-ID: <1424366285-29232-50-git-send-email-John.C.Harrison@Intel.com> References: <1423828140-10653-1-git-send-email-John.C.Harrison@Intel.com> <1424366285-29232-1-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id C0B10720B8 for ; Thu, 19 Feb 2015 09:19:02 -0800 (PST) In-Reply-To: <1424366285-29232-1-git-send-email-John.C.Harrison@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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KClRoZSBvbmx5 IHVzYWdlIG9mIGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbigpIGlzIHdpdGhpbiBpbnRlbF9scmMu YyBzbyBpdCBjYW4gYmUKbWFkZSBzdGF0aWMuIFRvIGF2b2lkIGEgZm9yd2FyZCBkZWNsYXJhdGlv biBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLCBpdCBhbmQgYnVuY2gKb2Ygb3RoZXIgZnVuY3Rpb25z IGhhdmUgYmVlbiBzaHVmZmxlZCB1cHdhcmRzLgoKRm9yOiBWSVotNTExNQpTaWduZWQtb2ZmLWJ5 OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwgIDM5NCArKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggfCAgICAzIC0K IDIgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDIwMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDUyMTJiNTQuLmI0MDUwMWQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCkBAIC02MDYsNiArNjA2LDIwMyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0 c19tb3ZlX3RvX2dwdShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlyZXR1cm4g bG9naWNhbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhyZXEpOwogfQogCitzdGF0aWMgaW50 IGxvZ2ljYWxfcmluZ193YWl0X3JlcXVlc3Qoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYsCisJCQkJICAgICBpbnQgYnl0ZXMpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJpbmdidWYtPnJpbmc7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 OworCWludCByZXQ7CisKKwlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBieXRlcykK KwkJcmV0dXJuIDA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZyaW5nLT5yZXF1 ZXN0X2xpc3QsIGxpc3QpIHsKKwkJLyoKKwkJICogVGhlIHJlcXVlc3QgcXVldWUgaXMgcGVyLWVu Z2luZSwgc28gY2FuIGNvbnRhaW4gcmVxdWVzdHMKKwkJICogZnJvbSBtdWx0aXBsZSByaW5nYnVm ZmVycy4gSGVyZSwgd2UgbXVzdCBpZ25vcmUgYW55IHRoYXQKKwkJICogYXJlbid0IGZyb20gdGhl IHJpbmdidWZmZXIgd2UncmUgY29uc2lkZXJpbmcuCisJCSAqLworCQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY3R4ID0gcmVxdWVzdC0+Y3R4OworCQlpZiAoY3R4LT5lbmdpbmVbcmluZy0+aWRdLnJp bmdidWYgIT0gcmluZ2J1ZikKKwkJCWNvbnRpbnVlOworCisJCS8qIFdvdWxkIGNvbXBsZXRpb24g b2YgdGhpcyByZXF1ZXN0IGZyZWUgZW5vdWdoIHNwYWNlPyAqLworCQlpZiAoX19pbnRlbF9yaW5n X3NwYWNlKHJlcXVlc3QtPnRhaWwsIHJpbmdidWYtPnRhaWwsCisJCQkJICAgICAgIHJpbmdidWYt PnNpemUpID49IGJ5dGVzKSB7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmICgmcmVxdWVzdC0+ bGlzdCA9PSAmcmluZy0+cmVxdWVzdF9saXN0KQorCQlyZXR1cm4gLUVOT1NQQzsKKworCXJldCA9 IGk5MTVfd2FpdF9yZXF1ZXN0KHJlcXVlc3QpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhyaW5nKTsKKworCXJldHVybiBpbnRlbF9y aW5nX3NwYWNlKHJpbmdidWYpID49IGJ5dGVzID8gMCA6IC1FTk9TUEM7Cit9CisKKy8qCisgKiBp bnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KCkgLSBhZHZhbmNlIHRoZSB0YWls IGFuZCBzdWJtaXQgdGhlIHdvcmtsb2FkCisgKiBAcmluZ2J1ZjogTG9naWNhbCBSaW5nYnVmZmVy IHRvIGFkdmFuY2UuCisgKgorICogVGhlIHRhaWwgaXMgdXBkYXRlZCBpbiBvdXIgbG9naWNhbCBy aW5nYnVmZmVyIHN0cnVjdCwgbm90IGluIHRoZSBhY3R1YWwgY29udGV4dC4gV2hhdAorICogcmVh bGx5IGhhcHBlbnMgZHVyaW5nIHN1Ym1pc3Npb24gaXMgdGhhdCB0aGUgY29udGV4dCBhbmQgY3Vy cmVudCB0YWlsIHdpbGwgYmUgcGxhY2VkCisgKiBvbiBhIHF1ZXVlIHdhaXRpbmcgZm9yIHRoZSBF TFNQIHRvIGJlIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBjb250ZXh0IHN1Ym1pc3Npb24uIEF0IHRo YXQKKyAqIHBvaW50LCB0aGUgdGFpbCAqaW5zaWRlKiB0aGUgY29udGV4dCBpcyB1cGRhdGVkIGFu ZCB0aGUgRUxTUCB3cml0dGVuIHRvLgorICovCitzdGF0aWMgdm9pZAoraW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwK KwkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAorCQkJCSAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKKworCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJp bmdidWYpOworCisJaWYgKGludGVsX3Jpbmdfc3RvcHBlZChyaW5nKSkKKwkJcmV0dXJuOworCisJ ZXhlY2xpc3RzX2NvbnRleHRfcXVldWUocmluZywgY3R4LCByaW5nYnVmLT50YWlsLCByZXF1ZXN0 KTsKK30KKworc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCisJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHgsCisJCQkJICAgICAgIGludCBieXRlcykKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJdW5zaWduZWQgbG9uZyBlbmQ7CisJaW50IHJldDsKKworCXJldCA9IGxvZ2ljYWxfcmlu Z193YWl0X3JlcXVlc3QocmluZ2J1ZiwgYnl0ZXMpOworCWlmIChyZXQgIT0gLUVOT1NQQykKKwkJ cmV0dXJuIHJldDsKKworCS8qIEZvcmNlIHRoZSBjb250ZXh0IHN1Ym1pc3Npb24gaW4gY2FzZSB3 ZSBoYXZlIGJlZW4gc2tpcHBpbmcgaXQgKi8KKwlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9h bmRfc3VibWl0KHJpbmdidWYsIGN0eCwgTlVMTCk7CisKKwkvKiBXaXRoIEdFTSB0aGUgaGFuZ2No ZWNrIHRpbWVyIHNob3VsZCBraWNrIHVzIG91dCBvZiB0aGUgbG9vcCwKKwkgKiBsZWF2aW5nIGl0 IGVhcmx5IHJ1bnMgdGhlIHJpc2sgb2YgY29ycnVwdGluZyBHRU0gc3RhdGUgKGR1ZQorCSAqIHRv IHJ1bm5pbmcgb24gYWxtb3N0IHVudGVzdGVkIGNvZGVwYXRocykuIEJ1dCBvbiByZXN1bWUKKwkg KiB0aW1lcnMgZG9uJ3Qgd29yayB5ZXQsIHNvIHByZXZlbnQgYSBjb21wbGV0ZSBoYW5nIGluIHRo YXQKKwkgKiBjYXNlIGJ5IGNob29zaW5nIGFuIGluc2FuZWx5IGxhcmdlIHRpbWVvdXQuICovCisJ ZW5kID0gamlmZmllcyArIDYwICogSFo7CisKKwlyZXQgPSAwOworCWRvIHsKKwkJaWYgKGludGVs X3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gYnl0ZXMpCisJCQlicmVhazsKKworCQltc2xlZXAoMSk7 CisKKwkJaWYgKGRldl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxlICYmIHNpZ25hbF9wZW5kaW5nKGN1 cnJlbnQpKSB7CisJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CisJCQlicmVhazsKKwkJfQorCisJCXJl dCA9IGk5MTVfZ2VtX2NoZWNrX3dlZGdlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLAorCQkJCQkgICBk ZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSk7CisJCWlmIChyZXQpCisJCQlicmVhazsKKworCQlp ZiAodGltZV9hZnRlcihqaWZmaWVzLCBlbmQpKSB7CisJCQlyZXQgPSAtRUJVU1k7CisJCQlicmVh azsKKwkJfQorCX0gd2hpbGUgKDEpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBs b2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYs CisJCQkJICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCit7CisJdWludDMyX3QgX19pb21l bSAqdmlydDsKKwlpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7CisKKwlp ZiAocmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKKwkJaW50IHJldCA9IGxvZ2ljYWxfcmluZ193YWl0 X2Zvcl9zcGFjZShyaW5nYnVmLCBjdHgsIHJlbSk7CisKKwkJaWYgKHJldCkKKwkJCXJldHVybiBy ZXQ7CisJfQorCisJdmlydCA9IHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVmLT50YWls OworCXJlbSAvPSA0OworCXdoaWxlIChyZW0tLSkKKwkJaW93cml0ZTMyKE1JX05PT1AsIHZpcnQr Kyk7CisKKwlyaW5nYnVmLT50YWlsID0gMDsKKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5n YnVmKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJl KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAorCQkJCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsIGludCBieXRlcykKK3sKKwlpbnQgcmV0OworCisJaWYgKHVubGlrZWx5KHJpbmdi dWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgeworCQlyZXQgPSBs b2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIocmluZ2J1ZiwgY3R4KTsKKwkJaWYgKHVubGlrZWx5KHJl dCkpCisJCQlyZXR1cm4gcmV0OworCX0KKworCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8 IGJ5dGVzKSkgeworCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1Ziwg Y3R4LCBieXRlcyk7CisJCWlmICh1bmxpa2VseShyZXQpKQorCQkJcmV0dXJuIHJldDsKKwl9CisK KwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oKSAtIHBy ZXBhcmUgdGhlIGxvZ2ljYWwgcmluZ2J1ZmZlciB0byBhY2NlcHQgc29tZSBjb21tYW5kcworICoK KyAqIEByaW5nYnVmOiBMb2dpY2FsIHJpbmdidWZmZXIuCisgKiBAbnVtX2R3b3JkczogbnVtYmVy IG9mIERXT1JEcyB0aGF0IHdlIHBsYW4gdG8gd3JpdGUgdG8gdGhlIHJpbmdidWZmZXIuCisgKgor ICogVGhlIHJpbmdidWZmZXIgbWlnaHQgbm90IGJlIHJlYWR5IHRvIGFjY2VwdCB0aGUgY29tbWFu ZHMgcmlnaHQgYXdheSAobWF5YmUgaXQgbmVlZHMgdG8KKyAqIGJlIHdyYXBwZWQsIG9yIHdhaXQg YSBiaXQgZm9yIHRoZSB0YWlsIHRvIGJlIHVwZGF0ZWQpLiBUaGlzIGZ1bmN0aW9uIHRha2VzIGNh cmUgb2YgdGhhdAorICogYW5kIGFsc28gcHJlYWxsb2NhdGVzIGEgcmVxdWVzdCAoZXZlcnkgd29y a2xvYWQgc3VibWlzc2lvbiBpcyBzdGlsbCBtZWRpYXRlZCB0aHJvdWdoCisgKiByZXF1ZXN0cywg c2FtZSBhcyBpdCBkaWQgd2l0aCBsZWdhY3kgcmluZ2J1ZmZlciBzdWJtaXNzaW9uKS4KKyAqCisg KiBSZXR1cm46IG5vbi16ZXJvIGlmIHRoZSByaW5nYnVmZmVyIGlzIG5vdCByZWFkeSB0byBiZSB3 cml0dGVuIHRvLgorICovCitzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKKwkJCQkgICAgc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCwgaW50IG51bV9kd29yZHMpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXE7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCByZXQ7CisKKwlyZXQgPSBp OTE1X2dlbV9jaGVja193ZWRnZSgmZGV2X3ByaXYtPmdwdV9lcnJvciwKKwkJCQkgICBkZXZfcHJp di0+bW0uaW50ZXJydXB0aWJsZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9 IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHJpbmdidWYsIGN0eCwgbnVtX2R3b3JkcyAqIHNpemVvZih1 aW50MzJfdCkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBQcmVhbGxvY2F0ZSB0 aGUgb2xyIGJlZm9yZSB0b3VjaGluZyB0aGUgcmluZyAqLworCXJldCA9IGludGVsX2xvZ2ljYWxf cmluZ19hbGxvY19yZXF1ZXN0KHJpbmcsIGN0eCwgJnJlcSk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCXJpbmdidWYtPnNwYWNlIC09IG51bV9kd29yZHMgKiBzaXplb2YodWludDMyX3Qp OworCXJldHVybiAwOworfQorCiAvKioKICAqIGV4ZWNsaXN0c19zdWJtaXNzaW9uKCkgLSBzdWJt aXQgYSBiYXRjaGJ1ZmZlciBmb3IgZXhlY3V0aW9uLCBFeGVjbGlzdHMgc3R5bGUKICAqIEBkZXY6 IERSTSBkZXZpY2UuCkBAIC03ODMsMzAgKzk4MCw2IEBAIGludCBsb2dpY2FsX3JpbmdfZmx1c2hf YWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAlyZXR1cm4gMDsK IH0KIAotLyoKLSAqIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoKSAtIGFk dmFuY2UgdGhlIHRhaWwgYW5kIHN1Ym1pdCB0aGUgd29ya2xvYWQKLSAqIEByaW5nYnVmOiBMb2dp Y2FsIFJpbmdidWZmZXIgdG8gYWR2YW5jZS4KLSAqCi0gKiBUaGUgdGFpbCBpcyB1cGRhdGVkIGlu IG91ciBsb2dpY2FsIHJpbmdidWZmZXIgc3RydWN0LCBub3QgaW4gdGhlIGFjdHVhbCBjb250ZXh0 LiBXaGF0Ci0gKiByZWFsbHkgaGFwcGVucyBkdXJpbmcgc3VibWlzc2lvbiBpcyB0aGF0IHRoZSBj b250ZXh0IGFuZCBjdXJyZW50IHRhaWwgd2lsbCBiZSBwbGFjZWQKLSAqIG9uIGEgcXVldWUgd2Fp dGluZyBmb3IgdGhlIEVMU1AgdG8gYmUgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IGNvbnRleHQgc3Vi bWlzc2lvbi4gQXQgdGhhdAotICogcG9pbnQsIHRoZSB0YWlsICppbnNpZGUqIHRoZSBjb250ZXh0 IGlzIHVwZGF0ZWQgYW5kIHRoZSBFTFNQIHdyaXR0ZW4gdG8uCi0gKi8KLXN0YXRpYyB2b2lkCi1p bnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmLAotCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCi0JCQkJ ICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQotewotCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByaW5nYnVmLT5yaW5nOwotCi0JaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2UocmluZ2J1Zik7Ci0KLQlpZiAoaW50ZWxfcmluZ19zdG9wcGVkKHJpbmcpKQot CQlyZXR1cm47Ci0KLQlleGVjbGlzdHNfY29udGV4dF9xdWV1ZShyaW5nLCBjdHgsIHJpbmdidWYt PnRhaWwsIHJlcXVlc3QpOwotfQotCiBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgp CiB7CkBAIC05MDEsMTc5ICsxMDc0LDYgQEAgaW50IGludGVsX2xvZ2ljYWxfcmluZ19hbGxvY19y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZiwKLQkJCQkgICAgIGludCBieXRlcykKLXsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3Q7Ci0JaW50IHJldDsKLQotCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49 IGJ5dGVzKQotCQlyZXR1cm4gMDsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJnJp bmctPnJlcXVlc3RfbGlzdCwgbGlzdCkgewotCQkvKgotCQkgKiBUaGUgcmVxdWVzdCBxdWV1ZSBp cyBwZXItZW5naW5lLCBzbyBjYW4gY29udGFpbiByZXF1ZXN0cwotCQkgKiBmcm9tIG11bHRpcGxl IHJpbmdidWZmZXJzLiBIZXJlLCB3ZSBtdXN0IGlnbm9yZSBhbnkgdGhhdAotCQkgKiBhcmVuJ3Qg ZnJvbSB0aGUgcmluZ2J1ZmZlciB3ZSdyZSBjb25zaWRlcmluZy4KLQkJICovCi0JCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjdHggPSByZXF1ZXN0LT5jdHg7Ci0JCWlmIChjdHgtPmVuZ2luZVtyaW5n LT5pZF0ucmluZ2J1ZiAhPSByaW5nYnVmKQotCQkJY29udGludWU7Ci0KLQkJLyogV291bGQgY29t cGxldGlvbiBvZiB0aGlzIHJlcXVlc3QgZnJlZSBlbm91Z2ggc3BhY2U/ICovCi0JCWlmIChfX2lu dGVsX3Jpbmdfc3BhY2UocmVxdWVzdC0+dGFpbCwgcmluZ2J1Zi0+dGFpbCwKLQkJCQkgICAgICAg cmluZ2J1Zi0+c2l6ZSkgPj0gYnl0ZXMpIHsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JaWYgKCZy ZXF1ZXN0LT5saXN0ID09ICZyaW5nLT5yZXF1ZXN0X2xpc3QpCi0JCXJldHVybiAtRU5PU1BDOwot Ci0JcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJu IHJldDsKLQotCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHJpbmcpOwotCi0JcmV0dXJu IGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gYnl0ZXMgPyAwIDogLUVOT1NQQzsKLX0KLQot c3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYsCi0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCi0J CQkJICAgICAgIGludCBieXRlcykKLXsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0g cmluZ2J1Zi0+cmluZzsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OwotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JdW5z aWduZWQgbG9uZyBlbmQ7Ci0JaW50IHJldDsKLQotCXJldCA9IGxvZ2ljYWxfcmluZ193YWl0X3Jl cXVlc3QocmluZ2J1ZiwgYnl0ZXMpOwotCWlmIChyZXQgIT0gLUVOT1NQQykKLQkJcmV0dXJuIHJl dDsKLQotCS8qIEZvcmNlIHRoZSBjb250ZXh0IHN1Ym1pc3Npb24gaW4gY2FzZSB3ZSBoYXZlIGJl ZW4gc2tpcHBpbmcgaXQgKi8KLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0 KHJpbmdidWYsIGN0eCwgTlVMTCk7Ci0KLQkvKiBXaXRoIEdFTSB0aGUgaGFuZ2NoZWNrIHRpbWVy IHNob3VsZCBraWNrIHVzIG91dCBvZiB0aGUgbG9vcCwKLQkgKiBsZWF2aW5nIGl0IGVhcmx5IHJ1 bnMgdGhlIHJpc2sgb2YgY29ycnVwdGluZyBHRU0gc3RhdGUgKGR1ZQotCSAqIHRvIHJ1bm5pbmcg b24gYWxtb3N0IHVudGVzdGVkIGNvZGVwYXRocykuIEJ1dCBvbiByZXN1bWUKLQkgKiB0aW1lcnMg ZG9uJ3Qgd29yayB5ZXQsIHNvIHByZXZlbnQgYSBjb21wbGV0ZSBoYW5nIGluIHRoYXQKLQkgKiBj YXNlIGJ5IGNob29zaW5nIGFuIGluc2FuZWx5IGxhcmdlIHRpbWVvdXQuICovCi0JZW5kID0gamlm ZmllcyArIDYwICogSFo7Ci0KLQlyZXQgPSAwOwotCWRvIHsKLQkJaWYgKGludGVsX3Jpbmdfc3Bh Y2UocmluZ2J1ZikgPj0gYnl0ZXMpCi0JCQlicmVhazsKLQotCQltc2xlZXAoMSk7Ci0KLQkJaWYg KGRldl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxlICYmIHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7 Ci0JCQlyZXQgPSAtRVJFU1RBUlRTWVM7Ci0JCQlicmVhazsKLQkJfQotCi0JCXJldCA9IGk5MTVf Z2VtX2NoZWNrX3dlZGdlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLAotCQkJCQkgICBkZXZfcHJpdi0+ bW0uaW50ZXJydXB0aWJsZSk7Ci0JCWlmIChyZXQpCi0JCQlicmVhazsKLQotCQlpZiAodGltZV9h ZnRlcihqaWZmaWVzLCBlbmQpKSB7Ci0JCQlyZXQgPSAtRUJVU1k7Ci0JCQlicmVhazsKLQkJfQot CX0gd2hpbGUgKDEpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBsb2dpY2FsX3Jp bmdfd3JhcF9idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCi0JCQkJICAg IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCi17Ci0JdWludDMyX3QgX19pb21lbSAqdmlydDsK LQlpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Ci0KLQlpZiAocmluZ2J1 Zi0+c3BhY2UgPCByZW0pIHsKLQkJaW50IHJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFj ZShyaW5nYnVmLCBjdHgsIHJlbSk7Ci0KLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0JfQot Ci0JdmlydCA9IHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVmLT50YWlsOwotCXJlbSAv PSA0OwotCXdoaWxlIChyZW0tLSkKLQkJaW93cml0ZTMyKE1JX05PT1AsIHZpcnQrKyk7Ci0KLQly aW5nYnVmLT50YWlsID0gMDsKLQlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nYnVmKTsKLQot CXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAotCQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgs IGludCBieXRlcykKLXsKLQlpbnQgcmV0OwotCi0JaWYgKHVubGlrZWx5KHJpbmdidWYtPnRhaWwg KyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgewotCQlyZXQgPSBsb2dpY2FsX3Jp bmdfd3JhcF9idWZmZXIocmluZ2J1ZiwgY3R4KTsKLQkJaWYgKHVubGlrZWx5KHJldCkpCi0JCQly ZXR1cm4gcmV0OwotCX0KLQotCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkg ewotCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCBieXRl cyk7Ci0JCWlmICh1bmxpa2VseShyZXQpKQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlyZXR1cm4g MDsKLX0KLQotLyoqCi0gKiBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oKSAtIHByZXBhcmUgdGhl IGxvZ2ljYWwgcmluZ2J1ZmZlciB0byBhY2NlcHQgc29tZSBjb21tYW5kcwotICoKLSAqIEByaW5n YnVmOiBMb2dpY2FsIHJpbmdidWZmZXIuCi0gKiBAbnVtX2R3b3JkczogbnVtYmVyIG9mIERXT1JE cyB0aGF0IHdlIHBsYW4gdG8gd3JpdGUgdG8gdGhlIHJpbmdidWZmZXIuCi0gKgotICogVGhlIHJp bmdidWZmZXIgbWlnaHQgbm90IGJlIHJlYWR5IHRvIGFjY2VwdCB0aGUgY29tbWFuZHMgcmlnaHQg YXdheSAobWF5YmUgaXQgbmVlZHMgdG8KLSAqIGJlIHdyYXBwZWQsIG9yIHdhaXQgYSBiaXQgZm9y IHRoZSB0YWlsIHRvIGJlIHVwZGF0ZWQpLiBUaGlzIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgdGhh dAotICogYW5kIGFsc28gcHJlYWxsb2NhdGVzIGEgcmVxdWVzdCAoZXZlcnkgd29ya2xvYWQgc3Vi bWlzc2lvbiBpcyBzdGlsbCBtZWRpYXRlZCB0aHJvdWdoCi0gKiByZXF1ZXN0cywgc2FtZSBhcyBp dCBkaWQgd2l0aCBsZWdhY3kgcmluZ2J1ZmZlciBzdWJtaXNzaW9uKS4KLSAqCi0gKiBSZXR1cm46 IG5vbi16ZXJvIGlmIHRoZSByaW5nYnVmZmVyIGlzIG5vdCByZWFkeSB0byBiZSB3cml0dGVuIHRv LgotICovCi1pbnQgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmLAotCQkJICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBpbnQgbnVt X2R3b3JkcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gcmluZy0+ZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Ci0JaW50IHJldDsKLQotCXJldCA9IGk5MTVfZ2VtX2NoZWNrX3dl ZGdlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLAotCQkJCSAgIGRldl9wcml2LT5tbS5pbnRlcnJ1cHRp YmxlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gbG9naWNhbF9yaW5nX3By ZXBhcmUocmluZ2J1ZiwgY3R4LCBudW1fZHdvcmRzICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKLQotCS8qIFByZWFsbG9jYXRlIHRoZSBvbHIgYmVmb3JlIHRv dWNoaW5nIHRoZSByaW5nICovCi0JcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVl c3QocmluZywgY3R4LCAmcmVxKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmluZ2J1 Zi0+c3BhY2UgLT0gbnVtX2R3b3JkcyAqIHNpemVvZih1aW50MzJfdCk7Ci0JcmV0dXJuIDA7Ci19 Ci0KIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJaW50IHJldCwgaTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmgKaW5kZXggNDA4NDhiMC4uZGNlZWNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKQEAgLTY1LDkgKzY1LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAogCWlvd3JpdGUzMihk YXRhLCByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFpbCk7CiAJcmluZ2J1Zi0+ dGFpbCArPSA0OwogfQotaW50IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiwKLQkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwK LQkJCSAgICAgaW50IG51bV9kd29yZHMpOwogCiAvKiBMb2dpY2FsIFJpbmcgQ29udGV4dHMgKi8K IHZvaWQgaW50ZWxfbHJfY29udGV4dF9mcmVlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwot LSAKMS43LjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK