on 11/01/2012 17:01 John Baldwin said the following:
> I think this is fine, but you should just always exclude page zero when 
> allocating
> bounce pages.  Bounce pages are assigned to zones that can be shared by 
> multiple
> tags, so other tags that map to the same zone can alloc bounce pages that ohci
> will use (add_bounce_page() should probably take the bounce zone as an arg 
> instead
> of a tag).  I think it's not worth creating a separate zone just for ohci, but
> to forbid page zero from all zones instead.

Thank you for the explanation.
Actually, I think that on x86 we don't have to do anything special for any 
memory
allocations that we do, including the bounce pages, as the page zero is excluded
from phys_avail and is not available for normal use.
The only thing we have to do on x86 is to bounce the page zero if it gets passed
to us.  (And that can happen only in very special situations, obviously.  I am 
not
sure if anything besides the system dump would do that.)

And I would prefer to defer any changes to !x86 bus dma to the respective 
platform
maintainers, obviously ;-)

> Also, please change this:
> 
> -     if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem)
> -      || newtag->alignment > 1)
> +     if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem) ||
> +         newtag->alignment > 1)
> +             newtag->flags |= BUS_DMA_COULD_BOUNCE;
> +
> +     if ((newtag->flags & BUS_DMA_NO_PAGEZERO) != 0)
>               newtag->flags |= BUS_DMA_COULD_BOUNCE;
> 
> To just be one if.

Will do.

-- 
Andriy Gapon
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to