From patchwork Tue Mar 30 15:12:53 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manoj Iyer X-Patchwork-Id: 48977 X-Patchwork-Delegate: apw@canonical.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id 6EE76B7C48 for ; Wed, 31 Mar 2010 02:12:05 +1100 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.69) (envelope-from ) id 1Nwd6h-0001ew-04; Tue, 30 Mar 2010 16:11:55 +0100 Received: from adelie.canonical.com ([91.189.90.139]) by chlorine.canonical.com with esmtp (Exim 4.69) (envelope-from ) id 1Nwd6f-0001em-KC for kernel-team@lists.ubuntu.com; Tue, 30 Mar 2010 16:11:53 +0100 Received: from hutte.canonical.com ([91.189.90.181]) by adelie.canonical.com with esmtp (Exim 4.69 #1 (Debian)) id 1Nwd6f-0005lM-HS; Tue, 30 Mar 2010 16:11:53 +0100 Received: from [70.114.236.114] (helo=hungry.local) by hutte.canonical.com with esmtpsa (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1Nwd6f-0000hL-61; Tue, 30 Mar 2010 16:11:53 +0100 Date: Tue, 30 Mar 2010 10:12:53 -0500 (CDT) From: manoj.iyer@canonical.com To: Stefan Bader Subject: Re: [LUCID BUG# 507148] [PATCH 1/2] drm/radeon/bo: add some fallback placements for VRAM only objects. In-Reply-To: <4BB1BB69.9090100@canonical.com> Message-ID: References: <4BB1BB69.9090100@canonical.com> User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Cc: Ubuntu Kernel Team X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.9 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kernel-team-bounces@lists.ubuntu.com Errors-To: kernel-team-bounces@lists.ubuntu.com updated the patchs with information requested. The following changes since commit c2b3a0b3ccb3b114c7e22117cb1fd23f63068bea: JosephChan@via.com.tw (1): (pre-stable) pata_via: Add VIA VX900 support are available in the git repository at: git://kernel.ubuntu.com/manjo/ubuntu-lucid.git lp507148upstream Dave Airlie (2): drm/radeon/bo: add some fallback placements for VRAM only objects. drm/radeon/kms: don't print error on -ERESTARTSYS. drivers/gpu/drm/radeon/radeon.h | 2 ++ drivers/gpu/drm/radeon/radeon_cs.c | 3 ++- drivers/gpu/drm/radeon/radeon_object.c | 10 +++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) From 19ac48b6ac04fef2756aae26e60923dd4e5c4538 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 19 Mar 2010 10:32:10 +1000 Subject: [PATCH 1/2] drm/radeon/bo: add some fallback placements for VRAM only objects. On constrained r100 systems compiz would fail to start due to a lack of memory, we can just fallback place the objects rather than completely failing it works a lot better. Cc: stable@kernel.org Signed-off-by: Dave Airlie (cherry picked from commit 924788672f9c802a4c8e6bc8d88fbc2c9b2e3089) Signed-off-by: Manoj Iyer BugLink: http://launchpad.net/bugs/507148 Cherry-picked from git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git Acked-by: Stefan Bader Acked-by: Andy Whitcroft --- drivers/gpu/drm/radeon/radeon.h | 2 ++ drivers/gpu/drm/radeon/radeon_object.c | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index c0356bb..e1553f0 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -214,7 +214,9 @@ struct radeon_bo { struct list_head list; /* Protected by tbo.reserved */ u32 placements[3]; + u32 busy_placements[3]; struct ttm_placement placement; + struct ttm_placement busy_placement; struct ttm_buffer_object tbo; struct ttm_bo_kmap_obj kmap; unsigned pin_count; diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index f1da370..e781fa9 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c @@ -65,15 +65,19 @@ bool radeon_ttm_bo_is_radeon_bo(struct ttm_buffer_object *bo) void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain) { - u32 c = 0; + u32 c = 0, b = 0; rbo->placement.fpfn = 0; rbo->placement.lpfn = 0; rbo->placement.placement = rbo->placements; - rbo->placement.busy_placement = rbo->placements; + rbo->placement.busy_placement = rbo->busy_placements; if (domain & RADEON_GEM_DOMAIN_VRAM) rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM; + /* add busy placement to TTM if VRAM is only option */ + if (domain == RADEON_GEM_DOMAIN_VRAM) { + rbo->busy_placements[b++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT; + } if (domain & RADEON_GEM_DOMAIN_GTT) rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT; if (domain & RADEON_GEM_DOMAIN_CPU) @@ -81,7 +85,7 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain) if (!c) rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; rbo->placement.num_placement = c; - rbo->placement.num_busy_placement = c; + rbo->placement.num_busy_placement = b; } int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,