From: Ingo Molnar <mingo@elte.hu>
To: Andi Kleen <ak@suse.de>
Cc: linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Venki Pallipadi <venkatesh.pallipadi@intel.com>,
suresh.b.siddha@intel.com, Arjan van de Ven <arjan@infradead.org>,
Dave Jones <davej@redhat.com>
Subject: Re: CPA patchset
Date: Thu, 10 Jan 2008 10:31:26 +0100 [thread overview]
Message-ID: <20080110093126.GA360@elte.hu> (raw)
In-Reply-To: <20080103424.989432000@suse.de>
Andi,
finally managed to get the time to review your CPA patchset, and i
fundamentally agree with most of the detail changes done in it. But here
are a few structural high-level observations:
- firstly, there's no rationale given. So we'll change ioremap()/etc.
from doing a cflush-range instruction instead of a WBINVD. But why?
WBINVD isnt particular fast (takes a few msecs), but why is that a
problem? Drivers dont do high-frequency ioremap-ing. It's typically
only done at driver/device startup and that's it. Whether module load
time takes 1254 msecs instead of 1250 msecs is no big deal.
- secondly, obviously doing a 'flush some' instead of a 'flush all'
operation is risky. There's not many ways we can get the 'flush all'
WBINVD instruction wrong (as long as we do it on all cpus, etc.). But
with this specific range flush we've got all the risks of accidentally
not flushing _enough_. Especially if some boundary of a mapped area is
imprecisely. Accidentally leaving aliases around in the cache is
asking for trouble as it's very hard to debug and the operations here
(ioremap) are typically done only once per system bootup. So we'll add
_fundamental_ fragility to an already historically fragile and
bug-ridden piece of code. That does not sound too smart to me and you
do not analyze these concerns in your submission.
- the bugfixes and cleanups to pgattr.c i like very much - but shouldnt
they come first in the series, instead of being mixed into it?
so i'd suggest for you to reshape this ontop of the PAT patchset done by
Venki and Suresh, with the cflush stuff kept at the very end of the
series, and even that should be boot and .config configurable, with
default off - at least initially. The cflush performance advantages seem
dubious at best, and they bring in very real regression dangers.
Ingo
next prev parent reply other threads:[~2008-01-10 9:31 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-03 15:24 [PATCH CPA] [1/28] Shrink __PAGE_KERNEL/__PAGE_KERNEL_EXEC on non PAE kernels Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [2/28] CPA: Do a simple self test at boot Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [3/28] Add pte accessors for the global bit Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [4/28] Add pte_clrhuge on i386 Andi Kleen
2008-01-05 6:48 ` Jeremy Fitzhardinge
2008-01-03 15:24 ` [PATCH CPA] [5/28] Add pte_pgprot " Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [6/28] CPA: Undo white space changes Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [7/28] Extract page table dumping code from i386 fault handler into dump_pagetable() Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [8/28] CPA: Return the page table level in lookup_address() Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [9/28] CPA: Add simple self test at boot Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [10/28] CPA: Change kernel_map_pages to not use c_p_a() Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [11/28] CPA: Change 32bit back to init_mm semaphore locking Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [12/28] CPA: CLFLUSH support in change_page_attr() Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [13/28] CPA: Use macros to modify the PG_arch_1 page flags in change_page_attr Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [14/28] CPA: Use page granuality TLB flushing " Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [15/28] CPA: Don't flush the caches when the CPU supports self-snoop Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [16/28] CPA: Use wbinvd() macro instead of inline assembly in 64bit c_p_a() Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [17/28] CPA: Reorder TLB / cache flushes to follow Intel recommendation Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [18/28] CPA: Make change_page_attr() more robust against use of PAT bits Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [19/28] CPA: Limit cache flushing to pages that really change caching Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [20/28] CPA: Fix inaccurate comments in 64bit change_page_attr() Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [21/28] CPA: Dump pagetable when inconsistency is detected Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [22/28] CPA: Only queue actually unused page table pages for freeing Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [23/28] CPA: Remove unnecessary masking of address Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [24/28] CPA: Only unmap kernel init pages in text mapping when CONFIG_DEBUG_RODATA is set Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [25/28] CPA: Always do full TLB flush when splitting large pages Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [26/28] CPA: Fix reference counting when changing already changed pages Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [27/28] CPA: Change comments of external interfaces to kerneldoc format Andi Kleen
2008-01-03 15:24 ` [PATCH CPA] [28/28] Make kernel_text test match boot mapping initialization Andi Kleen
2008-01-10 9:31 ` Ingo Molnar [this message]
2008-01-10 9:44 ` CPA patchset Dave Airlie
2008-01-10 9:55 ` Andi Kleen
2008-01-10 10:20 ` Dave Airlie
2008-01-10 10:50 ` Andi Kleen
2008-01-10 10:02 ` Ingo Molnar
2008-01-10 9:53 ` Andi Kleen
2008-01-10 10:04 ` Ingo Molnar
2008-01-10 10:07 ` Andi Kleen
2008-01-10 10:57 ` Ingo Molnar
2008-01-10 11:12 ` Andi Kleen
2008-01-11 7:19 ` Ingo Molnar
2008-01-11 7:33 ` Ingo Molnar
2008-01-11 11:28 ` Andi Kleen
2008-01-11 11:26 ` Andi Kleen
2008-01-11 17:02 ` dean gaudet
2008-01-11 17:18 ` Arjan van de Ven
2008-01-11 17:56 ` dean gaudet
2008-01-10 10:43 ` Ingo Molnar
2008-01-10 11:07 ` Andi Kleen
2008-01-10 12:22 ` Ingo Molnar
2008-01-10 12:39 ` 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=20080110093126.GA360@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=arjan@infradead.org \
--cc=davej@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=venkatesh.pallipadi@intel.com \
/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