From patchwork Fri Aug 10 17:29:11 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 1306151 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id 287883FCF2 for ; Fri, 10 Aug 2012 17:29:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2CF42A0FA8 for ; Fri, 10 Aug 2012 10:29:33 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-qc0-f177.google.com (mail-qc0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTP id D1CB69E84F for ; Fri, 10 Aug 2012 10:29:20 -0700 (PDT) Received: by qcsu28 with SMTP id u28so1084822qcs.36 for ; Fri, 10 Aug 2012 10:29:20 -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:x-mailer; bh=w7doVJc+s0PJJn3WJPlyPiNz2mdSjy4yc6oZzdJjU04=; b=Av+LlaoZ6X5IbizRB69V/Y7ug7IsgXDGdDSJjAtkbmIxpbxpJzoeYjqSH/cYW95OQl lWysb/OvgoLhhyy3TLIEpsrYa3vN3IQFBuqJPWjHxLLNh384uwO2QQoqsrwH4kfpA8s6 m5lgNwhUPzUniR0W38Ulh404DXZhBJtDvjs+H3ONowyROfgdJ1Zng9I13QOabR9edNKv 3pAr2OMXznI9hVOD8lbMC2hurAY5ZZxqknS6f5AuyhBMbGJjaKyZRZewZS64QjT9ylcB opfUkQdQnbtBDV0VqIflb3KEk+4/H8iTvktM7FiMnrZJYTYuMUH2D6GiB0jKqG4O/BnI eSPw== Received: by 10.224.181.16 with SMTP id bw16mr1643259qab.35.1344619759981; Fri, 10 Aug 2012 10:29:19 -0700 (PDT) Received: from localhost.localdomain (static-74-96-105-49.washdc.fios.verizon.net. [74.96.105.49]) by mx.google.com with ESMTPS id fx5sm4066268qab.14.2012.08.10.10.29.18 (version=SSLv3 cipher=OTHER); Fri, 10 Aug 2012 10:29:19 -0700 (PDT) From: alexdeucher@gmail.com To: airlied@gmail.com, dri-devel@lists.freedesktop.org Subject: [PATCH 1/2] drm/radeon/dynpm: wait for fences on all rings when reclocking Date: Fri, 10 Aug 2012 13:29:11 -0400 Message-Id: <1344619752-23475-1-git-send-email-alexdeucher@amd.com> X-Mailer: git-send-email 1.7.7.5 Cc: Alex Deucher X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org From: Alex Deucher 1. Drop gui idle stuff, it's not as reliable as fences and only covers the 3D engine. 2. Wait for fences on all rings. This makes sure all rings are idle when reclocking. Signed-off-by: Alex Deucher Reviewed-by: Jerome Glisse --- drivers/gpu/drm/radeon/radeon_pm.c | 17 ++++++----------- 1 files changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 7ae6066..2c2c901 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c @@ -253,18 +253,13 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) down_write(&rdev->pm.mclk_lock); mutex_lock(&rdev->ring_lock); - /* gui idle int has issues on older chips it seems */ - if (rdev->family >= CHIP_R600) { - if (rdev->irq.installed) { - /* wait for GPU to become idle */ - radeon_irq_kms_wait_gui_idle(rdev); - } - } else { - struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; - if (ring->ready) { - radeon_fence_wait_empty_locked(rdev, RADEON_RING_TYPE_GFX_INDEX); - } + /* wait for the rings to drain */ + for (i = 0; i < RADEON_NUM_RINGS; i++) { + struct radeon_ring *ring = &rdev->ring[i]; + if (ring->ready) + radeon_fence_wait_empty_locked(rdev, i); } + radeon_unmap_vram_bos(rdev); if (rdev->irq.installed) {