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