From patchwork Sun Oct 2 21:06:44 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Grazvydas Ignotas X-Patchwork-Id: 9359789 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 51577601C0 for ; Sun, 2 Oct 2016 21:07:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4212F28994 for ; Sun, 2 Oct 2016 21:07:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 36AFE289A1; Sun, 2 Oct 2016 21:07:01 +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.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID 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 E725A28994 for ; Sun, 2 Oct 2016 21:07:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BA1DC89BF1; Sun, 2 Oct 2016 21:06:54 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id C278889BF1; Sun, 2 Oct 2016 21:06:52 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id p138so11813953wmb.0; Sun, 02 Oct 2016 14:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=B7J4a0fle2mws6QlD4OkqR8JXScldUt+rCSc3lgQnXI=; b=vqR+87ASx1zQgf1Lj8HMQnHtGSARSLvPB3eo3IRMfc5+5ANHZMCqBO5rPO4HJ5wbFn 1zIfolj11IKWi3DbYQw4tpBSJnlHbhuVtPKeYqJclrqAIr1E+R58RAEhbgUdVgOz817U hZppG7uJ6/biW1cyHJNRpkA4Z8bP5+Gjtw/vZUyQNZXGT0YKP95FfbRN069/Q/2vSYLb lKp0IMN+f7ciVi8q+ht8NtVH7hZLL2Z+20yxuYAmurz81vlBvycanCw77rRt4yVYxeFv kWl25CBCk7QLxffA/D0p/d7/eFwsyCeuksWH7tavFBetw48cWBLL6xSRj3sJWPlLlqoq TLKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=B7J4a0fle2mws6QlD4OkqR8JXScldUt+rCSc3lgQnXI=; b=Nu/wlh586p3ShctRGxkKtu31s1WDh6T7tOJL0Aus0gOR6e8+EC67FMO+eUx8aLH+FA 0NoBPL7HdUqXJ3mvphIE9s+OJGVSBeHHtHs24YsbeLFVhlFSM/iGVJKFHIvSZleRX2Wv Pf48BvULrtKIMeqAMqqHx7z66oGt0wYJxxC58DaeufiU+rIuIr5C4SJDzwXzfGWHSkZM q80s9g5wJyGf5qCbIleVRx6RhQ2yZKdu6rc0n/OY9z5W3YjovR3qzZCHmZtld2d/Uw7W ffLOmdGFuqFz5KVK7MjBVJMfBbw/t7Boc12ZxSDKy8JQn4VY3VHdH3cC+qUTL7xKeyp2 7HzQ== X-Gm-Message-State: AA6/9RkRrDSW1hbKDBQjvWodCCyAUK7L+AMoSK69ugJEscDlBuirSXrO8hd59EY0QESsVw== X-Received: by 10.28.113.16 with SMTP id m16mr6312150wmc.29.1475442411205; Sun, 02 Oct 2016 14:06:51 -0700 (PDT) Received: from localhost.localdomain ([5.20.238.37]) by smtp.gmail.com with ESMTPSA id m140sm744716wma.21.2016.10.02.14.06.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 02 Oct 2016 14:06:50 -0700 (PDT) From: Grazvydas Ignotas To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Subject: [PATCH] drm/amdgpu: also track late init state Date: Mon, 3 Oct 2016 00:06:44 +0300 Message-Id: <1475442406-2096-1-git-send-email-notasas@gmail.com> X-Mailer: git-send-email 2.7.4 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Successful sw_init() and hw_init() states are tracked, but not late_init(). Various error paths may result in amdgpu_fini() being called before .late init is done, so late_init needs to be tracked to avoid unexpected or multiple .late_fini() calls. Signed-off-by: Grazvydas Ignotas --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index b9cc003..4e510092 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -1943,6 +1943,7 @@ struct amdgpu_ip_block_status { bool valid; bool sw; bool hw; + bool late_initialized; bool hang; }; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 9933ab7..0c57898 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1450,6 +1450,7 @@ static int amdgpu_late_init(struct amdgpu_device *adev) DRM_ERROR("late_init of IP block <%s> failed %d\n", adev->ip_blocks[i].funcs->name, r); return r; } + adev->ip_block_status[i].late_initialized = true; } } @@ -1495,8 +1496,11 @@ static int amdgpu_fini(struct amdgpu_device *adev) } for (i = adev->num_ip_blocks - 1; i >= 0; i--) { + if (!adev->ip_block_status[i].late_initialized) + continue; if (adev->ip_blocks[i].funcs->late_fini) adev->ip_blocks[i].funcs->late_fini((void *)adev); + adev->ip_block_status[i].late_initialized = false; } return 0;