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,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 23DDBC636C9 for ; Wed, 21 Jul 2021 16:12:15 +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 E9EF6608FC for ; Wed, 21 Jul 2021 16:12:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E9EF6608FC 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 59ED06E9B3; Wed, 21 Jul 2021 16:12:14 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 427156E9B3; Wed, 21 Jul 2021 16:12:13 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10052"; a="211186393" X-IronPort-AV: E=Sophos;i="5.84,258,1620716400"; d="scan'208";a="211186393" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2021 09:12:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,258,1620716400"; d="scan'208";a="564786856" Received: from vbelgaum-ubuntu.fm.intel.com ([10.1.27.27]) by orsmga004.jf.intel.com with ESMTP; 21 Jul 2021 09:12:04 -0700 From: Vinay Belgaumkar To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH 02/14] drm/i915/guc/slpc: Initial definitions for SLPC Date: Wed, 21 Jul 2021 09:11:08 -0700 Message-Id: <20210721161120.24610-3-vinay.belgaumkar@intel.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20210721161120.24610-1-vinay.belgaumkar@intel.com> References: <20210721161120.24610-1-vinay.belgaumkar@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: Vinay Belgaumkar , Daniele Ceraolo Spurio , Sundaresan Sujaritha Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Add macros to check for SLPC support. This feature is currently supported for Gen12+ and enabled whenever GuC submission is enabled/selected. Include templates for SLPC init/fini and enable. v2: Move SLPC helper functions to intel_guc_slpc.c/.h. Define basic template for SLPC structure in intel_guc_slpc_types.h. Fix copyright (Michal W) Signed-off-by: Vinay Belgaumkar Signed-off-by: Sundaresan Sujaritha Signed-off-by: Daniele Ceraolo Spurio drm/i915/guc/slpc: Lay out slpc init/enable/fini Declare init/fini and enable function templates. v2: Rebase Signed-off-by: Vinay Belgaumkar Signed-off-by: Sundaresan Sujaritha --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/gt/uc/intel_guc.c | 2 + drivers/gpu/drm/i915/gt/uc/intel_guc.h | 4 ++ drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 63 +++++++++++++++++++ drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h | 33 ++++++++++ .../gpu/drm/i915/gt/uc/intel_guc_slpc_types.h | 15 +++++ drivers/gpu/drm/i915/gt/uc/intel_uc.c | 6 +- drivers/gpu/drm/i915/gt/uc/intel_uc.h | 2 + 8 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index ab7679957623..d8eac4468df9 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -186,6 +186,7 @@ i915-y += gt/uc/intel_uc.o \ gt/uc/intel_guc_fw.o \ gt/uc/intel_guc_log.o \ gt/uc/intel_guc_log_debugfs.o \ + gt/uc/intel_guc_slpc.o \ gt/uc/intel_guc_submission.o \ gt/uc/intel_huc.o \ gt/uc/intel_huc_debugfs.o \ diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc.c index 979128e28372..39bc3c16057b 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.c @@ -7,6 +7,7 @@ #include "gt/intel_gt_irq.h" #include "gt/intel_gt_pm_irq.h" #include "intel_guc.h" +#include "intel_guc_slpc.h" #include "intel_guc_ads.h" #include "intel_guc_submission.h" #include "i915_drv.h" @@ -157,6 +158,7 @@ void intel_guc_init_early(struct intel_guc *guc) intel_guc_ct_init_early(&guc->ct); intel_guc_log_init_early(&guc->log); intel_guc_submission_init_early(guc); + intel_guc_slpc_init_early(&guc->slpc); mutex_init(&guc->send_mutex); spin_lock_init(&guc->irq_lock); diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.h b/drivers/gpu/drm/i915/gt/uc/intel_guc.h index 9c62c68fb132..8cecfad9d7b1 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h @@ -15,6 +15,7 @@ #include "intel_guc_ct.h" #include "intel_guc_log.h" #include "intel_guc_reg.h" +#include "intel_guc_slpc_types.h" #include "intel_uc_fw.h" #include "i915_utils.h" #include "i915_vma.h" @@ -30,6 +31,7 @@ struct intel_guc { struct intel_uc_fw fw; struct intel_guc_log log; struct intel_guc_ct ct; + struct intel_guc_slpc slpc; /* Global engine used to submit requests to GuC */ struct i915_sched_engine *sched_engine; @@ -57,6 +59,8 @@ struct intel_guc { bool submission_supported; bool submission_selected; + bool slpc_supported; + bool slpc_selected; struct i915_vma *ads_vma; struct __guc_ads_blob *ads_blob; diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c new file mode 100644 index 000000000000..d9feb430ce35 --- /dev/null +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2021 Intel Corporation + */ + +#include "i915_drv.h" +#include "intel_guc_slpc.h" +#include "gt/intel_gt.h" + +static inline struct intel_guc *slpc_to_guc(struct intel_guc_slpc *slpc) +{ + return container_of(slpc, struct intel_guc, slpc); +} + +static bool __detect_slpc_supported(struct intel_guc *guc) +{ + /* GuC SLPC is unavailable for pre-Gen12 */ + return guc->submission_supported && + GRAPHICS_VER(guc_to_gt(guc)->i915) >= 12; +} + +static bool __guc_slpc_selected(struct intel_guc *guc) +{ + if (!intel_guc_slpc_is_supported(guc)) + return false; + + return guc->submission_selected; +} + +void intel_guc_slpc_init_early(struct intel_guc_slpc *slpc) +{ + struct intel_guc *guc = slpc_to_guc(slpc); + + guc->slpc_supported = __detect_slpc_supported(guc); + guc->slpc_selected = __guc_slpc_selected(guc); +} + +int intel_guc_slpc_init(struct intel_guc_slpc *slpc) +{ + return 0; +} + +/* + * intel_guc_slpc_enable() - Start SLPC + * @slpc: pointer to intel_guc_slpc. + * + * SLPC is enabled by setting up the shared data structure and + * sending reset event to GuC SLPC. Initial data is setup in + * intel_guc_slpc_init. Here we send the reset event. We do + * not currently need a slpc_disable since this is taken care + * of automatically when a reset/suspend occurs and the GuC + * CTB is destroyed. + * + * Return: 0 on success, non-zero error code on failure. + */ +int intel_guc_slpc_enable(struct intel_guc_slpc *slpc) +{ + return 0; +} + +void intel_guc_slpc_fini(struct intel_guc_slpc *slpc) +{ +} diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h new file mode 100644 index 000000000000..c3b0ad7f0f93 --- /dev/null +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2021 Intel Corporation + */ + +#ifndef _INTEL_GUC_SLPC_H_ +#define _INTEL_GUC_SLPC_H_ + +#include "intel_guc_submission.h" +#include "intel_guc_slpc_types.h" + +static inline bool intel_guc_slpc_is_supported(struct intel_guc *guc) +{ + return guc->slpc_supported; +} + +static inline bool intel_guc_slpc_is_wanted(struct intel_guc *guc) +{ + return guc->slpc_selected; +} + +static inline bool intel_guc_slpc_is_used(struct intel_guc *guc) +{ + return intel_guc_submission_is_used(guc) && intel_guc_slpc_is_wanted(guc); +} + +void intel_guc_slpc_init_early(struct intel_guc_slpc *slpc); + +int intel_guc_slpc_init(struct intel_guc_slpc *slpc); +int intel_guc_slpc_enable(struct intel_guc_slpc *slpc); +void intel_guc_slpc_fini(struct intel_guc_slpc *slpc); + +#endif diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h new file mode 100644 index 000000000000..b85148265b1f --- /dev/null +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2021 Intel Corporation + */ + +#ifndef _INTEL_GUC_SLPC_TYPES_H_ +#define _INTEL_GUC_SLPC_TYPES_H_ + +#include + +struct intel_guc_slpc { + +}; + +#endif diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c index da57d18d9f6b..e6bd9406c7b2 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c @@ -75,16 +75,18 @@ static void __confirm_options(struct intel_uc *uc) struct drm_i915_private *i915 = uc_to_gt(uc)->i915; drm_dbg(&i915->drm, - "enable_guc=%d (guc:%s submission:%s huc:%s)\n", + "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n", i915->params.enable_guc, yesno(intel_uc_wants_guc(uc)), yesno(intel_uc_wants_guc_submission(uc)), - yesno(intel_uc_wants_huc(uc))); + yesno(intel_uc_wants_huc(uc)), + yesno(intel_uc_wants_guc_slpc(uc))); if (i915->params.enable_guc == 0) { GEM_BUG_ON(intel_uc_wants_guc(uc)); GEM_BUG_ON(intel_uc_wants_guc_submission(uc)); GEM_BUG_ON(intel_uc_wants_huc(uc)); + GEM_BUG_ON(intel_uc_wants_guc_slpc(uc)); return; } diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.h b/drivers/gpu/drm/i915/gt/uc/intel_uc.h index e2da2b6e76e1..925a58ca6b94 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.h @@ -8,6 +8,7 @@ #include "intel_guc.h" #include "intel_guc_submission.h" +#include "intel_guc_slpc.h" #include "intel_huc.h" #include "i915_params.h" @@ -83,6 +84,7 @@ __uc_state_checker(x, func, uses, used) uc_state_checkers(guc, guc); uc_state_checkers(huc, huc); uc_state_checkers(guc, guc_submission); +uc_state_checkers(guc, guc_slpc); #undef uc_state_checkers #undef __uc_state_checker -- 2.25.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,SPF_PASS,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 21467C636C9 for ; Wed, 21 Jul 2021 16:12:18 +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 E790B6100C for ; Wed, 21 Jul 2021 16:12:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E790B6100C 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 ED35D6E9B9; Wed, 21 Jul 2021 16:12:16 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 427156E9B3; Wed, 21 Jul 2021 16:12:13 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10052"; a="211186393" X-IronPort-AV: E=Sophos;i="5.84,258,1620716400"; d="scan'208";a="211186393" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2021 09:12:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,258,1620716400"; d="scan'208";a="564786856" Received: from vbelgaum-ubuntu.fm.intel.com ([10.1.27.27]) by orsmga004.jf.intel.com with ESMTP; 21 Jul 2021 09:12:04 -0700 From: Vinay Belgaumkar To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Wed, 21 Jul 2021 09:11:08 -0700 Message-Id: <20210721161120.24610-3-vinay.belgaumkar@intel.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20210721161120.24610-1-vinay.belgaumkar@intel.com> References: <20210721161120.24610-1-vinay.belgaumkar@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 02/14] drm/i915/guc/slpc: Initial definitions for SLPC 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QWRkIG1hY3JvcyB0byBjaGVjayBmb3IgU0xQQyBzdXBwb3J0LiBUaGlzIGZlYXR1cmUgaXMgY3Vy cmVudGx5IHN1cHBvcnRlZApmb3IgR2VuMTIrIGFuZCBlbmFibGVkIHdoZW5ldmVyIEd1QyBzdWJt aXNzaW9uIGlzIGVuYWJsZWQvc2VsZWN0ZWQuCgpJbmNsdWRlIHRlbXBsYXRlcyBmb3IgU0xQQyBp bml0L2ZpbmkgYW5kIGVuYWJsZS4KCnYyOiBNb3ZlIFNMUEMgaGVscGVyIGZ1bmN0aW9ucyB0byBp bnRlbF9ndWNfc2xwYy5jLy5oLiBEZWZpbmUgYmFzaWMKdGVtcGxhdGUgZm9yIFNMUEMgc3RydWN0 dXJlIGluIGludGVsX2d1Y19zbHBjX3R5cGVzLmguIEZpeCBjb3B5cmlnaHQgKE1pY2hhbCBXKQoK U2lnbmVkLW9mZi1ieTogVmluYXkgQmVsZ2F1bWthciA8dmluYXkuYmVsZ2F1bWthckBpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IFN1bmRhcmVzYW4gU3VqYXJpdGhhIDxzdWphcml0aGEuc3VuZGFy ZXNhbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRh bmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cgpkcm0vaTkxNS9ndWMvc2xwYzogTGF5IG91 dCBzbHBjIGluaXQvZW5hYmxlL2ZpbmkKCkRlY2xhcmUgaW5pdC9maW5pIGFuZCBlbmFibGUgZnVu Y3Rpb24gdGVtcGxhdGVzLgoKdjI6IFJlYmFzZQoKU2lnbmVkLW9mZi1ieTogVmluYXkgQmVsZ2F1 bWthciA8dmluYXkuYmVsZ2F1bWthckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFN1bmRhcmVz YW4gU3VqYXJpdGhhIDxzdWphcml0aGEuc3VuZGFyZXNhbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMgICAgICAgIHwgIDIgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggICAgICAgIHwgIDQgKysKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zbHBjLmMgICB8IDYzICsrKysrKysrKysrKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zbHBjLmggICB8IDMzICsrKysr KysrKysKIC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3NscGNfdHlwZXMuaCB8IDE1 ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jICAgICAgICAgfCAg NiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuaCAgICAgICAgIHwgIDIg KwogOCBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc2xw Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3NscGMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX2d1Y19zbHBjX3R5cGVzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGFiNzY3OTk1 NzYyMy4uZDhlYWM0NDY4ZGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMTg2LDYgKzE4Niw3 IEBAIGk5MTUteSArPSBndC91Yy9pbnRlbF91Yy5vIFwKIAkgIGd0L3VjL2ludGVsX2d1Y19mdy5v IFwKIAkgIGd0L3VjL2ludGVsX2d1Y19sb2cubyBcCiAJICBndC91Yy9pbnRlbF9ndWNfbG9nX2Rl YnVnZnMubyBcCisJICBndC91Yy9pbnRlbF9ndWNfc2xwYy5vIFwKIAkgIGd0L3VjL2ludGVsX2d1 Y19zdWJtaXNzaW9uLm8gXAogCSAgZ3QvdWMvaW50ZWxfaHVjLm8gXAogCSAgZ3QvdWMvaW50ZWxf aHVjX2RlYnVnZnMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCmluZGV4 IDk3OTEyOGUyODM3Mi4uMzliYzNjMTYwNTdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWMuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJndC9pbnRlbF9ndF9pcnEuaCIK ICNpbmNsdWRlICJndC9pbnRlbF9ndF9wbV9pcnEuaCIKICNpbmNsdWRlICJpbnRlbF9ndWMuaCIK KyNpbmNsdWRlICJpbnRlbF9ndWNfc2xwYy5oIgogI2luY2x1ZGUgImludGVsX2d1Y19hZHMuaCIK ICNpbmNsdWRlICJpbnRlbF9ndWNfc3VibWlzc2lvbi5oIgogI2luY2x1ZGUgImk5MTVfZHJ2Lmgi CkBAIC0xNTcsNiArMTU4LDcgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCiAJaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoJmd1Yy0+Y3QpOwogCWludGVs X2d1Y19sb2dfaW5pdF9lYXJseSgmZ3VjLT5sb2cpOwogCWludGVsX2d1Y19zdWJtaXNzaW9uX2lu aXRfZWFybHkoZ3VjKTsKKwlpbnRlbF9ndWNfc2xwY19pbml0X2Vhcmx5KCZndWMtPnNscGMpOwog CiAJbXV0ZXhfaW5pdCgmZ3VjLT5zZW5kX211dGV4KTsKIAlzcGluX2xvY2tfaW5pdCgmZ3VjLT5p cnFfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCmluZGV4IDljNjJj NjhmYjEzMi4uOGNlY2ZhZDlkN2IxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWMuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImludGVsX2d1Y19jdC5oIgogI2luY2x1 ZGUgImludGVsX2d1Y19sb2cuaCIKICNpbmNsdWRlICJpbnRlbF9ndWNfcmVnLmgiCisjaW5jbHVk ZSAiaW50ZWxfZ3VjX3NscGNfdHlwZXMuaCIKICNpbmNsdWRlICJpbnRlbF91Y19mdy5oIgogI2lu Y2x1ZGUgImk5MTVfdXRpbHMuaCIKICNpbmNsdWRlICJpOTE1X3ZtYS5oIgpAQCAtMzAsNiArMzEs NyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7CiAJc3RydWN0 IGludGVsX2d1Y19sb2cgbG9nOwogCXN0cnVjdCBpbnRlbF9ndWNfY3QgY3Q7CisJc3RydWN0IGlu dGVsX2d1Y19zbHBjIHNscGM7CiAKIAkvKiBHbG9iYWwgZW5naW5lIHVzZWQgdG8gc3VibWl0IHJl cXVlc3RzIHRvIEd1QyAqLwogCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5l OwpAQCAtNTcsNiArNTksOCBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAogCWJvb2wgc3VibWlzc2lv bl9zdXBwb3J0ZWQ7CiAJYm9vbCBzdWJtaXNzaW9uX3NlbGVjdGVkOworCWJvb2wgc2xwY19zdXBw b3J0ZWQ7CisJYm9vbCBzbHBjX3NlbGVjdGVkOwogCiAJc3RydWN0IGk5MTVfdm1hICphZHNfdm1h OwogCXN0cnVjdCBfX2d1Y19hZHNfYmxvYiAqYWRzX2Jsb2I7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc2xwYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfZ3VjX3NscGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmQ5ZmViNDMwY2UzNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zbHBjLmMKQEAgLTAsMCArMSw2MyBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIxIEludGVsIENv cnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxf Z3VjX3NscGMuaCIKKyNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgorCitzdGF0aWMgaW5saW5lIHN0 cnVjdCBpbnRlbF9ndWMgKnNscGNfdG9fZ3VjKHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYykK K3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHNscGMsIHN0cnVjdCBpbnRlbF9ndWMsIHNscGMpOwor fQorCitzdGF0aWMgYm9vbCBfX2RldGVjdF9zbHBjX3N1cHBvcnRlZChzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCit7CisJLyogR3VDIFNMUEMgaXMgdW5hdmFpbGFibGUgZm9yIHByZS1HZW4xMiAqLwor CXJldHVybiBndWMtPnN1Ym1pc3Npb25fc3VwcG9ydGVkICYmCisJCUdSQVBISUNTX1ZFUihndWNf dG9fZ3QoZ3VjKS0+aTkxNSkgPj0gMTI7Cit9CisKK3N0YXRpYyBib29sIF9fZ3VjX3NscGNfc2Vs ZWN0ZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCWlmICghaW50ZWxfZ3VjX3NscGNfaXNf c3VwcG9ydGVkKGd1YykpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBndWMtPnN1Ym1pc3Np b25fc2VsZWN0ZWQ7Cit9CisKK3ZvaWQgaW50ZWxfZ3VjX3NscGNfaW5pdF9lYXJseShzdHJ1Y3Qg aW50ZWxfZ3VjX3NscGMgKnNscGMpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gc2xwY190 b19ndWMoc2xwYyk7CisKKwlndWMtPnNscGNfc3VwcG9ydGVkID0gX19kZXRlY3Rfc2xwY19zdXBw b3J0ZWQoZ3VjKTsKKwlndWMtPnNscGNfc2VsZWN0ZWQgPSBfX2d1Y19zbHBjX3NlbGVjdGVkKGd1 Yyk7Cit9CisKK2ludCBpbnRlbF9ndWNfc2xwY19pbml0KHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAq c2xwYykKK3sKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGludGVsX2d1Y19zbHBjX2VuYWJsZSgp IC0gU3RhcnQgU0xQQworICogQHNscGM6IHBvaW50ZXIgdG8gaW50ZWxfZ3VjX3NscGMuCisgKgor ICogU0xQQyBpcyBlbmFibGVkIGJ5IHNldHRpbmcgdXAgdGhlIHNoYXJlZCBkYXRhIHN0cnVjdHVy ZSBhbmQKKyAqIHNlbmRpbmcgcmVzZXQgZXZlbnQgdG8gR3VDIFNMUEMuIEluaXRpYWwgZGF0YSBp cyBzZXR1cCBpbgorICogaW50ZWxfZ3VjX3NscGNfaW5pdC4gSGVyZSB3ZSBzZW5kIHRoZSByZXNl dCBldmVudC4gV2UgZG8KKyAqIG5vdCBjdXJyZW50bHkgbmVlZCBhIHNscGNfZGlzYWJsZSBzaW5j ZSB0aGlzIGlzIHRha2VuIGNhcmUKKyAqIG9mIGF1dG9tYXRpY2FsbHkgd2hlbiBhIHJlc2V0L3N1 c3BlbmQgb2NjdXJzIGFuZCB0aGUgR3VDCisgKiBDVEIgaXMgZGVzdHJveWVkLgorICoKKyAqIFJl dHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8K K2ludCBpbnRlbF9ndWNfc2xwY19lbmFibGUoc3RydWN0IGludGVsX2d1Y19zbHBjICpzbHBjKQor eworCXJldHVybiAwOworfQorCit2b2lkIGludGVsX2d1Y19zbHBjX2Zpbmkoc3RydWN0IGludGVs X2d1Y19zbHBjICpzbHBjKQoreworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX3NscGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19zbHBjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jM2Iw YWQ3ZjBmOTMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfc2xwYy5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBDb3Jwb3JhdGlvbgor ICovCisKKyNpZm5kZWYgX0lOVEVMX0dVQ19TTFBDX0hfCisjZGVmaW5lIF9JTlRFTF9HVUNfU0xQ Q19IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKKyNpbmNsdWRlICJpbnRl bF9ndWNfc2xwY190eXBlcy5oIgorCitzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfZ3VjX3NscGNf aXNfc3VwcG9ydGVkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlyZXR1cm4gZ3VjLT5zbHBj X3N1cHBvcnRlZDsKK30KKworc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19zbHBjX2lzX3dh bnRlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJcmV0dXJuIGd1Yy0+c2xwY19zZWxlY3Rl ZDsKK30KKworc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19zbHBjX2lzX3VzZWQoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQoreworCXJldHVybiBpbnRlbF9ndWNfc3VibWlzc2lvbl9pc191c2Vk KGd1YykgJiYgaW50ZWxfZ3VjX3NscGNfaXNfd2FudGVkKGd1Yyk7Cit9CisKK3ZvaWQgaW50ZWxf Z3VjX3NscGNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3VjX3NscGMgKnNscGMpOworCitpbnQg aW50ZWxfZ3VjX3NscGNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjX3NscGMgKnNscGMpOworaW50IGlu dGVsX2d1Y19zbHBjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX3NscGMgKnNscGMpOwordm9pZCBp bnRlbF9ndWNfc2xwY19maW5pKHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYyk7CisKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3NscGNf dHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zbHBjX3R5cGVz LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODUxNDgyNjViMWYK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf c2xwY190eXBlcy5oCkBAIC0wLDAgKzEsMTUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBDb3Jwb3JhdGlvbgorICov CisKKyNpZm5kZWYgX0lOVEVMX0dVQ19TTFBDX1RZUEVTX0hfCisjZGVmaW5lIF9JTlRFTF9HVUNf U0xQQ19UWVBFU19IXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworc3RydWN0IGludGVs X2d1Y19zbHBjIHsKKworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF91Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWMuYwppbmRleCBkYTU3ZDE4ZDlmNmIuLmU2YmQ5NDA2YzdiMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF91Yy5jCkBAIC03NSwxNiArNzUsMTggQEAgc3RhdGljIHZvaWQgX19jb25m aXJtX29wdGlvbnMoc3RydWN0IGludGVsX3VjICp1YykKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IHVjX3RvX2d0KHVjKS0+aTkxNTsKIAogCWRybV9kYmcoJmk5MTUtPmRybSwKLQkJ ImVuYWJsZV9ndWM9JWQgKGd1YzolcyBzdWJtaXNzaW9uOiVzIGh1YzolcylcbiIsCisJCSJlbmFi bGVfZ3VjPSVkIChndWM6JXMgc3VibWlzc2lvbjolcyBodWM6JXMgc2xwYzolcylcbiIsCiAJCWk5 MTUtPnBhcmFtcy5lbmFibGVfZ3VjLAogCQl5ZXNubyhpbnRlbF91Y193YW50c19ndWModWMpKSwK IAkJeWVzbm8oaW50ZWxfdWNfd2FudHNfZ3VjX3N1Ym1pc3Npb24odWMpKSwKLQkJeWVzbm8oaW50 ZWxfdWNfd2FudHNfaHVjKHVjKSkpOworCQl5ZXNubyhpbnRlbF91Y193YW50c19odWModWMpKSwK KwkJeWVzbm8oaW50ZWxfdWNfd2FudHNfZ3VjX3NscGModWMpKSk7CiAKIAlpZiAoaTkxNS0+cGFy YW1zLmVuYWJsZV9ndWMgPT0gMCkgewogCQlHRU1fQlVHX09OKGludGVsX3VjX3dhbnRzX2d1Yyh1 YykpOwogCQlHRU1fQlVHX09OKGludGVsX3VjX3dhbnRzX2d1Y19zdWJtaXNzaW9uKHVjKSk7CiAJ CUdFTV9CVUdfT04oaW50ZWxfdWNfd2FudHNfaHVjKHVjKSk7CisJCUdFTV9CVUdfT04oaW50ZWxf dWNfd2FudHNfZ3VjX3NscGModWMpKTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX3VjLmgKaW5kZXggZTJkYTJiNmU3NmUxLi45MjVhNThjYTZiOTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuaApAQCAtOCw2ICs4LDcgQEAKIAogI2luY2x1 ZGUgImludGVsX2d1Yy5oIgogI2luY2x1ZGUgImludGVsX2d1Y19zdWJtaXNzaW9uLmgiCisjaW5j bHVkZSAiaW50ZWxfZ3VjX3NscGMuaCIKICNpbmNsdWRlICJpbnRlbF9odWMuaCIKICNpbmNsdWRl ICJpOTE1X3BhcmFtcy5oIgogCkBAIC04Myw2ICs4NCw3IEBAIF9fdWNfc3RhdGVfY2hlY2tlcih4 LCBmdW5jLCB1c2VzLCB1c2VkKQogdWNfc3RhdGVfY2hlY2tlcnMoZ3VjLCBndWMpOwogdWNfc3Rh dGVfY2hlY2tlcnMoaHVjLCBodWMpOwogdWNfc3RhdGVfY2hlY2tlcnMoZ3VjLCBndWNfc3VibWlz c2lvbik7Cit1Y19zdGF0ZV9jaGVja2VycyhndWMsIGd1Y19zbHBjKTsKIAogI3VuZGVmIHVjX3N0 YXRlX2NoZWNrZXJzCiAjdW5kZWYgX191Y19zdGF0ZV9jaGVja2VyCi0tIAoyLjI1LjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=