From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH 04/15] drm/i915: flush periodic samples, in case of no pending CS sample requests Date: Fri, 4 Nov 2016 15:00:33 +0530 Message-ID: <1478251844-23509-5-git-send-email-sourab.gupta@intel.com> References: <1478251844-23509-1-git-send-email-sourab.gupta@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 ESMTPS id CE0796E8F6 for ; Fri, 4 Nov 2016 09:29:10 +0000 (UTC) In-Reply-To: <1478251844-23509-1-git-send-email-sourab.gupta@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: "Christopher S . Hall" , Daniel Vetter , Sourab Gupta , Matthew Auld , Thomas Gleixner List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKV2hlbiB0aGVyZSBh cmUgbm8gcGVuZGluZyBDUyBPQSBzYW1wbGVzLCBmbHVzaCB0aGUgcGVyaW9kaWMgT0Egc2FtcGxl cwpjb2xsZWN0ZWQgc28gZmFyLgoKV2UgY2FuIHNhZmVseSBmb3J3YXJkIHRoZSBwZXJpb2RpYyBP QSBzYW1wbGVzIGluIHRoZSBjYXNlIHdlCmhhdmUgbm8gcGVuZGluZyBDUyBzYW1wbGVzLCBidXQg d2UgY2FuJ3QgZG8gc28gaW4gdGhlIGNhc2Ugd2UgaGF2ZQpwZW5kaW5nIENTIHNhbXBsZXMsIHNp bmNlIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgb3JkZXJpbmcgYmV0d2VlbgpwZW5kaW5nIENTIHNh bXBsZXMgYW5kIHBlcmlvZGljIHNhbXBsZXMgd2lsbCBldmVudHVhbGx5IGJlLiBJZiB3ZQpoYXZl IG5vIHBlbmRpbmcgQ1Mgc2FtcGxlLCBpdCB3b24ndCBiZSBwb3NzaWJsZSBmb3IgZnV0dXJlIHBl bmRpbmcgQ1MKc2FtcGxlIHRvIGhhdmUgdGltZXN0YW1wcyBlYXJsaWVyIHRoYW4gY3VycmVudCBw ZXJpb2RpYyB0aW1lc3RhbXAuCgpTaWduZWQtb2ZmLWJ5OiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5n dXB0YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAg IDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIHwgMTYzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0 aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMDU2 MTMxNS4uZGVkYjdmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xODU2LDggKzE4NTYs OSBAQCBzdHJ1Y3QgaTkxNV9vYV9vcHMgewogCQkgICAgY2hhciBfX3VzZXIgKmJ1ZiwKIAkJICAg IHNpemVfdCBjb3VudCwKIAkJICAgIHNpemVfdCAqb2Zmc2V0LAotCQkgICAgdTMyIHRzKTsKLQli b29sICgqb2FfYnVmZmVyX2lzX2VtcHR5KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOworCQkgICAgdTMyIHRzLCB1MzIgbWF4X3JlY29yZHMpOworCWludCAoKm9hX2J1ZmZlcl9u dW1fc2FtcGxlcykoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQl1MzIg Kmxhc3RfdHMpOwogfTsKIAogLyoKQEAgLTIyMjEsNiArMjIyMiw4IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIHsKIAkJCXUzMiBnZW43X2xhdGNoZWRfb2FzdGF0dXMxOwogCQkJdTMyIGN0eF9v YWN0eGN0cmxfb2ZmOwogCQkJdTMyIGN0eF9mbGV4ZXUwX29mZjsKKwkJCXUzMiBuX3BlbmRpbmdf cGVyaW9kaWNfc2FtcGxlczsKKwkJCXUzMiBwZW5kaW5nX3BlcmlvZGljX3RzOwogCiAJCQlzdHJ1 Y3QgaTkxNV9vYV9vcHMgb3BzOwogCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfZm9ybWF0ICpvYV9m b3JtYXRzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwppbmRleCA3YmJjNzU3Li4yZWU0NzExIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtNTQwLDEzICs1NDAsMzAgQEAgc3RhdGljIHZv aWQgaTkxNV9vYV9yY3NfZnJlZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAgKiBwb2ludGVycy4gIEEgcmFjZSBoZXJlIGNvdWxkIHJlc3VsdCBpbiBhIGZhbHNl IHBvc2l0aXZlICFlbXB0eSBzdGF0dXMgd2hpY2gKICAqIGlzIGFjY2VwdGFibGUuCiAgKi8KLXN0 YXRpYyBib29sIGdlbjhfb2FfYnVmZmVyX2lzX2VtcHR5X2ZvcF91bmxvY2tlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgaW50CitnZW44X29hX2J1ZmZlcl9udW1f c2FtcGxlc19mb3BfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CQkJCQl1MzIgKmxhc3RfdHMpCiB7CiAJaW50IHJlcG9ydF9zaXplID0gZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwotCXUzMiBoZWFkID0gSTkxNV9SRUFEKEdFTjhfT0FI RUFEUFRSKTsKLQl1MzIgdGFpbCA9IEk5MTVfUkVBRChHRU44X09BVEFJTFBUUik7CisJdTggKm9h X2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFkZHI7CisJdTMyIGhlYWQg PSBJOTE1X1JFQUQoR0VOOF9PQUhFQURQVFIpICYgR0VOOF9PQUhFQURQVFJfTUFTSzsKKwl1MzIg dGFpbCA9IEk5MTVfUkVBRChHRU44X09BVEFJTFBUUikgJiBHRU44X09BVEFJTFBUUl9NQVNLOwor CXUzMiBtYXNrID0gKE9BX0JVRkZFUl9TSVpFIC0gMSk7CisJdTMyIG51bV9zYW1wbGVzOworCXU4 ICpyZXBvcnQ7CisKKwloZWFkIC09IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5ndHRfb2Zm c2V0OworCXRhaWwgLT0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQ7CisJ bnVtX3NhbXBsZXMgPSBPQV9UQUtFTih0YWlsLCBoZWFkKSAvIHJlcG9ydF9zaXplOwogCi0JcmV0 dXJuIE9BX1RBS0VOKHRhaWwsIGhlYWQpIDwgcmVwb3J0X3NpemU7CisJLyogcmVhZCB0aGUgdGlt ZXN0YW1wIG9mIHRoZSBsYXN0IHNhbXBsZSAqLworCWlmIChudW1fc2FtcGxlcykgeworCQloZWFk ICs9IHJlcG9ydF9zaXplKihudW1fc2FtcGxlcyAtIDEpOworCQlyZXBvcnQgPSBvYV9idWZfYmFz ZSArIChoZWFkICYgbWFzayk7CisJCSpsYXN0X3RzID0gKih1MzIgKikocmVwb3J0ICsgNCk7CisJ fQorCisJcmV0dXJuIG51bV9zYW1wbGVzOwogfQogCiAvKiBOQjogVGhpcyBpcyBlaXRoZXIgY2Fs bGVkIHZpYSBmb3BzIG9yIHRoZSBwb2xsIGNoZWNrIGhydGltZXIgKGF0b21pYyBjdHgpCkBAIC01 NjAsMTYgKzU3NywzMiBAQCBzdGF0aWMgYm9vbCBnZW44X29hX2J1ZmZlcl9pc19lbXB0eV9mb3Bf dW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcgogICogcG9pbnRlcnMuICBB IHJhY2UgaGVyZSBjb3VsZCByZXN1bHQgaW4gYSBmYWxzZSBwb3NpdGl2ZSAhZW1wdHkgc3RhdHVz IHdoaWNoCiAgKiBpcyBhY2NlcHRhYmxlLgogICovCi1zdGF0aWMgYm9vbCBnZW43X29hX2J1ZmZl cl9pc19lbXB0eV9mb3BfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQorc3RhdGljIGludAorZ2VuN19vYV9idWZmZXJfbnVtX3NhbXBsZXNfZm9wX3VubG9ja2VkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJdTMyICpsYXN0X3RzKQogewog CWludCByZXBvcnRfc2l6ZSA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6 ZTsKIAl1MzIgb2FzdGF0dXMyID0gSTkxNV9SRUFEKEdFTjdfT0FTVEFUVVMyKTsKIAl1MzIgb2Fz dGF0dXMxID0gSTkxNV9SRUFEKEdFTjdfT0FTVEFUVVMxKTsKIAl1MzIgaGVhZCA9IG9hc3RhdHVz MiAmIEdFTjdfT0FTVEFUVVMyX0hFQURfTUFTSzsKIAl1MzIgdGFpbCA9IG9hc3RhdHVzMSAmIEdF TjdfT0FTVEFUVVMxX1RBSUxfTUFTSzsKKwl1OCAqb2FfYnVmX2Jhc2UgPSBkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIuYWRkcjsKKwl1MzIgbWFzayA9IChPQV9CVUZGRVJfU0laRSAtIDEpOwor CWludCBhdmFpbGFibGVfc2l6ZTsKKwl1MzIgbnVtX3NhbXBsZXMgPSAwOworCXU4ICpyZXBvcnQ7 CiAKLQlyZXR1cm4gT0FfVEFLRU4odGFpbCwgaGVhZCkgPAotCQlkZXZfcHJpdi0+cGVyZi5vYS50 YWlsX21hcmdpbiArIHJlcG9ydF9zaXplOworCWhlYWQgLT0gZGV2X3ByaXYtPnBlcmYub2Eub2Ff YnVmZmVyLmd0dF9vZmZzZXQ7CisJdGFpbCAtPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu Z3R0X29mZnNldDsKKwlhdmFpbGFibGVfc2l6ZSA9IE9BX1RBS0VOKHRhaWwsIGhlYWQpIC0gZGV2 X3ByaXYtPnBlcmYub2EudGFpbF9tYXJnaW47CisJaWYgKGF2YWlsYWJsZV9zaXplID49IHJlcG9y dF9zaXplKSB7CisJCW51bV9zYW1wbGVzID0gYXZhaWxhYmxlX3NpemUgLyByZXBvcnRfc2l6ZTsK KwkJaGVhZCArPSByZXBvcnRfc2l6ZSoobnVtX3NhbXBsZXMgLSAxKTsKKwkJcmVwb3J0ID0gb2Ff YnVmX2Jhc2UgKyAoaGVhZCAmIG1hc2spOworCQkqbGFzdF90cyA9ICoodTMyICopKHJlcG9ydCAr IDQpOworCX0KKworCXJldHVybiBudW1fc2FtcGxlczsKIH0KIAogLyoqCkBAIC02OTgsNyArNzMx LDcgQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0sCiAJCQkJICBzaXplX3QgY291bnQsCiAJCQkJICBzaXplX3QgKm9mZnNl dCwKIAkJCQkgIHUzMiAqaGVhZF9wdHIsCi0JCQkJICB1MzIgdGFpbCwgdTMyIHRzKQorCQkJCSAg dTMyIHRhaWwsIHUzMiB0cywgdTMyIG1heF9yZWNvcmRzKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJaW50IHJlcG9ydF9zaXplID0g ZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwpAQCAtNzA3LDYgKzc0MCw3 IEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtLAogCXUzMiBoZWFkOwogCXUzMiB0YWtlbjsKIAlpbnQgcmV0ID0gMDsKKwlp bnQgbl9yZWNvcmRzID0gMDsKIAogCUJVR19PTihzdHJlYW0tPnN0YXRlICE9IEk5MTVfUEVSRl9T VFJFQU1fRU5BQkxFRCk7CiAKQEAgLTczMyw3ICs3NjcsNyBAQCBzdGF0aWMgaW50IGdlbjhfYXBw ZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAl0YWlsICY9 IH4ocmVwb3J0X3NpemUgLSAxKTsKIAogCWZvciAoLyogbm9uZSAqLzsKLQkgICAgICh0YWtlbiA9 IE9BX1RBS0VOKHRhaWwsIGhlYWQpKTsKKwkgICAgICh0YWtlbiA9IE9BX1RBS0VOKHRhaWwsIGhl YWQpKSAmJiAobl9yZWNvcmRzIDw9IG1heF9yZWNvcmRzKTsKIAkgICAgIGhlYWQgPSAoaGVhZCAr IHJlcG9ydF9zaXplKSAmIG1hc2spIHsKIAkJdTggKnJlcG9ydCA9IG9hX2J1Zl9iYXNlICsgaGVh ZDsKIAkJdTMyICpyZXBvcnQzMiA9ICh2b2lkICopcmVwb3J0OwpAQCAtODE1LDYgKzg0OSw3IEBA IHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtLAogCQkJaWYgKHJldCkKIAkJCQlicmVhazsKIAorCQkJbl9yZWNvcmRzKys7CiAJ CQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIubGFzdF9jdHhfaWQgPSBjdHhfaWQ7CiAJCX0K IApAQCAtODQzLDcgKzg3OCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogc3RhdGljIGludCBnZW44X29hX3JlYWQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCWNoYXIgX191c2VyICpidWYsCiAJ CQlzaXplX3QgY291bnQsCi0JCQlzaXplX3QgKm9mZnNldCwgdTMyIHRzKQorCQkJc2l6ZV90ICpv ZmZzZXQsIHUzMiB0cywgdTMyIG1heF9yZWNvcmRzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJaW50IHJlcG9ydF9zaXplID0gZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwpAQCAtOTAwLDcgKzkzNSw4IEBA IHN0YXRpYyBpbnQgZ2VuOF9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0s CiAJCX0KIAl9CiAKLQlyZXQgPSBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cmVhbSwgYnVmLCBj b3VudCwgb2Zmc2V0LCAmaGVhZCwgdGFpbCwgdHMpOworCXJldCA9IGdlbjhfYXBwZW5kX29hX3Jl cG9ydHMoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQsICZoZWFkLCB0YWlsLAorCQkJCQl0cywg bWF4X3JlY29yZHMpOwogCiAJLyogQWxsIHRoZSByZXBvcnQgc2l6ZXMgYXJlIGEgcG93ZXIgb2Yg dHdvIGFuZCB0aGUKIAkgKiBoZWFkIHNob3VsZCBhbHdheXMgYmUgaW5jcmVtZW50ZWQgYnkgc29t ZSBtdWx0aXBsZQpAQCAtOTQyLDcgKzk3OCw3IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBlbmRfb2Ff cmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJCSAgc2l6ZV90IGNv dW50LAogCQkJCSAgc2l6ZV90ICpvZmZzZXQsCiAJCQkJICB1MzIgKmhlYWRfcHRyLAotCQkJCSAg dTMyIHRhaWwsIHUzMiB0cykKKwkJCQkgIHUzMiB0YWlsLCB1MzIgdHMsIHUzMiBtYXhfcmVjb3Jk cykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9w cml2OwogCWludCByZXBvcnRfc2l6ZSA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3Jt YXRfc2l6ZTsKQEAgLTk1Miw2ICs5ODgsNyBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3Jl cG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAl1MzIgaGVhZDsKIAl1MzIg dGFrZW47CiAJaW50IHJldCA9IDA7CisJaW50IG5fcmVjb3JkcyA9IDA7CiAKIAlCVUdfT04oc3Ry ZWFtLT5zdGF0ZSAhPSBJOTE1X1BFUkZfU1RSRUFNX0VOQUJMRUQpOwogCkBAIC05OTEsNyArMTAy OCw3IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtLAogCXRhaWwgJj0gbWFzazsKIAogCWZvciAoLyogbm9uZSAqLzsKLQkg ICAgICh0YWtlbiA9IE9BX1RBS0VOKHRhaWwsIGhlYWQpKTsKKwkgICAgICh0YWtlbiA9IE9BX1RB S0VOKHRhaWwsIGhlYWQpKSAmJiAobl9yZWNvcmRzIDw9IG1heF9yZWNvcmRzKTsKIAkgICAgIGhl YWQgPSAoaGVhZCArIHJlcG9ydF9zaXplKSAmIG1hc2spIHsKIAkJdTggKnJlcG9ydCA9IG9hX2J1 Zl9iYXNlICsgaGVhZDsKIAkJdTMyICpyZXBvcnQzMiA9ICh2b2lkICopcmVwb3J0OwpAQCAtMTAy NSw2ICsxMDYyLDcgQEAgc3RhdGljIGludCBnZW43X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCWlmIChyZXQpCiAJCQlicmVhazsKIAorCQluX3Jl Y29yZHMrKzsKIAkJLyogVGhlIGFib3ZlIHJlcG9ydC1pZCBmaWVsZCBzYW5pdHkgY2hlY2sgaXMg YmFzZWQgb24KIAkJICogdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgT0EgYnVmZmVyIGlzIGluaXRp YWxseQogCQkgKiB6ZXJvZWQgYW5kIHdlIHJlc2V0IHRoZSBmaWVsZCBhZnRlciBjb3B5aW5nIHNv IHRoZQpAQCAtMTA1MCw3ICsxMDg4LDcgQEAgc3RhdGljIGludCBnZW43X2FwcGVuZF9vYV9yZXBv cnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiBzdGF0aWMgaW50IGdlbjdfb2Ff cmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJY2hhciBfX3VzZXIgKmJ1 ZiwKIAkJCXNpemVfdCBjb3VudCwKLQkJCXNpemVfdCAqb2Zmc2V0LCB1MzIgdHMpCisJCQlzaXpl X3QgKm9mZnNldCwgdTMyIHRzLCB1MzIgbWF4X3JlY29yZHMpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAlpbnQgcmVwb3J0X3NpemUg PSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7CkBAIC0xMTIzLDcgKzEx NjEsNyBAQCBzdGF0aWMgaW50IGdlbjdfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq c3RyZWFtLAogCX0KIAogCXJldCA9IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RyZWFtLCBidWYs IGNvdW50LCBvZmZzZXQsCi0JCQkJICAgICAmaGVhZCwgdGFpbCwgdHMpOworCQkJCSAgICAgJmhl YWQsIHRhaWwsIHRzLCBtYXhfcmVjb3Jkcyk7CiAKIAkvKiBBbGwgdGhlIHJlcG9ydCBzaXplcyBh cmUgYSBwb3dlciBvZiB0d28gYW5kIHRoZQogCSAqIGhlYWQgc2hvdWxkIGFsd2F5cyBiZSBpbmNy ZW1lbnRlZCBieSBzb21lIG11bHRpcGxlCkBAIC0xMTcwLDcgKzEyMDgsOCBAQCBzdGF0aWMgaW50 IGFwcGVuZF9vYV9yY3Nfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAK IAkvKiBGaXJzdCwgYXBwZW5kIHRoZSBwZXJpb2RpYyBPQSBzYW1wbGVzIGhhdmluZyBsb3dlciB0 aW1lc3RhbXBzICovCiAJcmVwb3J0X3RzID0gKih1MzIgKikocmVwb3J0ICsgNCk7Ci0JcmV0ID0g ZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQsIHJl cG9ydF90cyk7CisJcmV0ID0gZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQoc3RyZWFtLCBidWYs IGNvdW50LCBvZmZzZXQsCisJCQkJCXJlcG9ydF90cywgVTMyX01BWCk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIApAQCAtMTE4Nyw3ICsxMjI2LDggQEAgc3RhdGljIGludCBhcHBlbmRfb2Ff cmNzX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogfQogCiAvKioKLSAq IENvcGllcyBhbGwgY29tbWFuZCBzdHJlYW0gYmFzZWQgT0EgcmVwb3J0cyBpbnRvIHVzZXJzcGFj ZSByZWFkKCkgYnVmZmVyLgorICogQ29waWVzIGFsbCBPQSByZXBvcnRzIGludG8gdXNlcnNwYWNl IHJlYWQoKSBidWZmZXIuIFRoaXMgaW5jbHVkZXMgY29tbWFuZAorICogc3RyZWFtIGFzIHdlbGwg YXMgcGVyaW9kaWMgT0EgcmVwb3J0cy4KICAqCiAgKiBOQjogc29tZSBkYXRhIG1heSBiZSBzdWNj ZXNzZnVsbHkgY29waWVkIHRvIHRoZSB1c2Vyc3BhY2UgYnVmZmVyCiAgKiBldmVuIGlmIGFuIGVy cm9yIGlzIHJldHVybmVkLCBhbmQgdGhpcyBpcyByZWZsZWN0ZWQgaW4gdGhlCkBAIC0xMjA0LDcg KzEyNDQsNyBAQCBzdGF0aWMgaW50IG9hX3Jjc19hcHBlbmRfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtLAogCXNwaW5fbG9jaygmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0 X2xvY2spOwogCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3QpKSB7CiAJ CXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7Ci0JCXJldHVybiAw OworCQlnb3RvIHBlbmRpbmdfcGVyaW9kaWM7CiAJfQogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShlbnRyeSwgbmV4dCwKIAkJCQkgJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCwgbGluaykgewpA QCAtMTIxNSw3ICsxMjU1LDcgQEAgc3RhdGljIGludCBvYV9yY3NfYXBwZW5kX3JlcG9ydHMoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlzcGluX3VubG9jaygmZGV2X3ByaXYtPnBl cmYubm9kZV9saXN0X2xvY2spOwogCiAJaWYgKGxpc3RfZW1wdHkoJmZyZWVfbGlzdCkpCi0JCXJl dHVybiAwOworCQlnb3RvIHBlbmRpbmdfcGVyaW9kaWM7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUoZW50cnksIG5leHQsICZmcmVlX2xpc3QsIGxpbmspIHsKIAkJcmV0ID0gYXBwZW5kX29h X3Jjc19zYW1wbGUoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQsIGVudHJ5KTsKQEAgLTEyMzMs MTYgKzEyNzMsMzUgQEAgc3RhdGljIGludCBvYV9yY3NfYXBwZW5kX3JlcG9ydHMoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlzcGluX3VubG9jaygmZGV2X3ByaXYtPnBlcmYubm9k ZV9saXN0X2xvY2spOwogCiAJcmV0dXJuIHJldDsKKworcGVuZGluZ19wZXJpb2RpYzoKKwlpZiAo IWRldl9wcml2LT5wZXJmLm9hLm5fcGVuZGluZ19wZXJpb2RpY19zYW1wbGVzKQorCQlyZXR1cm4g MDsKKworCXJldCA9IGRldl9wcml2LT5wZXJmLm9hLm9wcy5yZWFkKHN0cmVhbSwgYnVmLCBjb3Vu dCwgb2Zmc2V0LAorCQkJCWRldl9wcml2LT5wZXJmLm9hLnBlbmRpbmdfcGVyaW9kaWNfdHMsCisJ CQkJZGV2X3ByaXYtPnBlcmYub2Eubl9wZW5kaW5nX3BlcmlvZGljX3NhbXBsZXMpOworCWRldl9w cml2LT5wZXJmLm9hLm5fcGVuZGluZ19wZXJpb2RpY19zYW1wbGVzID0gMDsKKwlkZXZfcHJpdi0+ cGVyZi5vYS5wZW5kaW5nX3BlcmlvZGljX3RzID0gMDsKKwlyZXR1cm4gcmV0OwogfQogCitlbnVt IGNzX2J1Zl9kYXRhX3N0YXRlIHsKKwlDU19CVUZfRU1QVFksCisJQ1NfQlVGX1JFUV9QRU5ESU5H LAorCUNTX0JVRl9IQVZFX0RBVEEsCit9OworCiAvKgogICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNv bW1hbmQgc3RyZWFtIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0cmVhbSBoYXMKICAqIGRh dGEgcmVhZHkgdG8gYmUgZm9yd2FyZGVkIHRvIHVzZXJzcGFjZS4KLSAqIFJldHVybnMgdHJ1ZSBp ZiBhdGxlYXN0IG9uZSByZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kIHN0cmVhbSBpcwot ICogY29tcGxldGVkLCBlbHNlIHJldHVybnMgZmFsc2UuCisgKiBWYWx1ZSByZXR1cm5lZDoKKyAq IENTX0JVRl9IQVZFX0RBVEEJLSBpZiB0aGVyZSBpcyBhdGxlYXN0IG9uZSBjb21wbGV0ZWQgcmVx dWVzdAorICogQ1NfQlVGX1JFUV9QRU5ESU5HCS0gdGhlcmUgYXJlIHJlcXVlc3RzIHBlbmRpbmcs IGJ1dCBubyBjb21wbGV0ZWQgcmVxdWVzdHMKKyAqIENTX0JVRl9FTVBUWQkJLSBubyByZXF1ZXN0 cyBzY2hlZHVsZWQKICAqLwotc3RhdGljIGJvb2wgY29tbWFuZF9zdHJlYW1fYnVmX2lzX2VtcHR5 KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCi0KK3N0YXRpYyBlbnVtIGNzX2J1Zl9k YXRhX3N0YXRlIGNvbW1hbmRfc3RyZWFtX2J1Zl9zdGF0ZSgKKwkJCQlzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHN0cmVhbS0+ZGV2X3ByaXY7CiAJc3RydWN0IGk5MTVfcGVyZl9jc19kYXRhX25vZGUgKmVudHJ5 ID0gTlVMTDsKQEAgLTEyNTYsMzQgKzEzMTUsNjAgQEAgc3RhdGljIGJvb2wgY29tbWFuZF9zdHJl YW1fYnVmX2lzX2VtcHR5KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJc3Bpbl91 bmxvY2soJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdF9sb2NrKTsKIAogCWlmICghZW50cnkpCi0J CXJldHVybiB0cnVlOworCQlyZXR1cm4gQ1NfQlVGX0VNUFRZOwogCWVsc2UgaWYgKCFpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKLQkJcmV0dXJuIHRydWU7CisJCXJldHVybiBD U19CVUZfUkVRX1BFTkRJTkc7CiAJZWxzZQotCQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiBDU19C VUZfSEFWRV9EQVRBOwogfQogCiAvKgotICogQ2hlY2tzIHdoZXRoZXIgdGhlIHN0cmVhbSBoYXMg ZGF0YSByZWFkeSB0byBmb3J3YXJkIHRvIHVzZXJzcGFjZS4KLSAqIEZvciBjb21tYW5kIHN0cmVh bSBiYXNlZCBzdHJlYW1zLCBjaGVjayBpZiB0aGUgY29tbWFuZCBzdHJlYW0gYnVmZmVyIGhhcwot ICogYXRsZWFzdCBvbmUgc2FtcGxlIHJlYWR5LCBpZiBub3QgcmV0dXJuIGZhbHNlLCBpcnJlc3Bl Y3RpdmUgb2YgcGVyaW9kaWMKLSAqIG9hIGJ1ZmZlciBoYXZpbmcgdGhlIGRhdGEgb3Igbm90Lgor ICogQ2hlY2tzIHdoZXRoZXIgdGhlIHN0cmVhbSBoYXMgZGF0YSByZWFkeSB0byBmb3J3YXJkIHRv IHVzZXJzcGFjZSwgYnkKKyAqIHF1ZXJ5aW5nIGZvciBwZXJpb2RpYyBvYSBidWZmZXIgYW5kIGNv bW1hbmQgc3RyZWFtIGJ1ZmZlciBzYW1wbGVzLgogICovCiAKIHN0YXRpYyBib29sIHN0cmVhbV9o YXZlX2RhdGFfX3VubG9ja2VkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwll bnVtIGNzX2J1Zl9kYXRhX3N0YXRlIGNzX2J1Zl9zdGF0ZTsKKwl1MzIgbnVtX3NhbXBsZXMsIGxh c3RfdHMgPSAwOwogCi0JLyogTm90ZTogdGhlIG9hX2J1ZmZlcl9pc19lbXB0eSgpIGNvbmRpdGlv biBpcyBvayB0byBydW4gdW5sb2NrZWQgYXMgaXQKLQkgKiBqdXN0IHBlcmZvcm1zIG1taW8gcmVh ZHMgb2YgdGhlIE9BIGJ1ZmZlciBoZWFkICsgdGFpbCBwb2ludGVycyBhbmQKKwkvKiBOb3RlOiBv YV9idWZmZXJfbnVtX3NhbXBsZXMoKSBpcyBvayB0byBydW4gdW5sb2NrZWQgYXMgaXQganVzdAor CSAqIHBlcmZvcm1zIG1taW8gcmVhZHMgb2YgdGhlIE9BIGJ1ZmZlciBoZWFkICsgdGFpbCBwb2lu dGVycyBhbmQKIAkgKiBpdCdzIGFzc3VtZWQgd2UncmUgaGFuZGxpbmcgc29tZSBvcGVyYXRpb24g dGhhdCBpbXBsaWVzIHRoZSBzdHJlYW0KIAkgKiBjYW4ndCBiZSBkZXN0cm95ZWQgdW50aWwgY29t cGxldGlvbiAoc3VjaCBhcyBhIHJlYWQoKSkgdGhhdCBlbnN1cmVzCiAJICogdGhlIGRldmljZSAr IE9BIGJ1ZmZlciBjYW4ndCBkaXNhcHBlYXIKIAkgKi8KKwlkZXZfcHJpdi0+cGVyZi5vYS5uX3Bl bmRpbmdfcGVyaW9kaWNfc2FtcGxlcyA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EucGVuZGluZ19w ZXJpb2RpY190cyA9IDA7CisJbnVtX3NhbXBsZXMgPSBkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2Ff YnVmZmVyX251bV9zYW1wbGVzKGRldl9wcml2LAorCQkJCQkJCQkmbGFzdF90cyk7CiAJaWYgKHN0 cmVhbS0+Y3NfbW9kZSkKLQkJcmV0dXJuICFjb21tYW5kX3N0cmVhbV9idWZfaXNfZW1wdHkoc3Ry ZWFtKTsKKwkJY3NfYnVmX3N0YXRlID0gY29tbWFuZF9zdHJlYW1fYnVmX3N0YXRlKHN0cmVhbSk7 CiAJZWxzZQotCQlyZXR1cm4gIWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJfaXNfZW1w dHkoZGV2X3ByaXYpOworCQljc19idWZfc3RhdGUgPSBDU19CVUZfRU1QVFk7CisKKwkvKgorCSAq IE5vdGU6IFdlIGNhbiBzYWZlbHkgZm9yd2FyZCB0aGUgcGVyaW9kaWMgT0Egc2FtcGxlcyBpbiB0 aGUgY2FzZSB3ZQorCSAqIGhhdmUgbm8gcGVuZGluZyBDUyBzYW1wbGVzLCBidXQgd2UgY2FuJ3Qg ZG8gc28gaW4gdGhlIGNhc2Ugd2UgaGF2ZQorCSAqIHBlbmRpbmcgQ1Mgc2FtcGxlcywgc2luY2Ug d2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBvcmRlcmluZyBiZXR3ZWVuCisJICogcGVuZGluZyBDUyBz YW1wbGVzIGFuZCBwZXJpb2RpYyBzYW1wbGVzIHdpbGwgZXZlbnR1YWxseSBiZS4gSWYgd2UKKwkg KiBoYXZlIG5vIHBlbmRpbmcgQ1Mgc2FtcGxlLCBpdCB3b24ndCBiZSBwb3NzaWJsZSBmb3IgZnV0 dXJlIHBlbmRpbmcgQ1MKKwkgKiBzYW1wbGUgdG8gaGF2ZSB0aW1lc3RhbXBzIGVhcmxpZXIgdGhh biBjdXJyZW50IHBlcmlvZGljIHRpbWVzdGFtcC4KKwkgKi8KKwlzd2l0Y2ggKGNzX2J1Zl9zdGF0 ZSkgeworCWNhc2UgQ1NfQlVGX0VNUFRZOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX3BlbmRpbmdf cGVyaW9kaWNfc2FtcGxlcyA9IG51bV9zYW1wbGVzOworCQlkZXZfcHJpdi0+cGVyZi5vYS5wZW5k aW5nX3BlcmlvZGljX3RzID0gbGFzdF90czsKKwkJcmV0dXJuIChudW1fc2FtcGxlcyAhPSAwKTsK KworCWNhc2UgQ1NfQlVGX0hBVkVfREFUQToKKwkJcmV0dXJuIHRydWU7CisKKwljYXNlIENTX0JV Rl9SRVFfUEVORElORzoKKwkJZGVmYXVsdDoKKwkJcmV0dXJuIGZhbHNlOworCX0KIH0KIAogc3Rh dGljIGludCBpOTE1X29hX3dhaXRfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKQEAgLTEzMjUsNyArMTQxMCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9yZWFkKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCXJldHVybiBvYV9yY3NfYXBwZW5kX3JlcG9y dHMoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQpOwogCWVsc2UKIAkJcmV0dXJuIGRldl9wcml2 LT5wZXJmLm9hLm9wcy5yZWFkKHN0cmVhbSwgYnVmLCBjb3VudCwgb2Zmc2V0LAotCQkJCQkJVTMy X01BWCk7CisJCQkJCQlVMzJfTUFYLCBVMzJfTUFYKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI5 NjAsOCArMzA0NSw4IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMudXBkYXRlX2h3X2N0eF9pZF9s b2NrZWQgPQogCQkJZ2VuN191cGRhdGVfaHdfY3R4X2lkX2xvY2tlZDsKIAkJZGV2X3ByaXYtPnBl cmYub2Eub3BzLnJlYWQgPSBnZW43X29hX3JlYWQ7Ci0JCWRldl9wcml2LT5wZXJmLm9hLm9wcy5v YV9idWZmZXJfaXNfZW1wdHkgPQotCQkJZ2VuN19vYV9idWZmZXJfaXNfZW1wdHlfZm9wX3VubG9j a2VkOworCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfYnVmZmVyX251bV9zYW1wbGVzID0KKwkJ CWdlbjdfb2FfYnVmZmVyX251bV9zYW1wbGVzX2ZvcF91bmxvY2tlZDsKIAogCQlkZXZfcHJpdi0+ cGVyZi5vYS50aW1lc3RhbXBfZnJlcXVlbmN5ID0gMTI1MDAwMDA7CiAKQEAgLTI5NzQsOCArMzA1 OSw4IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlID0gZ2VuOF9vYV9lbmFibGU7 CiAJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOwog CQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMucmVhZCA9IGdlbjhfb2FfcmVhZDsKLQkJZGV2X3ByaXYt PnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9pc19lbXB0eSA9Ci0JCQlnZW44X29hX2J1ZmZlcl9pc19l bXB0eV9mb3BfdW5sb2NrZWQ7CisJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJfbnVt X3NhbXBsZXMgPQorCQkJCWdlbjhfb2FfYnVmZmVyX251bV9zYW1wbGVzX2ZvcF91bmxvY2tlZDsK IAogCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzID0gZ2VuOF9wbHVzX29hX2Zvcm1hdHM7 CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK