From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v7 06/12] drm/i915/perf: implement active wait for noa configurations Date: Tue, 9 Jul 2019 12:32:02 +0300 Message-ID: <20190709093208.20470-7-lionel.g.landwerlin@intel.com> References: <20190709093208.20470-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 mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7C96289F9F for ; Tue, 9 Jul 2019 09:32:36 +0000 (UTC) In-Reply-To: <20190709093208.20470-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+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2Nv bW1hbmRzLmggfCAgMjQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVz LmggICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAg ICAgIHwgIDMxICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAg ICAgfCAgIDggKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAgICAg fCAyMjcgKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICAgICAgICAgICAgfCAgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjk2IGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3B1X2NvbW1hbmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVf Y29tbWFuZHMuaAppbmRleCBlN2VmZjlkYjM0M2UuLjRhNjZhZjM4Yzg3YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKQEAgLTE1MSw2ICsxNTEsNyBA QAogI2RlZmluZSAgIE1JX0JBVENIX0dUVAkJICAgICgyPDw2KSAvKiBhbGlhc2VkIHdpdGggKDE8 PDcpIG9uIGdlbjQgKi8KICNkZWZpbmUgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjgJTUlfSU5T VFIoMHgzMSwgMSkKICNkZWZpbmUgICBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiAoMTw8MTAp CisjZGVmaW5lICAgTUlfQkFUQ0hfUFJFRElDQVRFICAgICAgICAgKDEgPDwgMTUpIC8qIEhTVysg b24gUkNTIG9ubHkqLwogCiAvKgogICogM0QgaW5zdHJ1Y3Rpb25zIHVzZWQgYnkgdGhlIGtlcm5l bApAQCAtMjI2LDYgKzIyNywyOSBAQAogI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9ERVBUSF9DQUNI RV9GTFVTSAkJKDE8PDApCiAjZGVmaW5lICAgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQgKDE8PDIp IC8qIGluIGFkZHIgZHdvcmQgKi8KIAorI2RlZmluZSBNSV9NQVRIKHgpIE1JX0lOU1RSKDB4MWEs ICh4KS0xKQorI2RlZmluZSAgIE1JX0FMVV9PUChvcCwgc3JjMSwgc3JjMikgKCgob3ApIDw8IDIw KSB8ICgoc3JjMSkgPDwgMTApIHwgKHNyYzIpKQorLyogb3BlcmFuZHMgKi8KKyNkZWZpbmUgICBN SV9BTFVfT1BfTk9PUCAgICAgMAorI2RlZmluZSAgIE1JX0FMVV9PUF9MT0FEICAgICAxMjgKKyNk ZWZpbmUgICBNSV9BTFVfT1BfTE9BRElOViAgMTE1MgorI2RlZmluZSAgIE1JX0FMVV9PUF9MT0FE MCAgICAxMjkKKyNkZWZpbmUgICBNSV9BTFVfT1BfTE9BRDEgICAgMTE1MworI2RlZmluZSAgIE1J X0FMVV9PUF9BREQgICAgICAyNTYKKyNkZWZpbmUgICBNSV9BTFVfT1BfU1VCICAgICAgMjU3Cisj ZGVmaW5lICAgTUlfQUxVX09QX0FORCAgICAgIDI1OAorI2RlZmluZSAgIE1JX0FMVV9PUF9PUiAg ICAgICAyNTkKKyNkZWZpbmUgICBNSV9BTFVfT1BfWE9SICAgICAgMjYwCisjZGVmaW5lICAgTUlf QUxVX09QX1NUT1JFICAgIDM4NAorI2RlZmluZSAgIE1JX0FMVV9PUF9TVE9SRUlOViAxNDA4Cisv KiBzb3VyY2VzICovCisjZGVmaW5lICAgTUlfQUxVX1NSQ19SRUcoeCkgICh4KSAvKiAwIC0+IDE1 ICovCisjZGVmaW5lICAgTUlfQUxVX1NSQ19TUkNBICAgIDMyCisjZGVmaW5lICAgTUlfQUxVX1NS Q19TUkNCICAgIDMzCisjZGVmaW5lICAgTUlfQUxVX1NSQ19BQ0NVICAgIDQ5CisjZGVmaW5lICAg TUlfQUxVX1NSQ19aRiAgICAgIDUwCisjZGVmaW5lICAgTUlfQUxVX1NSQ19DRiAgICAgIDUxCisK IC8qCiAgKiBDb21tYW5kcyB1c2VkIG9ubHkgYnkgdGhlIGNvbW1hbmQgcGFyc2VyCiAgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCmluZGV4IDM1NjNjZTk3MDEwMi4u YTMxNDFiNzlkMzQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n dF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgK QEAgLTczLDYgKzczLDExIEBAIGVudW0gaW50ZWxfZ3Rfc2NyYXRjaF9maWVsZCB7CiAJLyogOCBi eXRlcyAqLwogCUlOVEVMX0dUX1NDUkFUQ0hfRklFTERfQ09IRVJFTlRMM19XQSA9IDI1NiwKIAor CS8qIDYgKiA4IGJ5dGVzICovCisJSU5URUxfR1RfU0NSQVRDSF9GSUVMRF9QRVJGX0NTX0dQUiA9 IDIwNDgsCisKKwkvKiA0IGJ5dGVzICovCisJSU5URUxfR1RfU0NSQVRDSF9GSUVMRF9QRVJGX1BS RURJQ0FURV9SRVNVTFRfMSA9IDIwOTYsCiB9OwogCiAjZW5kaWYgLyogX19JTlRFTF9HVF9UWVBF U19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggM2U0ZjU4ZjE5MzYy Li40NmZjYTUzZGZiZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0zNjUz LDYgKzM2NTMsMzYgQEAgREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoaTkxNV93ZWRnZWRfZm9wcywK IAkJCWk5MTVfd2VkZ2VkX2dldCwgaTkxNV93ZWRnZWRfc2V0LAogCQkJIiVsbHVcbiIpOwogCitz dGF0aWMgaW50CitpOTE1X3BlcmZfbm9hX2RlbGF5X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGF0YTsKKworCS8qIFRoaXMgd291 bGQgbGVhZCB0byBpbmZpbml0ZSB3YWl0cyBhcyB3ZSdyZSBkb2luZyB0aW1lc3RhbXAKKwkgKiBk aWZmZXJlbmNlIG9uIHRoZSBDUyB3aXRoIG9ubHkgMzJiaXRzLgorCSAqLworCWlmICh2YWwgPiAo KDF1bCA8PCAzMikgLSAxKSAqIFJVTlRJTUVfSU5GTyhpOTE1KS0+Y3NfdGltZXN0YW1wX2ZyZXF1 ZW5jeV9raHopCisJCXJldHVybiAtRUlOVkFMOworCisJYXRvbWljNjRfc2V0KCZpOTE1LT5wZXJm Lm9hLm5vYV9wcm9ncmFtbWluZ19kZWxheSwgdmFsKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludAoraTkxNV9wZXJmX25vYV9kZWxheV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkYXRhOworCisJKnZhbCA9IGF0b21pYzY0 X3JlYWQoJmk5MTUtPnBlcmYub2Eubm9hX3Byb2dyYW1taW5nX2RlbGF5KTsKKwlyZXR1cm4gMDsK K30KKworREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9wZXJmX25vYV9kZWxheV9mb3BzLAor CQkJaTkxNV9wZXJmX25vYV9kZWxheV9nZXQsCisJCQlpOTE1X3BlcmZfbm9hX2RlbGF5X3NldCwK KwkJCSIlbGx1XG4iKTsKKworCiAjZGVmaW5lIERST1BfVU5CT1VORAlCSVQoMCkKICNkZWZpbmUg RFJPUF9CT1VORAlCSVQoMSkKICNkZWZpbmUgRFJPUF9SRVRJUkUJQklUKDIpCkBAIC00NDE4LDYg KzQ0NDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdmc19maWxlcyB7CiAJY29u c3QgY2hhciAqbmFtZTsKIAljb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzOwogfSBp OTE1X2RlYnVnZnNfZmlsZXNbXSA9IHsKKwl7Imk5MTVfcGVyZl9ub2FfZGVsYXkiLCAmaTkxNV9w ZXJmX25vYV9kZWxheV9mb3BzfSwKIAl7Imk5MTVfd2VkZ2VkIiwgJmk5MTVfd2VkZ2VkX2ZvcHN9 LAogCXsiaTkxNV9jYWNoZV9zaGFyaW5nIiwgJmk5MTVfY2FjaGVfc2hhcmluZ19mb3BzfSwKIAl7 Imk5MTVfZ2VtX2Ryb3BfY2FjaGVzIiwgJmk5MTVfZHJvcF9jYWNoZXNfZm9wc30sCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAppbmRleCAwNDE5ZGZkMGRlYTMuLmIzYzZkZDcyYzdhMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCkBAIC0xODM0LDYgKzE4MzQsMTQgQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgewogCiAJCQlzdHJ1Y3QgaTkxNV9vYV9vcHMgb3BzOwogCQkJY29uc3Qgc3RydWN0IGk5 MTVfb2FfZm9ybWF0ICpvYV9mb3JtYXRzOworCisJCQkvKioKKwkJCSAqIEEgYmF0Y2ggYnVmZmVy IGRvaW5nIGEgd2FpdCBvbiB0aGUgR1BVIGZvciB0aGUgTk9BCisJCQkgKiBsb2dpYyB0byBiZSBy ZXByb2dyYW1tZWQuCisJCQkgKi8KKwkJCXN0cnVjdCBpOTE1X3ZtYSAqbm9hX3dhaXQ7CisKKwkJ CWF0b21pYzY0X3Qgbm9hX3Byb2dyYW1taW5nX2RlbGF5OwogCQl9IG9hOwogCX0gcGVyZjsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwppbmRleCA4ODJkNzA1NmFlYzMuLjE4YThmMzg4MzliYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAgLTE5Nyw2ICsxOTcsNyBAQAogCiAjaW5jbHVk ZSAiZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaCIKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcG0uaCIK KyNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgogI2luY2x1ZGUgImd0L2ludGVsX2xyY19yZWcuaCIK IAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCkBAIC00MjksNyArNDMwLDcgQEAgc3RhdGljIGludCBh bGxvY19vYV9jb25maWdfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJ CQkgICAgICBNSV9MT0FEX1JFR0lTVEVSX0lNTV9NQVhfUkVHUykgKiA0OwogCQljb25maWdfbGVu Z3RoICs9IG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbiAqIDg7CiAJfQotCWNvbmZpZ19sZW5ndGgg Kz0gNDsgLyogTUlfQkFUQ0hfQlVGRkVSX0VORCAqLworCWNvbmZpZ19sZW5ndGggKz0gMTI7IC8q IE1JX0JBVENIX0JVRkZFUl9TVEFSVCBpbnRvIG5vYV93YWl0IGxvb3AgKi8KIAljb25maWdfbGVu Z3RoID0gQUxJR04oY29uZmlnX2xlbmd0aCwgSTkxNV9HVFRfUEFHRV9TSVpFKTsKIAogCWJvID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zaG1lbShpOTE1LCBjb25maWdfbGVuZ3RoKTsKQEAgLTQ0 Niw3ICs0NDcsMTIgQEAgc3RhdGljIGludCBhbGxvY19vYV9jb25maWdfYnVmZmVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCWNzID0gd3JpdGVfY3NfbWlfbHJpKGNzLCBvYV9jb25m aWctPmJfY291bnRlcl9yZWdzLCBvYV9jb25maWctPmJfY291bnRlcl9yZWdzX2xlbik7CiAJY3Mg PSB3cml0ZV9jc19taV9scmkoY3MsIG9hX2NvbmZpZy0+ZmxleF9yZWdzLCBvYV9jb25maWctPmZs ZXhfcmVnc19sZW4pOwogCi0JKmNzKysgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJLyogSnVt cCBpbnRvIHRoZSBOT0Egd2FpdCBidXN5IGxvb3AuICovCisJKmNzKysgPSAoSU5URUxfR0VOKGk5 MTUpIDwgOCA/CisJCSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgOiBNSV9CQVRDSF9CVUZGRVJfU1RB UlRfR0VOOCk7CisJKmNzKysgPSBpOTE1X2dndHRfb2Zmc2V0KGk5MTUtPnBlcmYub2Eubm9hX3dh aXQpOworCSpjcysrID0gMDsKIAogCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoYm8pOwogCWk5 MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoYm8pOwpAQCAtMTQ2Nyw2ICsxNDczLDcgQEAgc3RhdGlj IHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtKQogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAlkZXZfcHJp di0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtID0gTlVMTDsKIAlkZXZfcHJpdi0+cGVyZi5vYS5v cHMuZGlzYWJsZV9tZXRyaWNfc2V0KGRldl9wcml2KTsKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVs ZWFzZSgmZGV2X3ByaXYtPnBlcmYub2Eubm9hX3dhaXQsIDApOwogCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJZnJlZV9vYV9idWZmZXIoZGV2X3ByaXYpOwpA QCAtMTY1Myw2ICsxNjYwLDIwNiBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHUz MiAqc2F2ZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyICpjcywK KwkJCSAgaTkxNV9yZWdfdCByZWcsIHUzMiBvZmZzZXQsIHUzMiBkd29yZF9jb3VudCkKK3sKKwl1 aW50MzJfdCBkOworCisJZm9yIChkID0gMDsgZCA8IGR3b3JkX2NvdW50OyBkKyspIHsKKwkJKmNz KysgPSBJTlRFTF9HRU4oaTkxNSkgPj0gOCA/CisJCQlNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VO OCA6IE1JX1NUT1JFX1JFR0lTVEVSX01FTTsKKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNl dChyZWcpICsgNCAqIGQ7CisJCSpjcysrID0gaW50ZWxfZ3Rfc2NyYXRjaF9vZmZzZXQoJmk5MTUt Pmd0LCBvZmZzZXQpICsgNCAqIGQ7CisJCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkKKwkJCSpj cysrID0gMDsKKwl9CisKKwlyZXR1cm4gY3M7Cit9CisKK3N0YXRpYyB1MzIgKnJlc3RvcmVfcmVn aXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiAqY3MsCisJCQkgICAgIGk5 MTVfcmVnX3QgcmVnLCB1MzIgb2Zmc2V0LCB1MzIgZHdvcmRfY291bnQpCit7CisJdWludDMyX3Qg ZDsKKworCWZvciAoZCA9IDA7IGQgPCBkd29yZF9jb3VudDsgZCsrKSB7CisJCSpjcysrID0gSU5U RUxfR0VOKGk5MTUpID49IDggPworCQkJTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VOOCA6IE1JX0xP QURfUkVHSVNURVJfTUVNOworCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZyk7CisJ CSpjcysrID0gaW50ZWxfZ3Rfc2NyYXRjaF9vZmZzZXQoJmk5MTUtPmd0LCBvZmZzZXQpOworCQkq Y3MrKyA9IDA7CisJfQorCisJcmV0dXJuIGNzOworfQorCitzdGF0aWMgaW50IGFsbG9jX25vYV93 YWl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpibzsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl1NjQgZGVsYXlfbnMgPSBh dG9taWM2NF9yZWFkKCZpOTE1LT5wZXJmLm9hLm5vYV9wcm9ncmFtbWluZ19kZWxheSksIGRlbGF5 X3RpY2tzOworCXUzMiAqYmF0Y2gsICp0czAsICpjcywgKmp1bXA7CisJaW50IHJldCwgaTsKKwll bnVtIHsgU1RBUlRfVFMsIE5PV19UUywgREVMVEFfVFMsIEpVTVBfUFJFRElDQVRFLCBERUxUQV9U QVJHRVQsIE5fQ1NfR1BSIH07CisKKwlibyA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJu YWwoaTkxNSwgNDA5Nik7CisJaWYgKElTX0VSUihibykpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWxsb2NhdGUgTk9BIHdhaXQgYmF0Y2hidWZmZXJcbiIpOworCQlyZXR1cm4gUFRSX0VSUihi byk7CisJfQorCisJLyoKKwkgKiBXZSBwaW4gaW4gR0dUVCBiZWNhdXNlIHdlIGp1bXAgaW50byB0 aGlzIGJ1ZmZlciBub3cgYmVjYXVzZQorCSAqIG11bHRpcGxlIE9BIGNvbmZpZyBCT3Mgd2lsbCBo YXZlIGEganVtcCB0byB0aGlzIGFkZHJlc3MgYW5kIGl0CisJICogbmVlZHMgdG8gYmUgZml4ZWQg ZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUgaTkxNS9wZXJmIHN0cmVhbS4KKwkgKi8KKwl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oYm8sIE5VTEwsIDAsIDQwOTYsIDApOworCWlmIChJ U19FUlIodm1hKSkgeworCQlyZXQgPSBQVFJfRVJSKHZtYSk7CisJCWdvdG8gZXJyX3VucmVmOwor CX0KKworCWJhdGNoID0gY3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChibywgSTkxNV9NQVBf V0IpOworCWlmIChJU19FUlIoYmF0Y2gpKSB7CisJCXJldCA9IFBUUl9FUlIoYmF0Y2gpOworCQln b3RvIGVycl91bnBpbjsKKwl9CisKKwkvKiBTYXZlIHJlZ2lzdGVycy4gKi8KKwlmb3IgKGkgPSAw OyBpIDwgTl9DU19HUFI7IGkrKykgeworCQljcyA9IHNhdmVfcmVnaXN0ZXIoaTkxNSwgY3MsIEhT V19DU19HUFIoaSksCisJCQkJICAgSU5URUxfR1RfU0NSQVRDSF9GSUVMRF9QRVJGX0NTX0dQUiAr IDggKiBpLCAyKTsKKwl9CisJY3MgPSBzYXZlX3JlZ2lzdGVyKGk5MTUsIGNzLCBNSV9QUkVESUNB VEVfUkVTVUxUXzEsCisJCQkgICBJTlRFTF9HVF9TQ1JBVENIX0ZJRUxEX1BFUkZfUFJFRElDQVRF X1JFU1VMVF8xLCAxKTsKKworCS8qIEZpcnN0IHRpbWVzdGFtcCBzbmFwc2hvdCBsb2NhdGlvbi4g Ki8KKwl0czAgPSBjczsKKworCS8qCisJICogSW5pdGlhbCBzbmFwc2hvdCBvZiB0aGUgdGltZXN0 YW1wIHJlZ2lzdGVyIHRvIGltcGxlbWVudCB0aGUgd2FpdC4KKwkgKiBXZSB3b3JrIHdpdGggMzJi IHZhbHVlcywgc28gY2xlYXIgb3V0IHRoZSB0b3AgMzJiIGJpdHMgb2YgdGhlCisJICogcmVnaXN0 ZXIgYmVjYXVzZSB0aGUgQUxVIHdvcmtzIDY0Yml0cy4KKwkgKi8KKwkqY3MrKyA9IE1JX0xPQURf UkVHSVNURVJfSU1NKDEpOworCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoSFNXX0NTX0dQ UihTVEFSVF9UUykpICsgNDsKKwkqY3MrKyA9IDA7CisJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVS X1JFRyB8ICgzIC0gMik7CisJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1RJTUVT VEFNUChSRU5ERVJfUklOR19CQVNFKSk7CisJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChI U1dfQ1NfR1BSKFNUQVJUX1RTKSk7CisKKwkvKgorCSAqIFRoaXMgaXMgdGhlIGxvY2F0aW9uIHdl J3JlIGdvaW5nIHRvIGp1bXAgYmFjayBpbnRvIHVudGlsIHRoZQorCSAqIHJlcXVpcmVkIGFtb3Vu dCBvZiB0aW1lIGhhcyBwYXNzZWQuCisJICovCisJanVtcCA9IGNzOworCisJLyoKKwkgKiBUYWtl IGFub3RoZXIgc25hcHNob3Qgb2YgdGhlIHRpbWVzdGFtcCByZWdpc3Rlci4gVGFrZSBjYXJlIHRv IGNsZWFyCisJICogdXAgdGhlIHRvcCAzMmJpdHMgb2YgQ1NfR1BSKDEpIGFzIHdlJ3JlIHVzaW5n IGl0IGZvciBvdGhlcgorCSAqIG9wZXJhdGlvbnMgYmVsb3cuCisJICovCisJKmNzKysgPSBNSV9M T0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEhTV19D U19HUFIoTk9XX1RTKSkgKyA0OworCSpjcysrID0gMDsKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNU RVJfUkVHIHwgKDMgLSAyKTsKKwkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfVElN RVNUQU1QKFJFTkRFUl9SSU5HX0JBU0UpKTsKKwkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KEhTV19DU19HUFIoTk9XX1RTKSk7CisKKwkvKgorCSAqIERvIGEgZGlmZiBiZXR3ZWVuIHRoZSAy IHRpbWVzdGFtcHMgYW5kIHN0b3JlIHRoZSByZXN1bHQgYmFjayBpbnRvCisJICogQ1NfR1BSKDEp LgorCSAqLworCSpjcysrID0gTUlfTUFUSCg1KTsKKwkqY3MrKyA9IE1JX0FMVV9PUChNSV9BTFVf T1BfTE9BRCwgTUlfQUxVX1NSQ19TUkNBLCBNSV9BTFVfU1JDX1JFRyhOT1dfVFMpKTsKKwkqY3Mr KyA9IE1JX0FMVV9PUChNSV9BTFVfT1BfTE9BRCwgTUlfQUxVX1NSQ19TUkNCLCBNSV9BTFVfU1JD X1JFRyhTVEFSVF9UUykpOworCSpjcysrID0gTUlfQUxVX09QKE1JX0FMVV9PUF9TVUIsIDAsIDAp OworCSpjcysrID0gTUlfQUxVX09QKE1JX0FMVV9PUF9TVE9SRSwgTUlfQUxVX1NSQ19SRUcoREVM VEFfVFMpLCBNSV9BTFVfU1JDX0FDQ1UpOworCSpjcysrID0gTUlfQUxVX09QKE1JX0FMVV9PUF9T VE9SRSwgTUlfQUxVX1NSQ19SRUcoSlVNUF9QUkVESUNBVEUpLCBNSV9BTFVfU1JDX0NGKTsKKwor CS8qCisJICogVHJhbnNmZXIgdGhlIGNhcnJ5IGZsYWcgKHNldCB0byAxIGlmIHRzMSA8IHRzMCwg bWVhbmluZyB0aGUKKwkgKiB0aW1lc3RhbXAgaGF2ZSByb2xsZWQgb3ZlciB0aGUgMzJiaXRzKSBp bnRvIHRoZSBwcmVkaWNhdGUgcmVnaXN0ZXIKKwkgKiB0byBiZSB1c2VkIGZvciB0aGUgcHJlZGlj YXRlZCBqdW1wLgorCSAqLworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9SRUcgfCAoMyAtIDIp OworCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoSFNXX0NTX0dQUihKVU1QX1BSRURJQ0FU RSkpOworCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoTUlfUFJFRElDQVRFX1JFU1VMVF8x KTsKKworCS8qIFJlc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nIGlmIHdlIGhhZCB0aW1lc3RhbXBz IHJvbGwgb3Zlci4gKi8KKwkqY3MrKyA9IChJTlRFTF9HRU4oaTkxNSkgPCA4ID8KKwkJIE1JX0JB VENIX0JVRkZFUl9TVEFSVCA6IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44KSB8CisJCU1JX0JB VENIX1BSRURJQ0FURTsKKwkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArICh0czAgLSBi YXRjaCkgKiA0OworCSpjcysrID0gMDsKKworCS8qCisJICogTm93IGFkZCB0aGUgZGlmZiBiZXR3 ZWVuIHRvIHByZXZpb3VzIHRpbWVzdGFtcHMgYW5kIGFkZCBpdCB0byA6CisJICogICAgICAoKCgx ICogPDwgNjQpIC0gMSkgLSBkZWxheV9ucykKKwkgKgorCSAqIFdoZW4gdGhlIENhcnJ5IEZsYWcg Y29udGFpbnMgMSB0aGlzIG1lYW5zIHRoZSBlbGFwc2VkIHRpbWUgaXMKKwkgKiBsb25nZXIgdGhh biB0aGUgZXhwZWN0ZWQgZGVsYXksIGFuZCB3ZSBjYW4gZXhpdCB0aGUgd2FpdCBsb29wLgorCSAq LworCWRlbGF5X3RpY2tzID0gMHhmZmZmZmZmZmZmZmZmZmZmIC0KKwkJRElWNjRfVTY0X1JPVU5E X1VQKGRlbGF5X25zICoKKwkJCQkgICBSVU5USU1FX0lORk8oaTkxNSktPmNzX3RpbWVzdGFtcF9m cmVxdWVuY3lfa2h6LAorCQkJCSAgIDEwMDAwMDB1bGwpOworCSpjcysrID0gTUlfTE9BRF9SRUdJ U1RFUl9JTU0oMik7CisJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChIU1dfQ1NfR1BSKERF TFRBX1RBUkdFVCkpOworCSpjcysrID0gbG93ZXJfMzJfYml0cyhkZWxheV90aWNrcyk7CisJKmNz KysgPSBpOTE1X21taW9fcmVnX29mZnNldChIU1dfQ1NfR1BSKERFTFRBX1RBUkdFVCkpICsgNDsK KwkqY3MrKyA9IHVwcGVyXzMyX2JpdHMoZGVsYXlfdGlja3MpOworCisJKmNzKysgPSBNSV9NQVRI KDQpOworCSpjcysrID0gTUlfQUxVX09QKE1JX0FMVV9PUF9MT0FELCBNSV9BTFVfU1JDX1NSQ0Es IE1JX0FMVV9TUkNfUkVHKERFTFRBX1RTKSk7CisJKmNzKysgPSBNSV9BTFVfT1AoTUlfQUxVX09Q X0xPQUQsIE1JX0FMVV9TUkNfU1JDQiwgTUlfQUxVX1NSQ19SRUcoREVMVEFfVEFSR0VUKSk7CisJ KmNzKysgPSBNSV9BTFVfT1AoTUlfQUxVX09QX0FERCwgMCwgMCk7CisJKmNzKysgPSBNSV9BTFVf T1AoTUlfQUxVX09QX1NUT1JFSU5WLCBNSV9BTFVfU1JDX1JFRyhKVU1QX1BSRURJQ0FURSksIE1J X0FMVV9TUkNfQ0YpOworCisJLyoKKwkgKiBUcmFuc2ZlciB0aGUgcmVzdWx0IGludG8gdGhlIHBy ZWRpY2F0ZSByZWdpc3RlciB0byBiZSB1c2VkIGZvciB0aGUKKwkgKiBwcmVkaWNhdGVkIGp1bXAu CisJICovCisJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX1JFRyB8ICgzIC0gMik7CisJKmNzKysg PSBpOTE1X21taW9fcmVnX29mZnNldChIU1dfQ1NfR1BSKEpVTVBfUFJFRElDQVRFKSk7CisJKmNz KysgPSBpOTE1X21taW9fcmVnX29mZnNldChNSV9QUkVESUNBVEVfUkVTVUxUXzEpOworCisJLyog UHJlZGljYXRlIHRoZSBqdW1wLiAgKi8KKwkqY3MrKyA9IChJTlRFTF9HRU4oaTkxNSkgPCA4ID8K KwkJIE1JX0JBVENIX0JVRkZFUl9TVEFSVCA6IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44KSB8 CisJCU1JX0JBVENIX1BSRURJQ0FURTsKKwkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSAr IChqdW1wIC0gYmF0Y2gpICogNDsKKwkqY3MrKyA9IDA7CisKKwkvKiBSZXN0b3JlIHJlZ2lzdGVy cy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgTl9DU19HUFI7IGkrKykgeworCQljcyA9IHJlc3RvcmVf cmVnaXN0ZXIoaTkxNSwgY3MsIEhTV19DU19HUFIoaSksCisJCQkJICAgICAgSU5URUxfR1RfU0NS QVRDSF9GSUVMRF9QRVJGX0NTX0dQUiArIDggKiBpLCAyKTsKKwl9CisJY3MgPSByZXN0b3JlX3Jl Z2lzdGVyKGk5MTUsIGNzLCBNSV9QUkVESUNBVEVfUkVTVUxUXzEsCisJCQkgICAgICBJTlRFTF9H VF9TQ1JBVENIX0ZJRUxEX1BFUkZfUFJFRElDQVRFX1JFU1VMVF8xLCAxKTsKKworCS8qIEFuZCBy ZXR1cm4gdG8gdGhlIHJpbmcuICovCisJKmNzKysgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJ R0VNX0JVR19PTigoY3MgLSBiYXRjaCkgPiAoUEFHRV9TSVpFIC8gc2l6ZW9mKCpiYXRjaCkpKTsK KworCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoYm8pOworCWk5MTVfZ2VtX29iamVjdF91bnBp bl9tYXAoYm8pOworCisJaTkxNS0+cGVyZi5vYS5ub2Ffd2FpdCA9IHZtYTsKKworCXJldHVybiAw OworCitlcnJfdW5waW46CisJX19pOTE1X3ZtYV91bnBpbih2bWEpOworCitlcnJfdW5yZWY6CisJ aTkxNV9nZW1fb2JqZWN0X3B1dChibyk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgdm9p ZCBjb25maWdfb2FfcmVncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKnJlZ3MsCiAJCQkgICB1MzIgbl9yZWdzKQpAQCAt MjIyMSw2ICsyNDI4LDEyIEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlnb3RvIGVycl9jb25maWc7CiAJfQogCisJcmV0 ID0gYWxsb2Nfbm9hX3dhaXQoZGV2X3ByaXYpOworCWlmIChyZXQpIHsKKwkJRFJNX0RFQlVHKCJV bmFibGUgdG8gYWxsb2NhdGUgTk9BIHdhaXQgYmF0Y2ggYnVmZmVyXG4iKTsKKwkJZ290byBlcnJf bm9hX3dhaXRfYWxsb2M7CisJfQorCiAJLyogUFJNIC0gb2JzZXJ2YWJpbGl0eSBwZXJmb3JtYW5j ZSBjb3VudGVyczoKIAkgKgogCSAqICAgT0FDT05UUk9MLCBwZXJmb3JtYW5jZSBjb3VudGVyIGVu YWJsZSwgbm90ZToKQEAgLTIyNzMsNiArMjQ4NiwxMyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3Ry ZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAJaW50ZWxf cnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5ydW50aW1lX3BtLCBzdHJlYW0tPndha2VyZWYpOwog CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfdm1hX3Vu cGluX2FuZF9yZWxlYXNlKCZkZXZfcHJpdi0+cGVyZi5vYS5ub2Ffd2FpdCwgMCk7CisJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisKK2Vycl9ub2Ffd2FpdF9hbGxv YzoKKwlwdXRfb2FfY29uZmlnKHN0cmVhbS0+b2FfY29uZmlnKTsKKwogZXJyX2NvbmZpZzoKIAlp ZiAoc3RyZWFtLT5jdHgpCiAJCW9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cmVhbSk7CkBAIC0zNjU3 LDYgKzM4NzcsOSBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsK IAkJaWRyX2luaXQoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyKTsKIAorCQlhdG9taWM2NF9z ZXQoJmRldl9wcml2LT5wZXJmLm9hLm5vYV9wcm9ncmFtbWluZ19kZWxheSwKKwkJCSAgICAgNTAw ICogMTAwMCAvKiA1MDB1cyAqLyk7CisKIAkJZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSB0 cnVlOwogCX0KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDU4OThmNTllM2RkNy4uYTcz NDY0ZGQ1ZTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTU2Nyw3ICs1NjcsOSBAQCBz dGF0aWMgaW5saW5lIGJvb2wgaTkxNV9tbWlvX3JlZ192YWxpZChpOTE1X3JlZ190IHJlZykKICNk ZWZpbmUgTUlfUFJFRElDQVRFX1NSQzBfVURXCV9NTUlPKDB4MjQwMCArIDQpCiAjZGVmaW5lIE1J X1BSRURJQ0FURV9TUkMxCV9NTUlPKDB4MjQwOCkKICNkZWZpbmUgTUlfUFJFRElDQVRFX1NSQzFf VURXCV9NTUlPKDB4MjQwOCArIDQpCi0KKyNkZWZpbmUgTUlfUFJFRElDQVRFX0RBVEEgICAgICAg X01NSU8oMHgyNDEwKQorI2RlZmluZSBNSV9QUkVESUNBVEVfUkVTVUxUICAgICBfTU1JTygweDI0 MTgpCisjZGVmaW5lIE1JX1BSRURJQ0FURV9SRVNVTFRfMSAgIF9NTUlPKDB4MjQxYykKICNkZWZp bmUgTUlfUFJFRElDQVRFX1JFU1VMVF8yCV9NTUlPKDB4MjIxNCkKICNkZWZpbmUgIExPV0VSX1NM SUNFX0VOQUJMRUQJKDEgPDwgMCkKICNkZWZpbmUgIExPV0VSX1NMSUNFX0RJU0FCTEVECSgwIDw8 IDApCi0tIAoyLjIxLjAuMzkyLmdmOGY2Nzg3MTU5ZQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4