From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arkadiusz Hiler Subject: [PATCH 07/11] drm/i915/guc: Simplify intel_guc_init_hw() Date: Mon, 13 Mar 2017 14:15:04 +0100 Message-ID: <20170313131508.24439-8-arkadiusz.hiler@intel.com> References: <20170313131508.24439-1-arkadiusz.hiler@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id E9D616E503 for ; Mon, 13 Mar 2017 13:15:31 +0000 (UTC) In-Reply-To: <20170313131508.24439-1-arkadiusz.hiler@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 Q3VycmVudCB2ZXJzaW9uIG9mIGludGVsX2d1Y19pbml0X2h3KCkgZG9lcyBhIGxvdDoKIC0gY2Fy ZXMgYWJvdXQgc3VibWlzc2lvbgogLSBsb2FkcyBodWMKIC0gaW1wbGVtZW50IFdBCgpUaGlzIGNo YW5nZSBvZmZsb2FkcyBzb21lIG9mIHRoZSBsb2dpYyB0byBpbnRlbF91Y19pbml0X2h3KCksIHdo aWNoIG5vdwpjYXJlcyBhYm91dCB0aGUgYWJvdmUuCgp2MjogcmVuYW1lIGd1Y19od19yZXNldCBh bmQgZml4IHR5cG8gaW4gZGVmaW5lIG5hbWUgKE0uIFdhamRlY3prbykKdjM6IHJlbmFtZSBvbmNl IGFnYWluCnY0OiByZW1vdmUgc3B1cmlvdXMgY29tbWVudHMgYW5kIGFkZCBzb21lIHN0eWxlIChK LiBMYWh0aW5lbikKdjU6IGZsb3cgY2hhbmdlcywgZ290IHJpZCBvZiBkZWFkIGNoZWNrcyAoTS4g V2FqZGVjemtvKQp2NjogcmViYXNlCnY3OiByZWJhc2UgJiBvbmlvbiB0ZWFyZG93biAoSi4gTGFo dGluZW4pCgpDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgpD YzogTWljaGFsIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+CkNjOiBNaWNo YWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2Vy YW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+CkNjOiBKb29uYXMg TGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8IDEzOCArKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyAgICAgICAgIHwg MTExICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmggICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCsp LCAxMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNmZmYWViYy4u MzQ2MjQ1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00NTQwLDcgKzQ1NDAsNyBAQCBp bnQgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ aW50ZWxfbW9jc19pbml0X2wzY2NfdGFibGUoZGV2X3ByaXYpOwogCiAJLyogV2UgY2FuJ3QgZW5h YmxlIGNvbnRleHRzIHVudGlsIGFsbCBmaXJtd2FyZSBpcyBsb2FkZWQgKi8KLQlyZXQgPSBpbnRl bF9ndWNfaW5pdF9odygmZGV2X3ByaXYtPmd1Yyk7CisJcmV0ID0gaW50ZWxfdWNfaW5pdF9odyhk ZXZfcHJpdik7CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYwppbmRleCBlNzMyMjY2Li4wYTI5YzFiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0zNDQsMjQgKzM0NCw2IEBAIHN0YXRpYyBpbnQg Z3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVy biByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgZ3VjX2h3X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKLXsKLQlpbnQgcmV0OwotCXUzMiBndWNfc3RhdHVzOwotCi0JcmV0ID0g aW50ZWxfZ3VjX3Jlc2V0KGRldl9wcml2KTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiR3VD IHJlc2V0IGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0J Z3VjX3N0YXR1cyA9IEk5MTVfUkVBRChHVUNfU1RBVFVTKTsKLQlXQVJOKCEoZ3VjX3N0YXR1cyAm IEdTX01JQV9JTl9SRVNFVCksCi0JICAgICAiR3VDIHN0YXR1czogMHgleCwgTUlBIGNvcmUgZXhw ZWN0ZWQgdG8gYmUgaW4gcmVzZXRcbiIsIGd1Y19zdGF0dXMpOwotCi0JcmV0dXJuIHJldDsKLX0K LQogLyoqCiAgKiBpbnRlbF9ndWNfaW5pdF9odygpIC0gZmluaXNoIHByZXBhcmluZyB0aGUgR3VD IGZvciBhY3Rpdml0eQogICogQGd1YzogaW50ZWxfZ3VjIHN0cnVjdHVyZQpAQCAtMzc5LDQxICsz NjEsMjIgQEAgaW50IGludGVsX2d1Y19pbml0X2h3KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwog CWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBndWMtPmZ3LnBhdGg7Ci0JaW50IHJldHJpZXMsIHJldCwg ZXJyOworCWludCByZXQ7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBwYXRo ICVzLCBmZXRjaCAlcywgbG9hZCAlc1xuIiwKIAkJZndfcGF0aCwKIAkJaW50ZWxfdWNfZndfc3Rh dHVzX3JlcHIoZ3VjLT5mdy5mZXRjaF9zdGF0dXMpLAogCQlpbnRlbF91Y19md19zdGF0dXNfcmVw cihndWMtPmZ3LmxvYWRfc3RhdHVzKSk7CiAKLQkvKiBMb2FkaW5nIGZvcmJpZGRlbiwgb3Igbm8g ZmlybXdhcmUgdG8gbG9hZD8gKi8KLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKSB7Ci0J CWVyciA9IDA7Ci0JCWdvdG8gZmFpbDsKLQl9IGVsc2UgaWYgKGZ3X3BhdGggPT0gTlVMTCkgewot CQkvKiBEZXZpY2UgaXMga25vd24gdG8gaGF2ZSBubyB1Q29kZSAoZS5nLiBubyBHdUMpICovCi0J CWVyciA9IC1FTlhJTzsKLQkJZ290byBmYWlsOworCWlmICghZndfcGF0aCkgeworCQlyZXR1cm4g LUVOWElPOwogCX0gZWxzZSBpZiAoKmZ3X3BhdGggPT0gJ1wwJykgewotCQkvKiBEZXZpY2UgaGFz IGEgR3VDIGJ1dCB3ZSBkb24ndCBrbm93IHdoYXQgZi93IHRvIGxvYWQ/ICovCiAJCVdBUk4oMSwg Ik5vIEd1QyBmaXJtd2FyZSBrbm93biBmb3IgdGhpcyBwbGF0Zm9ybSFcbiIpOwotCQllcnIgPSAt RU5PREVWOwotCQlnb3RvIGZhaWw7CisJCXJldHVybiAtRU5PREVWOwogCX0KIAotCS8qIEZldGNo IGZhaWxlZCwgb3IgYWxyZWFkeSBmZXRjaGVkIGJ1dCBmYWlsZWQgdG8gbG9hZD8gKi8KLQlpZiAo Z3VjLT5mdy5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykgewotCQll cnIgPSAtRUlPOwotCQlnb3RvIGZhaWw7Ci0JfSBlbHNlIGlmIChndWMtPmZ3LmxvYWRfc3RhdHVz ID09IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUwpIHsKLQkJZXJyID0gLUVOT0VYRUM7Ci0JCWdvdG8g ZmFpbDsKLQl9Ci0KLQlnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKLQotCS8q IFdlIG5lZWQgdG8gbm90aWZ5IHRoZSBndWMgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBHR1RUICov Ci0JaTkxNV9nZ3R0X2VuYWJsZV9ndWMoZGV2X3ByaXYpOworCWlmIChndWMtPmZ3LmZldGNoX3N0 YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQorCQlyZXR1cm4gLUVJTzsKIAogCWd1 Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwogCkBAIC00MjEs MTAyICszODQsMTkgQEAgaW50IGludGVsX2d1Y19pbml0X2h3KHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKIAkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjLT5mdy5mZXRjaF9zdGF0dXMpLAogCQlp bnRlbF91Y19md19zdGF0dXNfcmVwcihndWMtPmZ3LmxvYWRfc3RhdHVzKSk7CiAKLQllcnIgPSBp OTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoZGV2X3ByaXYpOwotCWlmIChlcnIpCi0JCWdvdG8gZmFp bDsKKwlyZXQgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAKLQkvKgotCSAqIFdhRW5hYmxl dUtlcm5lbEhlYWRlclZhbGlkRml4OnNrbCxieHQKLQkgKiBGb3IgQlhULCB0aGlzIGlzIG9ubHkg dXB0byBCMCBidXQgYmVsb3cgV0EgaXMgcmVxdWlyZWQgZm9yIGxhdGVyCi0JICogc3RlcHBpbmdz IGFsc28gc28gdGhpcyBpcyBleHRlbmRlZCBhcyB3ZWxsLgotCSAqLwotCS8qIFdhRW5hYmxlR3VD Qm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0ICovCi0JZm9yIChyZXRyaWVzID0gMzsgOyApIHsK LQkJLyoKLQkJICogQWx3YXlzIHJlc2V0IHRoZSBHdUMganVzdCBiZWZvcmUgKHJlKWxvYWRpbmcs IHNvCi0JCSAqIHRoYXQgdGhlIHN0YXRlIGFuZCB0aW1pbmcgYXJlIGZhaXJseSBwcmVkaWN0YWJs ZQotCQkgKi8KLQkJZXJyID0gZ3VjX2h3X3Jlc2V0KGRldl9wcml2KTsKLQkJaWYgKGVycikKLQkJ CWdvdG8gZmFpbDsKLQotCQlpbnRlbF9odWNfaW5pdF9odygmZGV2X3ByaXYtPmh1Yyk7Ci0JCWVy ciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKLQkJaWYgKCFlcnIpCi0JCQlicmVhazsKLQot CQlpZiAoLS1yZXRyaWVzID09IDApCi0JCQlnb3RvIGZhaWw7Ci0KLQkJRFJNX0lORk8oIkd1QyBm dyBsb2FkIGZhaWxlZDogJWQ7IHdpbGwgcmVzZXQgYW5kICIKLQkJCSAicmV0cnkgJWQgbW9yZSB0 aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwotCX0KKwlpZiAocmV0KQorCQlyZXR1cm4gLUVBR0FJ TjsKIAogCWd1Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwog Ci0JaW50ZWxfZ3VjX2F1dGhfaHVjKGRldl9wcml2KTsKLQotCWlmIChpOTE1LmVuYWJsZV9ndWNf c3VibWlzc2lvbikgewotCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCi0JCQlnZW45X2Vu YWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Ci0KLQkJZXJyID0gaTkxNV9ndWNfc3VibWlz c2lvbl9lbmFibGUoZGV2X3ByaXYpOwotCQlpZiAoZXJyKQotCQkJZ290byBmYWlsOwotCX0KLQog CURSTV9JTkZPKCJHdUMgJXMgKGZpcm13YXJlICVzIFt2ZXJzaW9uICV1LiV1XSlcbiIsCiAJCSBp OTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA/ICJzdWJtaXNzaW9uIGVuYWJsZWQiIDogImxvYWRl ZCIsCiAJCSBndWMtPmZ3LnBhdGgsCiAJCSBndWMtPmZ3Lm1ham9yX3Zlcl9mb3VuZCwgZ3VjLT5m dy5taW5vcl92ZXJfZm91bmQpOwogCiAJcmV0dXJuIDA7Ci0KLWZhaWw6Ci0JaWYgKGd1Yy0+Zncu bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORykKLQkJZ3VjLT5mdy5sb2Fk X3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7Ci0KLQlpOTE1X2d1Y19zdWJtaXNzaW9u X2Rpc2FibGUoZGV2X3ByaXYpOwotCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7 Ci0JaTkxNV9nZ3R0X2Rpc2FibGVfZ3VjKGRldl9wcml2KTsKLQotCS8qCi0JICogV2UndmUgZmFp bGVkIHRvIGxvYWQgdGhlIGZpcm13YXJlIDooCi0JICoKLQkgKiBEZWNpZGUgd2hldGhlciB0byBk aXNhYmxlIEd1QyBzdWJtaXNzaW9uIGFuZCBmYWxsIGJhY2sgdG8KLQkgKiBleGVjbGlzdCBtb2Rl LCBhbmQgd2hldGhlciB0byBoaWRlIHRoZSBlcnJvciBieSByZXR1cm5pbmcKLQkgKiB6ZXJvIG9y IHRvIHJldHVybiAtRUlPLCB3aGljaCB0aGUgY2FsbGVyIHdpbGwgdHJlYXQgYXMgYQotCSAqIG5v bmZhdGFsIGVycm9yIChpLmUuIGl0IGRvZXNuJ3QgcHJldmVudCBkcml2ZXIgbG9hZCwgYnV0Ci0J ICogbWFya3MgdGhlIEdQVSBhcyB3ZWRnZWQgdW50aWwgcmVzZXQpLgotCSAqLwotCWlmIChpOTE1 LmVuYWJsZV9ndWNfbG9hZGluZyA+IDEpIHsKLQkJcmV0ID0gLUVJTzsKLQl9IGVsc2UgaWYgKGk5 MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID4gMSkgewotCQlyZXQgPSAtRUlPOwotCX0gZWxzZSB7 Ci0JCXJldCA9IDA7Ci0JfQotCi0JaWYgKGVyciA9PSAwICYmICFIQVNfR1VDX1VDT0RFKGRldl9w cml2KSkKLQkJOwkvKiBEb24ndCBtZW50aW9uIHRoZSBHdUMhICovCi0JZWxzZSBpZiAoZXJyID09 IDApCi0JCURSTV9JTkZPKCJHdUMgZmlybXdhcmUgbG9hZCBza2lwcGVkXG4iKTsKLQllbHNlIGlm IChyZXQgIT0gLUVJTykKLQkJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSBsb2FkIGZhaWxlZDogJWRc biIsIGVycik7Ci0JZWxzZQotCQlEUk1fV0FSTigiR3VDIGZpcm13YXJlIGxvYWQgZmFpbGVkOiAl ZFxuIiwgZXJyKTsKLQotCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewotCQlpZiAo ZndfcGF0aCA9PSBOVUxMKQotCQkJRFJNX0lORk8oIkd1QyBzdWJtaXNzaW9uIHdpdGhvdXQgZmly bXdhcmUgbm90IHN1cHBvcnRlZFxuIik7Ci0JCWlmIChyZXQgPT0gMCkKLQkJCURSTV9OT1RFKCJG YWxsaW5nIGJhY2sgZnJvbSBHdUMgc3VibWlzc2lvbiB0byBleGVjbGlzdCBtb2RlXG4iKTsKLQkJ ZWxzZQotCQkJRFJNX0VSUk9SKCJHdUMgaW5pdCBmYWlsZWQ6ICVkXG4iLCByZXQpOwotCX0KLQlp OTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5jCmluZGV4IGYwYTY5ZDQuLjY5ZjIxY2MgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuYwpAQCAtMjYsNiArMjYsMjcgQEAKICNpbmNsdWRlICJpbnRlbF91Yy5oIgogI2lu Y2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CiAKKy8qIFJlc2V0IEd1QyBwcm92aWRpbmcgdXMgd2l0 aCBmcmVzaCBzdGF0ZSBmb3IgYm90aCBHdUMgYW5kIEh1Qy4KKyAqLworc3RhdGljIGludCBfX2lu dGVsX3VjX3Jlc2V0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlp bnQgcmV0OworCXUzMiBndWNfc3RhdHVzOworCisJcmV0ID0gaW50ZWxfZ3VjX3Jlc2V0KGRldl9w cml2KTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiR3VDIHJlc2V0IGZhaWxlZCwgcmV0ID0g JWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZ3VjX3N0YXR1cyA9IEk5MTVfUkVB RChHVUNfU1RBVFVTKTsKKwlXQVJOKCEoZ3VjX3N0YXR1cyAmIEdTX01JQV9JTl9SRVNFVCksCisJ ICAgICAiR3VDIHN0YXR1czogMHgleCwgTUlBIGNvcmUgZXhwZWN0ZWQgdG8gYmUgaW4gcmVzZXRc biIsCisJICAgICBndWNfc3RhdHVzKTsKKworCXJldHVybiByZXQ7Cit9CisKIHZvaWQgaW50ZWxf dWNfc2FuaXRpemVfb3B0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 CiAJaWYgKCFIQVNfR1VDKGRldl9wcml2KSkgewpAQCAtNjMsNiArODQsOTYgQEAgdm9pZCBpbnRl bF91Y19pbml0X2Z3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpbnRlbF9n dWNfaW5pdF9mdygmZGV2X3ByaXYtPmd1Yyk7CiB9CiAKK2ludCBpbnRlbF91Y19pbml0X2h3KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgcmV0LCBhdHRlbXB0czsK KworCS8qIEd1QyBub3QgZW5hYmxlZCwgbm90aGluZyB0byBkbyAqLworCWlmICghaTkxNS5lbmFi bGVfZ3VjX2xvYWRpbmcpCisJCXJldHVybiAwOworCisJZ2VuOV9yZXNldF9ndWNfaW50ZXJydXB0 cyhkZXZfcHJpdik7CisKKwkvKiBXZSBuZWVkIHRvIG5vdGlmeSB0aGUgZ3VjIHdoZW5ldmVyIHdl IGNoYW5nZSB0aGUgR0dUVCAqLworCWk5MTVfZ2d0dF9lbmFibGVfZ3VjKGRldl9wcml2KTsKKwor CWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgeworCQlyZXQgPSBpOTE1X2d1Y19zdWJt aXNzaW9uX2luaXQoZGV2X3ByaXYpOworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJfQorCisJ LyogV2FFbmFibGV1S2VybmVsSGVhZGVyVmFsaWRGaXg6c2tsICovCisJLyogV2FFbmFibGVHdUNC b290SGFzaENoZWNrTm90U2V0OnNrbCxieHQsa2JsICovCisJaWYgKElTX0dFTjkoZGV2X3ByaXYp KQorCQlhdHRlbXB0cyA9IDM7CisJZWxzZQorCQlhdHRlbXB0cyA9IDE7CisKKwl3aGlsZSAoYXR0 ZW1wdHMtLSkgeworCQkvKgorCQkgKiBBbHdheXMgcmVzZXQgdGhlIEd1QyBqdXN0IGJlZm9yZSAo cmUpbG9hZGluZywgc28KKwkJICogdGhhdCB0aGUgc3RhdGUgYW5kIHRpbWluZyBhcmUgZmFpcmx5 IHByZWRpY3RhYmxlCisJCSAqLworCQlyZXQgPSBfX2ludGVsX3VjX3Jlc2V0X2h3KGRldl9wcml2 KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyX3N1Ym1pc3Npb247CisKKwkJaW50ZWxfaHVjX2lu aXRfaHcoJmRldl9wcml2LT5odWMpOworCQlyZXQgPSBpbnRlbF9ndWNfaW5pdF9odygmZGV2X3By aXYtPmd1Yyk7CisJCWlmIChyZXQgPT0gMCB8fCByZXQgIT0gLUVBR0FJTikKKwkJCWJyZWFrOwor CisJCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBsb2FkIGZhaWxlZDogJWQ7IHdpbGwgcmVzZXQg YW5kICIKKwkJCQkgInJldHJ5ICVkIG1vcmUgdGltZShzKVxuIiwgcmV0LCBhdHRlbXB0cyk7CisJ fQorCisJLyogRGlkIHdlIHN1Y2NlZGVkIG9yIHJ1biBvdXQgb2YgcmV0cmllcz8gKi8KKwlpZiAo cmV0KQorCQlnb3RvIGVycl9zdWJtaXNzaW9uOworCisJaW50ZWxfZ3VjX2F1dGhfaHVjKGRldl9w cml2KTsKKwlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKKwkJaWYgKGk5MTUuZ3Vj X2xvZ19sZXZlbCA+PSAwKQorCQkJZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYp OworCisJCXJldCA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKGRldl9wcml2KTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyX3N1Ym1pc3Npb247CisJfQorCisJcmV0dXJuIDA7CisKKwkvKgor CSAqIFdlJ3ZlIGZhaWxlZCB0byBsb2FkIHRoZSBmaXJtd2FyZSA6KAorCSAqCisJICogRGVjaWRl IHdoZXRoZXIgdG8gZGlzYWJsZSBHdUMgc3VibWlzc2lvbiBhbmQgZmFsbCBiYWNrIHRvCisJICog ZXhlY2xpc3QgbW9kZSwgYW5kIHdoZXRoZXIgdG8gaGlkZSB0aGUgZXJyb3IgYnkgcmV0dXJuaW5n CisJICogemVybyBvciB0byByZXR1cm4gLUVJTywgd2hpY2ggdGhlIGNhbGxlciB3aWxsIHRyZWF0 IGFzIGEKKwkgKiBub25mYXRhbCBlcnJvciAoaS5lLiBpdCBkb2Vzbid0IHByZXZlbnQgZHJpdmVy IGxvYWQsIGJ1dAorCSAqIG1hcmtzIHRoZSBHUFUgYXMgd2VkZ2VkIHVudGlsIHJlc2V0KS4KKwkg Ki8KK2Vycl9zdWJtaXNzaW9uOgorCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKKwkJ aTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKKworZXJyOgorCWk5MTVfZ2d0dF9k aXNhYmxlX2d1YyhkZXZfcHJpdik7CisKKwlEUk1fRVJST1IoIkd1QyBpbml0IGZhaWxlZFxuIik7 CisJaWYgKGk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nID4gMSB8fCBpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbiA+IDEpCisJCXJldCA9IC1FSU87CisJZWxzZQorCQlyZXQgPSAwOworCisJaWYgKGk5 MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7CisJCWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9u ID0gMDsKKwkJRFJNX05PVEUoIkZhbGxpbmcgYmFjayBmcm9tIEd1QyBzdWJtaXNzaW9uIHRvIGV4 ZWNsaXN0IG1vZGVcbiIpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKIC8qCiAgKiBSZWFkIEd1 QyBjb21tYW5kL3N0YXR1cyByZWdpc3RlciAoU09GVF9TQ1JBVENIXzApCiAgKiBSZXR1cm4gdHJ1 ZSBpZiBpdCBjb250YWlucyBhIHJlc3BvbnNlIHJhdGhlciB0aGFuIGEgY29tbWFuZApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VjLmgKaW5kZXggYzUxNzllZi4uNzk0ZTZlYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Yy5oCkBAIC0xODcsNiArMTg3LDcgQEAgc3RydWN0IGludGVsX2h1YyB7CiB2b2lkIGludGVs X3VjX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBpbnRlbF91Y19pbml0X2Z3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CitpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwogdm9pZCBpbnRlbF91Y19wcmVwYXJlX2Z3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCSBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKIGludCBpbnRlbF9n dWNfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVu KTsKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK