-tip: origin tree build failure

Ingo Molnar
2009-12-17T09:41:08Z

Today's -tip fails to build due to upstream commit
1a9b5b7fe0c5dad8a635288882d36785dea742f9 ("mm: export stable page flags")
(authored and merged yesterday) causing the following build failure on x86
when CONFIG_PROC_PAGE_MONITOR is disabled:

mm/built-in.o: In function `hwpoison_filter':
(.text+0x39fbf): undefined reference to `stable_page_flags'

The bug is that the stable_page_flags() API is only available under
CONFIG_PROC_PAGE_MONITOR, but utilized in mm/memory-failure.c unconditionally.

I've applied the patch below to -tip for now, which expresses this dependency
in the Kconfig. (Eventually a cleaner solution would be to factor such ABI
details out of procfs, they dont belong there.)

A technical critique: as i pointed it out in the past on lkml, this whole
ad-hoc exporting of MM details via /proc is ill advised. It's a limiting
interface for instrumentation (we could do so much more and could integrate it
so much better with a similar amount of intrusion), and it also creates
needless ABI dependencies with user-space tooling.

This should be prototyped in debugfs and sufficiently integrated with other
instrumentation frameworks in the kernel. I made a few suggestions and we even
wrote patches in the past to help that out:

3383e37: tracing, page-allocator: Add a postprocessing script for page-allocator-related ftrace events
c33b359: tracing, page-allocator: Add trace event for page traffic related to the buddy lists
0d524fb: tracing, mm: Add trace events for anti-fragmentation falling back to other migratetypes
b9a2817: tracing, page-allocator: Add trace events for page allocation and page freeing
eb46710: tracing/mm: rename 'trigger' file to 'dump_range'
1487a7a: tracing/mm: fix mapcount trace record field
dcac8cd: tracing/mm: add page frame snapshot trace

Unfortunately nothing of that was pursued from the MM and hwpoison side and
now this inferior version goes upstream, and as two separate ABIs straight
away. (the /proc ABI and the memory-failure filter ABI) Not very well designed
and not very helpful IMO, and this will come back to haunt us in the future.

We know how to do this correctly, why not embrace, utilize and expand those
instrumentation facilities?

Also, a workflow observation - i tried to figure out the history of the bug
but the Git timestamps show this weirdness:

commit 1a9b5b7fe0c5dad8a635288882d36785dea742f9
Author: Wu Fengguang <fengguang.wu@intel.com>
AuthorDate: Wed Dec 16 12:19:59 2009 +0100
Commit: Andi Kleen <ak@linux.intel.com>
CommitDate: Wed Dec 16 12:19:59 2009 +0100

that's precisely the same author and commit date, but author and committer are
different - how is that possible? No combination of git-am, git-rebase and git
commit --amend can achieve this kind of timestamp.

I checked the other 'HWPOISON' commits as well that were merged yesterday -
they have a similarly damaged history.

Thanks,

Ingo

Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/mm/Kconfig b/mm/Kconfig
index 43ea8c3..d7bd560 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -243,6 +243,7 @@ config ARCH_SUPPORTS_MEMORY_FAILURE
config MEMORY_FAILURE
depends on MMU
depends on ARCH_SUPPORTS_MEMORY_FAILURE
+ select PROC_PAGE_MONITOR
bool "Enable recovery from hardware memory errors"
help
Enables code to recover from some memory failures on systems