From patchwork Sat Aug 20 05:09:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sagar.a.kamble@intel.com X-Patchwork-Id: 9291561 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A7DDB60572 for ; Sat, 20 Aug 2016 05:07:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A9C329488 for ; Sat, 20 Aug 2016 05:07:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8FDDF29489; Sat, 20 Aug 2016 05:07:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1E0AD2947E for ; Sat, 20 Aug 2016 05:07:46 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 766546E362; Sat, 20 Aug 2016 05:07:45 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 8549F6E361 for ; Sat, 20 Aug 2016 05:07:40 +0000 (UTC) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 19 Aug 2016 22:07:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.28,548,1464678000"; d="scan'208"; a="1038883040" Received: from sakamble-desktop.iind.intel.com ([10.223.82.59]) by orsmga002.jf.intel.com with ESMTP; 19 Aug 2016 22:07:39 -0700 From: Sagar Arun Kamble To: intel-gfx@lists.freedesktop.org Date: Sat, 20 Aug 2016 10:39:20 +0530 Message-Id: <1471669765-5935-22-git-send-email-sagar.a.kamble@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1471669765-5935-1-git-send-email-sagar.a.kamble@intel.com> References: <1471669765-5935-1-git-send-email-sagar.a.kamble@intel.com> Subject: [Intel-gfx] drm/i915: Check GuC load status for Host to GuC action and SLPC status X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP Host to GuC actions should not be invoked when GuC isn't loaded hence add early return in i915_guc_action if GuC load status is not SUCCESS. Also, SLPC status has to be linked with GuC load status to make sure SLPC actions get invoked when GuC is loaded. Signed-off-by: Sagar Arun Kamble --- drivers/gpu/drm/i915/i915_guc_submission.c | 5 +++++ drivers/gpu/drm/i915/intel_drv.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c index 680d9b4..27c937b 100644 --- a/drivers/gpu/drm/i915/i915_guc_submission.c +++ b/drivers/gpu/drm/i915/i915_guc_submission.c @@ -78,6 +78,8 @@ static inline bool host2guc_action_response(struct drm_i915_private *dev_priv, int i915_guc_action(struct intel_guc *guc, u32 *data, u32 len) { struct drm_i915_private *dev_priv = guc_to_i915(guc); + struct intel_guc_fw *guc_fw = &guc->guc_fw; + u32 status; int i; int ret; @@ -85,6 +87,9 @@ int i915_guc_action(struct intel_guc *guc, u32 *data, u32 len) if (WARN_ON(len < 1 || len > 15)) return -EINVAL; + if (WARN_ON(guc_fw->guc_fw_load_status != GUC_FIRMWARE_SUCCESS)) + return -ENODEV; + intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL); dev_priv->guc.action_count += 1; diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index c46d619..71936dc 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1694,8 +1694,12 @@ bool chv_phy_powergate_ch(struct drm_i915_private *dev_priv, enum dpio_phy phy, static inline int intel_slpc_active(struct drm_i915_private *dev_priv) { + struct intel_guc_fw *guc_fw = &dev_priv->guc.guc_fw; int ret = 0; + if (guc_fw->guc_fw_load_status != GUC_FIRMWARE_SUCCESS) + return 0; + if (dev_priv->guc.slpc.vma && dev_priv->guc.slpc.enabled) ret = 1;