From owner-freebsd-usb@FreeBSD.ORG Tue Dec 18 07:49:54 2012 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B4BBFB9D; Tue, 18 Dec 2012 07:49:54 +0000 (UTC) (envelope-from andrew@fubar.geek.nz) Received: from smtp5.clear.net.nz (smtp5.clear.net.nz [203.97.33.68]) by mx1.freebsd.org (Postfix) with ESMTP id 7A1578FC1F; Tue, 18 Dec 2012 07:49:54 +0000 (UTC) Received: from mxin1-orange.clear.net.nz (lb2-srcnat.clear.net.nz [203.97.32.237]) by smtp5.clear.net.nz (CLEAR Net Mail) with ESMTP id <0MF700A8QV2X1760@smtp5.clear.net.nz>; Tue, 18 Dec 2012 20:49:46 +1300 (NZDT) Received: from 202-0-48-19.paradise.net.nz (HELO localhost) ([202.0.48.19]) by smtpin1.paradise.net.nz with ESMTP; Tue, 18 Dec 2012 20:49:45 +1300 Date: Tue, 18 Dec 2012 20:49:31 +1300 From: Andrew Turner Subject: EHCI on armv6 with Write-Back caches To: freebsd-usb@freebsd.org Message-id: <20121218204931.5322922d@fubar.geek.nz> MIME-version: 1.0 X-Mailer: Claws Mail 3.8.0 (GTK+ 2.24.6; i386-portbld-freebsd8.1) Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-Pirate: Arrrr Cc: Oleksandr Tymoshenko X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Dec 2012 07:49:54 -0000 Hello, Oleksandr and myself have been looking into why when we enable the write-back cache on the PandaBoard there are kernel panics with USB. We have tracked it down to an issue appending the ehci_qh_t to the list at the end of ehci_setup_standard_chain(). I have a patch at [1] that allows me to run sha256 on a 40MB file over NSF using the built in smsc USB ethernet chip. The problem is I have had to place a call to DELAY before EHCI_APPEND_QH. This is obviously not the correct solution. Is anyone able to help me narrow down what is missing? It appears to be a missing cache invalidate or flush somewhere but I haven't been able to track down what cache function the DELAY is working around. Andrew [1] http://fubar.geek.nz/files/freebsd/ehci_4.diff