From: Jamie Lokier <jamie@shareable.org>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>,
Jeff Garzik <jeff@garzik.org>,
lkml <linux-kernel@vger.kernel.org>,
DE/ATA development list <linux-ide@vger.kernel.org>,
saeed bishara <saeed.bishara@gmail.com>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
Robert Hancock <hancockrwd@gmail.com>
Subject: Re: [BUG] bug when enabling VM DEBUG
Date: Wed, 12 May 2010 14:06:38 +0100 [thread overview]
Message-ID: <20100512130638.GB19314@shareable.org> (raw)
In-Reply-To: <1273667099.23818.86.camel@e102109-lin.cambridge.arm.com>
Catalin Marinas wrote:
> On Wed, 2010-05-12 at 12:53 +0100, Sebastian Andrzej Siewior wrote:
> > * Catalin Marinas | 2010-05-12 12:10:39 [+0100]:
> >
> > >> > --- 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.
> > Thx. The patch above looks what I've sent a while ago. Jeff was going to
> > merge it afaik.
> >
> > >I think it makes sense for this check to be done in the
> > >flush_dcache_page() function.
> >
> > Why should flush_dcache_page() not flush pages you tell it?
> > From Documentation/cachetlb.txt:
> > | NOTE: This routine need only be called for page cache pages
> > | which can potentially ever be mapped into the address
> > | space of a user process. So for example, VFS layer code
> > | handling vfs symlinks in the page cache need not call
> > | this interface at all.
> >
> > A page from slab or stack is not going to see the sky of user land and
> > therefore it should not be fed into flush_dcache_page().
>
> You are right :), so fixing the driver is the best approach.
It worries me that a driver has any knowledge of the PageSlab() flag,
though. Especially uncommented knowledge. That flag seems VM
internal, and it's conceptually iffy: Kernel code using
get_free_pages() and using that for I/O also does not see the sky of
user land.
If all the PIO drivers have to be changed, I'd be happier with:
flush_dcache_page_for_pio()
which wraps the check, explains it, and provides a single place to
change if needed.
-- Jamie
WARNING: multiple messages have this Message-ID (diff)
From: jamie@shareable.org (Jamie Lokier)
To: linux-arm-kernel@lists.infradead.org
Subject: [BUG] bug when enabling VM DEBUG
Date: Wed, 12 May 2010 14:06:38 +0100 [thread overview]
Message-ID: <20100512130638.GB19314@shareable.org> (raw)
In-Reply-To: <1273667099.23818.86.camel@e102109-lin.cambridge.arm.com>
Catalin Marinas wrote:
> On Wed, 2010-05-12 at 12:53 +0100, Sebastian Andrzej Siewior wrote:
> > * Catalin Marinas | 2010-05-12 12:10:39 [+0100]:
> >
> > >> > --- 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.
> > Thx. The patch above looks what I've sent a while ago. Jeff was going to
> > merge it afaik.
> >
> > >I think it makes sense for this check to be done in the
> > >flush_dcache_page() function.
> >
> > Why should flush_dcache_page() not flush pages you tell it?
> > From Documentation/cachetlb.txt:
> > | NOTE: This routine need only be called for page cache pages
> > | which can potentially ever be mapped into the address
> > | space of a user process. So for example, VFS layer code
> > | handling vfs symlinks in the page cache need not call
> > | this interface at all.
> >
> > A page from slab or stack is not going to see the sky of user land and
> > therefore it should not be fed into flush_dcache_page().
>
> You are right :), so fixing the driver is the best approach.
It worries me that a driver has any knowledge of the PageSlab() flag,
though. Especially uncommented knowledge. That flag seems VM
internal, and it's conceptually iffy: Kernel code using
get_free_pages() and using that for I/O also does not see the sky of
user land.
If all the PIO drivers have to be changed, I'd be happier with:
flush_dcache_page_for_pio()
which wraps the check, explains it, and provides a single place to
change if needed.
-- Jamie
next prev parent reply other threads:[~2010-05-12 13:06 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-10 13:06 [BUG] bug when enabling VM DEBUG saeed bishara
2010-05-10 13:09 ` saeed bishara
2010-05-11 15:27 ` saeed bishara
2010-05-11 15:27 ` saeed bishara
2010-05-11 15:27 ` saeed bishara
2010-05-12 2:41 ` Robert Hancock
2010-05-12 2:41 ` Robert Hancock
2010-05-12 11:10 ` Catalin Marinas
2010-05-12 11:10 ` Catalin Marinas
2010-05-12 11:53 ` Sebastian Andrzej Siewior
2010-05-12 11:53 ` Sebastian Andrzej Siewior
2010-05-12 12:24 ` Catalin Marinas
2010-05-12 12:24 ` Catalin Marinas
2010-05-12 13:06 ` Jamie Lokier [this message]
2010-05-12 13:06 ` Jamie Lokier
2010-05-12 23:22 ` Robert Hancock
2010-05-12 23:22 ` Robert Hancock
2010-05-13 11:30 ` Catalin Marinas
2010-05-13 11:30 ` Catalin Marinas
2010-05-14 21:48 ` Jeff Garzik
2010-05-14 21:48 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100512130638.GB19314@shareable.org \
--to=jamie@shareable.org \
--cc=catalin.marinas@arm.com \
--cc=hancockrwd@gmail.com \
--cc=jeff@garzik.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=saeed.bishara@gmail.com \
--cc=sebastian@breakpoint.cc \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.