From owner-freebsd-usb@FreeBSD.ORG Tue Jan 13 15:26:32 2015 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8D8BA244; Tue, 13 Jan 2015 15:26:32 +0000 (UTC) Received: from mail.turbocat.net (heidi.turbocat.net [88.198.202.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4702CDD1; Tue, 13 Jan 2015 15:26:31 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id AFD0F1FE022; Tue, 13 Jan 2015 16:26:29 +0100 (CET) Message-ID: <54B53956.4090708@selasky.org> Date: Tue, 13 Jan 2015 16:27:18 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Ian Lepore , kott Subject: Re: usb_pc_cpu_flush References: <1419359192795-5975583.post@n5.nabble.com> <5499E734.1070507@selasky.org> <1419392511197-5975691.post@n5.nabble.com> <549A811D.3060204@selasky.org> <1419416870924-5975752.post@n5.nabble.com> <1419423740820-5975763.post@n5.nabble.com> <549AB711.8070005@selasky.org> <1419431704871-5975773.post@n5.nabble.com> <549BF430.8000207@selasky.org> <1419877515606-5976832.post@n5.nabble.com> <1421133295061-5980199.post@n5.nabble.com> <1421160576.14601.175.camel@freebsd.org> In-Reply-To: <1421160576.14601.175.camel@freebsd.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-usb@freebsd.org X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jan 2015 15:26:32 -0000 On 01/13/15 15:49, Ian Lepore wrote: > On Tue, 2015-01-13 at 00:14 -0700, kott wrote: >> Yes with cache disabled, this problem is not seen. Seems to be with a issue >> with l2 cache. >> Thanks kott > > Except that there are no known problems with l2 cache on armv7 right > now. There are known problems with the USB driver using the busdma > routines incorrectly, which accidentally works okay on x86 platforms but > likely not so well on others. > Hi, If there is a problem it is in "usb_pc_cpu_flush()" or "usb_pc_cpu_invalidate()": void usb_pc_cpu_flush(struct usb_page_cache *pc) { if (pc->page_offset_end == pc->page_offset_buf) { /* nothing has been loaded into this page cache! */ return; } bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_PREWRITE); } USB has a very simple DMA sync language, either flush or invalidate. These are used correctly from what I can see with regard to the FreeBSD USB specification. If the "usb_pc_cpu_flush()" function does not cause the CPU cache to be written to RAM before the function returns, please let me know. --HPS