On Wed, 2010-05-12 at 03:41 +0100, Robert Hancock wrote: > On 05/11/2010 09:27 AM, saeed bishara wrote: > > Jeff, > > seems that the libata do pio to buffer which was allocated with > > kmalloc, and under arm arch, the flush_dcache_page() is needed to > > prevent cache aliasing, the later function calls the page_mapping > > which falls on PageSlab(page) > > > > as the flush_dcache_page() is needed to prevent aliasing, it can be > > skipped if the page is Slab as such pages are used only by the kernel. > > here a suggested patch: > > > > --- a/drivers/ata/libata-sff.c > > +++ b/drivers/ata/libata-sff.c > > @@ -894,7 +894,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) > > do_write); > > } > > > > - if (!do_write) > > + if (!do_write&& !PageSlab(page)) > > flush_dcache_page(page); > > I would think that check belongs inside flush_dcache_page itself, rather > than forcing every driver to include it.. Sebastian (cc'ed) reported this as well for MIPS. I think it makes sense for this check to be done in the flush_dcache_page() function. -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html