From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v8 06/13] drm/i915/perf: implement active wait for noa configurations Date: Tue, 9 Jul 2019 15:33:44 +0300 Message-ID: <20190709123351.5645-7-lionel.g.landwerlin@intel.com> References: <20190709123351.5645-1-lionel.g.landwerlin@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 7CCA3896F7 for ; Tue, 9 Jul 2019 12:34:20 +0000 (UTC) In-Reply-To: <20190709123351.5645-1-lionel.g.landwerlin@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 Tk9BIGNvbmZpZ3VyYXRpb24gdGFrZSBzb21lIGFtb3VudCBvZiB0aW1lIHRvIGFwcGx5LiBUaGF0 IGFtb3VudCBvZgp0aW1lIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIEdULiBUaGVyZSBpcyBu byBkb2N1bWVudGVkIHRpbWUgZm9yCnRoaXMuIEZvciBleGFtcGxlLCBwYXN0IGV4cGVyaW1lbnRh dGlvbnMgd2l0aCBwb3dlcmdhdGluZwpjb25maWd1cmF0aW9uIGNoYW5nZXMgc2VlbSB0byBpbmRp Y2F0ZSBhIDYwfjcwdXMgZGVsYXkuIFdlIGdvIHdpdGgKNTAwdXMgYXMgZGVmYXVsdCBmb3Igbm93 IHdoaWNoIHNob3VsZCBiZSBvdmVyIHRoZSByZXF1aXJlZCBhbW91bnQgb2YKdGltZSAoYWNjb3Jk aW5nIHRvIEhXIGFyY2hpdGVjdHMpLgoKdjI6IERvbid0IGZvcmdldCB0byBzYXZlL3Jlc3RvcmUg cmVnaXN0ZXJzIHVzZWQgZm9yIHRoZSB3YWl0IChDaHJpcykKCnYzOiBOYW1lIHVzZWQgQ1NfR1BS IHJlZ2lzdGVycyAoQ2hyaXMpCiAgICBGaXggY29tcGlsZSBpc3N1ZSBkdWUgdG8gcmViYXNlIChM aW9uZWwpCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdl cmxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFu ZHMuaCB8ICAyNCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCAg ICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAg fCAgMzEgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8 ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICB8IDIy NiArKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAg ICAgICAgICAgICB8ICAgNCArLQogNiBmaWxlcyBjaGFuZ2VkLCAyOTUgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ncHVfY29tbWFuZHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21t YW5kcy5oCmluZGV4IGU3ZWZmOWRiMzQzZS4uNGE2NmFmMzhjODdiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaApAQCAtMTUxLDYgKzE1MSw3IEBACiAj ZGVmaW5lICAgTUlfQkFUQ0hfR1RUCQkgICAgKDI8PDYpIC8qIGFsaWFzZWQgd2l0aCAoMTw8Nykg b24gZ2VuNCAqLwogI2RlZmluZSBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOAlNSV9JTlNUUigw eDMxLCAxKQogI2RlZmluZSAgIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSICgxPDwxMCkKKyNk ZWZpbmUgICBNSV9CQVRDSF9QUkVESUNBVEUgICAgICAgICAoMSA8PCAxNSkgLyogSFNXKyBvbiBS Q1Mgb25seSovCiAKIC8qCiAgKiAzRCBpbnN0cnVjdGlvbnMgdXNlZCBieSB0aGUga2VybmVsCkBA IC0yMjYsNiArMjI3LDI5IEBACiAjZGVmaW5lICAgUElQRV9DT05UUk9MX0RFUFRIX0NBQ0hFX0ZM VVNICQkoMTw8MCkKICNkZWZpbmUgICBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCAoMTw8MikgLyog aW4gYWRkciBkd29yZCAqLwogCisjZGVmaW5lIE1JX01BVEgoeCkgTUlfSU5TVFIoMHgxYSwgKHgp LTEpCisjZGVmaW5lICAgTUlfQUxVX09QKG9wLCBzcmMxLCBzcmMyKSAoKChvcCkgPDwgMjApIHwg KChzcmMxKSA8PCAxMCkgfCAoc3JjMikpCisvKiBvcGVyYW5kcyAqLworI2RlZmluZSAgIE1JX0FM VV9PUF9OT09QICAgICAwCisjZGVmaW5lICAgTUlfQUxVX09QX0xPQUQgICAgIDEyOAorI2RlZmlu ZSAgIE1JX0FMVV9PUF9MT0FESU5WICAxMTUyCisjZGVmaW5lICAgTUlfQUxVX09QX0xPQUQwICAg IDEyOQorI2RlZmluZSAgIE1JX0FMVV9PUF9MT0FEMSAgICAxMTUzCisjZGVmaW5lICAgTUlfQUxV X09QX0FERCAgICAgIDI1NgorI2RlZmluZSAgIE1JX0FMVV9PUF9TVUIgICAgICAyNTcKKyNkZWZp bmUgICBNSV9BTFVfT1BfQU5EICAgICAgMjU4CisjZGVmaW5lICAgTUlfQUxVX09QX09SICAgICAg IDI1OQorI2RlZmluZSAgIE1JX0FMVV9PUF9YT1IgICAgICAyNjAKKyNkZWZpbmUgICBNSV9BTFVf T1BfU1RPUkUgICAgMzg0CisjZGVmaW5lICAgTUlfQUxVX09QX1NUT1JFSU5WIDE0MDgKKy8qIHNv dXJjZXMgKi8KKyNkZWZpbmUgICBNSV9BTFVfU1JDX1JFRyh4KSAgKHgpIC8qIDAgLT4gMTUgKi8K KyNkZWZpbmUgICBNSV9BTFVfU1JDX1NSQ0EgICAgMzIKKyNkZWZpbmUgICBNSV9BTFVfU1JDX1NS Q0IgICAgMzMKKyNkZWZpbmUgICBNSV9BTFVfU1JDX0FDQ1UgICAgNDkKKyNkZWZpbmUgICBNSV9B TFVfU1JDX1pGICAgICAgNTAKKyNkZWZpbmUgICBNSV9BTFVfU1JDX0NGICAgICAgNTEKKwogLyoK ICAqIENvbW1hbmRzIHVzZWQgb25seSBieSB0aGUgY29tbWFuZCBwYXJzZXIKICAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKaW5kZXggMzU2M2NlOTcwMTAyLi5hMzE0 MWI3OWQzNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5 cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaApAQCAt NzMsNiArNzMsMTEgQEAgZW51bSBpbnRlbF9ndF9zY3JhdGNoX2ZpZWxkIHsKIAkvKiA4IGJ5dGVz ICovCiAJSU5URUxfR1RfU0NSQVRDSF9GSUVMRF9DT0hFUkVOVEwzX1dBID0gMjU2LAogCisJLyog NiAqIDggYnl0ZXMgKi8KKwlJTlRFTF9HVF9TQ1JBVENIX0ZJRUxEX1BFUkZfQ1NfR1BSID0gMjA0 OCwKKworCS8qIDQgYnl0ZXMgKi8KKwlJTlRFTF9HVF9TQ1JBVENIX0ZJRUxEX1BFUkZfUFJFRElD QVRFX1JFU1VMVF8xID0gMjA5NiwKIH07CiAKICNlbmRpZiAvKiBfX0lOVEVMX0dUX1RZUEVTX0hf XyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAzZTRmNThmMTkzNjIuLjQ2 ZmNhNTNkZmJkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTM2NTMsNiAr MzY1MywzNiBAQCBERUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1X3dlZGdlZF9mb3BzLAogCQkJ aTkxNV93ZWRnZWRfZ2V0LCBpOTE1X3dlZGdlZF9zZXQsCiAJCQkiJWxsdVxuIik7CiAKK3N0YXRp YyBpbnQKK2k5MTVfcGVyZl9ub2FfZGVsYXlfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkYXRhOworCisJLyogVGhpcyB3b3VsZCBs ZWFkIHRvIGluZmluaXRlIHdhaXRzIGFzIHdlJ3JlIGRvaW5nIHRpbWVzdGFtcAorCSAqIGRpZmZl cmVuY2Ugb24gdGhlIENTIHdpdGggb25seSAzMmJpdHMuCisJICovCisJaWYgKHZhbCA+ICgoMXVs IDw8IDMyKSAtIDEpICogUlVOVElNRV9JTkZPKGk5MTUpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5 X2toeikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlhdG9taWM2NF9zZXQoJmk5MTUtPnBlcmYub2Eu bm9hX3Byb2dyYW1taW5nX2RlbGF5LCB2YWwpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 CitpOTE1X3BlcmZfbm9hX2RlbGF5X2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRhdGE7CisKKwkqdmFsID0gYXRvbWljNjRfcmVh ZCgmaTkxNS0+cGVyZi5vYS5ub2FfcHJvZ3JhbW1pbmdfZGVsYXkpOworCXJldHVybiAwOworfQor CitERUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1X3BlcmZfbm9hX2RlbGF5X2ZvcHMsCisJCQlp OTE1X3BlcmZfbm9hX2RlbGF5X2dldCwKKwkJCWk5MTVfcGVyZl9ub2FfZGVsYXlfc2V0LAorCQkJ IiVsbHVcbiIpOworCisKICNkZWZpbmUgRFJPUF9VTkJPVU5ECUJJVCgwKQogI2RlZmluZSBEUk9Q X0JPVU5ECUJJVCgxKQogI2RlZmluZSBEUk9QX1JFVElSRQlCSVQoMikKQEAgLTQ0MTgsNiArNDQ0 OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKIAljb25zdCBj aGFyICpuYW1lOwogCWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHM7CiB9IGk5MTVf ZGVidWdmc19maWxlc1tdID0geworCXsiaTkxNV9wZXJmX25vYV9kZWxheSIsICZpOTE1X3BlcmZf bm9hX2RlbGF5X2ZvcHN9LAogCXsiaTkxNV93ZWRnZWQiLCAmaTkxNV93ZWRnZWRfZm9wc30sCiAJ eyJpOTE1X2NhY2hlX3NoYXJpbmciLCAmaTkxNV9jYWNoZV9zaGFyaW5nX2ZvcHN9LAogCXsiaTkx NV9nZW1fZHJvcF9jYWNoZXMiLCAmaTkxNV9kcm9wX2NhY2hlc19mb3BzfSwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCmluZGV4IDA0MTlkZmQwZGVhMy4uYjNjNmRkNzJjN2ExIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKQEAgLTE4MzQsNiArMTgzNCwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7CiAKIAkJCXN0cnVjdCBpOTE1X29hX29wcyBvcHM7CiAJCQljb25zdCBzdHJ1Y3QgaTkxNV9v YV9mb3JtYXQgKm9hX2Zvcm1hdHM7CisKKwkJCS8qKgorCQkJICogQSBiYXRjaCBidWZmZXIgZG9p bmcgYSB3YWl0IG9uIHRoZSBHUFUgZm9yIHRoZSBOT0EKKwkJCSAqIGxvZ2ljIHRvIGJlIHJlcHJv Z3JhbW1lZC4KKwkJCSAqLworCQkJc3RydWN0IGk5MTVfdm1hICpub2Ffd2FpdDsKKworCQkJYXRv bWljNjRfdCBub2FfcHJvZ3JhbW1pbmdfZGVsYXk7CiAJCX0gb2E7CiAJfSBwZXJmOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IDg4MmQ3MDU2YWVjMy4uYWJmYTQzN2E5NWI3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMTk3LDYgKzE5Nyw3IEBACiAKICNpbmNsdWRlICJn ZW0vaTkxNV9nZW1fY29udGV4dC5oIgogI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgorI2lu Y2x1ZGUgImd0L2ludGVsX2d0LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgogCiAj aW5jbHVkZSAiaTkxNV9kcnYuaCIKQEAgLTQyOSw3ICs0MzAsNyBAQCBzdGF0aWMgaW50IGFsbG9j X29hX2NvbmZpZ19idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJCSAg ICAgIE1JX0xPQURfUkVHSVNURVJfSU1NX01BWF9SRUdTKSAqIDQ7CiAJCWNvbmZpZ19sZW5ndGgg Kz0gb2FfY29uZmlnLT5mbGV4X3JlZ3NfbGVuICogODsKIAl9Ci0JY29uZmlnX2xlbmd0aCArPSA0 OyAvKiBNSV9CQVRDSF9CVUZGRVJfRU5EICovCisJY29uZmlnX2xlbmd0aCArPSAxMjsgLyogTUlf QkFUQ0hfQlVGRkVSX1NUQVJUIGludG8gbm9hX3dhaXQgbG9vcCAqLwogCWNvbmZpZ19sZW5ndGgg PSBBTElHTihjb25maWdfbGVuZ3RoLCBJOTE1X0dUVF9QQUdFX1NJWkUpOwogCiAJYm8gPSBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtKGk5MTUsIGNvbmZpZ19sZW5ndGgpOwpAQCAtNDQ2LDcg KzQ0NywxMiBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2NvbmZpZ19idWZmZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJY3MgPSB3cml0ZV9jc19taV9scmkoY3MsIG9hX2NvbmZpZy0+ Yl9jb3VudGVyX3JlZ3MsIG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuKTsKIAljcyA9IHdy aXRlX2NzX21pX2xyaShjcywgb2FfY29uZmlnLT5mbGV4X3JlZ3MsIG9hX2NvbmZpZy0+ZmxleF9y ZWdzX2xlbik7CiAKLQkqY3MrKyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisKKwkvKiBKdW1wIGlu dG8gdGhlIE5PQSB3YWl0IGJ1c3kgbG9vcC4gKi8KKwkqY3MrKyA9IChJTlRFTF9HRU4oaTkxNSkg PCA4ID8KKwkJIE1JX0JBVENIX0JVRkZFUl9TVEFSVCA6IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9H RU44KTsKKwkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQoaTkxNS0+cGVyZi5vYS5ub2Ffd2FpdCk7 CisJKmNzKysgPSAwOwogCiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChibyk7CiAJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChibyk7CkBAIC0xNDY3LDYgKzE0NzMsNyBAQCBzdGF0aWMgdm9p ZCBpOTE1X29hX3N0cmVhbV9kZXN0cm95KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0p CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWRldl9wcml2LT5w ZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOwogCWRldl9wcml2LT5wZXJmLm9hLm9wcy5k aXNhYmxlX21ldHJpY19zZXQoZGV2X3ByaXYpOworCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNl KCZkZXZfcHJpdi0+cGVyZi5vYS5ub2Ffd2FpdCwgMCk7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAlmcmVlX29hX2J1ZmZlcihkZXZfcHJpdik7CkBAIC0x NjUzLDYgKzE2NjAsMjA1IEBAIHN0YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdTMyICpz YXZlX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgKmNzLAorCQkJ ICBpOTE1X3JlZ190IHJlZywgdTMyIG9mZnNldCwgdTMyIGR3b3JkX2NvdW50KQoreworCXVpbnQz Ml90IGQ7CisKKwlmb3IgKGQgPSAwOyBkIDwgZHdvcmRfY291bnQ7IGQrKykgeworCQkqY3MrKyA9 IElOVEVMX0dFTihpOTE1KSA+PSA4ID8KKwkJCU1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IDog TUlfU1RPUkVfUkVHSVNURVJfTUVNOworCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJl ZykgKyA0ICogZDsKKwkJKmNzKysgPSBpbnRlbF9ndF9zY3JhdGNoX29mZnNldCgmaTkxNS0+Z3Qs IG9mZnNldCkgKyA0ICogZDsKKwkJKmNzKysgPSAwOworCX0KKworCXJldHVybiBjczsKK30KKwor c3RhdGljIHUzMiAqcmVzdG9yZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgdTMyICpjcywKKwkJCSAgICAgaTkxNV9yZWdfdCByZWcsIHUzMiBvZmZzZXQsIHUzMiBkd29y ZF9jb3VudCkKK3sKKwl1aW50MzJfdCBkOworCisJZm9yIChkID0gMDsgZCA8IGR3b3JkX2NvdW50 OyBkKyspIHsKKwkJKmNzKysgPSBJTlRFTF9HRU4oaTkxNSkgPj0gOCA/CisJCQlNSV9MT0FEX1JF R0lTVEVSX01FTV9HRU44IDogTUlfTE9BRF9SRUdJU1RFUl9NRU07CisJCSpjcysrID0gaTkxNV9t bWlvX3JlZ19vZmZzZXQocmVnKTsKKwkJKmNzKysgPSBpbnRlbF9ndF9zY3JhdGNoX29mZnNldCgm aTkxNS0+Z3QsIG9mZnNldCk7CisJCSpjcysrID0gMDsKKwl9CisKKwlyZXR1cm4gY3M7Cit9CisK K3N0YXRpYyBpbnQgYWxsb2Nfbm9hX3dhaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJvOworCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOworCWNvbnN0IHU2NCBkZWxheV90aWNrcyA9IDB4ZmZmZmZmZmZmZmZmZmZmZiAtCisJCURJ VjY0X1U2NF9ST1VORF9VUCgKKwkJCWF0b21pYzY0X3JlYWQoJmk5MTUtPnBlcmYub2Eubm9hX3By b2dyYW1taW5nX2RlbGF5KSAqCisJCQlSVU5USU1FX0lORk8oaTkxNSktPmNzX3RpbWVzdGFtcF9m cmVxdWVuY3lfa2h6LAorCQkJMTAwMDAwMHVsbCk7CisJdTMyICpiYXRjaCwgKnRzMCwgKmNzLCAq anVtcDsKKwlpbnQgcmV0LCBpOworCWVudW0geyBTVEFSVF9UUywgTk9XX1RTLCBERUxUQV9UUywg SlVNUF9QUkVESUNBVEUsIERFTFRBX1RBUkdFVCwgTl9DU19HUFIgfTsKKworCWJvID0gaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCA0MDk2KTsKKwlpZiAoSVNfRVJSKGJvKSkg eworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBOT0Egd2FpdCBiYXRjaGJ1ZmZlclxu Iik7CisJCXJldHVybiBQVFJfRVJSKGJvKTsKKwl9CisKKwkvKgorCSAqIFdlIHBpbiBpbiBHR1RU IGJlY2F1c2Ugd2UganVtcCBpbnRvIHRoaXMgYnVmZmVyIG5vdyBiZWNhdXNlCisJICogbXVsdGlw bGUgT0EgY29uZmlnIEJPcyB3aWxsIGhhdmUgYSBqdW1wIHRvIHRoaXMgYWRkcmVzcyBhbmQgaXQK KwkgKiBuZWVkcyB0byBiZSBmaXhlZCBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZSBpOTE1L3Bl cmYgc3RyZWFtLgorCSAqLworCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihibywgTlVM TCwgMCwgNDA5NiwgMCk7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCXJldCA9IFBUUl9FUlIodm1h KTsKKwkJZ290byBlcnJfdW5yZWY7CisJfQorCisJYmF0Y2ggPSBjcyA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKGJvLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUihiYXRjaCkpIHsKKwkJcmV0 ID0gUFRSX0VSUihiYXRjaCk7CisJCWdvdG8gZXJyX3VucGluOworCX0KKworCS8qIFNhdmUgcmVn aXN0ZXJzLiAqLworCWZvciAoaSA9IDA7IGkgPCBOX0NTX0dQUjsgaSsrKSB7CisJCWNzID0gc2F2 ZV9yZWdpc3RlcihpOTE1LCBjcywgSFNXX0NTX0dQUihpKSwKKwkJCQkgICBJTlRFTF9HVF9TQ1JB VENIX0ZJRUxEX1BFUkZfQ1NfR1BSICsgOCAqIGksIDIpOworCX0KKwljcyA9IHNhdmVfcmVnaXN0 ZXIoaTkxNSwgY3MsIE1JX1BSRURJQ0FURV9SRVNVTFRfMSwKKwkJCSAgIElOVEVMX0dUX1NDUkFU Q0hfRklFTERfUEVSRl9QUkVESUNBVEVfUkVTVUxUXzEsIDEpOworCisJLyogRmlyc3QgdGltZXN0 YW1wIHNuYXBzaG90IGxvY2F0aW9uLiAqLworCXRzMCA9IGNzOworCisJLyoKKwkgKiBJbml0aWFs IHNuYXBzaG90IG9mIHRoZSB0aW1lc3RhbXAgcmVnaXN0ZXIgdG8gaW1wbGVtZW50IHRoZSB3YWl0 LgorCSAqIFdlIHdvcmsgd2l0aCAzMmIgdmFsdWVzLCBzbyBjbGVhciBvdXQgdGhlIHRvcCAzMmIg Yml0cyBvZiB0aGUKKwkgKiByZWdpc3RlciBiZWNhdXNlIHRoZSBBTFUgd29ya3MgNjRiaXRzLgor CSAqLworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7CisJKmNzKysgPSBpOTE1X21t aW9fcmVnX29mZnNldChIU1dfQ1NfR1BSKFNUQVJUX1RTKSkgKyA0OworCSpjcysrID0gMDsKKwkq Y3MrKyA9IE1JX0xPQURfUkVHSVNURVJfUkVHIHwgKDMgLSAyKTsKKwkqY3MrKyA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KFJJTkdfVElNRVNUQU1QKFJFTkRFUl9SSU5HX0JBU0UpKTsKKwkqY3MrKyA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEhTV19DU19HUFIoU1RBUlRfVFMpKTsKKworCS8qCisJICog VGhpcyBpcyB0aGUgbG9jYXRpb24gd2UncmUgZ29pbmcgdG8ganVtcCBiYWNrIGludG8gdW50aWwg dGhlCisJICogcmVxdWlyZWQgYW1vdW50IG9mIHRpbWUgaGFzIHBhc3NlZC4KKwkgKi8KKwlqdW1w ID0gY3M7CisKKwkvKgorCSAqIFRha2UgYW5vdGhlciBzbmFwc2hvdCBvZiB0aGUgdGltZXN0YW1w IHJlZ2lzdGVyLiBUYWtlIGNhcmUgdG8gY2xlYXIKKwkgKiB1cCB0aGUgdG9wIDMyYml0cyBvZiBD U19HUFIoMSkgYXMgd2UncmUgdXNpbmcgaXQgZm9yIG90aGVyCisJICogb3BlcmF0aW9ucyBiZWxv dy4KKwkgKi8KKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOworCSpjcysrID0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoSFNXX0NTX0dQUihOT1dfVFMpKSArIDQ7CisJKmNzKysgPSAwOwor CSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9SRUcgfCAoMyAtIDIpOworCSpjcysrID0gaTkxNV9t bWlvX3JlZ19vZmZzZXQoUklOR19USU1FU1RBTVAoUkVOREVSX1JJTkdfQkFTRSkpOworCSpjcysr ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoSFNXX0NTX0dQUihOT1dfVFMpKTsKKworCS8qCisJICog RG8gYSBkaWZmIGJldHdlZW4gdGhlIDIgdGltZXN0YW1wcyBhbmQgc3RvcmUgdGhlIHJlc3VsdCBi YWNrIGludG8KKwkgKiBDU19HUFIoMSkuCisJICovCisJKmNzKysgPSBNSV9NQVRIKDUpOworCSpj cysrID0gTUlfQUxVX09QKE1JX0FMVV9PUF9MT0FELCBNSV9BTFVfU1JDX1NSQ0EsIE1JX0FMVV9T UkNfUkVHKE5PV19UUykpOworCSpjcysrID0gTUlfQUxVX09QKE1JX0FMVV9PUF9MT0FELCBNSV9B TFVfU1JDX1NSQ0IsIE1JX0FMVV9TUkNfUkVHKFNUQVJUX1RTKSk7CisJKmNzKysgPSBNSV9BTFVf T1AoTUlfQUxVX09QX1NVQiwgMCwgMCk7CisJKmNzKysgPSBNSV9BTFVfT1AoTUlfQUxVX09QX1NU T1JFLCBNSV9BTFVfU1JDX1JFRyhERUxUQV9UUyksIE1JX0FMVV9TUkNfQUNDVSk7CisJKmNzKysg PSBNSV9BTFVfT1AoTUlfQUxVX09QX1NUT1JFLCBNSV9BTFVfU1JDX1JFRyhKVU1QX1BSRURJQ0FU RSksIE1JX0FMVV9TUkNfQ0YpOworCisJLyoKKwkgKiBUcmFuc2ZlciB0aGUgY2FycnkgZmxhZyAo c2V0IHRvIDEgaWYgdHMxIDwgdHMwLCBtZWFuaW5nIHRoZQorCSAqIHRpbWVzdGFtcCBoYXZlIHJv bGxlZCBvdmVyIHRoZSAzMmJpdHMpIGludG8gdGhlIHByZWRpY2F0ZSByZWdpc3RlcgorCSAqIHRv IGJlIHVzZWQgZm9yIHRoZSBwcmVkaWNhdGVkIGp1bXAuCisJICovCisJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX1JFRyB8ICgzIC0gMik7CisJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChI U1dfQ1NfR1BSKEpVTVBfUFJFRElDQVRFKSk7CisJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNl dChNSV9QUkVESUNBVEVfUkVTVUxUXzEpOworCisJLyogUmVzdGFydCBmcm9tIHRoZSBiZWdpbm5p bmcgaWYgd2UgaGFkIHRpbWVzdGFtcHMgcm9sbCBvdmVyLiAqLworCSpjcysrID0gKElOVEVMX0dF TihpOTE1KSA8IDggPworCQkgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIDogTUlfQkFUQ0hfQlVGRkVS X1NUQVJUX0dFTjgpIHwKKwkJTUlfQkFUQ0hfUFJFRElDQVRFOworCSpjcysrID0gaTkxNV9nZ3R0 X29mZnNldCh2bWEpICsgKHRzMCAtIGJhdGNoKSAqIDQ7CisJKmNzKysgPSAwOworCisJLyoKKwkg KiBOb3cgYWRkIHRoZSBkaWZmIGJldHdlZW4gdG8gcHJldmlvdXMgdGltZXN0YW1wcyBhbmQgYWRk IGl0IHRvIDoKKwkgKiAgICAgICgoKDEgKiA8PCA2NCkgLSAxKSAtIGRlbGF5X25zKQorCSAqCisJ ICogV2hlbiB0aGUgQ2FycnkgRmxhZyBjb250YWlucyAxIHRoaXMgbWVhbnMgdGhlIGVsYXBzZWQg dGltZSBpcworCSAqIGxvbmdlciB0aGFuIHRoZSBleHBlY3RlZCBkZWxheSwgYW5kIHdlIGNhbiBl eGl0IHRoZSB3YWl0IGxvb3AuCisJICovCisJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgy KTsKKwkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEhTV19DU19HUFIoREVMVEFfVEFSR0VU KSk7CisJKmNzKysgPSBsb3dlcl8zMl9iaXRzKGRlbGF5X3RpY2tzKTsKKwkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEhTV19DU19HUFIoREVMVEFfVEFSR0VUKSkgKyA0OworCSpjcysrID0g dXBwZXJfMzJfYml0cyhkZWxheV90aWNrcyk7CisKKwkqY3MrKyA9IE1JX01BVEgoNCk7CisJKmNz KysgPSBNSV9BTFVfT1AoTUlfQUxVX09QX0xPQUQsIE1JX0FMVV9TUkNfU1JDQSwgTUlfQUxVX1NS Q19SRUcoREVMVEFfVFMpKTsKKwkqY3MrKyA9IE1JX0FMVV9PUChNSV9BTFVfT1BfTE9BRCwgTUlf QUxVX1NSQ19TUkNCLCBNSV9BTFVfU1JDX1JFRyhERUxUQV9UQVJHRVQpKTsKKwkqY3MrKyA9IE1J X0FMVV9PUChNSV9BTFVfT1BfQURELCAwLCAwKTsKKwkqY3MrKyA9IE1JX0FMVV9PUChNSV9BTFVf T1BfU1RPUkVJTlYsIE1JX0FMVV9TUkNfUkVHKEpVTVBfUFJFRElDQVRFKSwgTUlfQUxVX1NSQ19D Rik7CisKKwkvKgorCSAqIFRyYW5zZmVyIHRoZSByZXN1bHQgaW50byB0aGUgcHJlZGljYXRlIHJl Z2lzdGVyIHRvIGJlIHVzZWQgZm9yIHRoZQorCSAqIHByZWRpY2F0ZWQganVtcC4KKwkgKi8KKwkq Y3MrKyA9IE1JX0xPQURfUkVHSVNURVJfUkVHIHwgKDMgLSAyKTsKKwkqY3MrKyA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KEhTV19DU19HUFIoSlVNUF9QUkVESUNBVEUpKTsKKwkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KE1JX1BSRURJQ0FURV9SRVNVTFRfMSk7CisKKwkvKiBQcmVkaWNhdGUg dGhlIGp1bXAuICAqLworCSpjcysrID0gKElOVEVMX0dFTihpOTE1KSA8IDggPworCQkgTUlfQkFU Q0hfQlVGRkVSX1NUQVJUIDogTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjgpIHwKKwkJTUlfQkFU Q0hfUFJFRElDQVRFOworCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgKGp1bXAgLSBi YXRjaCkgKiA0OworCSpjcysrID0gMDsKKworCS8qIFJlc3RvcmUgcmVnaXN0ZXJzLiAqLworCWZv ciAoaSA9IDA7IGkgPCBOX0NTX0dQUjsgaSsrKSB7CisJCWNzID0gcmVzdG9yZV9yZWdpc3Rlcihp OTE1LCBjcywgSFNXX0NTX0dQUihpKSwKKwkJCQkgICAgICBJTlRFTF9HVF9TQ1JBVENIX0ZJRUxE X1BFUkZfQ1NfR1BSICsgOCAqIGksIDIpOworCX0KKwljcyA9IHJlc3RvcmVfcmVnaXN0ZXIoaTkx NSwgY3MsIE1JX1BSRURJQ0FURV9SRVNVTFRfMSwKKwkJCSAgICAgIElOVEVMX0dUX1NDUkFUQ0hf RklFTERfUEVSRl9QUkVESUNBVEVfUkVTVUxUXzEsIDEpOworCisJLyogQW5kIHJldHVybiB0byB0 aGUgcmluZy4gKi8KKwkqY3MrKyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisKKwlHRU1fQlVHX09O KChjcyAtIGJhdGNoKSA+IChQQUdFX1NJWkUgLyBzaXplb2YoKmJhdGNoKSkpOworCisJaTkxNV9n ZW1fb2JqZWN0X2ZsdXNoX21hcChibyk7CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChibyk7 CisKKwlpOTE1LT5wZXJmLm9hLm5vYV93YWl0ID0gdm1hOworCisJcmV0dXJuIDA7CisKK2Vycl91 bnBpbjoKKwlfX2k5MTVfdm1hX3VucGluKHZtYSk7CisKK2Vycl91bnJlZjoKKwlpOTE1X2dlbV9v YmplY3RfcHV0KGJvKTsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyB2b2lkIGNvbmZpZ19v YV9yZWdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyAqcmVncywKIAkJCSAgIHUzMiBuX3JlZ3MpCkBAIC0yMjIxLDYgKzI0 MjcsMTIgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0sCiAJCWdvdG8gZXJyX2NvbmZpZzsKIAl9CiAKKwlyZXQgPSBhbGxvY19u b2Ffd2FpdChkZXZfcHJpdik7CisJaWYgKHJldCkgeworCQlEUk1fREVCVUcoIlVuYWJsZSB0byBh bGxvY2F0ZSBOT0Egd2FpdCBiYXRjaCBidWZmZXJcbiIpOworCQlnb3RvIGVycl9ub2Ffd2FpdF9h bGxvYzsKKwl9CisKIAkvKiBQUk0gLSBvYnNlcnZhYmlsaXR5IHBlcmZvcm1hbmNlIGNvdW50ZXJz OgogCSAqCiAJICogICBPQUNPTlRST0wsIHBlcmZvcm1hbmNlIGNvdW50ZXIgZW5hYmxlLCBub3Rl OgpAQCAtMjI3Myw2ICsyNDg1LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCWludGVsX3VuY29yZV9mb3JjZXdha2Vf cHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAlpbnRlbF9ydW50aW1lX3Bt X3B1dCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0sIHN0cmVhbS0+d2FrZXJlZik7CiAKKwltdXRleF9s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaTkxNV92bWFfdW5waW5fYW5kX3Jl bGVhc2UoJmRldl9wcml2LT5wZXJmLm9hLm5vYV93YWl0LCAwKTsKKwltdXRleF91bmxvY2soJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKworZXJyX25vYV93YWl0X2FsbG9jOgorCXB1dF9v YV9jb25maWcoc3RyZWFtLT5vYV9jb25maWcpOworCiBlcnJfY29uZmlnOgogCWlmIChzdHJlYW0t PmN0eCkKIAkJb2FfcHV0X3JlbmRlcl9jdHhfaWQoc3RyZWFtKTsKQEAgLTM2NTcsNiArMzg3Niw5 IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCQltdXRleF9pbml0KCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2spOwogCQlpZHJfaW5p dCgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIpOwogCisJCWF0b21pYzY0X3NldCgmZGV2X3By aXYtPnBlcmYub2Eubm9hX3Byb2dyYW1taW5nX2RlbGF5LAorCQkJICAgICA1MDAgKiAxMDAwIC8q IDUwMHVzICovKTsKKwogCQlkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCA9IHRydWU7CiAJfQog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggNTg5OGY1OWUzZGQ3Li5hNzM0NjRkZDVlOTEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtNTY3LDcgKzU2Nyw5IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQogI2RlZmluZSBNSV9Q UkVESUNBVEVfU1JDMF9VRFcJX01NSU8oMHgyNDAwICsgNCkKICNkZWZpbmUgTUlfUFJFRElDQVRF X1NSQzEJX01NSU8oMHgyNDA4KQogI2RlZmluZSBNSV9QUkVESUNBVEVfU1JDMV9VRFcJX01NSU8o MHgyNDA4ICsgNCkKLQorI2RlZmluZSBNSV9QUkVESUNBVEVfREFUQSAgICAgICBfTU1JTygweDI0 MTApCisjZGVmaW5lIE1JX1BSRURJQ0FURV9SRVNVTFQgICAgIF9NTUlPKDB4MjQxOCkKKyNkZWZp bmUgTUlfUFJFRElDQVRFX1JFU1VMVF8xICAgX01NSU8oMHgyNDFjKQogI2RlZmluZSBNSV9QUkVE SUNBVEVfUkVTVUxUXzIJX01NSU8oMHgyMjE0KQogI2RlZmluZSAgTE9XRVJfU0xJQ0VfRU5BQkxF RAkoMSA8PCAwKQogI2RlZmluZSAgTE9XRVJfU0xJQ0VfRElTQUJMRUQJKDAgPDwgMCkKLS0gCjIu MjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4