From patchwork Tue Mar 2 08:22:38 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 83148 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o228N6DE013218 for ; Tue, 2 Mar 2010 08:23:47 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 383639F3A9; Tue, 2 Mar 2010 00:22:41 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail.ffwll.ch (cable-static-49-187.intergga.ch [157.161.49.187]) by gabe.freedesktop.org (Postfix) with ESMTP id 8C3989F3A6 for ; Tue, 2 Mar 2010 00:22:38 -0800 (PST) Received: by mail.ffwll.ch (Postfix, from userid 1000) id CC13B20C438; Tue, 2 Mar 2010 09:22:37 +0100 (CET) X-Spam-ASN: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on orange.ffwll.ch X-Spam-Level: X-Spam-Hammy: 0.000-+--100644, 0.000-+--signedoffby, 0.000-+--signed-off-by X-Spam-Status: No, score=-4.4 required=6.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Spammy: 0.969-+--Our, 0.967-+--H*m:ffwll, 0.962-+--H*Ad:U*daniel.vetter Received: from fliege.ffwll.ch (unknown [192.168.23.131]) by mail.ffwll.ch (Postfix) with ESMTP id 174ED20C437; Tue, 2 Mar 2010 09:22:14 +0100 (CET) Received: from fliege.ffwll.ch (localhost.localdomain [127.0.0.1]) by fliege.ffwll.ch (8.14.3/8.14.3) with ESMTP id o228N8t0026184; Tue, 2 Mar 2010 09:23:08 +0100 Received: (from daniel@localhost) by fliege.ffwll.ch (8.14.3/8.14.3/Submit) id o228N8o0026183; Tue, 2 Mar 2010 09:23:08 +0100 From: Daniel Vetter To: intel-gfx@lists.freedesktop.org Date: Tue, 2 Mar 2010 09:22:38 +0100 Message-Id: <985e3640a3bba172450fe64a2e8dbfb35caef36c.1267517278.git.daniel.vetter@ffwll.ch> X-Mailer: git-send-email 1.6.6.1 In-Reply-To: <6ab3c1a8d7cea47c0a26dadf5b7f742443e28568.1267517278.git.daniel.vetter@ffwll.ch> References: <9e33573053467e42d03de8ed74d1f1885b999cc3.1267517278.git.daniel.vetter@ffwll.ch> <99c9af5f2a445be52d5f47058298c2d280600654.1267517278.git.daniel.vetter@ffwll.ch> <6ab3c1a8d7cea47c0a26dadf5b7f742443e28568.1267517278.git.daniel.vetter@ffwll.ch> In-Reply-To: References: Cc: Daniel Vetter Subject: [Intel-gfx] [PATCH 07/13] i830_memory: no memory allocations without a bo! X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Tue, 02 Mar 2010 08:23:47 +0000 (UTC) diff --git a/src/i830_memory.c b/src/i830_memory.c index 2c00d43..f97efc9 100644 --- a/src/i830_memory.c +++ b/src/i830_memory.c @@ -87,9 +87,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "i810_reg.h" #include "i915_drm.h" -/* Our hardware status area is just a single page */ -#define HWSTATUS_PAGE_SIZE GTT_PAGE_SIZE - /** * Returns the fence size for a tiled area of the given size. */ @@ -168,34 +165,27 @@ i830_check_display_stride(ScrnInfoPtr scrn, int stride, Bool tiling) void i830_free_memory(ScrnInfoPtr scrn, i830_memory * mem) { + intel_screen_private *intel = intel_get_screen_private(scrn); + if (mem == NULL) return; - if (mem->bo != NULL) { - intel_screen_private *intel = intel_get_screen_private(scrn); - dri_bo_unreference(mem->bo); - if (intel->bo_list == mem) { - intel->bo_list = mem->next; - if (mem->next) - mem->next->prev = NULL; - } else { - if (mem->prev) - mem->prev->next = mem->next; - if (mem->next) - mem->next->prev = mem->prev; - } - xfree(mem->name); - xfree(mem); - return; - } - /* Disconnect from the list of allocations */ - if (mem->prev != NULL) - mem->prev->next = mem->next; - if (mem->next != NULL) - mem->next->prev = mem->prev; + assert(mem->bo != NULL); + dri_bo_unreference(mem->bo); + if (intel->bo_list == mem) { + intel->bo_list = mem->next; + if (mem->next) + mem->next->prev = NULL; + } else { + if (mem->prev) + mem->prev->next = mem->next; + if (mem->next) + mem->next->prev = mem->prev; + } xfree(mem->name); xfree(mem); + return; } /* Resets the state of the aperture allocator, freeing all memory that had