Fwd: Re: EHCI on armv6 with Write-Back caches
Hans Petter Selasky
hselasky at c2i.net
Sun Dec 23 10:38:39 UTC 2012
On Sunday 23 December 2012 10:59:52 Hans Petter Selasky wrote:
> On Sunday 23 December 2012 00:06:04 Ralf Wenk wrote:
> > > On Friday 21 December 2012 01:18:57 Oleksandr Tymoshenko wrote:
> > > > On 12/20/2012 10:56 AM, Hans Petter Selasky wrote:
> > > > > FYI - please test!
> > > > >
> > > > > ---------- Forwarded Message ----------
> > > > >
> > > > > Subject: Re: EHCI on armv6 with Write-Back caches
> > > > > Date: Thursday 20 December 2012, 19:46:34
> > > > > From: Hans Petter Selasky <hselasky at c2i.net>
> > > > > To: Warner Losh <imp at bsdimp.com>
> > > > > CC: Andrew Turner <andrew at fubar.geek.nz>, Oleksandr Tymoshenko
> > > > > <gonzo at freebsd.org>, freebsd-usb at freebsd.org, alfred at freebsd.org,
> > > > > freebsd- wireless at freebsd.org
> > > > >
> > > > > Hi,
> > > > >
> > > > > I've run some basic tests over here (x86) which passed after some
> > > > > patch modifications. Please test and verify for your ARM targets:
> > > > >
> > > > > http://svnweb.freebsd.org/changeset/base/244500
> > > > > http://svnweb.freebsd.org/changeset/base/244503
> > > > >
> > > > > Please also verify that upgt and uwrt and uath still works like
> > > > > expected.
> > > > >
> > > > > --HPS
> > > >
> > > > if_smsc fails with following diagnostics:
> > > > smsc0: error: allocating USB transfers failed
> > > >
> > > > The problem is that Bulk-In transfer buffer is 5 pages long but tag's
> > > > boundary limitation is
> > > > a page and it's impossible to allocate 5 pages without crossing page
> > > > boundary
> > >
> > > Can you try again using this patch:
> > >
> > > http://svnweb.freebsd.org/changeset/base/244535
> >
> > Since revision 244503 I get an error after inserting an USB-stick in
> > about 50% of the cases. The problem is still there with revision 244535.
> > My latest test was with revision 244582.
> >
> > The kernel messages are:
> >
> > root at raspberry-pi:~ # ugen0.4: <Kingston> at usbus0
> > umass0: <Kingston DataTraveler G2, class 0/0, rev 2.00/2.00, addr 4> on
> > usbus0 umass0: SCSI over Bulk-Only; quirks = 0x4101
> > umass0:0:0:-1: Attached to scbus0
> > (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 0 0 0 24 0
> > (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an
> > error (probe0:umass-sim0:0:0:0): Retrying command
> > (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 0 0 0 24 0
> > (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an
> > error (probe0:umass-sim0:0:0:0): Retrying command
> > (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 0 0 0 24 0
> > (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an
> > error (probe0:umass-sim0:0:0:0): Retrying command
> > (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 0 0 0 24 0
> > (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an
> > error (probe0:umass-sim0:0:0:0): Retrying command
> > (probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 0 0 0 24 0
> > (probe0:umass-sim0:0:0:0): CAM status: CCB request completed with an
> > error (probe0:umass-sim0:0:0:0): Error 5, Retries exhausted
> > ugen0.4: <Kingston> at usbus0 (disconnected)
> > umass0: at uhub1, port 3, addr 4 (disconnected)
> >
> > When things go well they are:
> >
> > root at raspberry-pi:~ # ugen0.4: <Kingston> at usbus0
> > umass0: <Kingston DataTraveler G2, class 0/0, rev 2.00/2.00, addr 4> on
> > usbus0 umass0: SCSI over Bulk-Only; quirks = 0x4101
> > umass0:0:0:-1: Attached to scbus0
> >
> > root at raspberry-pi:~ # da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
> > da0: <Kingston DataTraveler G2 1.00> Removable Direct Access SCSI-2
> > device da0: 40.000MB/s transfers
> > da0: 3817MB (7818240 512 byte sectors: 255H 63S/T 486C)
> >
> > But even then there is something wrong now:
> >
> > root at raspberry-pi:~ # gpart show da0
> > => 34 7818173 da0 GPT (3.7G)
> >
> > 34 2097152 1 freebsd-ufs (1.0G)
> >
> > 2097186 5721021 - free - (2.7G)
> >
> > root at raspberry-pi:~ # mount /dev/da0p1 /mnt
> > g_vfs_done():da0p1[READ(offset=65536, length=8192)]error = 6
> > mount: /dev/da0p1: Device not configured
> >
> >
> > I am using a RPI-B kernel configuration with serial boot console and
> > added options MSDOSFS and GEOM_PART_GPT. With older revisions they
> > worked. The USB-stick is OK. I verified that with my PC.
>
> Hi,
>
> Can you figure out which revision was causing this regression?
>
> BTW: src/sys/dev/usb/usb_transfer.c
>
> Change:
>
> if (!xfer->flags.ext_buffer) {
> #if USB_HAVE_BUSDMA
> struct usb_page_search page_info;
> struct usb_page_cache *pc;
>
>
> Into:
>
> if (!xfer->flags.ext_buffer) {
> #if 0
> struct usb_page_search page_info;
> struct usb_page_cache *pc;
>
> And only this one.
>
> Any difference?
>
Hi,
Can you run usbdump and collect USB traces from the failing and non-failing
case. Then remove the timestamps using "sed" and do a diff.
--HPS
More information about the freebsd-arm
mailing list