From: Catalin Marinas <catalin.marinas@arm.com>
To: David Miller <davem@davemloft.net>
Cc: matthew@wil.cx, fujita.tomonori@lab.ntt.co.jp,
linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
James.Bottomley@HansenPartnership.com, benh@kernel.crashing.org,
rmk@arm.linux.org.uk
Subject: Re: [RFC PATCH] Update the cachetlb.txt file WRT flush_dcache_pageand update_mmu_cache
Date: Mon, 10 May 2010 15:32:55 +0100 [thread overview]
Message-ID: <1273501975.10282.57.camel@e102109-lin.cambridge.arm.com> (raw)
In-Reply-To: <20100510.070326.146087861.davem@davemloft.net>
> From: Catalin Marinas <catalin.marinas@arm.com>
> Date: Mon, 10 May 2010 15:00:10 +0100
>
> > 3rd point above would help with the D-cache aliasing. Does the I/D cache
> > coherency need to be handled differently? On PIPT Harvard architectures,
> > we don't actually have D-cache aliasing but we may end up flushing too
> > much in kunmap() just in case such page would be mapped in user space
> > with executable permission.
>
> You can handle this by having an "I-cache clean" bit in the page.
> When you kmap/kunmap, simply force this bit clear.
>
> In update_mmu_cache() or set_pte_at() you'll see when a page gets
> into userspace with execute permission, and if the I-cache bit
> is clear you can do the flush then and set the "I-cache clean"
> bit.
If calling kmap on a new page cache page that hasn't been mapped in user
space, such bit is already cleared anyway. But would the kernel ever
kmap a page already mapped in user space without calling
flush_dcache_page? Ideally we shouldn't have to implement the kmap API
for architectures with highmem disabled.
What I'm trying to achieve is to get an agreement between architectures
and use the the cachetlb.txt document as a central recommendation point
for how cache flushing should be handled (we've had such issues on ARM
for quite some time).
The main problems with the arch/arm/ implementation and how we probably
understood cachetlb.txt:
1. flush_dcache_page() isn't always called on page cache pages that
were written to (and which are subsequently mapped in user
space)
2. kmap/kunmap isn't always used in PIO drivers (sometimes just
normal pages)
3. deferring the cache flushing to update_mmu_cache() doesn't work
on SMP systems with hardware TLB implementation (a different CPU
could see the PTE before the cache flushing occurred). The
set_pte_at() would be a better place for this
Thanks.
--
Catalin
next prev parent reply other threads:[~2010-05-10 14:33 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-07 13:24 [RFC PATCH] Update the cachetlb.txt file WRT flush_dcache_page and update_mmu_cache Catalin Marinas
2010-05-10 8:06 ` FUJITA Tomonori
2010-05-10 10:16 ` Catalin Marinas
2010-05-10 10:29 ` Paul Mundt
2010-05-10 14:40 ` James Bottomley
2010-05-10 11:55 ` Matthew Wilcox
2010-05-10 14:00 ` [RFC PATCH] Update the cachetlb.txt file WRT flush_dcache_pageand update_mmu_cache Catalin Marinas
2010-05-10 14:03 ` David Miller
2010-05-10 14:32 ` Catalin Marinas [this message]
2010-05-11 11:31 ` [RFC PATCH] Update the cachetlb.txt file WRT flush_dcache_page and update_mmu_cache FUJITA Tomonori
2010-05-11 17:22 ` Catalin Marinas
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=1273501975.10282.57.camel@e102109-lin.cambridge.arm.com \
--to=catalin.marinas@arm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=benh@kernel.crashing.org \
--cc=davem@davemloft.net \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=rmk@arm.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®