From: kanoj@google.engr.sgi.com (Kanoj Sarcar)
To: "David S. Miller" <davem@redhat.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.rutgers.edu, ralf@uni-koblenz.de
Subject: Re: Questions on cache flushing in do_wp_page
Date: Mon, 7 Jun 1999 13:45:29 -0700 (PDT) [thread overview]
Message-ID: <199906072045.NAA71235@google.engr.sgi.com> (raw)
In-Reply-To: <199906071944.MAA07363@pizda.davem.net> from "David S. Miller" at Jun 7, 99 12:44:06 pm
>
> flush_cache_page()
>
> Remove all "user/tlb view" references to the page in the cache
> (any cache, L1, L2, BCACHE, etc.) for this user virtual mapping
> in address space mm. It should be back flushed to ram if
> necessary on non-coherent copy-back style caches.
>
> flush_page_to_ram()
>
> Push kernel address space references to the page in the cache
> (any cache, L1, L2, BCACHE, etc.). It should be back flushed
> to ram if necessary on non-coherent copy-back style caches
> because we want the user to see the most up to data copy
> in his mapping.
>
> In general the first is used when we tear down or change userspace
> mappings of a page and the latter is done when we are making the page
> visible to user space.
>
> As per virtual cache aliasing issues we handle them in other ways,
> and it is done on a port-by-port basis since most machines need not
> handle this brain damage.
I am assuming then that in the above, your definition of "non-coherent"
does not include virtual coherency/aliasing issues, since the above
paragraph seems to imply that those issues are handled differently.
Applying the above formalisms to the MIPS processor in do_wp_page,
I still can't see why a cache wbinv would be done by the
flush_page_to_ram(old_page); And if I can not use the argument of
cache aliasing, I am at a complete loss to explain either of
flush_page_to_ram(new_page); and flush_cache_page(vma, address);
doing cache wbinv on the MIPS.
You do mention in the general case where the primitives need to be
invoked, except I still don't understand which processors can define
the primitives as no-ops (Intel) and which should do some real work
(like the MIPS seems to be doing). Is there some way to figure out
how a given processor/architecture needs to define these routines?
Thanks.
Kanoj
>
> For IPC shared memory some ports enforce an alignment. For other MMU
> activities, the update_mmu_cache method can do things like remap a
> page as non-cacheable in all user references if an alias has been
> created which is unavoidable. update_mmu_cache is sort of the "catch
> all" area for handling stuff like this, you could use it to work
> around the MIPS R4x00 "branch at end of page" hardware bug for example.
>
> Later,
> David S. Miller
> davem@redhat.com
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm my@address'
in the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/
next prev parent reply other threads:[~1999-06-07 20:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-06-07 19:26 Kanoj Sarcar
1999-06-07 19:44 ` David S. Miller
1999-06-07 20:45 ` Kanoj Sarcar [this message]
1999-06-07 21:54 ` David S. Miller
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=199906072045.NAA71235@google.engr.sgi.com \
--to=kanoj@google.engr.sgi.com \
--cc=davem@redhat.com \
--cc=linux-kernel@vger.rutgers.edu \
--cc=linux-mm@kvack.org \
--cc=ralf@uni-koblenz.de \
/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