From: imre.deak@nokia.com (Imre Deak)
To: linux-arm-kernel@lists.infradead.org
Subject: arm_syscall cacheflush breakage on VIPT platforms
Date: Mon, 28 Sep 2009 16:31:09 +0300 [thread overview]
Message-ID: <20090928133109.GM30271@localhost> (raw)
In-Reply-To: <20090928131926.GB19778@shareable.org>
On Mon, Sep 28, 2009 at 03:19:26PM +0200, ext Jamie Lokier wrote:
> Imre Deak wrote:
> > On Mon, Sep 28, 2009 at 02:49:22PM +0200, ext Jamie Lokier wrote:
> > > Imre Deak wrote:
> > > > Hi,
> > > >
> > > > the following test app will cause an unhandled kernel paging request
> > > > on VIPT platforms. The triggering condition is the mmap_sem held by
> > > > thread_func while the main thread performs cache flushing.
> > > >
> > > > Since the likelihood of this to trigger is relatively low, a patch will
> > > > follow that makes similar bugs more visible.
> > >
> > > I would expect the likelihood of triggering would be higher for at
> > > least one of Java, Mono, Parrot or any of the modern Javascript
> > > engines.
> >
> > True, the above statement is only valid for certain use patterns. I was
> > mainly interested in applications that do user range cache flushing as
> > part of their DMA requests and they didn't have threads with frequent
> > syscalls that required mmap_sem, so the problem remained hidden for a
> > long time.
>
> Aieee. Is sys_cacheflush architecturally the Right Way to do DMA to
> userspace, or is it just luck that it happens to work?
No, it's not sys_cacheflush but using dma_cache_maint for user range.
And yes I know that at the moment it's not the Right Way to use it on
a user range, but the alternative of flushing each page separately is
just prohibitively slow.
Hopefully by adding the necessary fixups for the cache ops (and taking
mmap_sem) will make this an ok thing to do. An alternative is to
mlock the range so no faults are triggered for it, but that's again a
not-supported-thing to do from a driver.
> Does that include O_DIRECT regular file I/O as used by databases on
> these ARMs? (Nobody ever gives a straight answer)
Not in my case, it's just a regular anonymous mapping pinned with
get_user_pages.
--Imre
next prev parent reply other threads:[~2009-09-28 13:31 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-28 9:29 arm_syscall cacheflush breakage on VIPT platforms Imre Deak
2009-09-28 9:41 ` Russell King - ARM Linux
2009-09-28 9:54 ` Imre Deak
2009-09-28 9:59 ` Russell King - ARM Linux
2009-09-28 10:10 ` Imre Deak
2009-09-28 10:28 ` Russell King - ARM Linux
2009-09-28 11:00 ` Imre Deak
2009-09-28 16:54 ` Catalin Marinas
2009-09-28 9:48 ` [PATCH] ARM: add warning for invalid kernel page faults Imre Deak
2009-09-28 9:55 ` Russell King - ARM Linux
2009-09-28 10:00 ` Imre Deak
2009-09-28 10:04 ` Russell King - ARM Linux
2009-09-28 10:16 ` Imre Deak
2009-09-28 10:27 ` Russell King - ARM Linux
2009-09-28 11:01 ` Imre Deak
2009-09-28 11:05 ` [PATCH v2] " Imre Deak
2009-09-28 11:26 ` [PATCH] " Russell King - ARM Linux
2009-09-28 11:33 ` Imre Deak
2009-09-28 11:34 ` Russell King - ARM Linux
2009-09-29 10:07 ` [PATCH v3] ARM: add debug check " Imre Deak
2009-09-28 12:49 ` arm_syscall cacheflush breakage on VIPT platforms Jamie Lokier
2009-09-28 13:16 ` Imre Deak
2009-09-28 13:19 ` Jamie Lokier
2009-09-28 13:25 ` Russell King - ARM Linux
2009-09-28 13:56 ` Jamie Lokier
2009-09-28 13:31 ` Imre Deak [this message]
2009-09-28 13:42 ` Russell King - ARM Linux
2009-09-28 13:55 ` Aguirre Rodriguez, Sergio Alberto
2009-09-28 14:07 ` Jamie Lokier
2009-09-28 14:10 ` Laurent Pinchart
2009-09-28 14:15 ` Jamie Lokier
2009-09-28 14:22 ` Laurent Pinchart
2009-09-28 14:50 ` Jamie Lokier
2009-09-28 16:28 ` Imre Deak
2009-09-28 19:35 ` Jamie Lokier
2009-09-29 9:10 ` Imre Deak
2009-09-28 20:18 ` Steven Walter
2009-09-29 0:50 ` Jamie Lokier
2009-09-28 14:20 ` Bill Gatliff
2009-09-28 13:23 ` Russell King - ARM Linux
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=20090928133109.GM30271@localhost \
--to=imre.deak@nokia.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.