From owner-freebsd-hackers@FreeBSD.ORG Sun Jul 2 12:05:04 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9C8E816A40F for ; Sun, 2 Jul 2006 12:05:04 +0000 (UTC) (envelope-from iedowse@iedowse.com) Received: from nowhere.iedowse.com (nowhere.iedowse.com [82.195.144.75]) by mx1.FreeBSD.org (Postfix) with SMTP id BD97B43D45 for ; Sun, 2 Jul 2006 12:05:03 +0000 (GMT) (envelope-from iedowse@iedowse.com) Received: from localhost ([127.0.0.1] helo=iedowse.com) by nowhere.iedowse.com via local-iedowse id ; 2 Jul 2006 13:05:01 +0100 (IST) To: Hans Petter Selasky In-Reply-To: Your message of "Sun, 02 Jul 2006 11:38:10 +0200." <200607021138.11945.hselasky@c2i.net> Date: Sun, 02 Jul 2006 13:05:00 +0100 From: Ian Dowse Message-ID: <200607021305.aa75873@nowhere.iedowse.com> Cc: David Malone , freebsd-hackers@freebsd.org Subject: Re: contiguous memory allocation problem X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Jul 2006 12:05:04 -0000 In message <200607021138.11945.hselasky@c2i.net>, Hans Petter Selasky writes: >But there is one problem, that has been overlooked, and that is High speed >isochronous transfers, which are not supported by the existing USB system. I >don't think that the EHCI specification was designed for scatter and gather, >when you consider this: > >8 transfers of 0xC00 bytes has to fit on 7 pages. If this is going to work, >and I am right, one page has to contain two transfers. (see page 43 of >ehci-r10.pdf) I haven't looked into the details, but the text in section 3.3.3 seems to suggest that EHCI is designed to not require physically contiguous allocations here either, so the same approach of using bus_dmamap_load() should work: This data structure requires the associated data buffer to be contiguous (relative to virtual memory), but allows the physical memory pages to be non-contiguous. Seven page pointers are provided to support the expression of 8 isochronous transfers. The seven pointers allow for 3 (transactions) * 1024 (maximum packet size) * 8 (transaction records) (24576 bytes) to be moved with this data structure, regardless of the alignment offset of the first page. Ian