Am Donnerstag, 5. Juni 2003 21:53 schrieb Alan Stern:
> On Thu, 5 Jun 2003, Oliver Neukum wrote:
> > > That helps.  So a buffer used for device input should be allocated
> > > separately from anything written by the CPU, whereas a buffer used for
> > > device output can be shared with other data in a buffer allocated by
> > > kmalloc, but not on the stack.
> >
> > Judging by this implementation from mips Doing so would be quite
> > inefficient.
> >
> > extern inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,
> >                                     size_t size, int direction)
> > {
> >     if (direction == PCI_DMA_NONE)
> >             BUG();
> >
> > #ifndef CONFIG_COHERENT_IO
> >     dma_cache_wback_inv((unsigned long)ptr, size);
> > #endif
> >
> >     return virt_to_bus(ptr);
> > }
> >
> > It is probably best to allocate all buffers seperately.
>
> I don't follow you.  What's inefficient about this?  It looks like the
> decision of whether or not to call dma_cache_wback_inv() has nothing to do
> with what other data is stored in the same memory block with the output
> buffer.  And there's nothing that indicates dma_cache_wback_inv() is less
> efficient when ptr isn't aligned on a cacheline.

No, I meant sharing it. You'd get a full hard cache miss.

        Regards
                Oliver



-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to