* [PATCH] Fix show_mem panic
@ 2004-03-12 14:24 John Marvin
2004-03-12 18:00 ` David Mosberger
0 siblings, 1 reply; 2+ messages in thread
From: John Marvin @ 2004-03-12 14:24 UTC (permalink / raw)
To: linux-ia64
The following patch fixes the 2.6 showMem (sysrq) panic.
John
--- a/arch/ia64/mm/contig.c Fri Mar 12 07:17:21 2004
+++ b/arch/ia64/mm/contig.c Fri Mar 12 05:59:24 2004
@@ -46,6 +46,8 @@
printk("Free swap: %6dkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
i = max_mapnr;
while (i-- > 0) {
+ if (!pfn_valid(i))
+ continue;
total++;
if (PageReserved(mem_map+i))
reserved++;
--- a/arch/ia64/mm/discontig.c Fri Mar 12 07:17:21 2004
+++ b/arch/ia64/mm/discontig.c Fri Mar 12 06:15:26 2004
@@ -377,6 +377,8 @@
for_each_pgdat(pgdat) {
printk("Node ID: %d\n", pgdat->node_id);
for(i = 0; i < pgdat->node_spanned_pages; i++) {
+ if (!ia64_pfn_valid(pgdat->node_start_pfn+i))
+ continue;
if (PageReserved(pgdat->node_mem_map+i))
reserved++;
else if (PageSwapCache(pgdat->node_mem_map+i))
--- a/arch/ia64/mm/init.c Fri Mar 12 07:17:21 2004
+++ b/arch/ia64/mm/init.c Fri Mar 12 06:59:29 2004
@@ -455,8 +455,10 @@
ia64_pfn_valid (unsigned long pfn)
{
char byte;
+ struct page *page = pfn_to_page(pfn);
- return __get_user(byte, (char *) pfn_to_page(pfn)) = 0;
+ return (__get_user(byte, (char *) page) = 0)
+ && (__get_user(byte, (char *) (page + 1) - 1) = 0);
}
EXPORT_SYMBOL(ia64_pfn_valid);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Fix show_mem panic
2004-03-12 14:24 [PATCH] Fix show_mem panic John Marvin
@ 2004-03-12 18:00 ` David Mosberger
0 siblings, 0 replies; 2+ messages in thread
From: David Mosberger @ 2004-03-12 18:00 UTC (permalink / raw)
To: linux-ia64
>>>>> On Fri, 12 Mar 2004 07:24:02 -0700 (MST), John Marvin <jsm@udlkern.fc.hp.com> said:
John> ia64_pfn_valid (unsigned long pfn)
John> {
John> char byte;
John> + struct page *page = pfn_to_page(pfn);
John> - return __get_user(byte, (char *) pfn_to_page(pfn)) = 0;
John> + return (__get_user(byte, (char *) page) = 0)
John> + && (__get_user(byte, (char *) (page + 1) - 1) = 0);
John> }
Would it make sense to do only the first __get_user() _unless_ the
"struct page" crosses a page?
--david
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-03-12 18:00 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-12 14:24 [PATCH] Fix show_mem panic John Marvin
2004-03-12 18:00 ` David Mosberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox