From owner-freebsd-mips@FreeBSD.ORG Tue Sep 4 17:56:33 2012 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1EDE1065670; Tue, 4 Sep 2012 17:56:33 +0000 (UTC) (envelope-from freebsd@damnhippie.dyndns.org) Received: from duck.symmetricom.us (duck.symmetricom.us [206.168.13.214]) by mx1.freebsd.org (Postfix) with ESMTP id 666758FC17; Tue, 4 Sep 2012 17:56:33 +0000 (UTC) Received: from damnhippie.dyndns.org (daffy.symmetricom.us [206.168.13.218]) by duck.symmetricom.us (8.14.5/8.14.5) with ESMTP id q84HuWXh060101; Tue, 4 Sep 2012 11:56:32 -0600 (MDT) (envelope-from freebsd@damnhippie.dyndns.org) Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id q84HuUmG041462; Tue, 4 Sep 2012 11:56:30 -0600 (MDT) (envelope-from freebsd@damnhippie.dyndns.org) From: Ian Lepore To: Mark Tinguely In-Reply-To: References: <1346777897.1140.633.camel@revolution.hippie.lan> Content-Type: text/plain; charset="us-ascii" Date: Tue, 04 Sep 2012 11:56:30 -0600 Message-ID: <1346781390.1140.641.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: freebsd-arm@freebsd.org, freebsd-mips@freebsd.org Subject: Re: busdma buffer management enhancements - call for review and test X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Sep 2012 17:56:33 -0000 On Tue, 2012-09-04 at 12:40 -0500, Mark Tinguely wrote: > On Tue, Sep 4, 2012 at 11:58 AM, Ian Lepore > wrote: > How about having a per processor cache line definition rather than using: > > +#define MIN_ZONE_BUFSIZE 32 > > For those archs that have a 64 byte cache line. > > I like the separation of the regular and BUS_DMA_COHERENT or > BUS_DMA_NOCACHE. I never liked turning the cache off the entire page > for a few DMA buffers. > > --Mark. The code in busdma_bufalloc.c (where that constant appears) knows nothing about architecture cache line sizes, that info has to be passed in to the create call as the minimum_alignment parameter. The point of that constant is to enforce internal limits in the implementation... if the caller passes in a minimum_alignment size less than 32, it will still use 32 as the smallest buffer size in the cache, purely because it only allocates enough slots in the array to handle log2(PAGE_SIZE) - log2(MIN_ZONE_BUFSIZE) + 1 zones, but you can't use log2() in a compile time constant expression, so things are a bit hand-tuned, and there's some code for sanity-enforcement. -- Ian