From owner-freebsd-usb@FreeBSD.ORG Sun Nov 16 19:12:12 2008 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5664C106564A; Sun, 16 Nov 2008 19:12:12 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from asmtpout021.mac.com (asmtpout021.mac.com [17.148.16.96]) by mx1.freebsd.org (Postfix) with ESMTP id 45AFB8FC0C; Sun, 16 Nov 2008 19:12:12 +0000 (UTC) (envelope-from xcllnt@mac.com) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Received: from [192.168.1.95] (209-128-86-226.BAYAREA.NET [209.128.86.226]) by asmtp021.mac.com (Sun Java(tm) System Messaging Server 6.3-7.03 (built Aug 7 2008; 32bit)) with ESMTPSA id <0KAF00CDBXCA3M10@asmtp021.mac.com>; Sun, 16 Nov 2008 11:12:12 -0800 (PST) Message-id: From: Marcel Moolenaar To: Hans Petter Selasky In-reply-to: <200811161408.21562.hselasky@c2i.net> Date: Sun, 16 Nov 2008 11:12:10 -0800 References: <20081107082740.GA1334@icarus.home.lan> <20081108001128.GA1437@icarus.home.lan> <200811081023.10058.hselasky@freebsd.org> <200811161408.21562.hselasky@c2i.net> X-Mailer: Apple Mail (2.929.2) Cc: freebsd-current@freebsd.org, freebsd-usb@freebsd.org Subject: Re: [Serious] busdma bug in -current in relation to USB hardware - review wanted X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Nov 2008 19:12:12 -0000 On Nov 16, 2008, at 5:08 AM, Hans Petter Selasky wrote: > Hi, > > It turns out my initial patch need to be limited to the use-case > only. Before > I start any real work, I want to know if anyone will object if I > implement > the following new BUS_DMA flag into FreeBSD's busdma system? > > amd64/amd64/busdma_machdep.c > i386/i386/busdma_machdep.c > arm/arm/busdma_machdep.c > ia64/ia64/busdma_machdep.c > mips/mips/busdma_machdep.c > powerpc/powerpc/busdma_machdep.c > sparc64/sparc64/bus_machdep.c > sun4v/sun4v/bus_machdep.c > sys/bus_dma.h > > /* > * The following flag specifies that no re-alignment of individual > * memory pages is allowed when loaded into DMA. It can only be used > * when "maxsegsz" is equal to "PAGE_SIZE" and "alignment" is less > * than or equal to 1. > * > * Background: Some kinds of DMA hardware only stores the full > * physical address of the first memory page when multiple memory > * pages are loaded into DMA. Consequtive memory pages only gets the > * non-offset part of the physical address updated. The hardware > * computes the amount of data that should be stored in the first > * memory page from the minimum of the total transfer length and > * PAGE_SIZE minus the initial page offset. When the initial page > * offset is not preserved the hardware ends up transferring an > * invalid number of bytes to or from the initial memory page. > */ > #define BUS_DMA_NOREAL 0x400 /* no page re-alignment allowed */ No objection, but please call it BUS_DMA_NOREALIGN NOREAL reads as NO-REAL and not as NO-RE-AL. And with real addressing an existing concept, confusion is not far around the corner... -- Marcel Moolenaar xcllnt@mac.com