From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0499C43461 for ; Thu, 6 May 2021 19:00:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9DF1B61001 for ; Thu, 6 May 2021 19:00:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9DF1B61001 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DEABC6ED83; Thu, 6 May 2021 18:57:49 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0BB7E6ED02; Thu, 6 May 2021 18:57:13 +0000 (UTC) IronPort-SDR: VmbgNqsl9BaJZHBRnt4xdB5ukW3vfJegItLvnQy8DXL2N6qU/EjdJrma5/n+4opNQ53NW69uJR b+7j9PveviLg== X-IronPort-AV: E=McAfee;i="6200,9189,9976"; a="198195439" X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="198195439" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:11 -0700 IronPort-SDR: xFGiO3nvi+RbwFbxonRBRznAigbVu6ZhvoWEl6gnELBk80crwg/R28dmizXvUb2EIkzbAmDk6C L9XImVYnVLvQ== X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="469583424" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:09 -0700 From: Matthew Brost To: , Subject: [RFC PATCH 22/97] drm/i915/guc: Update CTB response status Date: Thu, 6 May 2021 12:13:36 -0700 Message-Id: <20210506191451.77768-23-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210506191451.77768-1-matthew.brost@intel.com> References: <20210506191451.77768-1-matthew.brost@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: matthew.brost@intel.com, tvrtko.ursulin@intel.com, daniele.ceraolospurio@intel.com, jason.ekstrand@intel.com, jon.bloomfield@intel.com, daniel.vetter@intel.com, john.c.harrison@intel.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Michal Wajdeczko Format of the STATUS dword in CTB response message now follows definition of the HXG header. Update our code and remove any obsolete legacy definitions. GuC: 55.0.0 Signed-off-by: Michal Wajdeczko Signed-off-by: Matthew Brost Cc: Piotr PiĆ³rkowski --- drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h | 1 - drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 12 ++++++------ drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h | 17 ----------------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h index 488b6061ee89..2030896857d5 100644 --- a/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h +++ b/drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h @@ -7,7 +7,6 @@ #define _ABI_GUC_ERRORS_ABI_H enum intel_guc_response_status { - INTEL_GUC_RESPONSE_STATUS_SUCCESS = 0x0, INTEL_GUC_RESPONSE_STATUS_GENERIC_FAIL = 0xF000, }; diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c index a174978c6a27..1afdeac683b5 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c @@ -455,7 +455,7 @@ static int wait_for_ct_request_update(struct ct_request *req, u32 *status) */ timeout = max(10, CONFIG_DRM_I915_HEARTBEAT_INTERVAL); -#define done INTEL_GUC_MSG_IS_RESPONSE(READ_ONCE(req->status)) +#define done (FIELD_GET(GUC_HXG_MSG_0_ORIGIN, READ_ONCE(req->status)) == GUC_HXG_ORIGIN_GUC) err = wait_for_us(done, 10); if (err) err = wait_for(done, timeout); @@ -510,21 +510,21 @@ static int ct_send(struct intel_guc_ct *ct, if (unlikely(err)) goto unlink; - if (!INTEL_GUC_MSG_IS_RESPONSE_SUCCESS(*status)) { + if (FIELD_GET(GUC_HXG_MSG_0_TYPE, *status) != GUC_HXG_TYPE_RESPONSE_SUCCESS) { err = -EIO; goto unlink; } if (response_buf) { /* There shall be no data in the status */ - WARN_ON(INTEL_GUC_MSG_TO_DATA(request.status)); + WARN_ON(FIELD_GET(GUC_HXG_RESPONSE_MSG_0_DATA0, request.status)); /* Return actual response len */ err = request.response_len; } else { /* There shall be no response payload */ WARN_ON(request.response_len); /* Return data decoded from the status dword */ - err = INTEL_GUC_MSG_TO_DATA(*status); + err = FIELD_GET(GUC_HXG_RESPONSE_MSG_0_DATA0, *status); } unlink: @@ -719,8 +719,8 @@ static int ct_handle_response(struct intel_guc_ct *ct, struct ct_incoming_msg *r status = response->msg[2]; datalen = len - 2; - /* Format of the status follows RESPONSE message */ - if (unlikely(!INTEL_GUC_MSG_IS_RESPONSE(status))) { + /* Format of the status dword follows HXG header */ + if (unlikely(FIELD_GET(GUC_HXG_MSG_0_ORIGIN, status) != GUC_HXG_ORIGIN_GUC)) { CT_ERROR(ct, "Corrupted response (status %#x)\n", status); return -EPROTO; } diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h index 9bf35240e723..d445f6b77db4 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h @@ -388,23 +388,6 @@ struct guc_shared_ctx_data { struct guc_ctx_report preempt_ctx_report[GUC_MAX_ENGINES_NUM]; } __packed; -#define __INTEL_GUC_MSG_GET(T, m) \ - (((m) & INTEL_GUC_MSG_ ## T ## _MASK) >> INTEL_GUC_MSG_ ## T ## _SHIFT) -#define INTEL_GUC_MSG_TO_TYPE(m) __INTEL_GUC_MSG_GET(TYPE, m) -#define INTEL_GUC_MSG_TO_DATA(m) __INTEL_GUC_MSG_GET(DATA, m) -#define INTEL_GUC_MSG_TO_CODE(m) __INTEL_GUC_MSG_GET(CODE, m) - -#define __INTEL_GUC_MSG_TYPE_IS(T, m) \ - (INTEL_GUC_MSG_TO_TYPE(m) == INTEL_GUC_MSG_TYPE_ ## T) -#define INTEL_GUC_MSG_IS_REQUEST(m) __INTEL_GUC_MSG_TYPE_IS(REQUEST, m) -#define INTEL_GUC_MSG_IS_RESPONSE(m) __INTEL_GUC_MSG_TYPE_IS(RESPONSE, m) - -#define INTEL_GUC_MSG_IS_RESPONSE_SUCCESS(m) \ - (typecheck(u32, (m)) && \ - ((m) & (INTEL_GUC_MSG_TYPE_MASK | INTEL_GUC_MSG_CODE_MASK)) == \ - ((INTEL_GUC_MSG_TYPE_RESPONSE << INTEL_GUC_MSG_TYPE_SHIFT) | \ - (INTEL_GUC_RESPONSE_STATUS_SUCCESS << INTEL_GUC_MSG_CODE_SHIFT))) - /* This action will be programmed in C1BC - SOFT_SCRATCH_15_REG */ enum intel_guc_recv_message { INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED = BIT(1), -- 2.28.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 98BB1C433ED for ; Thu, 6 May 2021 18:59:39 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4D3D661001 for ; Thu, 6 May 2021 18:59:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4D3D661001 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C8AC26ED22; Thu, 6 May 2021 18:57:39 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0BB7E6ED02; Thu, 6 May 2021 18:57:13 +0000 (UTC) IronPort-SDR: VmbgNqsl9BaJZHBRnt4xdB5ukW3vfJegItLvnQy8DXL2N6qU/EjdJrma5/n+4opNQ53NW69uJR b+7j9PveviLg== X-IronPort-AV: E=McAfee;i="6200,9189,9976"; a="198195439" X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="198195439" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:11 -0700 IronPort-SDR: xFGiO3nvi+RbwFbxonRBRznAigbVu6ZhvoWEl6gnELBk80crwg/R28dmizXvUb2EIkzbAmDk6C L9XImVYnVLvQ== X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="469583424" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:09 -0700 From: Matthew Brost To: , Date: Thu, 6 May 2021 12:13:36 -0700 Message-Id: <20210506191451.77768-23-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210506191451.77768-1-matthew.brost@intel.com> References: <20210506191451.77768-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC PATCH 22/97] drm/i915/guc: Update CTB response status X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jason.ekstrand@intel.com, daniel.vetter@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+CgpGb3Jt YXQgb2YgdGhlIFNUQVRVUyBkd29yZCBpbiBDVEIgcmVzcG9uc2UgbWVzc2FnZSBub3cgZm9sbG93 cwpkZWZpbml0aW9uIG9mIHRoZSBIWEcgaGVhZGVyLiBVcGRhdGUgb3VyIGNvZGUgYW5kIHJlbW92 ZSBhbnkKb2Jzb2xldGUgbGVnYWN5IGRlZmluaXRpb25zLgoKR3VDOiA1NS4wLjAKU2lnbmVkLW9m Zi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgpDYzogUGlv dHIgUGnDs3Jrb3dza2kgPHBpb3RyLnBpb3Jrb3dza2lAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfZXJyb3JzX2FiaS5oIHwgIDEgLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgICAgICAgfCAxMiArKysrKystLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmggICAgIHwgMTcgLS0t LS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3Vj X2Vycm9yc19hYmkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfZXJyb3Jz X2FiaS5oCmluZGV4IDQ4OGI2MDYxZWU4OS4uMjAzMDg5Njg1N2Q1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2Vycm9yc19hYmkuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2Vycm9yc19hYmkuaApAQCAtNyw3ICs3LDYgQEAK ICNkZWZpbmUgX0FCSV9HVUNfRVJST1JTX0FCSV9ICiAKIGVudW0gaW50ZWxfZ3VjX3Jlc3BvbnNl X3N0YXR1cyB7Ci0JSU5URUxfR1VDX1JFU1BPTlNFX1NUQVRVU19TVUNDRVNTID0gMHgwLAogCUlO VEVMX0dVQ19SRVNQT05TRV9TVEFUVVNfR0VORVJJQ19GQUlMID0gMHhGMDAwLAogfTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYwppbmRleCBhMTc0OTc4YzZhMjcu LjFhZmRlYWM2ODNiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX2N0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0 LmMKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgaW50IHdhaXRfZm9yX2N0X3JlcXVlc3RfdXBk YXRlKHN0cnVjdCBjdF9yZXF1ZXN0ICpyZXEsIHUzMiAqc3RhdHVzKQogCSAqLwogCXRpbWVvdXQg PSBtYXgoMTAsIENPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpOwogCi0jZGVmaW5l IGRvbmUgSU5URUxfR1VDX01TR19JU19SRVNQT05TRShSRUFEX09OQ0UocmVxLT5zdGF0dXMpKQor I2RlZmluZSBkb25lIChGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9PUklHSU4sIFJFQURfT05DRShy ZXEtPnN0YXR1cykpID09IEdVQ19IWEdfT1JJR0lOX0dVQykKIAllcnIgPSB3YWl0X2Zvcl91cyhk b25lLCAxMCk7CiAJaWYgKGVycikKIAkJZXJyID0gd2FpdF9mb3IoZG9uZSwgdGltZW91dCk7CkBA IC01MTAsMjEgKzUxMCwyMSBAQCBzdGF0aWMgaW50IGN0X3NlbmQoc3RydWN0IGludGVsX2d1Y19j dCAqY3QsCiAJaWYgKHVubGlrZWx5KGVycikpCiAJCWdvdG8gdW5saW5rOwogCi0JaWYgKCFJTlRF TF9HVUNfTVNHX0lTX1JFU1BPTlNFX1NVQ0NFU1MoKnN0YXR1cykpIHsKKwlpZiAoRklFTERfR0VU KEdVQ19IWEdfTVNHXzBfVFlQRSwgKnN0YXR1cykgIT0gR1VDX0hYR19UWVBFX1JFU1BPTlNFX1NV Q0NFU1MpIHsKIAkJZXJyID0gLUVJTzsKIAkJZ290byB1bmxpbms7CiAJfQogCiAJaWYgKHJlc3Bv bnNlX2J1ZikgewogCQkvKiBUaGVyZSBzaGFsbCBiZSBubyBkYXRhIGluIHRoZSBzdGF0dXMgKi8K LQkJV0FSTl9PTihJTlRFTF9HVUNfTVNHX1RPX0RBVEEocmVxdWVzdC5zdGF0dXMpKTsKKwkJV0FS Tl9PTihGSUVMRF9HRVQoR1VDX0hYR19SRVNQT05TRV9NU0dfMF9EQVRBMCwgcmVxdWVzdC5zdGF0 dXMpKTsKIAkJLyogUmV0dXJuIGFjdHVhbCByZXNwb25zZSBsZW4gKi8KIAkJZXJyID0gcmVxdWVz dC5yZXNwb25zZV9sZW47CiAJfSBlbHNlIHsKIAkJLyogVGhlcmUgc2hhbGwgYmUgbm8gcmVzcG9u c2UgcGF5bG9hZCAqLwogCQlXQVJOX09OKHJlcXVlc3QucmVzcG9uc2VfbGVuKTsKIAkJLyogUmV0 dXJuIGRhdGEgZGVjb2RlZCBmcm9tIHRoZSBzdGF0dXMgZHdvcmQgKi8KLQkJZXJyID0gSU5URUxf R1VDX01TR19UT19EQVRBKCpzdGF0dXMpOworCQllcnIgPSBGSUVMRF9HRVQoR1VDX0hYR19SRVNQ T05TRV9NU0dfMF9EQVRBMCwgKnN0YXR1cyk7CiAJfQogCiB1bmxpbms6CkBAIC03MTksOCArNzE5 LDggQEAgc3RhdGljIGludCBjdF9oYW5kbGVfcmVzcG9uc2Uoc3RydWN0IGludGVsX2d1Y19jdCAq Y3QsIHN0cnVjdCBjdF9pbmNvbWluZ19tc2cgKnIKIAlzdGF0dXMgPSByZXNwb25zZS0+bXNnWzJd OwogCWRhdGFsZW4gPSBsZW4gLSAyOwogCi0JLyogRm9ybWF0IG9mIHRoZSBzdGF0dXMgZm9sbG93 cyBSRVNQT05TRSBtZXNzYWdlICovCi0JaWYgKHVubGlrZWx5KCFJTlRFTF9HVUNfTVNHX0lTX1JF U1BPTlNFKHN0YXR1cykpKSB7CisJLyogRm9ybWF0IG9mIHRoZSBzdGF0dXMgZHdvcmQgZm9sbG93 cyBIWEcgaGVhZGVyICovCisJaWYgKHVubGlrZWx5KEZJRUxEX0dFVChHVUNfSFhHX01TR18wX09S SUdJTiwgc3RhdHVzKSAhPSBHVUNfSFhHX09SSUdJTl9HVUMpKSB7CiAJCUNUX0VSUk9SKGN0LCAi Q29ycnVwdGVkIHJlc3BvbnNlIChzdGF0dXMgJSN4KVxuIiwgc3RhdHVzKTsKIAkJcmV0dXJuIC1F UFJPVE87CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgK aW5kZXggOWJmMzUyNDBlNzIzLi5kNDQ1ZjZiNzdkYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaApAQCAtMzg4LDIzICszODgsNiBAQCBzdHJ1Y3QgZ3Vj X3NoYXJlZF9jdHhfZGF0YSB7CiAJc3RydWN0IGd1Y19jdHhfcmVwb3J0IHByZWVtcHRfY3R4X3Jl cG9ydFtHVUNfTUFYX0VOR0lORVNfTlVNXTsKIH0gX19wYWNrZWQ7CiAKLSNkZWZpbmUgX19JTlRF TF9HVUNfTVNHX0dFVChULCBtKSBcCi0JKCgobSkgJiBJTlRFTF9HVUNfTVNHXyAjIyBUICMjIF9N QVNLKSA+PiBJTlRFTF9HVUNfTVNHXyAjIyBUICMjIF9TSElGVCkKLSNkZWZpbmUgSU5URUxfR1VD X01TR19UT19UWVBFKG0pCV9fSU5URUxfR1VDX01TR19HRVQoVFlQRSwgbSkKLSNkZWZpbmUgSU5U RUxfR1VDX01TR19UT19EQVRBKG0pCV9fSU5URUxfR1VDX01TR19HRVQoREFUQSwgbSkKLSNkZWZp bmUgSU5URUxfR1VDX01TR19UT19DT0RFKG0pCV9fSU5URUxfR1VDX01TR19HRVQoQ09ERSwgbSkK LQotI2RlZmluZSBfX0lOVEVMX0dVQ19NU0dfVFlQRV9JUyhULCBtKSBcCi0JKElOVEVMX0dVQ19N U0dfVE9fVFlQRShtKSA9PSBJTlRFTF9HVUNfTVNHX1RZUEVfICMjIFQpCi0jZGVmaW5lIElOVEVM X0dVQ19NU0dfSVNfUkVRVUVTVChtKQlfX0lOVEVMX0dVQ19NU0dfVFlQRV9JUyhSRVFVRVNULCBt KQotI2RlZmluZSBJTlRFTF9HVUNfTVNHX0lTX1JFU1BPTlNFKG0pCV9fSU5URUxfR1VDX01TR19U WVBFX0lTKFJFU1BPTlNFLCBtKQotCi0jZGVmaW5lIElOVEVMX0dVQ19NU0dfSVNfUkVTUE9OU0Vf U1VDQ0VTUyhtKSBcCi0JICh0eXBlY2hlY2sodTMyLCAobSkpICYmIFwKLQkgICgobSkgJiAoSU5U RUxfR1VDX01TR19UWVBFX01BU0sgfCBJTlRFTF9HVUNfTVNHX0NPREVfTUFTSykpID09IFwKLQkg ICgoSU5URUxfR1VDX01TR19UWVBFX1JFU1BPTlNFIDw8IElOVEVMX0dVQ19NU0dfVFlQRV9TSElG VCkgfCBcCi0JICAgKElOVEVMX0dVQ19SRVNQT05TRV9TVEFUVVNfU1VDQ0VTUyA8PCBJTlRFTF9H VUNfTVNHX0NPREVfU0hJRlQpKSkKLQogLyogVGhpcyBhY3Rpb24gd2lsbCBiZSBwcm9ncmFtbWVk IGluIEMxQkMgLSBTT0ZUX1NDUkFUQ0hfMTVfUkVHICovCiBlbnVtIGludGVsX2d1Y19yZWN2X21l c3NhZ2UgewogCUlOVEVMX0dVQ19SRUNWX01TR19DUkFTSF9EVU1QX1BPU1RFRCA9IEJJVCgxKSwK LS0gCjIuMjguMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==