From: Ingo Molnar <mingo@elte.hu>
To: Andi Kleen <ak@suse.de>
Cc: Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org, jbeulich@novell.com,
venkatesh.pallipadi@intel.com, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: CPA boot crash (was: [PATCH] [0/36] Great change_page_attr patch series v3)
Date: Wed, 23 Jan 2008 01:00:17 +0100 [thread overview]
Message-ID: <20080123000017.GA16576@elte.hu> (raw)
In-Reply-To: <20080122142147.GD19936@wotan.suse.de>
* Andi Kleen <ak@suse.de> wrote:
> > because it interferes/interacts with CPA and the page table code. So
>
> No that is not its main problem I believe. Main problem are all the
> driver and other subsystem interactions (it is a little bit similar to
> power management where you have lots of little bits all over right
> instead of a single big one). [...]
that is (yet another) major misconception on your part. "Drivers" are an
easy to blame target (i guess because there's no one out there to defend
a vague "drivers" accusation), and they are not the problem here _at
all_.
Drivers tell the architecture code which physical pages they'd like to
have access to (or which page range they'd like to see different cache
attributes on) and that's it. They are plain users of the ioremap() and
change_page_attr() APIs. Nothing more, nothing less.
It is the utmost duty of architecture code to make those APIs
fool-proof. Hardware _will_ mess up the physical parameters that get
passed in every possible way - and drivers just try to use what the
hardware tells them to use. So robustness is key and there's just no
"driver reason" why these APIs cannot be robust.
so you are delusional if you think that the c_p_a() problems are "driver
and other subsystem interactions".
And your analogy with power management could not be more mistaken. Power
management and suspend/resume in particular is so complex because it is
analogous to a _full bootup and shutdown cycle_, with the following,
hard to meet expectation from the user: 'this stuff must work all the
time, and must be instantaneous'. Suspend/resume is an _incredibly
complex_ machinery and the user does not realize (and does not accept
the concequences) of this complexity. It is a codepath that is affected
by tens and tens of thousands of driver and core kernel code. Just one
single mistake and "resume does not work".
ioremap() and change_page_attr() on the other hand is a small, few
hundred lines codebase for a stable and well-defined purpose. There's no
significant "subsystem interactions" whatsoever.
by far the most intense and most high-frequency user of the
change_page_attr() code is CONFIG_DEBUG_PAGEALLOC=y. It does a cpa call
for every single page and slab allocation/freeing. But this debug
feature ... is not enabled on the 64-bit side - why? So unfortunately we
dont have any real robustness track record of the 64-bit side of the CPA
code, and that's exactly the code your clflush and gbpages code changes.
oh, and due to that i'll probably revert these two patches of yours:
Subject: x86: c_p_a(), change kernel_map_pages to not use c_p_a()
Subject: x86: c_p_a(), change 32-bit back to init_mm semaphore locking
as with these changes you've removed _the_ most important stress-tester
for the c_p_a() code: DEBUG_PAGEALLOC.
Ingo
next prev parent reply other threads:[~2008-01-23 0:00 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-16 22:14 [PATCH] [0/36] Great change_page_attr patch series v3 Andi Kleen
2008-01-16 22:14 ` [PATCH] [1/36] Undo pat cpa patch Andi Kleen
2008-01-16 22:15 ` [PATCH] [2/36] Undo pageattr_32 portions of 11c9734cbcf4c5862260442a5d56dd4779799fcc Andi Kleen
2008-01-16 22:15 ` [PATCH] [3/36] Undo pageattr_64 parts of 4157e20af49a04d75a807e6d15b3e70c8e688ccc Andi Kleen
2008-01-16 22:15 ` [PATCH] [4/36] CPA: Undo white space changes Andi Kleen
2008-01-16 22:15 ` [PATCH] [5/36] CPA: Implement change_page_attr_addr entry point for i386 Andi Kleen
2008-01-16 22:15 ` [PATCH] [6/36] CPA Handle 4K split pages at boot on 64bit Andi Kleen
2008-01-16 22:15 ` [PATCH] [7/36] Shrink __PAGE_KERNEL/__PAGE_KERNEL_EXEC on non PAE kernels Andi Kleen
2008-01-16 22:15 ` [PATCH] [8/36] CPA: Do a simple self test at boot Andi Kleen
2008-01-16 22:15 ` [PATCH] [9/36] Add pte accessors for the global bit Andi Kleen
2008-01-16 22:15 ` [PATCH] [10/36] Add pte_pgprot on i386 Andi Kleen
2008-01-16 22:15 ` [PATCH] [11/36] Don't drop NX bit in pte modifier functions for 32bit Andi Kleen
2008-01-16 22:15 ` [PATCH] [12/36] Extract page table dumping code from i386 fault handler into dump_pagetable() Andi Kleen
2008-01-16 22:15 ` [PATCH] [13/36] CPA: Return the page table level in lookup_address() Andi Kleen
2008-01-16 22:15 ` [PATCH] [14/36] CPA: Add simple self test at boot Andi Kleen
2008-01-16 22:15 ` [PATCH] [15/36] CPA: Change kernel_map_pages to not use c_p_a() Andi Kleen
2008-01-16 22:15 ` [PATCH] [16/36] CPA: Change 32bit back to init_mm semaphore locking Andi Kleen
2008-01-16 22:15 ` [PATCH] [17/36] CPA: CLFLUSH support in change_page_attr() Andi Kleen
2008-01-16 22:15 ` [PATCH] [18/36] CPA: Use macros to modify the PG_arch_1 page flags in change_page_attr Andi Kleen
2008-01-16 22:15 ` [PATCH] [19/36] CPA: Use page granuality TLB flushing " Andi Kleen
2008-01-16 22:15 ` [PATCH] [20/36] CPA: Don't flush the caches when the CPU supports self-snoop Andi Kleen
2008-01-16 22:15 ` [PATCH] [21/36] CPA: Use wbinvd() macro instead of inline assembly in 64bit c_p_a() Andi Kleen
2008-01-16 22:15 ` [PATCH] [22/36] CPA: Reorder TLB / cache flushes to follow Intel recommendation Andi Kleen
2008-01-16 22:15 ` [PATCH] [23/36] CPA: Make change_page_attr() more robust against use of PAT bits Andi Kleen
2008-01-16 22:15 ` [PATCH] [24/36] CPA: Limit cache flushing to pages that really change caching Andi Kleen
2008-01-16 22:15 ` [PATCH] [25/36] CPA: Fix inaccurate comments in 64bit change_page_attr() Andi Kleen
2008-01-16 22:15 ` [PATCH] [26/36] CPA: Dump pagetable when inconsistency is detected Andi Kleen
2008-01-16 22:15 ` [PATCH] [27/36] CPA: Only queue actually unused page table pages for freeing Andi Kleen
2008-01-16 22:15 ` [PATCH] [28/36] CPA: Remove unnecessary masking of address Andi Kleen
2008-01-16 22:15 ` [PATCH] [29/36] CPA: Only unmap kernel init pages in text mapping when CONFIG_DEBUG_RODATA is set Andi Kleen
2008-01-16 22:15 ` [PATCH] [30/36] CPA: Always do full TLB flush when splitting large pages Andi Kleen
2008-01-16 22:15 ` [PATCH] [31/36] CPA: Fix reference counting when changing already changed pages Andi Kleen
2008-01-16 22:15 ` [PATCH] [32/36] CPA: Change comments of external interfaces to kerneldoc format Andi Kleen
2008-01-16 22:15 ` [PATCH] [33/36] CPA: Make kernel_text test match boot mapping initialization Andi Kleen
2008-01-16 22:15 ` [PATCH] [34/36] CPA: Add a BUG_ON checking for someone setting the kernel text NX Andi Kleen
2008-01-16 22:15 ` [PATCH] [35/36] Remove set_kernel_exec Andi Kleen
2008-01-16 22:15 ` [PATCH] [36/36] Clean up pte_exec Andi Kleen
2008-01-18 9:56 ` [PATCH] [0/36] Great change_page_attr patch series v3 Ingo Molnar
2008-01-18 15:33 ` CPA boot crash (was: [PATCH] [0/36] Great change_page_attr patch series v3) Ingo Molnar
2008-01-18 15:38 ` Ingo Molnar
2008-01-18 15:56 ` Ingo Molnar
2008-01-18 16:01 ` Andi Kleen
2008-01-18 16:05 ` CPA boot crash (was: [PATCH] [0/36] Great change_page_attr patch series v3) II Andi Kleen
2008-01-18 16:07 ` CPA boot crash (was: [PATCH] [0/36] Great change_page_attr patch series v3) Ingo Molnar
2008-01-18 16:16 ` Andi Kleen
2008-01-18 16:21 ` Ingo Molnar
2008-01-18 16:34 ` Andi Kleen
2008-01-18 16:48 ` Ingo Molnar
2008-01-18 17:19 ` Andi Kleen
2008-01-21 16:40 ` Ingo Molnar
2008-01-21 17:13 ` Andi Kleen
2008-01-22 13:12 ` Thomas Gleixner
2008-01-22 13:23 ` Andi Kleen
2008-01-22 14:06 ` Thomas Gleixner
2008-01-22 14:21 ` Andi Kleen
2008-01-23 0:00 ` Ingo Molnar [this message]
2008-01-23 9:05 ` Andi Kleen
2008-01-23 0:35 ` Thomas Gleixner
2008-01-23 8:09 ` 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=20080123000017.GA16576@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=hpa@zytor.com \
--cc=jbeulich@novell.com \
--cc=linux-kernel@vger.kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).