From patchwork Tue Jun 21 12:35:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889156 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 66585C433EF for ; Tue, 21 Jun 2022 12:22:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C3B3610E6A6; Tue, 21 Jun 2022 12:22:32 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 075A710E6A6 for ; Tue, 21 Jun 2022 12:22:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814152; x=1687350152; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=PHW9cJ84UtoFCQaZNypTW6ypAWIjTBefEGp/ykgpR+0=; b=NfTg7tlLo6Su3gMr0hslzmOelmmvMVBAPwEUx5oueqCpRcvv4eyV/16u 2G9dNFVxtiGCEK5UAxmSETwF1EWKStPgosaAtaJvHTuv3wb6zGjKQBcxI Ml9ByDE1klTeSGGfdcgX26RfLvIkRSjK2h5oyCfWmaZv8aJYwBGSGD+ZB +OwbRyrf4nNXYHEaVX01/uUSnFczTVXRFbsULqOBlXNOaeNh0uXR6VuBO 4m8pBz2HbI+5nGSL0lt5SGe3OMJ3k12awwa/xjBq9tBT5vcVZMNYoKHp0 uCOsnCWgNj9OWpEeCmVhW46YCYMl5RCx5FtrUoSCIQQTdn09BtnkowMEb w==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="344096419" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="344096419" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="591629651" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga007.fm.intel.com with ESMTP; 21 Jun 2022 05:22:28 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjm013778; Tue, 21 Jun 2022 13:22:24 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:06 +0530 Message-Id: <20220621123516.370479-2-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 01/11] drm/i915: Avoid rpm helpers in intel_guc_global_policies_update 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" 1. Removed rpm helpers in intel_guc_global_policies_update and added rpm helpers in below higher level functions, -intel_selftest_modify_policy -intel_selftest_restore_policy -notify_guc -intel_uc_reset_finish calls intel_guc_global_policies_update via intel_guc_submission_reset_finish 2. Removed rpm helpers in intel_guc_submission_reset_finish and added rpm helpers in below higher level functions, - at intel_uc_reset_finish in reset_finish - intel_gt_resume (already rpm wakeref is available) Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/gt/intel_reset.c | 4 +++- drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 5 +---- drivers/gpu/drm/i915/i915_debugfs_params.c | 7 +++++-- .../drm/i915/selftests/intel_scheduler_helpers.c | 13 +++++++++++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c index a5338c3fde7a..c8e05b48c14f 100644 --- a/drivers/gpu/drm/i915/gt/intel_reset.c +++ b/drivers/gpu/drm/i915/gt/intel_reset.c @@ -828,6 +828,7 @@ static void reset_finish(struct intel_gt *gt, intel_engine_mask_t awake) { struct intel_engine_cs *engine; enum intel_engine_id id; + intel_wakeref_t wakeref; for_each_engine(engine, gt, id) { reset_finish_engine(engine); @@ -835,7 +836,8 @@ static void reset_finish(struct intel_gt *gt, intel_engine_mask_t awake) intel_engine_pm_put(engine); } - intel_uc_reset_finish(>->uc); + with_intel_runtime_pm(gt->uncore->rpm, wakeref) + intel_uc_reset_finish(>->uc); } static void nop_submit_request(struct i915_request *request) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c index ba7541f3ca61..3f24ad4cb2e1 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c @@ -182,9 +182,7 @@ static int guc_action_policies_update(struct intel_guc *guc, u32 policy_offset) int intel_guc_global_policies_update(struct intel_guc *guc) { - struct intel_gt *gt = guc_to_gt(guc); u32 scheduler_policies; - intel_wakeref_t wakeref; int ret; if (iosys_map_is_null(&guc->ads_map)) @@ -198,8 +196,7 @@ int intel_guc_global_policies_update(struct intel_guc *guc) if (!intel_guc_is_ready(guc)) return 0; - with_intel_runtime_pm(>->i915->runtime_pm, wakeref) - ret = guc_action_policies_update(guc, scheduler_policies); + ret = guc_action_policies_update(guc, scheduler_policies); return ret; } diff --git a/drivers/gpu/drm/i915/i915_debugfs_params.c b/drivers/gpu/drm/i915/i915_debugfs_params.c index 783c8676eee2..cf92c98fa81a 100644 --- a/drivers/gpu/drm/i915/i915_debugfs_params.c +++ b/drivers/gpu/drm/i915/i915_debugfs_params.c @@ -39,9 +39,12 @@ static int i915_param_int_open(struct inode *inode, struct file *file) static int notify_guc(struct drm_i915_private *i915) { int ret = 0; + intel_wakeref_t wakeref; - if (intel_uc_uses_guc_submission(&to_gt(i915)->uc)) - ret = intel_guc_global_policies_update(&to_gt(i915)->uc.guc); + if (intel_uc_uses_guc_submission(&to_gt(i915)->uc)) { + with_intel_runtime_pm(to_gt(i915)->uncore->rpm, wakeref) + ret = intel_guc_global_policies_update(&to_gt(i915)->uc.guc); + } return ret; } diff --git a/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c b/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c index 310fb83c527e..463a378f0abb 100644 --- a/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c +++ b/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c @@ -32,6 +32,7 @@ int intel_selftest_modify_policy(struct intel_engine_cs *engine, { int err; + intel_wakeref_t wakeref; saved->reset = engine->i915->params.reset; saved->flags = engine->flags; @@ -66,7 +67,9 @@ int intel_selftest_modify_policy(struct intel_engine_cs *engine, if (!intel_engine_uses_guc(engine)) return 0; - err = intel_guc_global_policies_update(&engine->gt->uc.guc); + with_intel_runtime_pm(engine->gt->uncore->rpm, wakeref) + err = intel_guc_global_policies_update(&engine->gt->uc.guc); + if (err) intel_selftest_restore_policy(engine, saved); @@ -76,6 +79,9 @@ int intel_selftest_modify_policy(struct intel_engine_cs *engine, int intel_selftest_restore_policy(struct intel_engine_cs *engine, struct intel_selftest_saved_policy *saved) { + intel_wakeref_t wakeref; + int ret; + /* Restore the original policies */ engine->i915->params.reset = saved->reset; engine->flags = saved->flags; @@ -85,7 +91,10 @@ int intel_selftest_restore_policy(struct intel_engine_cs *engine, if (!intel_engine_uses_guc(engine)) return 0; - return intel_guc_global_policies_update(&engine->gt->uc.guc); + with_intel_runtime_pm(engine->gt->uncore->rpm, wakeref) + ret = intel_guc_global_policies_update(&engine->gt->uc.guc); + + return ret; } int intel_selftest_wait_for_rq(struct i915_request *rq) From patchwork Tue Jun 21 12:35:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889157 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 2165DC433EF for ; Tue, 21 Jun 2022 12:22:37 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A0B7010ECA9; Tue, 21 Jun 2022 12:22:36 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 60C4C10EC81 for ; Tue, 21 Jun 2022 12:22:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814155; x=1687350155; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=4u/Up6sfop3h8WtEzMoXhS4Kb9FwLoe886Egzera3Ls=; b=i2GERgfyki0nMrUDIkrlkmg+tcSjg5aW5RcJmH4FKyFRmogqES2F9DK9 wRIyFyGNmtc7eL2TI95LcY+lMtiUlfWdcNBdKqbtsuaKX7+kIPpaDbbzG V0n511JsGM21aWWVePofH0vjniAlll31Lc8BqkFnzyEYiv6Vqis6JVH87 Uh6zmeyQ5n4qP0Qn1B74KAhi7Sbp8mQp8EltwItqWGxn5D9neo1SQDzrl fbj2GNLQ/sJkW1OBfGhKmW/ye8OmVnt1JirtVCYkUiFF6+yMXkV88QbEJ nRfQB1vtViDshi7Psmuz2atWNoxB/EL45x471U5OainkJzUlm5FjUp/HL g==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="268823152" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="268823152" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="676976327" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by FMSMGA003.fm.intel.com with ESMTP; 21 Jun 2022 05:22:31 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjn013778; Tue, 21 Jun 2022 13:22:28 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:07 +0530 Message-Id: <20220621123516.370479-3-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 02/11] drm/i915: Avoid rpm helpers in intel_guc_slpc_set_media_ratio_mode 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Removed rpm helpers from intel_guc_slpc_set_media_ratio_mode and added rpm helpers at below high level functions. -media_freq_factor_store -intel_guc_slpc_enable via intel_gt_init_hw (already rpm wakeref is hold) Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c | 2 ++ drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 8 +++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c index ae8a8f725f01..b8f151044780 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c @@ -648,6 +648,7 @@ static ssize_t media_freq_factor_store(struct device *dev, { struct intel_gt *gt = intel_gt_sysfs_get_drvdata(dev, attr->attr.name); struct intel_guc_slpc *slpc = >->uc.guc.slpc; + intel_wakeref_t wakeref; u32 factor, mode; int err; @@ -663,6 +664,7 @@ static ssize_t media_freq_factor_store(struct device *dev, if (mode > SLPC_MEDIA_RATIO_MODE_FIXED_ONE_TO_TWO) return -EINVAL; + with_intel_runtime_pm(gt->uncore->rpm, wakeref) err = intel_guc_slpc_set_media_ratio_mode(slpc, mode); if (!err) { slpc->media_ratio_mode = mode; diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c index 2df31af70d63..9a8440378dc2 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c @@ -510,16 +510,14 @@ int intel_guc_slpc_get_min_freq(struct intel_guc_slpc *slpc, u32 *val) int intel_guc_slpc_set_media_ratio_mode(struct intel_guc_slpc *slpc, u32 val) { struct drm_i915_private *i915 = slpc_to_i915(slpc); - intel_wakeref_t wakeref; int ret = 0; if (!HAS_MEDIA_RATIO_MODE(i915)) return -ENODEV; - with_intel_runtime_pm(&i915->runtime_pm, wakeref) - ret = slpc_set_param(slpc, - SLPC_PARAM_MEDIA_FF_RATIO_MODE, - val); + ret = slpc_set_param(slpc, + SLPC_PARAM_MEDIA_FF_RATIO_MODE, + val); return ret; } From patchwork Tue Jun 21 12:35:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889158 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 65A8BC433EF for ; Tue, 21 Jun 2022 12:22:40 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C950110ECCD; Tue, 21 Jun 2022 12:22:39 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id E18A510ECB2 for ; Tue, 21 Jun 2022 12:22:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814158; x=1687350158; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=V7kpV9gGAaN9vX7VzMuTZ+hWKit8/dfpfzQazuRXF2w=; b=m21DmzaQzCs+hK/V4pRh8/u9BozMUvGIZTOkngEVkjoC6dnHNu4b3+0p fjo6mUb3/kHBhX2vZtBcEnBO6JGP97USvNQFF+TedZI5g8HY1RXLMaYmN 9Wk0dXh/4cHmZaIJBc41LpKX+uSb8sW0H2tnagndDoXNNUf3b5CbLk1Bx Vck3kL5aaijjFdCp5cCCgs4CZiJYyIXxiVWPzL5tH2WhxaLFazTwmWgSH jogk2u8u9lXF2aJwy1/MWtsUiRNf1RUPoyqXMSM9YFzHxygIUx0I0Q5Os +1rAEWP4IHZ5AUMo9A07Xm3hOYNhzLe9INoOx20YaeqyHVm4V9pMKwGce w==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="280835586" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="280835586" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="585577565" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by orsmga002.jf.intel.com with ESMTP; 21 Jun 2022 05:22:35 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjo013778; Tue, 21 Jun 2022 13:22:31 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:08 +0530 Message-Id: <20220621123516.370479-4-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 03/11] drm/i915: Avoid rpm helpers in intel_gt_suspend_late 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Removed rpm helpers from intel_gt_suspend_late and added rpm helpers at below high level functions -__intel_gt_disable -live_gt_resume intel_gt_suspend_late is used in i915_gem_suspend_late and i915_gem_suspend_late need to avoid rpm helpers so added rpm helpers at higher level functions -i915_gem_driver_remove -i915_drm_suspend_late(already holds rpm wakeref) -do_suspend (already holds rpm wakeref) Removed rpm helpers from intel_uc_suspend and acquired rpm wakref from above high functions. Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/gt/intel_gt.c | 4 +++- drivers/gpu/drm/i915/gt/intel_gt_pm.c | 11 ++++------- drivers/gpu/drm/i915/gt/selftest_gt_pm.c | 4 +++- drivers/gpu/drm/i915/gt/uc/intel_uc.c | 9 +++------ drivers/gpu/drm/i915/i915_gem.c | 5 ++++- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c index be9877c4b496..bb04ec32c54f 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt.c +++ b/drivers/gpu/drm/i915/gt/intel_gt.c @@ -590,10 +590,12 @@ static int __engines_verify_workarounds(struct intel_gt *gt) static void __intel_gt_disable(struct intel_gt *gt) { + intel_wakeref_t wakeref = 0; intel_gt_set_wedged_on_fini(gt); intel_gt_suspend_prepare(gt); - intel_gt_suspend_late(gt); + with_intel_runtime_pm(gt->uncore->rpm, wakeref) + intel_gt_suspend_late(gt); GEM_BUG_ON(intel_gt_pm_is_awake(gt)); } diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c index f553e2173bda..be99b01a0984 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c @@ -326,8 +326,6 @@ static suspend_state_t pm_suspend_target(void) void intel_gt_suspend_late(struct intel_gt *gt) { - intel_wakeref_t wakeref; - /* We expect to be idle already; but also want to be independent */ wait_for_suspend(gt); @@ -352,11 +350,10 @@ void intel_gt_suspend_late(struct intel_gt *gt) if (pm_suspend_target() == PM_SUSPEND_TO_IDLE) return; - with_intel_runtime_pm(gt->uncore->rpm, wakeref) { - intel_rps_disable(>->rps); - intel_rc6_disable(>->rc6); - intel_llc_disable(>->llc); - } + intel_rps_disable(>->rps); + intel_rc6_disable(>->rc6); + intel_llc_disable(>->llc); + gt_sanitize(gt, false); diff --git a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c index be94f863bdef..50f30a5295c4 100644 --- a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c @@ -142,13 +142,15 @@ static int live_gt_clocks(void *arg) static int live_gt_resume(void *arg) { struct intel_gt *gt = arg; + intel_wakeref_t wakeref = 0; IGT_TIMEOUT(end_time); int err; /* Do several suspend/resume cycles to check we don't explode! */ do { intel_gt_suspend_prepare(gt); - intel_gt_suspend_late(gt); + with_intel_runtime_pm(gt->uncore->rpm, wakeref) + intel_gt_suspend_late(gt); if (gt->rc6.enabled) { pr_err("rc6 still enabled after suspend!\n"); diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c index f2e7c82985ef..425ad2ef1644 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c @@ -652,17 +652,14 @@ void intel_uc_runtime_suspend(struct intel_uc *uc) void intel_uc_suspend(struct intel_uc *uc) { struct intel_guc *guc = &uc->guc; - intel_wakeref_t wakeref; int err; if (!intel_guc_is_ready(guc)) return; - with_intel_runtime_pm(&uc_to_gt(uc)->i915->runtime_pm, wakeref) { - err = intel_guc_suspend(guc); - if (err) - DRM_DEBUG_DRIVER("Failed to suspend GuC, err=%d", err); - } + err = intel_guc_suspend(guc); + if (err) + DRM_DEBUG_DRIVER("Failed to suspend GuC, err=%d", err); } static int __uc_resume(struct intel_uc *uc, bool enable_communication) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 702e5b89be22..bbe1dac2341c 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1173,9 +1173,12 @@ void i915_gem_driver_unregister(struct drm_i915_private *i915) void i915_gem_driver_remove(struct drm_i915_private *dev_priv) { + intel_wakeref_t wakeref; + intel_wakeref_auto_fini(&to_gt(dev_priv)->ggtt->userfault_wakeref); - i915_gem_suspend_late(dev_priv); + with_intel_runtime_pm(&dev_priv->runtime_pm, wakeref) + i915_gem_suspend_late(dev_priv); intel_gt_driver_remove(to_gt(dev_priv)); dev_priv->uabi_engines = RB_ROOT; From patchwork Tue Jun 21 12:35:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889159 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 80712C433EF for ; Tue, 21 Jun 2022 12:22:43 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E6DB710EF32; Tue, 21 Jun 2022 12:22:42 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id D34EE10ECB2 for ; Tue, 21 Jun 2022 12:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814161; x=1687350161; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=/4l9dvYZ24W2y9TVq9WPDMG1kNy2JgpNAiHQcivzfs8=; b=RihTuADpeOhqYYmolkZuTjyYWUOX5owdOhMSb+YMCP6TSestRBEYlz00 mjQVCTKaGYYBDtrOba4+SxfwKe3djhmSII7EEU+nXj0YeuibpB1730f9P tSvJZbiK2xJGrxBA18UL9cMg7VVgYtGzDJoJZ469C7kvfwq5JNhK5sJcv v/nRX6x0e3zEGeCdQxN6JV8v2K5FVyUTzxtr1jPNU/Ub36uoZukPuXYol OQqBlnUbvul3N/c8gDNY0KCjnV6UVTJAaBsrcRc8xJGjGptnj61dCqAQ8 sGrRqROFaC/ImN6R/5Q73AF2hGV4MbQEmU4sFrqQPneqRLPbz9DdTFyep Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="277652903" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="277652903" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="591629699" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga007.fm.intel.com with ESMTP; 21 Jun 2022 05:22:38 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjp013778; Tue, 21 Jun 2022 13:22:35 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:09 +0530 Message-Id: <20220621123516.370479-5-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 04/11] drm/i915: Added is_intel_rpm_allowed helper 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Added is_intel_rpm_allowed function to query the runtime_pm status and disllow during suspending and resuming. Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/intel_runtime_pm.c | 15 +++++++++++++++ drivers/gpu/drm/i915/intel_runtime_pm.h | 1 + 2 files changed, 16 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c index 6ed5786bcd29..3759a8596084 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -320,6 +320,21 @@ untrack_all_intel_runtime_pm_wakerefs(struct intel_runtime_pm *rpm) } #endif +static int intel_runtime_pm_status(struct intel_runtime_pm *rpm) +{ + return rpm->kdev->power.runtime_status; +} + +bool is_intel_rpm_allowed(struct intel_runtime_pm *rpm) +{ + int rpm_status; + + rpm_status = intel_runtime_pm_status(rpm); + if (rpm_status == RPM_RESUMING || rpm_status == RPM_SUSPENDING) + return false; + else + return true; +} static void intel_runtime_pm_acquire(struct intel_runtime_pm *rpm, bool wakelock) diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.h b/drivers/gpu/drm/i915/intel_runtime_pm.h index d9160e3ff4af..99418c3a934a 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.h +++ b/drivers/gpu/drm/i915/intel_runtime_pm.h @@ -173,6 +173,7 @@ void intel_runtime_pm_init_early(struct intel_runtime_pm *rpm); void intel_runtime_pm_enable(struct intel_runtime_pm *rpm); void intel_runtime_pm_disable(struct intel_runtime_pm *rpm); void intel_runtime_pm_driver_release(struct intel_runtime_pm *rpm); +bool is_intel_rpm_allowed(struct intel_runtime_pm *rpm); intel_wakeref_t intel_runtime_pm_get(struct intel_runtime_pm *rpm); intel_wakeref_t intel_runtime_pm_get_if_in_use(struct intel_runtime_pm *rpm); From patchwork Tue Jun 21 12:35:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889160 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B0A79C43334 for ; Tue, 21 Jun 2022 12:22:47 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 39DDD10F1E6; Tue, 21 Jun 2022 12:22:47 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0784110EF7A for ; Tue, 21 Jun 2022 12:22:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814166; x=1687350166; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=uqmvNoFbOb+qIingBrBfQ4CWV8YBjO5NorY4bzqFQDs=; b=HIezrCcNSyr53PqYHIyQg0AuSKyP8/1Oky6F3fau67G72QOjAwHatPsP HocqZ3Ks0xqKeLBkwopWS2MNTVAdIk7R/h00upin2/brIO4g+6fz539S7 DTbnXkNdMT0koRXY91YC1sESJipinn8rTFn/aFHX2+cJXcfyn1OprCYWD 40TZBcBNEut2fQywK/tjAxMRwo6ao8JSN7lmpIAfpenZswZ5cc3Xrke6M 3TUA9RmXAfwnAF/3ga01SNXbrWKT686e0NayJkDfFsvFHr5WtlDn8Dcmi xND7AvK3XL/QqndPD9246JSXY7rcIB1Svtue7E49hCfQvmiTnTWZYqKog Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="344096443" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="344096443" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="689913038" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga002.fm.intel.com with ESMTP; 21 Jun 2022 05:22:42 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjq013778; Tue, 21 Jun 2022 13:22:38 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:10 +0530 Message-Id: <20220621123516.370479-6-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 05/11] drm/i915: Guard rpm helpers in gt helpers functions 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Guard rpm helpers in gt_sanitize and intel_gt_set_wedged with is_intel_rpm_allowed Acquire rpm wakeref for higherlevel function i915_gem_resume Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/gt/intel_gt_pm.c | 12 ++++++------ drivers/gpu/drm/i915/gt/intel_reset.c | 10 +++++++--- drivers/gpu/drm/i915/i915_driver.c | 4 +++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c index be99b01a0984..9857b91194b7 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c @@ -163,12 +163,14 @@ static void gt_sanitize(struct intel_gt *gt, bool force) { struct intel_engine_cs *engine; enum intel_engine_id id; - intel_wakeref_t wakeref; + intel_wakeref_t wakeref = 0; GT_TRACE(gt, "force:%s", str_yes_no(force)); /* Use a raw wakeref to avoid calling intel_display_power_get early */ - wakeref = intel_runtime_pm_get(gt->uncore->rpm); + if (is_intel_rpm_allowed(gt->uncore->rpm)) + wakeref = intel_runtime_pm_get(gt->uncore->rpm); + intel_uncore_forcewake_get(gt->uncore, FORCEWAKE_ALL); intel_gt_check_clock_frequency(gt); @@ -207,7 +209,8 @@ static void gt_sanitize(struct intel_gt *gt, bool force) intel_rps_sanitize(>->rps); intel_uncore_forcewake_put(gt->uncore, FORCEWAKE_ALL); - intel_runtime_pm_put(gt->uncore->rpm, wakeref); + if (wakeref) + intel_runtime_pm_put(gt->uncore->rpm, wakeref); } void intel_gt_pm_fini(struct intel_gt *gt) @@ -226,7 +229,6 @@ int intel_gt_resume(struct intel_gt *gt) return err; GT_TRACE(gt, "\n"); - /* * After resume, we may need to poke into the pinned kernel * contexts to paper over any damage caused by the sudden suspend. @@ -259,10 +261,8 @@ int intel_gt_resume(struct intel_gt *gt) for_each_engine(engine, gt, id) { intel_engine_pm_get(engine); - engine->serial++; /* kernel context lost */ err = intel_engine_resume(engine); - intel_engine_pm_put(engine); if (err) { drm_err(>->i915->drm, diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c index c8e05b48c14f..55a1fd38c7c4 100644 --- a/drivers/gpu/drm/i915/gt/intel_reset.c +++ b/drivers/gpu/drm/i915/gt/intel_reset.c @@ -901,12 +901,14 @@ static void __intel_gt_set_wedged(struct intel_gt *gt) void intel_gt_set_wedged(struct intel_gt *gt) { - intel_wakeref_t wakeref; + intel_wakeref_t wakeref = 0; if (test_bit(I915_WEDGED, >->reset.flags)) return; - wakeref = intel_runtime_pm_get(gt->uncore->rpm); + if (is_intel_rpm_allowed(gt->uncore->rpm)) + wakeref = intel_runtime_pm_get(gt->uncore->rpm); + mutex_lock(>->reset.mutex); if (GEM_SHOW_DEBUG()) { @@ -926,7 +928,9 @@ void intel_gt_set_wedged(struct intel_gt *gt) __intel_gt_set_wedged(gt); mutex_unlock(>->reset.mutex); - intel_runtime_pm_put(gt->uncore->rpm, wakeref); + + if (wakeref) + intel_runtime_pm_put(gt->uncore->rpm, wakeref); } static bool __intel_gt_unset_wedged(struct intel_gt *gt) diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index d26dcca7e654..60f6fcc6b71d 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -1263,6 +1263,7 @@ int i915_driver_suspend_switcheroo(struct drm_i915_private *i915, static int i915_drm_resume(struct drm_device *dev) { struct drm_i915_private *dev_priv = to_i915(dev); + intel_wakeref_t wakeref; int ret; disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); @@ -1303,7 +1304,8 @@ static int i915_drm_resume(struct drm_device *dev) if (HAS_DISPLAY(dev_priv)) drm_mode_config_reset(dev); - i915_gem_resume(dev_priv); + with_intel_runtime_pm(&dev_priv->runtime_pm, wakeref) + i915_gem_resume(dev_priv); intel_modeset_init_hw(dev_priv); intel_init_clock_gating(dev_priv); From patchwork Tue Jun 21 12:35:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889161 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 35C88C43334 for ; Tue, 21 Jun 2022 12:22:51 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8CCDE10F1B2; Tue, 21 Jun 2022 12:22:50 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D8C510F157 for ; Tue, 21 Jun 2022 12:22:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814169; x=1687350169; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=MWIMPr5e+77awb6sli+BLfkcpYcj4i60kc6bJvSlkz8=; b=Y3GbyXaEcesQEwe5h8b2i4mMne4X0MoE9jGpX0v5Zd85P8oDvvaLlxW8 KPUme7+hpUHur8YIQLN+j4DHMKbej8TiEFwdhbAe6aR4EowThf4ARvNLs hVtfEiaHdZ6p+avV4BRU+k6/HngqcA7B2pCLzNCUjIRqp+wiGZ+je7xZK bgMA8i2wvsSazpm5NrZc/ZTrigpQPofAg5E/1OiwhknWfPL6JJQxRFlUA YoIx8ocCcP/RzFWbqIigORUEDMD06bMoqC4FqTRVyPQs0d2Q5a7YOwjbw ds3u1sNuYAw8pF8gyyO1Xu7C57a+x2YSi7LRnTfdToGzzori9q1t5Oire g==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="268823178" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="268823178" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="714955878" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by orsmga004.jf.intel.com with ESMTP; 21 Jun 2022 05:22:45 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjr013778; Tue, 21 Jun 2022 13:22:42 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:11 +0530 Message-Id: <20220621123516.370479-7-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 06/11] drm/i915: Avoid rpm helpers in try_context_registration 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Guard rpm helpers in try_context_registration with is_intel_rpm_allowed Avoid rpm helpers in guc_init_engine_stats and rpm helpers not needed at higher level functions. as intel_guc_submission_enable is called from intel_gt_init_hw (which already holds wakeref) Signed-off-by: Tilak Tangudu --- .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c index e62ea35513ea..1be469810154 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c @@ -1364,18 +1364,16 @@ static int guc_action_enable_usage_stats(struct intel_guc *guc) static void guc_init_engine_stats(struct intel_guc *guc) { struct intel_gt *gt = guc_to_gt(guc); - intel_wakeref_t wakeref; + int ret; mod_delayed_work(system_highpri_wq, &guc->timestamp.work, guc->timestamp.ping_delay); - with_intel_runtime_pm(>->i915->runtime_pm, wakeref) { - int ret = guc_action_enable_usage_stats(guc); + ret = guc_action_enable_usage_stats(guc); - if (ret) - drm_err(>->i915->drm, - "Failed to enable usage stats: %d!\n", ret); - } + if (ret) + drm_err(>->i915->drm, + "Failed to enable usage stats: %d!\n", ret); } void intel_guc_busyness_park(struct intel_gt *gt) @@ -2478,7 +2476,7 @@ static int try_context_registration(struct intel_context *ce, bool loop) struct intel_engine_cs *engine = ce->engine; struct intel_runtime_pm *runtime_pm = engine->uncore->rpm; struct intel_guc *guc = &engine->gt->uc.guc; - intel_wakeref_t wakeref; + intel_wakeref_t wakeref = 0; u32 ctx_id = ce->guc_id.id; bool context_registered; int ret = 0; @@ -2522,13 +2520,19 @@ static int try_context_registration(struct intel_context *ce, bool loop) * If stealing the guc_id, this ce has the same guc_id as the * context whose guc_id was stolen. */ - with_intel_runtime_pm(runtime_pm, wakeref) - ret = deregister_context(ce, ce->guc_id.id); + if (is_intel_rpm_allowed(runtime_pm)) + wakeref = intel_runtime_pm_get(runtime_pm); + ret = deregister_context(ce, ce->guc_id.id); + if (wakeref) + intel_runtime_pm_put(runtime_pm, wakeref); if (unlikely(ret == -ENODEV)) ret = 0; /* Will get registered later */ } else { - with_intel_runtime_pm(runtime_pm, wakeref) - ret = register_context(ce, loop); + if (is_intel_rpm_allowed(runtime_pm)) + wakeref = intel_runtime_pm_get(runtime_pm); + ret = register_context(ce, loop); + if (wakeref) + intel_runtime_pm_put(runtime_pm, wakeref); if (unlikely(ret == -EBUSY)) { clr_ctx_id_mapping(guc, ctx_id); } else if (unlikely(ret == -ENODEV)) { From patchwork Tue Jun 21 12:35:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889162 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id CE897C43334 for ; Tue, 21 Jun 2022 12:22:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4AE1A10F23F; Tue, 21 Jun 2022 12:22:53 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 65E8B10F23F for ; Tue, 21 Jun 2022 12:22:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814172; x=1687350172; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=20mkI9reont+gW+/tGONu4qwXfTyUm588oF3YDTcv8s=; b=fZKNtLuRwtrV5fKuJgfCEyDcAPK2mn4KJ5oIAI6Mhzha0OJYEnNQ6p5k MShDcJQZlxMhBymG7xScp2oXlTDzRoQWJs+dkXyDN/PQG6uJgz1GpLtni 2sz9r1ilEeU+Uj0h+67KDxA+XM9kDXlIqYr2Buh4Fe80YKaUAGfXIZLfg /AwA4RAWXrJ8XF+wINmLzFDCpz+m95sAuVXMWiByZf/pigu1EP/6rTbzY Ns/GbfS06DKgMv6DnGy5sCa4Dx/Kthi14GD4l2fyWHt4snqyb5jY59+r1 Nbf+Nb+FmAe9BK4UlSFYpWJ3Wz5ZBJPOmXRLAopxc+ltXHKrXq/S/UW5I w==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="277652946" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="277652946" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="655117739" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga004.fm.intel.com with ESMTP; 21 Jun 2022 05:22:49 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjs013778; Tue, 21 Jun 2022 13:22:45 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:12 +0530 Message-Id: <20220621123516.370479-8-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 07/11] drm/i915: Guard rc6 helpers with is_intel_rpm_allowed 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Guard intel_rc6_sanitize/intel_rc6_enable/intel_rc6_disable rc6 helpers with is_intel_rpm_allowed as these are called in intel_gt_resume/intel_gt_suspend_late. Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/gt/intel_rc6.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c index f8d0523f4c18..73e2fb9420a2 100644 --- a/drivers/gpu/drm/i915/gt/intel_rc6.c +++ b/drivers/gpu/drm/i915/gt/intel_rc6.c @@ -507,9 +507,14 @@ static bool rc6_supported(struct intel_rc6 *rc6) static void rpm_get(struct intel_rc6 *rc6) { + struct drm_i915_private *i915 = rc6_to_i915(rc6); + GEM_BUG_ON(rc6->wakeref); - pm_runtime_get_sync(rc6_to_i915(rc6)->drm.dev); - rc6->wakeref = true; + + if (is_intel_rpm_allowed(&i915->runtime_pm)) { + pm_runtime_get_sync(i915->drm.dev); + rc6->wakeref = true; + } } static void rpm_put(struct intel_rc6 *rc6) @@ -623,7 +628,9 @@ void intel_rc6_enable(struct intel_rc6 *rc6) return; /* rc6 is ready, runtime-pm is go! */ - rpm_put(rc6); + if (rc6->wakeref) + rpm_put(rc6); + rc6->enabled = true; } From patchwork Tue Jun 21 12:35:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889163 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id A0B94C43334 for ; Tue, 21 Jun 2022 12:22:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 06F9810F157; Tue, 21 Jun 2022 12:22:58 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6497610F157 for ; Tue, 21 Jun 2022 12:22:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814176; x=1687350176; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=XFh6KYcv/4vTP2Xeb1L2xBxqwnmRcB8VTYIuQVsnDE0=; b=a5Jci3MT6qutT7e5/rhPBrbGrNkjr1bO2LOfoiwtFhhyfTNENybzGETd WxDlt/Tif+bndbVKFbuHKmBMGq7g1mvuHwq3F/oAWGS3nPOWKN28ARqKD I8JxvJJnEL3dDwkMvZKsys7YsxuLLbClgREynQMSWC6tHlIj1SW9VjbfX 6UrFc7D5kfrFnYzvsXMEWuHbPnuH9Pm86YWqgaKI50YHU6QDL7BRfxcLR CfXl9FrcYAr56Vy4rg4Kj0bfOyS2ze4iq+acjkizLibFXwIn7zBmBE81r A1zWM0F+p9P9k5/Irg5nrhPXC3SESiYUj0JHZlD4QFG1lCFfczuPGUbgj g==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="280835651" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="280835651" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="729817476" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga001.fm.intel.com with ESMTP; 21 Jun 2022 05:22:52 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjt013778; Tue, 21 Jun 2022 13:22:49 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:13 +0530 Message-Id: <20220621123516.370479-9-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 08/11] drm/i915: Guard rpm helpers in rpm_get/put 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Guard rpm helpers in rpm_get/put with is_intel_rpm_allowed to avoid rpm helpers in intel_engine/gt_pm_get/put called from user_forcewake, intel_gt_resume, i915_ttm_accel_move and intel_context_enter/exit_engine Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/intel_wakeref.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/intel_wakeref.c index dfd87d082218..00a5335387a4 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -11,15 +11,17 @@ static void rpm_get(struct intel_wakeref *wf) { - wf->wakeref = intel_runtime_pm_get(wf->rpm); + if (is_intel_rpm_allowed(wf->rpm)) + wf->wakeref = intel_runtime_pm_get(wf->rpm); } static void rpm_put(struct intel_wakeref *wf) { intel_wakeref_t wakeref = fetch_and_zero(&wf->wakeref); - intel_runtime_pm_put(wf->rpm, wakeref); - INTEL_WAKEREF_BUG_ON(!wakeref); + if (wakeref) + intel_runtime_pm_put(wf->rpm, wakeref); + } int __intel_wakeref_get_first(struct intel_wakeref *wf) From patchwork Tue Jun 21 12:35:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889164 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 901EDC43334 for ; Tue, 21 Jun 2022 12:23:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0296A10F5B8; Tue, 21 Jun 2022 12:23:01 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5C1D10F0F0 for ; Tue, 21 Jun 2022 12:22:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814179; x=1687350179; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=JIsuc2+nwHl2Jz4zQbrZV29PPJncuVW86xWjFcpweHM=; b=Tj8Dfe68+3gUwQVjVaarGfBv+XOwhVyjpRR1z3PNhNE3/H4rde2bAc7K Dy/+tMV8Rz2rRi8ce8HBaiFewHa5LGyydtV1HRplnP+Pygkgaaq26mjBK gQ2aCHcI42GqQpRqQtLng9rvt91zkEMqAoowkEMXuQMKgkCLFR8CfxnTq ngjYheGrv7OF+KrJ4fL0n/vyvXY7csXzz7i21KY0Jne+BfBN6KMGa4PHd PqhcteRONXuyuTEpo07K1THZ0A9lrpbSRvS8UkwwhApJGo1Cxd1jIctKb vboKHGtTMYDPkaUBYo+b9G8+Re9eED2vcz8v13g/BnBRxuAYnCEaIG8rD w==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="366428428" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="366428428" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:22:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="914113478" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga005.fm.intel.com with ESMTP; 21 Jun 2022 05:22:56 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKju013778; Tue, 21 Jun 2022 13:22:52 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:14 +0530 Message-Id: <20220621123516.370479-10-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 09/11] drm/i915: Add i915_save/load_pci_state helpers 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Add i915_save/load_pci_state helpers which saves pci config state and restores the saved state. Signed-off-by: Iddamsetty Aravind Signed-off-by: Tilak Tangudu Reported-by: kernel test robot Reported-by: kernel test robot Reported-by: kernel test robot Reported-by: kernel test robot --- drivers/gpu/drm/i915/i915_driver.c | 34 ++++++++++++++++++++++++++++++ drivers/gpu/drm/i915/i915_drv.h | 1 + 2 files changed, 35 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index 60f6fcc6b71d..669365c2958c 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -102,6 +102,40 @@ static const struct drm_driver i915_drm_driver; +bool i915_save_pci_state(struct pci_dev *pdev) +{ + struct drm_i915_private *i915 = pci_get_drvdata(pdev); + + if (pci_save_state(pdev)) + return false; + + kfree(i915->pci_state); + + i915->pci_state = pci_store_saved_state(pdev); + + if (!i915->pci_state) { + drm_err(&i915->drm, "Failed to store PCI saved state\n"); + return false; + } + + return true; +} + +void i915_load_pci_state(struct pci_dev *pdev) +{ + struct drm_i915_private *i915 = pci_get_drvdata(pdev); + int ret; + + if (!i915->pci_state) + return; + + ret = pci_load_saved_state(pdev, i915->pci_state); + if (!ret) { + pci_restore_state(pdev); + } else { + drm_warn(&i915->drm, "Failed to load PCI state, err:%d\n", ret); + } +} static int i915_get_bridge_dev(struct drm_i915_private *dev_priv) { int domain = pci_domain_nr(to_pci_dev(dev_priv->drm.dev)->bus); diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index c22f29c3faa0..ec8c7a2af673 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -777,6 +777,7 @@ struct drm_i915_private { * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch * will be rejected. Instead look for a better place. */ + struct pci_saved_state *pci_state; }; static inline struct drm_i915_private *to_i915(const struct drm_device *dev) From patchwork Tue Jun 21 12:35:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889165 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id CEC62C43334 for ; Tue, 21 Jun 2022 12:23:05 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5678310F0F0; Tue, 21 Jun 2022 12:23:05 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6955D10F621 for ; Tue, 21 Jun 2022 12:23:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814183; x=1687350183; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=JFl2oB3UEE105sonw21uOzIYdTiUlgSF2/FwxF9soHM=; b=jm1xct9+T6FOxEtyJKOPCCwkvEWMnYEIFDUSUFBfYYhsHCMril9YQBB9 PgXnLBvAPf8SSF0IgAvr+6YDWHWLRXgbrBHIApOIUPayYn+EV/RjaUMzF /A/ILybAaVwxljX+6Eaw3BqHaz2GVSYa4vRMIBIWMXBBz50LvM8ECm7VU lWkZadQdDXG8q2x8cfeYbXab1NEVpowyFmbk8JRBN/+bIJC/en/6+GFqy L+p+gU87/66jYdjhgBH1vyRJxyR2r1JvfoZrdkvd2J4DtbNv7dZzl3dvy F6pdHOB0H7yTNZIY+f8hHW1TEWc4FOfP73NKm6Ak4xN1iNNhp2NQpfqTo Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="366428438" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="366428438" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:23:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="585263433" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by orsmga007.jf.intel.com with ESMTP; 21 Jun 2022 05:23:00 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjv013778; Tue, 21 Jun 2022 13:22:56 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:15 +0530 Message-Id: <20220621123516.370479-11-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 10/11] drm/i915: Guard rpm helpers at gt_park/unpark 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Guard rpm helpers at gt_park/unpark with is_intel_rpm_allowed to guard (gt/engine)_pm_(get/put) Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 9 ++++++--- drivers/gpu/drm/i915/gt/intel_gt_pm.c | 10 ++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c index 136cc44c3deb..e353aa0c649b 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -1600,9 +1600,12 @@ bool intel_engines_are_idle(struct intel_gt *gt) if (intel_gt_is_wedged(gt)) return true; - /* Already parked (and passed an idleness test); must still be idle */ - if (!READ_ONCE(gt->awake)) - return true; + /* Ignore gt->awake when rpm is not allowed as wakeref is not held at gt_unpark */ + if (is_intel_rpm_allowed(gt->uncore->rpm)) { + /* Already parked (and passed an idleness test); must still be idle */ + if (!READ_ONCE(gt->awake)) + return true; + } for_each_engine(engine, gt, id) { if (!intel_engine_is_idle(engine)) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c index 9857b91194b7..12117cf7eb94 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c @@ -81,8 +81,10 @@ static int __gt_unpark(struct intel_wakeref *wf) * Work around it by grabbing a GT IRQ power domain whilst there is any * GT activity, preventing any DC state transitions. */ - gt->awake = intel_display_power_get(i915, POWER_DOMAIN_GT_IRQ); - GEM_BUG_ON(!gt->awake); + if (is_intel_rpm_allowed(gt->uncore->rpm)) { + gt->awake = intel_display_power_get(i915, POWER_DOMAIN_GT_IRQ); + GEM_BUG_ON(!gt->awake); + } intel_rc6_unpark(>->rc6); intel_rps_unpark(>->rps); @@ -116,8 +118,8 @@ static int __gt_park(struct intel_wakeref *wf) intel_synchronize_irq(i915); /* Defer dropping the display power well for 100ms, it's slow! */ - GEM_BUG_ON(!wakeref); - intel_display_power_put_async(i915, POWER_DOMAIN_GT_IRQ, wakeref); + if (wakeref) + intel_display_power_put_async(i915, POWER_DOMAIN_GT_IRQ, wakeref); return 0; } From patchwork Tue Jun 21 12:35:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tangudu, Tilak" X-Patchwork-Id: 12889166 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 8D930C43334 for ; Tue, 21 Jun 2022 12:23:08 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1E5E710F60E; Tue, 21 Jun 2022 12:23:08 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D25F810F5C3 for ; Tue, 21 Jun 2022 12:23:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655814186; x=1687350186; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=tbXsZVxAdtXoHwxvHp+EtjP1sIogHXf4l5D2F85LtqU=; b=mXnbIoXK844lQN/zy2mDJ2gzRsYv+Nku3WkfAq9gXXn+4Z1vyP81qH/S NXf+G29hvbea1RTjf/FU15ZlHuxFPOuWEe9N7CtltSwmUS4CiFdcceY5f sb8X5zFpDIDuyGrhF+FQyI7pQ7AeZjVzZct8lmLawcWatiw4AxYj2COrT aTJ5hEEFgy8SKmjeYkUTMIx2CD1lp7zdmMEjo9bfzaj1MOSWNtpbpSewu mtyFFc09TwnmJmuzaYd4fFrZ6jQjjDnxFYCXP61PrAP88TfiPuDXjoePe V7oAsWDQekruOeOuYTZMoLeM6l13Aic2mK+CmBYvYgT/FB6ddQ+e/7ZDF Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="280835686" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="280835686" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:23:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="591629744" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga007.fm.intel.com with ESMTP; 21 Jun 2022 05:23:03 -0700 Received: from intel.com (tttangud-desk.iind.intel.com [10.145.144.118]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 25LCMKjw013778; Tue, 21 Jun 2022 13:22:59 +0100 From: Tilak Tangudu To: intel-gfx@lists.freedesktop.org, jon.ewins@intel.com, rodrigo.vivi@intel.com, vinay.belgaumkar@intel.com, chris.p.wilson@intel.com, ashutosh.dixit@intel.com, badal.nilawar@intel.com, anshuman.gupta@intel.com, tilak.tangudu@intel.com, matthew.d.roper@intel.com, saurabhg.gupta@intel.com, Aravind.Iddamsetty@intel.com, Sujaritha.Sundaresan@intel.com Date: Tue, 21 Jun 2022 18:05:16 +0530 Message-Id: <20220621123516.370479-12-tilak.tangudu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621123516.370479-1-tilak.tangudu@intel.com> References: <20220621123516.370479-1-tilak.tangudu@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 11/11] drm/i915 : Add D3COLD OFF support 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Added lmem deep suspend/resume, which covers lmem eviction and added GT/GUC deep suspend/resume using i915_gem_backup_suspend, i915_gem_suspend_late and i915_gem_resume. Added HAS_D3COLD_OFF feature macro to use for D3COLD OFF feature Signed-off-by: Tilak Tangudu --- drivers/gpu/drm/i915/i915_driver.c | 96 ++++++++++++++++++------ drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/i915_pci.c | 1 + drivers/gpu/drm/i915/intel_device_info.h | 1 + 4 files changed, 76 insertions(+), 23 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index 669365c2958c..1ca45d933a4a 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -1609,9 +1609,21 @@ static int intel_runtime_suspend(struct device *kdev) * We are safe here against re-faults, since the fault handler takes * an RPM reference. */ - i915_gem_runtime_suspend(dev_priv); + if (HAS_D3COLD_OFF(dev_priv)) { + i915_gem_backup_suspend(dev_priv); + i915_ggtt_suspend(to_gt(dev_priv)->ggtt); + i915_gem_suspend_late(dev_priv); + } else { + i915_gem_runtime_suspend(dev_priv); + intel_gt_runtime_suspend(to_gt(dev_priv)); - intel_gt_runtime_suspend(to_gt(dev_priv)); + /* + * FIXME: Temporary hammer to avoid freezing the machine on our DGFX + * This should be totally removed when we handle the pci states properly + * on runtime PM and on s2idle cases. + */ + pci_d3cold_disable(pdev); + } intel_runtime_pm_disable_interrupts(dev_priv); @@ -1641,12 +1653,6 @@ static int intel_runtime_suspend(struct device *kdev) drm_err(&dev_priv->drm, "Unclaimed access detected prior to suspending\n"); - /* - * FIXME: Temporary hammer to avoid freezing the machine on our DGFX - * This should be totally removed when we handle the pci states properly - * on runtime PM and on s2idle cases. - */ - pci_d3cold_disable(pdev); rpm->suspended = true; /* @@ -1662,14 +1668,18 @@ static int intel_runtime_suspend(struct device *kdev) */ intel_opregion_notify_adapter(dev_priv, PCI_D3hot); } else { - /* - * current versions of firmware which depend on this opregion - * notification have repurposed the D1 definition to mean - * "runtime suspended" vs. what you would normally expect (D3) - * to distinguish it from notifications that might be sent via - * the suspend path. - */ - intel_opregion_notify_adapter(dev_priv, PCI_D1); + if (HAS_D3COLD_OFF(dev_priv)) { + intel_opregion_suspend(dev_priv, PCI_D3cold); + } else { + /* + * current versions of firmware which depend on this opregion + * notification have repurposed the D1 definition to mean + * "runtime suspended" vs. what you would normally expect (D3) + * to distinguish it from notifications that might be sent via + * the suspend path. + */ + intel_opregion_notify_adapter(dev_priv, PCI_D1); + } } assert_forcewakes_inactive(&dev_priv->uncore); @@ -1677,6 +1687,12 @@ static int intel_runtime_suspend(struct device *kdev) if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) intel_hpd_poll_enable(dev_priv); + if (HAS_D3COLD_OFF(dev_priv)) { + i915_save_pci_state(pdev); + pci_disable_device(pdev); + pci_set_power_state(pdev, PCI_D3cold); + } + drm_dbg(&dev_priv->drm, "Device suspended\n"); return 0; } @@ -1696,9 +1712,28 @@ static int intel_runtime_resume(struct device *kdev) drm_WARN_ON_ONCE(&dev_priv->drm, atomic_read(&rpm->wakeref_count)); disable_rpm_wakeref_asserts(rpm); - intel_opregion_notify_adapter(dev_priv, PCI_D0); + if (HAS_D3COLD_OFF(dev_priv)) { + ret = pci_set_power_state(pdev, PCI_D0); + if (ret) { + drm_err(&dev_priv->drm, + "failed to set PCI D0 power state (%d)\n", ret); + return ret; + } + + i915_load_pci_state(pdev); + + ret = pci_enable_device(pdev); + if (ret) + return ret; + pci_set_master(pdev); + intel_opregion_resume(dev_priv); + } else { + pci_d3cold_enable(pdev); + intel_opregion_notify_adapter(dev_priv, PCI_D0); + } + rpm->suspended = false; - pci_d3cold_enable(pdev); + if (intel_uncore_unclaimed_mmio(&dev_priv->uncore)) drm_dbg(&dev_priv->drm, "Unclaimed access during suspend, bios?\n"); @@ -1711,12 +1746,27 @@ static int intel_runtime_resume(struct device *kdev) intel_runtime_pm_enable_interrupts(dev_priv); - /* - * No point of rolling back things in case of an error, as the best - * we can do is to hope that things will still work (and disable RPM). - */ - intel_gt_runtime_resume(to_gt(dev_priv)); + if (HAS_D3COLD_OFF(dev_priv)) { + ret = i915_pcode_init(dev_priv); + if (ret) + return ret; + sanitize_gpu(dev_priv); + ret = i915_ggtt_enable_hw(dev_priv); + if (ret) + drm_err(&dev_priv->drm, "failed to re-enable GGTT\n"); + + i915_ggtt_resume(to_gt(dev_priv)->ggtt); + + i915_gem_resume(dev_priv); + + } else { + /* + * No point of rolling back things in case of an error, as the best + * we can do is to hope that things will still work (and disable RPM). + */ + intel_gt_runtime_resume(to_gt(dev_priv)); + } /* * On VLV/CHV display interrupts are part of the display * power well, so hpd is reinitialized from there. For diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index ec8c7a2af673..633d20c2372a 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1300,6 +1300,7 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, #define HAS_REGION(i915, i) (INTEL_INFO(i915)->memory_regions & (i)) #define HAS_LMEM(i915) HAS_REGION(i915, REGION_LMEM) +#define HAS_D3COLD_OFF(i915) (INTEL_INFO(dev_priv)->has_d3cold_off) /* * Platform has the dedicated compression control state for each lmem surfaces diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index 5e51fc29bb8b..749ccb14fd6f 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -1064,6 +1064,7 @@ static const struct intel_device_info xehpsdv_info = { .has_guc_deprivilege = 1, \ .has_heci_pxp = 1, \ .needs_compact_pt = 1, \ + .has_d3cold_off = 1, \ .has_media_ratio_mode = 1, \ .platform_engine_mask = \ BIT(RCS0) | BIT(BCS0) | \ diff --git a/drivers/gpu/drm/i915/intel_device_info.h b/drivers/gpu/drm/i915/intel_device_info.h index 08341174ee0a..495c12d65c3e 100644 --- a/drivers/gpu/drm/i915/intel_device_info.h +++ b/drivers/gpu/drm/i915/intel_device_info.h @@ -140,6 +140,7 @@ enum intel_ppgtt_type { /* Keep has_* in alphabetical order */ \ func(has_64bit_reloc); \ func(has_64k_pages); \ + func(has_d3cold_off); \ func(needs_compact_pt); \ func(gpu_reset_clobbers_display); \ func(has_reset_engine); \