From: Xishi Qiu <qiuxishi-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: Xishi Qiu <qiuxishi-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Cc: Matt Fleming
<matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"Luck, Tony" <tony.luck-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
fenghua.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
Liujiang <jiang.liu-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
Andrew Morton
<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
linux-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
Hanjun Guo <guohanjun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
WuJianguo <wujianguo-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Subject: [PATCH V3] ia64/mm: fix a bad_page bug when crash kernel booting
Date: Thu, 7 Feb 2013 14:09:16 +0800 [thread overview]
Message-ID: <5113450C.1080109@huawei.com> (raw)
In-Reply-To: <51131248.3080203-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
> Sorry, this bug will be happen when use Sparse-Memory(section is valid, but last
> several pages are invalid). If use Flat-Memory, crash kernel will boot successfully.
> I think the following patch would be better.
>
> Hi Andrew, will you just ignore the earlier patch and consider the following one? :>
>
> Signed-off-by: Xishi Qiu <qiuxishi-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
> ---
> arch/ia64/mm/init.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
> index 082e383..23f2ee3 100644
> --- a/arch/ia64/mm/init.c
> +++ b/arch/ia64/mm/init.c
> @@ -213,6 +213,8 @@ free_initrd_mem (unsigned long start, unsigned long end)
> for (; start < end; start += PAGE_SIZE) {
> if (!virt_addr_valid(start))
> continue;
> + if ((start >> PAGE_SHIFT) >= max_low_pfn)
I confused the vaddr and paddr, really sorry for it.
In efi_init() memory aligns in IA64_GRANULE_SIZE(16M). If set "crashkernel=1024M-:600M"
and use sparse memory model, when crash kernel booting it changes [128M-728M] to [128M-720M].
But initrd memory is in [709M-727M], and virt_addr_valid() *can not* check the invalid pages
when freeing initrd memory. There are some pages missed at the end of the seciton.
ChangeLog V3:
fixed vaddr mistake
ChangeLog V2:
add invalid pages check when freeing initrd memory
Signed-off-by: Xishi Qiu <qiuxishi-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
---
arch/ia64/mm/init.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 082e383..8a269f8 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -173,6 +173,7 @@ void __init
free_initrd_mem (unsigned long start, unsigned long end)
{
struct page *page;
+ unsigned long pfn;
/*
* EFI uses 4KB pages while the kernel can use 4KB or bigger.
* Thus EFI and the kernel may have different page sizes. It is
@@ -213,6 +214,9 @@ free_initrd_mem (unsigned long start, unsigned long end)
for (; start < end; start += PAGE_SIZE) {
if (!virt_addr_valid(start))
continue;
+ pfn = __pa(start) >> PAGE_SHIFT;
+ if (pfn >= max_low_pfn)
+ continue;
page = virt_to_page(start);
ClearPageReserved(page);
init_page_count(page);
--
1.7.6.1
WARNING: multiple messages have this Message-ID (diff)
From: Xishi Qiu <qiuxishi@huawei.com>
To: Xishi Qiu <qiuxishi@huawei.com>
Cc: Matt Fleming <matt.fleming@intel.com>,
"Luck, Tony" <tony.luck@intel.com>,
fenghua.yu@intel.com, Liujiang <jiang.liu@huawei.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-efi@vger.kernel.org, linux-mm@kvack.org,
Hanjun Guo <guohanjun@huawei.com>,
WuJianguo <wujianguo@huawei.com>
Subject: [PATCH V3] ia64/mm: fix a bad_page bug when crash kernel booting
Date: Thu, 07 Feb 2013 06:09:16 +0000 [thread overview]
Message-ID: <5113450C.1080109@huawei.com> (raw)
In-Reply-To: <51131248.3080203@huawei.com>
> Sorry, this bug will be happen when use Sparse-Memory(section is valid, but last
> several pages are invalid). If use Flat-Memory, crash kernel will boot successfully.
> I think the following patch would be better.
>
> Hi Andrew, will you just ignore the earlier patch and consider the following one? :>
>
> Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
> ---
> arch/ia64/mm/init.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
> index 082e383..23f2ee3 100644
> --- a/arch/ia64/mm/init.c
> +++ b/arch/ia64/mm/init.c
> @@ -213,6 +213,8 @@ free_initrd_mem (unsigned long start, unsigned long end)
> for (; start < end; start += PAGE_SIZE) {
> if (!virt_addr_valid(start))
> continue;
> + if ((start >> PAGE_SHIFT) >= max_low_pfn)
I confused the vaddr and paddr, really sorry for it.
In efi_init() memory aligns in IA64_GRANULE_SIZE(16M). If set "crashkernel\x1024M-:600M"
and use sparse memory model, when crash kernel booting it changes [128M-728M] to [128M-720M].
But initrd memory is in [709M-727M], and virt_addr_valid() *can not* check the invalid pages
when freeing initrd memory. There are some pages missed at the end of the seciton.
ChangeLog V3:
fixed vaddr mistake
ChangeLog V2:
add invalid pages check when freeing initrd memory
Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
arch/ia64/mm/init.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 082e383..8a269f8 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -173,6 +173,7 @@ void __init
free_initrd_mem (unsigned long start, unsigned long end)
{
struct page *page;
+ unsigned long pfn;
/*
* EFI uses 4KB pages while the kernel can use 4KB or bigger.
* Thus EFI and the kernel may have different page sizes. It is
@@ -213,6 +214,9 @@ free_initrd_mem (unsigned long start, unsigned long end)
for (; start < end; start += PAGE_SIZE) {
if (!virt_addr_valid(start))
continue;
+ pfn = __pa(start) >> PAGE_SHIFT;
+ if (pfn >= max_low_pfn)
+ continue;
page = virt_to_page(start);
ClearPageReserved(page);
init_page_count(page);
--
1.7.6.1
WARNING: multiple messages have this Message-ID (diff)
From: Xishi Qiu <qiuxishi@huawei.com>
To: Xishi Qiu <qiuxishi@huawei.com>
Cc: Matt Fleming <matt.fleming@intel.com>,
"Luck, Tony" <tony.luck@intel.com>,
fenghua.yu@intel.com, Liujiang <jiang.liu@huawei.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-efi@vger.kernel.org, linux-mm@kvack.org,
Hanjun Guo <guohanjun@huawei.com>,
WuJianguo <wujianguo@huawei.com>
Subject: [PATCH V3] ia64/mm: fix a bad_page bug when crash kernel booting
Date: Thu, 7 Feb 2013 14:09:16 +0800 [thread overview]
Message-ID: <5113450C.1080109@huawei.com> (raw)
In-Reply-To: <51131248.3080203@huawei.com>
> Sorry, this bug will be happen when use Sparse-Memory(section is valid, but last
> several pages are invalid). If use Flat-Memory, crash kernel will boot successfully.
> I think the following patch would be better.
>
> Hi Andrew, will you just ignore the earlier patch and consider the following one? :>
>
> Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
> ---
> arch/ia64/mm/init.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
> index 082e383..23f2ee3 100644
> --- a/arch/ia64/mm/init.c
> +++ b/arch/ia64/mm/init.c
> @@ -213,6 +213,8 @@ free_initrd_mem (unsigned long start, unsigned long end)
> for (; start < end; start += PAGE_SIZE) {
> if (!virt_addr_valid(start))
> continue;
> + if ((start >> PAGE_SHIFT) >= max_low_pfn)
I confused the vaddr and paddr, really sorry for it.
In efi_init() memory aligns in IA64_GRANULE_SIZE(16M). If set "crashkernel=1024M-:600M"
and use sparse memory model, when crash kernel booting it changes [128M-728M] to [128M-720M].
But initrd memory is in [709M-727M], and virt_addr_valid() *can not* check the invalid pages
when freeing initrd memory. There are some pages missed at the end of the seciton.
ChangeLog V3:
fixed vaddr mistake
ChangeLog V2:
add invalid pages check when freeing initrd memory
Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
arch/ia64/mm/init.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 082e383..8a269f8 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -173,6 +173,7 @@ void __init
free_initrd_mem (unsigned long start, unsigned long end)
{
struct page *page;
+ unsigned long pfn;
/*
* EFI uses 4KB pages while the kernel can use 4KB or bigger.
* Thus EFI and the kernel may have different page sizes. It is
@@ -213,6 +214,9 @@ free_initrd_mem (unsigned long start, unsigned long end)
for (; start < end; start += PAGE_SIZE) {
if (!virt_addr_valid(start))
continue;
+ pfn = __pa(start) >> PAGE_SHIFT;
+ if (pfn >= max_low_pfn)
+ continue;
page = virt_to_page(start);
ClearPageReserved(page);
init_page_count(page);
--
1.7.6.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Xishi Qiu <qiuxishi@huawei.com>
To: Xishi Qiu <qiuxishi@huawei.com>
Cc: Matt Fleming <matt.fleming@intel.com>,
"Luck, Tony" <tony.luck@intel.com>, <fenghua.yu@intel.com>,
Liujiang <jiang.liu@huawei.com>,
Andrew Morton <akpm@linux-foundation.org>,
<linux-ia64@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-efi@vger.kernel.org>, <linux-mm@kvack.org>,
Hanjun Guo <guohanjun@huawei.com>,
WuJianguo <wujianguo@huawei.com>
Subject: [PATCH V3] ia64/mm: fix a bad_page bug when crash kernel booting
Date: Thu, 7 Feb 2013 14:09:16 +0800 [thread overview]
Message-ID: <5113450C.1080109@huawei.com> (raw)
In-Reply-To: <51131248.3080203@huawei.com>
> Sorry, this bug will be happen when use Sparse-Memory(section is valid, but last
> several pages are invalid). If use Flat-Memory, crash kernel will boot successfully.
> I think the following patch would be better.
>
> Hi Andrew, will you just ignore the earlier patch and consider the following one? :>
>
> Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
> ---
> arch/ia64/mm/init.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
> index 082e383..23f2ee3 100644
> --- a/arch/ia64/mm/init.c
> +++ b/arch/ia64/mm/init.c
> @@ -213,6 +213,8 @@ free_initrd_mem (unsigned long start, unsigned long end)
> for (; start < end; start += PAGE_SIZE) {
> if (!virt_addr_valid(start))
> continue;
> + if ((start >> PAGE_SHIFT) >= max_low_pfn)
I confused the vaddr and paddr, really sorry for it.
In efi_init() memory aligns in IA64_GRANULE_SIZE(16M). If set "crashkernel=1024M-:600M"
and use sparse memory model, when crash kernel booting it changes [128M-728M] to [128M-720M].
But initrd memory is in [709M-727M], and virt_addr_valid() *can not* check the invalid pages
when freeing initrd memory. There are some pages missed at the end of the seciton.
ChangeLog V3:
fixed vaddr mistake
ChangeLog V2:
add invalid pages check when freeing initrd memory
Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
arch/ia64/mm/init.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 082e383..8a269f8 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -173,6 +173,7 @@ void __init
free_initrd_mem (unsigned long start, unsigned long end)
{
struct page *page;
+ unsigned long pfn;
/*
* EFI uses 4KB pages while the kernel can use 4KB or bigger.
* Thus EFI and the kernel may have different page sizes. It is
@@ -213,6 +214,9 @@ free_initrd_mem (unsigned long start, unsigned long end)
for (; start < end; start += PAGE_SIZE) {
if (!virt_addr_valid(start))
continue;
+ pfn = __pa(start) >> PAGE_SHIFT;
+ if (pfn >= max_low_pfn)
+ continue;
page = virt_to_page(start);
ClearPageReserved(page);
init_page_count(page);
--
1.7.6.1
next prev parent reply other threads:[~2013-02-07 6:09 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-29 3:52 [PATCH] ia64/mm: fix a bad_page bug when crash kernel booting Xishi Qiu
2013-01-29 3:52 ` Xishi Qiu
2013-01-29 3:52 ` Xishi Qiu
2013-01-29 3:52 ` Xishi Qiu
2013-02-04 16:32 ` Matt Fleming
2013-02-04 16:32 ` Matt Fleming
2013-02-04 16:32 ` Matt Fleming
2013-02-05 3:48 ` Xishi Qiu
2013-02-05 3:48 ` Xishi Qiu
2013-02-05 3:48 ` Xishi Qiu
2013-02-05 3:48 ` Xishi Qiu
[not found] ` <1359995565.7515.178.camel-ZqTwcBeJ+wsBof6jY8KHXm7IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-02-07 2:32 ` [PATCH V2] " Xishi Qiu
2013-02-07 2:32 ` Xishi Qiu
2013-02-07 2:32 ` Xishi Qiu
2013-02-07 2:32 ` Xishi Qiu
[not found] ` <51131248.3080203-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-02-07 6:09 ` Xishi Qiu [this message]
2013-02-07 6:09 ` [PATCH V3] " Xishi Qiu
2013-02-07 6:09 ` Xishi Qiu
2013-02-07 6:09 ` Xishi Qiu
[not found] ` <5113450C.1080109-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-02-13 0:11 ` Tony Luck
2013-02-13 0:11 ` Tony Luck
2013-02-13 0:11 ` Tony Luck
2013-02-13 0:11 ` Tony Luck
[not found] ` <CA+8MBb+3_xWv1wMWv0+gwWm9exPCNTZWG3mXQnBsUbc5fJnuiA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-02-13 0:19 ` Andrew Morton
2013-02-13 0:19 ` Andrew Morton
2013-02-13 0:19 ` Andrew Morton
2013-02-13 0:19 ` Andrew Morton
2013-02-13 0:32 ` Tony Luck
2013-02-13 0:32 ` Tony Luck
2013-02-13 0:32 ` Tony Luck
2013-02-13 0:22 ` Andrew Morton
2013-02-13 0:22 ` Andrew Morton
2013-02-13 0:22 ` Andrew Morton
2013-02-13 0:22 ` Andrew Morton
2013-02-19 21:56 ` Tony Luck
2013-02-19 21:56 ` Tony Luck
2013-02-19 21:56 ` Tony Luck
2013-02-19 21:56 ` Tony Luck
2013-02-20 1:38 ` Xishi Qiu
2013-02-20 1:38 ` Xishi Qiu
2013-02-20 1:38 ` Xishi Qiu
2013-02-21 18:21 ` Tony Luck
2013-02-21 18:21 ` Tony Luck
2013-02-21 18:21 ` Tony Luck
2013-02-13 10:07 ` Matt Fleming
2013-02-13 10:07 ` Matt Fleming
2013-02-13 10:07 ` Matt Fleming
[not found] ` <1360750028.24917.28.camel-ZqTwcBeJ+wsBof6jY8KHXm7IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-02-16 1:55 ` Xishi Qiu
2013-02-16 1:55 ` Xishi Qiu
2013-02-16 1:55 ` Xishi Qiu
2013-02-16 1:55 ` Xishi Qiu
2013-02-19 21:38 ` Luck, Tony
2013-02-19 21:38 ` Luck, Tony
2013-02-19 21:38 ` Luck, Tony
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=5113450C.1080109@huawei.com \
--to=qiuxishi-hv44wf8li93qt0dzr+alfa@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=fenghua.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=guohanjun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=jiang.liu-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
--cc=matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=tony.luck-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=wujianguo-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.