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); saeed
I would think that check belongs inside flush_dcache_page itself, rather than forcing every driver to include it..
-- 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