On Mon, 2010-02-08 at 16:54 +0000, Russell King wrote: > On Mon, Feb 08, 2010 at 04:10:21PM +0000, Catalin Marinas wrote: > > The pio_data_direction could be dropped and use the DMA one. We could > > also use pio_kmap_read/pio_kmap_write or similar but we have to triple > > the number of functions, so I prefer the additional argument. > > Do we need to do anything for reading a buffer for PIO _out_ to the > device? My understanding is that this has never been a problem. With PIPT caches there is no need for any flushing on the TO_DEVICE case but VIPT may need this. As James said, it should already be handled in the block path (though I haven't found where exactly). But I added the functions for symmetry anyway. > The only problem I'm aware of is where PIO writes to the kernel > mapping of a lowmem pages; highmem pages need the data flushed out > of the temporary atomic kmap mapping anyway. If we do cache flushing in kunmap() we wouldn't need an additional cache flushing for highmem pages, so you can implement pio_kunmap() accordingly. James' point in a previous e-mail was that he doesn't want drivers to have "if (!PageHighMem(page))". Now, the ARM kunmap() function doesn't seem to do any flushing, only kunmap_atomic(). Do I miss anything? Also, for PIPT caches we don't actually create any D-cache aliases with kmap, so I'm not sure why we need to always flush the cache in kunmap(). -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html