From: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
To: kumagai-atsushi@mxc.nes.nec.co.jp
Cc: kexec@lists.infradead.org
Subject: [PATCH v2 09/10] Add page_is_buddy for old kernels
Date: Fri, 16 Nov 2012 14:02:18 +0900 [thread overview]
Message-ID: <20121116050218.8280.45605.stgit@localhost6.localdomain6> (raw)
In-Reply-To: <20121116050108.8280.14861.stgit@localhost6.localdomain6>
On kernels from v2.6.15 to v2.6.17, buddy page is marked by the
condition that PG_private flag is set and _count == 0.
Since this page_is_buddy needs _count, we use freelist logic if _count
is not available.
Unfortunately, I have yet to test this logic on these kernel versions
simply because I've been failing to boot them on my box.
Note that on these kernels, free list can be corrupted due to the bug
that the above two conditions are not checked atomically. The reason
why PG_buddy was introduced is a fix for this bug.
Signed-off-by: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
---
makedumpfile.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/makedumpfile.c b/makedumpfile.c
index 4e5d4d3..65b9fd7 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -3669,6 +3669,20 @@ exclude_free_page(void)
}
/*
+ * For the kernel versions from v2.6.15 to v2.6.17.
+ */
+static int
+page_is_buddy_v1(unsigned long flags, unsigned int _mapcount,
+ unsigned long private, unsigned int _count)
+{
+ if ((flags & (1UL << NUMBER(PG_private)))
+ && _count == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+/*
* For the kernel versions from v2.6.17 to v2.6.37.
*/
static int
@@ -3707,6 +3721,9 @@ setup_page_is_buddy(void)
if (NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE) != NOT_FOUND_NUMBER) {
if (OFFSET(page._mapcount) != NOT_FOUND_STRUCTURE)
info->page_is_buddy = page_is_buddy_v3;
+ } else if (SIZE(pageflags) == NOT_FOUND_STRUCTURE) {
+ if (OFFSET(page._count) != NOT_FOUND_STRUCTURE)
+ info->page_is_buddy = page_is_buddy_v1;
}
} else
info->page_is_buddy = page_is_buddy_v2;
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2012-11-16 5:02 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-16 5:01 [PATCH v2 00/10] Support free page filtering looking up mem_map array HATAYAMA Daisuke
2012-11-16 5:01 ` [PATCH v2 01/10] Move page flags setup for old kernels after debuginfo initialization HATAYAMA Daisuke
2012-11-16 5:01 ` [PATCH v2 02/10] Add debuginfo interface for enum type size HATAYAMA Daisuke
2012-11-16 5:01 ` [PATCH v2 03/10] Add new parameters to various tables HATAYAMA Daisuke
2012-11-16 5:01 ` [PATCH v2 04/10] Add debuginfo-related processing for VMCOREINFO/VMLINUX HATAYAMA Daisuke
2012-11-16 5:01 ` [PATCH v2 05/10] Add hardcoded page flag values HATAYAMA Daisuke
2012-11-16 5:02 ` [PATCH v2 06/10] Exclude free pages by looking up mem_map array HATAYAMA Daisuke
2012-11-16 5:02 ` [PATCH v2 07/10] Add page_is_buddy for recent kernels HATAYAMA Daisuke
2012-11-16 5:02 ` [PATCH v2 08/10] Add page_is_buddy for PG_buddy HATAYAMA Daisuke
2012-11-27 6:00 ` Atsushi Kumagai
2012-11-27 7:30 ` Atsushi Kumagai
2012-11-27 8:53 ` Hatayama, Daisuke
2012-11-28 7:42 ` Atsushi Kumagai
2012-11-16 5:02 ` HATAYAMA Daisuke [this message]
2012-11-16 5:02 ` [PATCH v2 10/10] Warn cyclic buffer overrun and correct it if possible HATAYAMA Daisuke
2013-09-11 7:51 ` Atsushi Kumagai
2013-09-11 8:35 ` HATAYAMA Daisuke
2013-09-12 2:00 ` HATAYAMA Daisuke
2013-09-12 6:17 ` Atsushi Kumagai
2012-11-16 7:05 ` [PATCH v2 00/10] Support free page filtering looking up mem_map array Atsushi Kumagai
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=20121116050218.8280.45605.stgit@localhost6.localdomain6 \
--to=d.hatayama@jp.fujitsu.com \
--cc=kexec@lists.infradead.org \
--cc=kumagai-atsushi@mxc.nes.nec.co.jp \
/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