Re: [BUG] bug when enabling VM DEBUG

From: Robert Hancock
Date: Tue May 11 2010 - 22:41:43 EST


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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/