cvs commit: src/sys/dev/usb ehci.c ohci.c
Marius Strobl
marius at alchemy.franken.de
Sat Apr 12 19:34:00 UTC 2008
On Thu, Mar 20, 2008 at 04:19:26PM +0000, Sam Leffler wrote:
> sam 2008-03-20 16:19:25 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/dev/usb ehci.c ohci.c
> Log:
> Workaround design botch in usb: blindly mixing bus_dma with PIO does not
> work on architectures with a write-back cache as the PIO writes end up
> in the cache which the sync(BUS_DMASYNC_POSTREAD) in usb_transfer_complete
> then discards; compensate in the xfer methods that do PIO by pushing the
> writes out of the cache before usb_transfer_complete is called.
>
> This fixes USB on xscale and likely other places.
>
> Sponsored by: hobnob
> Reviewed by: cognet, imp
> MFC after: 1 month
>
> Revision Changes Path
> 1.62 +16 -0 src/sys/dev/usb/ehci.c
> 1.171 +16 -0 src/sys/dev/usb/ohci.c
This causes a crash during boot on sparc64. Looks like map is still
NULL at that point.
Marius
ohci0: <AcerLabs M5237 (Aladdin-V) USB controller> mem 0x1000000-0x1000fff at d0
ohci0: Reserved 0x1000 bytes for rid 0x10 type 3 at 0x1000000
ohci0: [GIANT-LOCKED]
ohci0: [ITHREAD]
usb0: OHCI version 1.0, legacy support
usb0: <AcerLabs M5237 (Aladdin-V) USB controller> on ohci0
usb0: USB revision 1.0
panic: trap: fast data access mmu miss
cpuid = 0
KDB: enter: panic
[thread pid 0 tid 100000 ]
Stopped at kdb_enter+0x80: ta %xcc, 1
db> bt
Tracing pid 0 tid 100000 td 0xc076d8e0
panic() at panic+0x208
trap() at trap+0x4d0
-- fast data access mmu miss tar=0 %o7=0xc0226f1c --
iommu_dvmamap_sync() at iommu_dvmamap_sync+0x4
ohci_root_ctrl_start() at ohci_root_ctrl_start+0xe4c
ohci_root_ctrl_transfer() at ohci_root_ctrl_transfer+0x1c
usbd_start_transfer() at usbd_start_transfer+0x188
usbd_transfer() at usbd_transfer+0x128
usbd_sync_transfer() at usbd_sync_transfer+0x10
usbd_do_request_flags_pipe() at usbd_do_request_flags_pipe+0x5c
usbd_do_request_flags() at usbd_do_request_flags+0x1c
usbd_do_request() at usbd_do_request+0x1c
usbd_set_address() at usbd_set_address+0x34
usbd_new_device() at usbd_new_device+0x3a4
usb_attach() at usb_attach+0x16c
device_attach() at device_attach+0x4a4
device_probe_and_attach() at device_probe_and_attach+0x14c
ohci_pci_attach() at ohci_pci_attach+0x8bc
device_attach() at device_attach+0x4a4
device_probe_and_attach() at device_probe_and_attach+0x14c
bus_generic_attach() at bus_generic_attach+0x10
ofw_pcibus_attach() at ofw_pcibus_attach+0x680
device_attach() at device_attach+0x4a4
device_probe_and_attach() at device_probe_and_attach+0x14c
bus_generic_attach() at bus_generic_attach+0x10
psycho_attach() at psycho_attach+0x1124
device_attach() at device_attach+0x4a4
device_probe_and_attach() at device_probe_and_attach+0x14c
bus_generic_attach() at bus_generic_attach+0x10
nexus_attach() at nexus_attach+0x4fc
device_attach() at device_attach+0x4a4
device_probe_and_attach() at device_probe_and_attach+0x14c
root_bus_configure() at root_bus_configure+0x28
configure() at configure+0x4
mi_startup() at mi_startup+0x18c
btext() at btext+0x34
> addr2line -fe kernel.debug 0xc057e9e4
iommu_dvmamap_sync
/usr/home/marius/co/ts/src/sys/sparc64/sparc64/iommu.c:1137
More information about the cvs-src
mailing list