From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI 8/8] drm/i915: Move sandybride pcode access to intel_sideband.c Date: Fri, 26 Apr 2019 09:17:25 +0100 Message-ID: <20190426081725.31217-8-chris@chris-wilson.co.uk> References: <20190426081725.31217-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 605FB8922A for ; Fri, 26 Apr 2019 08:17:30 +0000 (UTC) Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 16366657-1500050 for ; Fri, 26 Apr 2019 09:17:28 +0100 In-Reply-To: <20190426081725.31217-1-chris@chris-wilson.co.uk> 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 c2FuZHlicmlkZV9wY29kZSBpcyBhbm90aGVyIHNpZGViYW5kLCBzbyBtb3ZlIGl0IHRvIHRoZWly IG5ldyBob21lLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg fCAgMTAgLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICB8IDE5NSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jIHwgMTk2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z aWRlYmFuZC5oIHwgIDEwICsrCiA1IGZpbGVzIGNoYW5nZWQsIDIwNyBpbnNlcnRpb25zKCspLCAy MDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYzE4YjI4MjcxYmZk Li4xY2VhOThmOGI4NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzQyMCwxNiArMzQy MCw2IEBAIGludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZGlzcGxheV9wcmludF9lcnJv cl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAogCQkJCQkgICAgc3Ry dWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jfc3RhdGUgKmVycm9yKTsKIAotaW50IHNhbmR5YnJpZGdl X3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwg dTMyICp2YWwpOwotaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlX3RpbWVvdXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwKLQkJCQkgICAgdTMyIHZhbCwgaW50 IGZhc3RfdGltZW91dF91cywKLQkJCQkgICAgaW50IHNsb3dfdGltZW91dF9tcyk7Ci0jZGVmaW5l IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBtYm94LCB2YWwpCVwKLQlzYW5keWJy aWRnZV9wY29kZV93cml0ZV90aW1lb3V0KGRldl9wcml2LCBtYm94LCB2YWwsIDUwMCwgMCkKLQot aW50IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTMyIG1ib3gsIHUzMiByZXF1ZXN0LAotCQkgICAgICB1MzIgcmVwbHlfbWFzaywgdTMyIHJlcGx5 LCBpbnQgdGltZW91dF9iYXNlX21zKTsKLQogLyogaW50ZWxfZHBpb19waHkuYyAqLwogdm9pZCBi eHRfcG9ydF90b19waHlfY2hhbm5lbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGVudW0gcG9ydCBwb3J0LAogCQkJICAgICBlbnVtIGRwaW9fcGh5ICpwaHksIGVudW0gZHBpb19j aGFubmVsICpjaCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKaW5kZXggMjQ3NmU4Njc5ODFk Li5jYTU5ODJlNDVlM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk Y3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKQEAgLTE2LDYgKzE2 LDcgQEAKICNpbmNsdWRlICJpOTE1X3JlZy5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2lu Y2x1ZGUgImludGVsX2hkY3AuaCIKKyNpbmNsdWRlICJpbnRlbF9zaWRlYmFuZC5oIgogCiAjZGVm aW5lIEtFWV9MT0FEX1RSSUVTCTUKICNkZWZpbmUgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVP VVRfTVMJNTAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDRiMWNkOTA0MWIzMy4uMzY4N2U5 MTY1OTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTk3MDQsMjAxICs5NzA0LDYgQEAg dm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl9 CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGdlbjZfY2hlY2tfbWFpbGJveF9zdGF0dXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCQkgICAgdTMyIG1ib3gpCi17Ci0Jc3dp dGNoIChtYm94ICYgR0VONl9QQ09ERV9FUlJPUl9NQVNLKSB7Ci0JY2FzZSBHRU42X1BDT0RFX1NV Q0NFU1M6Ci0JCXJldHVybiAwOwotCWNhc2UgR0VONl9QQ09ERV9VTklNUExFTUVOVEVEX0NNRDoK LQkJcmV0dXJuIC1FTk9ERVY7Ci0JY2FzZSBHRU42X1BDT0RFX0lMTEVHQUxfQ01EOgotCQlyZXR1 cm4gLUVOWElPOwotCWNhc2UgR0VONl9QQ09ERV9NSU5fRlJFUV9UQUJMRV9HVF9SQVRJT19PVVRf T0ZfUkFOR0U6Ci0JY2FzZSBHRU43X1BDT0RFX01JTl9GUkVRX1RBQkxFX0dUX1JBVElPX09VVF9P Rl9SQU5HRToKLQkJcmV0dXJuIC1FT1ZFUkZMT1c7Ci0JY2FzZSBHRU42X1BDT0RFX1RJTUVPVVQ6 Ci0JCXJldHVybiAtRVRJTUVET1VUOwotCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShtYm94ICYg R0VONl9QQ09ERV9FUlJPUl9NQVNLKTsKLQkJcmV0dXJuIDA7Ci0JfQotfQotCi1zdGF0aWMgaW5s aW5lIGludCBnZW43X2NoZWNrX21haWxib3hfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCQkJICAgIHUzMiBtYm94KQotewotCXN3aXRjaCAobWJveCAmIEdFTjZf UENPREVfRVJST1JfTUFTSykgewotCWNhc2UgR0VONl9QQ09ERV9TVUNDRVNTOgotCQlyZXR1cm4g MDsKLQljYXNlIEdFTjZfUENPREVfSUxMRUdBTF9DTUQ6Ci0JCXJldHVybiAtRU5YSU87Ci0JY2Fz ZSBHRU43X1BDT0RFX1RJTUVPVVQ6Ci0JCXJldHVybiAtRVRJTUVET1VUOwotCWNhc2UgR0VON19Q Q09ERV9JTExFR0FMX0RBVEE6Ci0JCXJldHVybiAtRUlOVkFMOwotCWNhc2UgR0VON19QQ09ERV9N SU5fRlJFUV9UQUJMRV9HVF9SQVRJT19PVVRfT0ZfUkFOR0U6Ci0JCXJldHVybiAtRU9WRVJGTE9X OwotCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShtYm94ICYgR0VONl9QQ09ERV9FUlJPUl9NQVNL KTsKLQkJcmV0dXJuIDA7Ci0JfQotfQotCi1zdGF0aWMgaW50IF9fc2FuZHlicmlkZ2VfcGNvZGVf cncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgdTMyIG1ib3gsIHUz MiAqdmFsLAotCQkJCSAgaW50IGZhc3RfdGltZW91dF91cywKLQkJCQkgIGludCBzbG93X3RpbWVv dXRfbXMsCi0JCQkJICBib29sIGlzX3JlYWQpCi17Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2 X3ByaXYtPnNiX2xvY2spOwotCi0JLyoKLQkgKiBHRU42X1BDT0RFXyogYXJlIG91dHNpZGUgb2Yg dGhlIGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgotCSAqIHVzZSB0ZSBmdyBJOTE1X1JFQUQgdmFy aWFudHMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2Ygd29yawotCSAqIHJlcXVpcmVkIHdoZW4gcmVh ZGluZy93cml0aW5nLgotCSAqLwotCi0JaWYgKEk5MTVfUkVBRF9GVyhHRU42X1BDT0RFX01BSUxC T1gpICYgR0VONl9QQ09ERV9SRUFEWSkKLQkJcmV0dXJuIC1FQUdBSU47Ci0KLQlJOTE1X1dSSVRF X0ZXKEdFTjZfUENPREVfREFUQSwgKnZhbCk7Ci0JSTkxNV9XUklURV9GVyhHRU42X1BDT0RFX0RB VEExLCAwKTsKLQlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfTUFJTEJPWCwgR0VONl9QQ09ERV9S RUFEWSB8IG1ib3gpOwotCi0JaWYgKF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJfZncoJmRldl9w cml2LT51bmNvcmUsCi0JCQkJCSBHRU42X1BDT0RFX01BSUxCT1gsIEdFTjZfUENPREVfUkVBRFks IDAsCi0JCQkJCSBmYXN0X3RpbWVvdXRfdXMsCi0JCQkJCSBzbG93X3RpbWVvdXRfbXMsCi0JCQkJ CSAmbWJveCkpCi0JCXJldHVybiAtRVRJTUVET1VUOwotCi0JaWYgKGlzX3JlYWQpCi0JCSp2YWwg PSBJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9EQVRBKTsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID4gNikKLQkJcmV0dXJuIGdlbjdfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYsIG1i b3gpOwotCWVsc2UKLQkJcmV0dXJuIGdlbjZfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYs IG1ib3gpOwotfQotCi1pbnQKLXNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyICp2YWwpCi17Ci0JaW50IGVycjsKLQot CW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKLQllcnIgPSBfX3NhbmR5YnJpZGdlX3Bj b2RlX3J3KGRldl9wcml2LCBtYm94LCB2YWwsCi0JCQkJICAgICA1MDAsIDAsCi0JCQkJICAgICB0 cnVlKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKLQotCWlmIChlcnIpIHsK LQkJRFJNX0RFQlVHX0RSSVZFUigid2FybmluZzogcGNvZGUgKHJlYWQgZnJvbSBtYm94ICV4KSBt YWlsYm94IGFjY2VzcyBmYWlsZWQgZm9yICVwczogJWRcbiIsCi0JCQkJIG1ib3gsIF9fYnVpbHRp bl9yZXR1cm5fYWRkcmVzcygwKSwgZXJyKTsKLQl9Ci0KLQlyZXR1cm4gZXJyOwotfQotCi1pbnQg c2FuZHlicmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkJICAgIHUzMiBtYm94LCB1MzIgdmFsLAotCQkJCSAgICBpbnQgZmFzdF90 aW1lb3V0X3VzLAotCQkJCSAgICBpbnQgc2xvd190aW1lb3V0X21zKQotewotCWludCBlcnI7Ci0K LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Ci0JZXJyID0gX19zYW5keWJyaWRnZV9w Y29kZV9ydyhkZXZfcHJpdiwgbWJveCwgJnZhbCwKLQkJCQkgICAgIGZhc3RfdGltZW91dF91cywg c2xvd190aW1lb3V0X21zLAotCQkJCSAgICAgZmFsc2UpOwotCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnNiX2xvY2spOwotCi0JaWYgKGVycikgewotCQlEUk1fREVCVUdfRFJJVkVSKCJ3YXJuaW5n OiBwY29kZSAod3JpdGUgb2YgMHglMDh4IHRvIG1ib3ggJXgpIG1haWxib3ggYWNjZXNzIGZhaWxl ZCBmb3IgJXBzOiAlZFxuIiwKLQkJCQkgdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl c3MoMCksIGVycik7Ci0JfQotCi0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIGJvb2wgc2tsX3Bj b2RlX3RyeV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1i b3gsCi0JCQkJICB1MzIgcmVxdWVzdCwgdTMyIHJlcGx5X21hc2ssIHUzMiByZXBseSwKLQkJCQkg IHUzMiAqc3RhdHVzKQotewotCSpzdGF0dXMgPSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3J3KGRldl9w cml2LCBtYm94LCAmcmVxdWVzdCwKLQkJCQkJIDUwMCwgMCwKLQkJCQkJIHRydWUpOwotCi0JcmV0 dXJuICpzdGF0dXMgfHwgKChyZXF1ZXN0ICYgcmVwbHlfbWFzaykgPT0gcmVwbHkpOwotfQotCi0v KioKLSAqIHNrbF9wY29kZV9yZXF1ZXN0IC0gc2VuZCBQQ09ERSByZXF1ZXN0IHVudGlsIGFja25v d2xlZGdtZW50Ci0gKiBAZGV2X3ByaXY6IGRldmljZSBwcml2YXRlCi0gKiBAbWJveDogUENPREUg bWFpbGJveCBJRCB0aGUgcmVxdWVzdCBpcyB0YXJnZXRlZCBmb3IKLSAqIEByZXF1ZXN0OiByZXF1 ZXN0IElECi0gKiBAcmVwbHlfbWFzazogbWFzayB1c2VkIHRvIGNoZWNrIGZvciByZXF1ZXN0IGFj a25vd2xlZGdtZW50Ci0gKiBAcmVwbHk6IHZhbHVlIHVzZWQgdG8gY2hlY2sgZm9yIHJlcXVlc3Qg YWNrbm93bGVkZ21lbnQKLSAqIEB0aW1lb3V0X2Jhc2VfbXM6IHRpbWVvdXQgZm9yIHBvbGxpbmcg d2l0aCBwcmVlbXB0aW9uIGVuYWJsZWQKLSAqCi0gKiBLZWVwIHJlc2VuZGluZyB0aGUgQHJlcXVl c3QgdG8gQG1ib3ggdW50aWwgUENPREUgYWNrbm93bGVkZ2VzIGl0LCBQQ09ERQotICogcmVwb3J0 cyBhbiBlcnJvciBvciBhbiBvdmVyYWxsIHRpbWVvdXQgb2YgQHRpbWVvdXRfYmFzZV9tcys1MCBt cyBleHBpcmVzLgotICogVGhlIHJlcXVlc3QgaXMgYWNrbm93bGVkZ2VkIG9uY2UgdGhlIFBDT0RF IHJlcGx5IGR3b3JkIGVxdWFscyBAcmVwbHkgYWZ0ZXIKLSAqIGFwcGx5aW5nIEByZXBseV9tYXNr LiBQb2xsaW5nIGlzIGZpcnN0IGF0dGVtcHRlZCB3aXRoIHByZWVtcHRpb24gZW5hYmxlZAotICog Zm9yIEB0aW1lb3V0X2Jhc2VfbXMgYW5kIGlmIHRoaXMgdGltZXMgb3V0IGZvciBhbm90aGVyIDUw IG1zIHdpdGgKLSAqIHByZWVtcHRpb24gZGlzYWJsZWQuCi0gKgotICogUmV0dXJucyAwIG9uIHN1 Y2Nlc3MsICUtRVRJTUVET1VUIGluIGNhc2Ugb2YgYSB0aW1lb3V0LCA8MCBpbiBjYXNlIG9mIHNv bWUKLSAqIG90aGVyIGVycm9yIGFzIHJlcG9ydGVkIGJ5IFBDT0RFLgotICovCi1pbnQgc2tsX3Bj b2RlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwg dTMyIHJlcXVlc3QsCi0JCSAgICAgIHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHksIGludCB0aW1l b3V0X2Jhc2VfbXMpCi17Ci0JdTMyIHN0YXR1czsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnNiX2xvY2spOwotCi0jZGVmaW5lIENPTkQgc2tsX3Bjb2RlX3RyeV9yZXF1ZXN0 KGRldl9wcml2LCBtYm94LCByZXF1ZXN0LCByZXBseV9tYXNrLCByZXBseSwgXAotCQkJCSAgICZz dGF0dXMpCi0KLQkvKgotCSAqIFByaW1lIHRoZSBQQ09ERSBieSBkb2luZyBhIHJlcXVlc3QgZmly c3QuIE5vcm1hbGx5IGl0IGd1YXJhbnRlZXMKLQkgKiB0aGF0IGEgc3Vic2VxdWVudCByZXF1ZXN0 LCBhdCBtb3N0IEB0aW1lb3V0X2Jhc2VfbXMgbGF0ZXIsIHN1Y2NlZWRzLgotCSAqIF93YWl0X2Zv cigpIGRvZXNuJ3QgZ3VhcmFudGVlIHdoZW4gaXRzIHBhc3NlZCBjb25kaXRpb24gaXMgZXZhbHVh dGVkCi0JICogZmlyc3QsIHNvIHNlbmQgdGhlIGZpcnN0IHJlcXVlc3QgZXhwbGljaXRseS4KLQkg Ki8KLQlpZiAoQ09ORCkgewotCQlyZXQgPSAwOwotCQlnb3RvIG91dDsKLQl9Ci0JcmV0ID0gX3dh aXRfZm9yKENPTkQsIHRpbWVvdXRfYmFzZV9tcyAqIDEwMDAsIDEwLCAxMCk7Ci0JaWYgKCFyZXQp Ci0JCWdvdG8gb3V0OwotCi0JLyoKLQkgKiBUaGUgYWJvdmUgY2FuIHRpbWUgb3V0IGlmIHRoZSBu dW1iZXIgb2YgcmVxdWVzdHMgd2FzIGxvdyAoMiBpbiB0aGUKLQkgKiB3b3JzdCBjYXNlKSBfYW5k XyBQQ09ERSB3YXMgYnVzeSBmb3Igc29tZSByZWFzb24gZXZlbiBhZnRlciBhCi0JICogKHF1ZXVl ZCkgcmVxdWVzdCBhbmQgQHRpbWVvdXRfYmFzZV9tcyBkZWxheS4gQXMgYSB3b3JrYXJvdW5kIHJl dHJ5Ci0JICogdGhlIHBvbGwgd2l0aCBwcmVlbXB0aW9uIGRpc2FibGVkIHRvIG1heGltaXplIHRo ZSBudW1iZXIgb2YKLQkgKiByZXF1ZXN0cy4gSW5jcmVhc2UgdGhlIHRpbWVvdXQgZnJvbSBAdGlt ZW91dF9iYXNlX21zIHRvIDUwbXMgdG8KLQkgKiBhY2NvdW50IGZvciBpbnRlcnJ1cHRzIHRoYXQg Y291bGQgcmVkdWNlIHRoZSBudW1iZXIgb2YgdGhlc2UKLQkgKiByZXF1ZXN0cywgYW5kIGZvciBh bnkgcXVpcmtzIG9mIHRoZSBQQ09ERSBmaXJtd2FyZSB0aGF0IGRlbGF5cwotCSAqIHRoZSByZXF1 ZXN0IGNvbXBsZXRpb24uCi0JICovCi0JRFJNX0RFQlVHX0tNUygiUENPREUgdGltZW91dCwgcmV0 cnlpbmcgd2l0aCBwcmVlbXB0aW9uIGRpc2FibGVkXG4iKTsKLQlXQVJOX09OX09OQ0UodGltZW91 dF9iYXNlX21zID4gMyk7Ci0JcHJlZW1wdF9kaXNhYmxlKCk7Ci0JcmV0ID0gd2FpdF9mb3JfYXRv bWljKENPTkQsIDUwKTsKLQlwcmVlbXB0X2VuYWJsZSgpOwotCi1vdXQ6Ci0JbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+c2JfbG9jayk7Ci0JcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKLSN1bmRl ZiBDT05ECi19Ci0KIHN0YXRpYyBpbnQgYnl0X2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgaW50IHZhbCkKIHsKIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2 X3ByaXYtPmd0X3BtLnJwczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3NpZGViYW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCmluZGV4 IDcxMTNmYjg4NTBkNi4uODdiNWExNGM3Y2E4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zaWRlYmFuZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Np ZGViYW5kLmMKQEAgLTMzMywzICszMzMsMTk5IEBAIHZvaWQgaW50ZWxfc2JpX3dyaXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MTYgcmVnLCB1MzIgdmFsdWUsCiB7CiAJaW50ZWxf c2JpX3J3KGk5MTUsIHJlZywgZGVzdGluYXRpb24sICZ2YWx1ZSwgZmFsc2UpOwogfQorCitzdGF0 aWMgaW5saW5lIGludCBnZW42X2NoZWNrX21haWxib3hfc3RhdHVzKHUzMiBtYm94KQoreworCXN3 aXRjaCAobWJveCAmIEdFTjZfUENPREVfRVJST1JfTUFTSykgeworCWNhc2UgR0VONl9QQ09ERV9T VUNDRVNTOgorCQlyZXR1cm4gMDsKKwljYXNlIEdFTjZfUENPREVfVU5JTVBMRU1FTlRFRF9DTUQ6 CisJCXJldHVybiAtRU5PREVWOworCWNhc2UgR0VONl9QQ09ERV9JTExFR0FMX0NNRDoKKwkJcmV0 dXJuIC1FTlhJTzsKKwljYXNlIEdFTjZfUENPREVfTUlOX0ZSRVFfVEFCTEVfR1RfUkFUSU9fT1VU X09GX1JBTkdFOgorCWNhc2UgR0VON19QQ09ERV9NSU5fRlJFUV9UQUJMRV9HVF9SQVRJT19PVVRf T0ZfUkFOR0U6CisJCXJldHVybiAtRU9WRVJGTE9XOworCWNhc2UgR0VONl9QQ09ERV9USU1FT1VU OgorCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0UobWJveCAm IEdFTjZfUENPREVfRVJST1JfTUFTSyk7CisJCXJldHVybiAwOworCX0KK30KKworc3RhdGljIGlu bGluZSBpbnQgZ2VuN19jaGVja19tYWlsYm94X3N0YXR1cyh1MzIgbWJveCkKK3sKKwlzd2l0Y2gg KG1ib3ggJiBHRU42X1BDT0RFX0VSUk9SX01BU0spIHsKKwljYXNlIEdFTjZfUENPREVfU1VDQ0VT UzoKKwkJcmV0dXJuIDA7CisJY2FzZSBHRU42X1BDT0RFX0lMTEVHQUxfQ01EOgorCQlyZXR1cm4g LUVOWElPOworCWNhc2UgR0VON19QQ09ERV9USU1FT1VUOgorCQlyZXR1cm4gLUVUSU1FRE9VVDsK KwljYXNlIEdFTjdfUENPREVfSUxMRUdBTF9EQVRBOgorCQlyZXR1cm4gLUVJTlZBTDsKKwljYXNl IEdFTjdfUENPREVfTUlOX0ZSRVFfVEFCTEVfR1RfUkFUSU9fT1VUX09GX1JBTkdFOgorCQlyZXR1 cm4gLUVPVkVSRkxPVzsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0UobWJveCAmIEdFTjZfUENP REVfRVJST1JfTUFTSyk7CisJCXJldHVybiAwOworCX0KK30KKworc3RhdGljIGludCBfX3NhbmR5 YnJpZGdlX3Bjb2RlX3J3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCSAgdTMy IG1ib3gsIHUzMiAqdmFsLAorCQkJCSAgaW50IGZhc3RfdGltZW91dF91cywKKwkJCQkgIGludCBz bG93X3RpbWVvdXRfbXMsCisJCQkJICBib29sIGlzX3JlYWQpCit7CisJc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5 MTUtPnNiX2xvY2spOworCisJLyoKKwkgKiBHRU42X1BDT0RFXyogYXJlIG91dHNpZGUgb2YgdGhl IGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgorCSAqIHVzZSB0ZSBmdyBJOTE1X1JFQUQgdmFyaWFu dHMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2Ygd29yaworCSAqIHJlcXVpcmVkIHdoZW4gcmVhZGlu Zy93cml0aW5nLgorCSAqLworCisJaWYgKGludGVsX3VuY29yZV9yZWFkX2Z3KHVuY29yZSwgR0VO Nl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZfUENPREVfUkVBRFkpCisJCXJldHVybiAtRUFHQUlOOwor CisJaW50ZWxfdW5jb3JlX3dyaXRlX2Z3KHVuY29yZSwgR0VONl9QQ09ERV9EQVRBLCAqdmFsKTsK KwlpbnRlbF91bmNvcmVfd3JpdGVfZncodW5jb3JlLCBHRU42X1BDT0RFX0RBVEExLCAwKTsKKwlp bnRlbF91bmNvcmVfd3JpdGVfZncodW5jb3JlLAorCQkJICAgICAgR0VONl9QQ09ERV9NQUlMQk9Y LCBHRU42X1BDT0RFX1JFQURZIHwgbWJveCk7CisKKwlpZiAoX19pbnRlbF93YWl0X2Zvcl9yZWdp c3Rlcl9mdyh1bmNvcmUsCisJCQkJCSBHRU42X1BDT0RFX01BSUxCT1gsCisJCQkJCSBHRU42X1BD T0RFX1JFQURZLCAwLAorCQkJCQkgZmFzdF90aW1lb3V0X3VzLAorCQkJCQkgc2xvd190aW1lb3V0 X21zLAorCQkJCQkgJm1ib3gpKQorCQlyZXR1cm4gLUVUSU1FRE9VVDsKKworCWlmIChpc19yZWFk KQorCQkqdmFsID0gaW50ZWxfdW5jb3JlX3JlYWRfZncodW5jb3JlLCBHRU42X1BDT0RFX0RBVEEp OworCisJaWYgKElOVEVMX0dFTihpOTE1KSA+IDYpCisJCXJldHVybiBnZW43X2NoZWNrX21haWxi b3hfc3RhdHVzKG1ib3gpOworCWVsc2UKKwkJcmV0dXJuIGdlbjZfY2hlY2tfbWFpbGJveF9zdGF0 dXMobWJveCk7Cit9CisKK2ludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCB1MzIgbWJveCwgdTMyICp2YWwpCit7CisJaW50IGVycjsKKworCW11 dGV4X2xvY2soJmk5MTUtPnNiX2xvY2spOworCWVyciA9IF9fc2FuZHlicmlkZ2VfcGNvZGVfcnco aTkxNSwgbWJveCwgdmFsLAorCQkJCSAgICAgNTAwLCAwLAorCQkJCSAgICAgdHJ1ZSk7CisJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5zYl9sb2NrKTsKKworCWlmIChlcnIpIHsKKwkJRFJNX0RFQlVHX0RS SVZFUigid2FybmluZzogcGNvZGUgKHJlYWQgZnJvbSBtYm94ICV4KSBtYWlsYm94IGFjY2VzcyBm YWlsZWQgZm9yICVwczogJWRcbiIsCisJCQkJIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVz cygwKSwgZXJyKTsKKwl9CisKKwlyZXR1cm4gZXJyOworfQorCitpbnQgc2FuZHlicmlkZ2VfcGNv ZGVfd3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQkgICAg dTMyIG1ib3gsIHUzMiB2YWwsCisJCQkJICAgIGludCBmYXN0X3RpbWVvdXRfdXMsCisJCQkJICAg IGludCBzbG93X3RpbWVvdXRfbXMpCit7CisJaW50IGVycjsKKworCW11dGV4X2xvY2soJmk5MTUt PnNiX2xvY2spOworCWVyciA9IF9fc2FuZHlicmlkZ2VfcGNvZGVfcncoaTkxNSwgbWJveCwgJnZh bCwKKwkJCQkgICAgIGZhc3RfdGltZW91dF91cywgc2xvd190aW1lb3V0X21zLAorCQkJCSAgICAg ZmFsc2UpOworCW11dGV4X3VubG9jaygmaTkxNS0+c2JfbG9jayk7CisKKwlpZiAoZXJyKSB7CisJ CURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBjb2RlICh3cml0ZSBvZiAweCUwOHggdG8gbWJv eCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAlcHM6ICVkXG4iLAorCQkJCSB2YWwsIG1i b3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgZXJyKTsKKwl9CisKKwlyZXR1cm4gZXJy OworfQorCitzdGF0aWMgYm9vbCBza2xfcGNvZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHUzMiBtYm94LAorCQkJCSAgdTMyIHJlcXVlc3QsIHUzMiByZXBseV9t YXNrLCB1MzIgcmVwbHksCisJCQkJICB1MzIgKnN0YXR1cykKK3sKKwkqc3RhdHVzID0gX19zYW5k eWJyaWRnZV9wY29kZV9ydyhpOTE1LCBtYm94LCAmcmVxdWVzdCwKKwkJCQkJIDUwMCwgMCwKKwkJ CQkJIHRydWUpOworCisJcmV0dXJuICpzdGF0dXMgfHwgKChyZXF1ZXN0ICYgcmVwbHlfbWFzaykg PT0gcmVwbHkpOworfQorCisvKioKKyAqIHNrbF9wY29kZV9yZXF1ZXN0IC0gc2VuZCBQQ09ERSBy ZXF1ZXN0IHVudGlsIGFja25vd2xlZGdtZW50CisgKiBAaTkxNTogZGV2aWNlIHByaXZhdGUKKyAq IEBtYm94OiBQQ09ERSBtYWlsYm94IElEIHRoZSByZXF1ZXN0IGlzIHRhcmdldGVkIGZvcgorICog QHJlcXVlc3Q6IHJlcXVlc3QgSUQKKyAqIEByZXBseV9tYXNrOiBtYXNrIHVzZWQgdG8gY2hlY2sg Zm9yIHJlcXVlc3QgYWNrbm93bGVkZ21lbnQKKyAqIEByZXBseTogdmFsdWUgdXNlZCB0byBjaGVj ayBmb3IgcmVxdWVzdCBhY2tub3dsZWRnbWVudAorICogQHRpbWVvdXRfYmFzZV9tczogdGltZW91 dCBmb3IgcG9sbGluZyB3aXRoIHByZWVtcHRpb24gZW5hYmxlZAorICoKKyAqIEtlZXAgcmVzZW5k aW5nIHRoZSBAcmVxdWVzdCB0byBAbWJveCB1bnRpbCBQQ09ERSBhY2tub3dsZWRnZXMgaXQsIFBD T0RFCisgKiByZXBvcnRzIGFuIGVycm9yIG9yIGFuIG92ZXJhbGwgdGltZW91dCBvZiBAdGltZW91 dF9iYXNlX21zKzUwIG1zIGV4cGlyZXMuCisgKiBUaGUgcmVxdWVzdCBpcyBhY2tub3dsZWRnZWQg b25jZSB0aGUgUENPREUgcmVwbHkgZHdvcmQgZXF1YWxzIEByZXBseSBhZnRlcgorICogYXBwbHlp bmcgQHJlcGx5X21hc2suIFBvbGxpbmcgaXMgZmlyc3QgYXR0ZW1wdGVkIHdpdGggcHJlZW1wdGlv biBlbmFibGVkCisgKiBmb3IgQHRpbWVvdXRfYmFzZV9tcyBhbmQgaWYgdGhpcyB0aW1lcyBvdXQg Zm9yIGFub3RoZXIgNTAgbXMgd2l0aAorICogcHJlZW1wdGlvbiBkaXNhYmxlZC4KKyAqCisgKiBS ZXR1cm5zIDAgb24gc3VjY2VzcywgJS1FVElNRURPVVQgaW4gY2FzZSBvZiBhIHRpbWVvdXQsIDww IGluIGNhc2Ugb2Ygc29tZQorICogb3RoZXIgZXJyb3IgYXMgcmVwb3J0ZWQgYnkgUENPREUuCisg Ki8KK2ludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg dTMyIG1ib3gsIHUzMiByZXF1ZXN0LAorCQkgICAgICB1MzIgcmVwbHlfbWFzaywgdTMyIHJlcGx5 LCBpbnQgdGltZW91dF9iYXNlX21zKQoreworCXUzMiBzdGF0dXM7CisJaW50IHJldDsKKworCW11 dGV4X2xvY2soJmk5MTUtPnNiX2xvY2spOworCisjZGVmaW5lIENPTkQgXAorCXNrbF9wY29kZV90 cnlfcmVxdWVzdChpOTE1LCBtYm94LCByZXF1ZXN0LCByZXBseV9tYXNrLCByZXBseSwgJnN0YXR1 cykKKworCS8qCisJICogUHJpbWUgdGhlIFBDT0RFIGJ5IGRvaW5nIGEgcmVxdWVzdCBmaXJzdC4g Tm9ybWFsbHkgaXQgZ3VhcmFudGVlcworCSAqIHRoYXQgYSBzdWJzZXF1ZW50IHJlcXVlc3QsIGF0 IG1vc3QgQHRpbWVvdXRfYmFzZV9tcyBsYXRlciwgc3VjY2VlZHMuCisJICogX3dhaXRfZm9yKCkg ZG9lc24ndCBndWFyYW50ZWUgd2hlbiBpdHMgcGFzc2VkIGNvbmRpdGlvbiBpcyBldmFsdWF0ZWQK KwkgKiBmaXJzdCwgc28gc2VuZCB0aGUgZmlyc3QgcmVxdWVzdCBleHBsaWNpdGx5LgorCSAqLwor CWlmIChDT05EKSB7CisJCXJldCA9IDA7CisJCWdvdG8gb3V0OworCX0KKwlyZXQgPSBfd2FpdF9m b3IoQ09ORCwgdGltZW91dF9iYXNlX21zICogMTAwMCwgMTAsIDEwKTsKKwlpZiAoIXJldCkKKwkJ Z290byBvdXQ7CisKKwkvKgorCSAqIFRoZSBhYm92ZSBjYW4gdGltZSBvdXQgaWYgdGhlIG51bWJl ciBvZiByZXF1ZXN0cyB3YXMgbG93ICgyIGluIHRoZQorCSAqIHdvcnN0IGNhc2UpIF9hbmRfIFBD T0RFIHdhcyBidXN5IGZvciBzb21lIHJlYXNvbiBldmVuIGFmdGVyIGEKKwkgKiAocXVldWVkKSBy ZXF1ZXN0IGFuZCBAdGltZW91dF9iYXNlX21zIGRlbGF5LiBBcyBhIHdvcmthcm91bmQgcmV0cnkK KwkgKiB0aGUgcG9sbCB3aXRoIHByZWVtcHRpb24gZGlzYWJsZWQgdG8gbWF4aW1pemUgdGhlIG51 bWJlciBvZgorCSAqIHJlcXVlc3RzLiBJbmNyZWFzZSB0aGUgdGltZW91dCBmcm9tIEB0aW1lb3V0 X2Jhc2VfbXMgdG8gNTBtcyB0bworCSAqIGFjY291bnQgZm9yIGludGVycnVwdHMgdGhhdCBjb3Vs ZCByZWR1Y2UgdGhlIG51bWJlciBvZiB0aGVzZQorCSAqIHJlcXVlc3RzLCBhbmQgZm9yIGFueSBx dWlya3Mgb2YgdGhlIFBDT0RFIGZpcm13YXJlIHRoYXQgZGVsYXlzCisJICogdGhlIHJlcXVlc3Qg Y29tcGxldGlvbi4KKwkgKi8KKwlEUk1fREVCVUdfS01TKCJQQ09ERSB0aW1lb3V0LCByZXRyeWlu ZyB3aXRoIHByZWVtcHRpb24gZGlzYWJsZWRcbiIpOworCVdBUk5fT05fT05DRSh0aW1lb3V0X2Jh c2VfbXMgPiAzKTsKKwlwcmVlbXB0X2Rpc2FibGUoKTsKKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMo Q09ORCwgNTApOworCXByZWVtcHRfZW5hYmxlKCk7CisKK291dDoKKwltdXRleF91bmxvY2soJmk5 MTUtPnNiX2xvY2spOworCXJldHVybiByZXQgPyByZXQgOiBzdGF0dXM7CisjdW5kZWYgQ09ORAor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmgKaW5kZXggOWQzNmJkYzE3OTU1Li5h MDkwN2UyYzQ5OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGVi YW5kLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuaApAQCAtMTI3 LDQgKzEyNywxNCBAQCB1MzIgaW50ZWxfc2JpX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHUxNiByZWcsCiB2b2lkIGludGVsX3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgdTE2IHJlZywgdTMyIHZhbHVlLAogCQkgICAgIGVudW0gaW50ZWxfc2JpX2Rl c3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKIAoraW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBtYm94LCB1MzIgKnZhbCk7CitpbnQgc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgdTMyIG1ib3gsCisJCQkJICAgIHUzMiB2YWwsIGludCBmYXN0X3RpbWVvdXRfdXMsCisJCQkJ ICAgIGludCBzbG93X3RpbWVvdXRfbXMpOworI2RlZmluZSBzYW5keWJyaWRnZV9wY29kZV93cml0 ZShpOTE1LCBtYm94LCB2YWwpCVwKKwlzYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1lb3V0KGk5 MTUsIG1ib3gsIHZhbCwgNTAwLCAwKQorCitpbnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCwKKwkJICAgICAgdTMy IHJlcGx5X21hc2ssIHUzMiByZXBseSwgaW50IHRpbWVvdXRfYmFzZV9tcyk7CisKICNlbmRpZiAv KiBfSU5URUxfU0lERUJBTkRfSCAqLwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng=