PERFORCE change 152649 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Sat Nov 8 01:10:55 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=152649
Change 152649 by hselasky at hselasky_laptop001 on 2008/11/08 09:09:50
Fix a serious BUSDMA bug: The initial virtual page offset is
not retained on the bounce pages, which is what the EHCI and
the OHCI expects.
Affected files ...
.. //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#10 edit
Differences ...
==== //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#10 (text+ko) ====
@@ -938,7 +938,8 @@
if (op & BUS_DMASYNC_PREWRITE) {
while (bpage != NULL) {
bcopy((void *)bpage->datavaddr,
- (void *)bpage->vaddr,
+ (void *)(bpage->vaddr +
+ ((vm_offset_t)(bpage->datavaddr) & PAGE_MASK)),
bpage->datacount);
bpage = STAILQ_NEXT(bpage, links);
}
@@ -947,7 +948,8 @@
if (op & BUS_DMASYNC_POSTREAD) {
while (bpage != NULL) {
- bcopy((void *)bpage->vaddr,
+ bcopy((void *)(bpage->vaddr +
+ ((vm_offset_t)(bpage->datavaddr) & PAGE_MASK)),
(void *)bpage->datavaddr,
bpage->datacount);
bpage = STAILQ_NEXT(bpage, links);
@@ -1149,7 +1151,7 @@
bpage->datavaddr = vaddr;
bpage->datacount = size;
STAILQ_INSERT_TAIL(&(map->bpages), bpage, links);
- return (bpage->busaddr);
+ return (bpage->busaddr + ((vm_offset_t)vaddr & PAGE_MASK));
}
static void
More information about the p4-projects
mailing list