From: Andi Kleen <andi@firstfloor.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Andi Kleen <andi@firstfloor.org>,
davej@codemonkey.org.uk, tglx@linutronix.de,
linux-kernel@vger.kernel.org, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH] Use global TLB flushes in MTRR code
Date: Sat, 9 Feb 2008 12:48:26 +0100 [thread overview]
Message-ID: <20080209114826.GA21172@one.firstfloor.org> (raw)
In-Reply-To: <20080209094037.GA23418@elte.hu>
On Sat, Feb 09, 2008 at 10:40:37AM +0100, Ingo Molnar wrote:
>
> * Andi Kleen <andi@firstfloor.org> wrote:
>
> > > because it's not just an open-coded __tlb_flush_all(), it _disables PGE
> > > and keeps it so while the MTRR's are changed on all CPUs_.
> >
> > Yes and?
>
> your first patch was outright wrong then you declared the second one a
> "cleanup" while it changes behavior: bad in my book ;-)
I didn't claim that it didn't change the code -- you know
that I'm not a white space warrior, so I normally don't bother
with these kinds of patches -- just that it uses the usual Linux
idioms for global TLB flushing.
> > > Your patch adds __flush_tlb_all() which re-enables the PGE bit in cr4,
> > > see asm-x86/tlbflush.h:
> > >
> > > /* clear PGE */
> > > write_cr4(cr4 & ~X86_CR4_PGE);
> > > /* write old PGE again and flush TLBs */
> > > write_cr4(cr4);
> > >
> > > so we'll keep PGE enabled during the MTRR setting - which changes
> > > behavior.
> >
> > It changes behaviour in some minor ways but I don't think it makes any
> > difference. PGE only influences TLB flushes (according to its
> > specification) and all the TLB flushes still run with PGE disabled.
>
> now that i pointed out the difference, your position changed to "changes
> behavior in minor ways" ;-)
The instruction stream changes (more cr* accesses), but the actual flushes
do not. There is the exact same number of global TLB flushes (three
as requested by the Intel manual); just instead of in weird open coded
style they are done in standard Linux style.
I think it's an improvement because the old code fooled me at least,
so it's not 100% obvious.
> This is fragile code and almost nothing in the MTRR area is "minor", we
> are just not touching this code unless it's really justified.
I don't think that's true actually; at least it doesn't match my experience
from maintaing that code for quite some time. MTRR was never particularly
fragile, just ugly.
Anyways I personally won't be fooled by that code again, so if
you're not interested in (IMHO) cleaner and more readable and
more maintaintable code then it's fine for me to not apply the patch.
-Andi
next prev parent reply other threads:[~2008-02-09 11:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-07 19:02 [PATCH] Use global TLB flushes in MTRR code Andi Kleen
2008-02-07 19:08 ` Oliver Pinter
2008-02-07 19:13 ` Ingo Molnar
2008-02-07 20:03 ` Andi Kleen
2008-02-07 20:37 ` Ingo Molnar
2008-02-08 11:44 ` Andi Kleen
2008-02-09 9:40 ` Ingo Molnar
2008-02-09 11:48 ` Andi Kleen [this message]
2008-02-09 11:47 ` Ingo Molnar
2008-02-09 14:12 ` Andi Kleen
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=20080209114826.GA21172@one.firstfloor.org \
--to=andi@firstfloor.org \
--cc=davej@codemonkey.org.uk \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.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