Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Apr 2008 11:50:47 -0500 (CDT)
From:      Mark Tinguely <tinguely@casselton.net>
To:        freebsd-arm@freebsd.org, hselasky@c2i.net
Cc:        jhb@freebsd.org
Subject:   Re: AT91RM9200 and possibly other ARM targets are broken in 8-current after recent commit (more)
Message-ID:  <200804221650.m3MGol5o081637@casselton.net>
In-Reply-To: <200804212222.57503.hselasky@c2i.net>

next in thread | previous in thread | raw e-mail | index | archive | help
>  I've found a new issue :-(
>
>  The OHCI driver does not work in 8-current when using the USB P4 project. I 
>  get garbage data when I do USB transfers. I suspect that there is something 
>  wrong with the cache flush and invalidate stuff in relation to bus_dma. I 
>  have carefully reviewed the OHCI driver and it uses the "bus_dmamap_sync" 
>  function properly.
>
>  Using my USB patchset to build the same USB code on 7-current does not yield 
>  these problems.
>
>  I see that there has been a lot of changes to "sys/arm/arm/pmap.c" for 
>  example.

I quickly looked at the new_usb_1_7_3 code and noticed that it should be
allocation memory with BUS_DMA_COHERENT flag set. What this means is 
after the memory is allocated, a new, non-cachable VM address is allocated
and used in the place of the original address.

I *think* this new address lives in DMA S/G lists and should not be mapped
into an address space except to temporarily to copy data in/out. I will
assume this assumption is incorrect and look through the pmap code all over
again.

>  Do you have a clue about what is causing this ?
>
>  --HPS
>
>  Output from 7-current:
>
>  usb0: 12Mbps Full Speed USB v1.0
>  uhub0: <Atmel OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usb0
>  uhub0: 2 ports with 2 removable, self powered
>  uplcom0: <Prolific Technology Inc. USB-Serial Controller D, class 0/0, rev 
>  1.10/4.00, addr 2> on usb0
>  usbd_alloc_device: set address 3 failed (ignored)
>  usbd_alloc_device: getting device descriptor at addr 3 failed!
>  uhub0:uhub_reattach_port: could not allocate new device!
>  mmc0: setting transfer rate to 30.000MHz
>
>  Output from 8-current:
>
>  uplcom0: <???????? ????????, class 0/0, rev 1.10/4.00, addr 2> on usb1
>  uplcom0: failed to set configuration, error=USBD_ERR_SHORT_XFER
>  device_attach: uplcom0 attach returned 6

There are two clues of short transfers - could that be a clue?
 1) attach's descriptor string is only 17 character rather than
    expected 48 - and the 17 characters are not Unicode.
 2) set configuration has a USBD_ERR_SHORT_XFER error.

I don't know if turning on USB debug printing will give more clues.

I will look through the pmap code and see if I can chase up something.

--Mark.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804221650.m3MGol5o081637>