Thanks a lot for your PageReserved "Bad page state" reports.
Sorry for being so slow to respond. I've not worked it out yet.
Would each of you please apply the slightly-more-debug-info patch
below, and mail me the first batch of reports that you get when
you try to reproduce the problem (it does assume only one CPU,
which happens to be the case for each of you).
Thanks,
Hugh
--- 2.6.15-rc1-mm2/mm/memory.c 2005-11-18 15:23:09.000000000 +0000
+++ linux/mm/memory.c 2005-11-18 17:56:23.000000000 +0000
@@ -569,6 +569,7 @@ static unsigned long zap_pte_range(struc
unsigned long addr, unsigned long end,
long *zap_work, struct zap_details *details)
{
+ extern struct vm_area_struct *zap_vma;
struct mm_struct *mm = tlb->mm;
pte_t *pte;
spinlock_t *ptl;
@@ -576,6 +577,7 @@ static unsigned long zap_pte_range(struc
int anon_rss = 0;
pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
+ zap_vma = vma;
do {
pte_t ptent = *pte;
if (pte_none(ptent)) {
@@ -649,6 +651,7 @@ static unsigned long zap_pte_range(struc
pte_clear_full(mm, addr, pte, tlb->fullmm);
} while (pte++, addr += PAGE_SIZE, (addr != end && *zap_work > 0));
+ zap_vma = NULL;
add_mm_rss(mm, file_rss, anon_rss);
pte_unmap_unlock(pte - 1, ptl);
--- 2.6.15-rc1-mm2/mm/page_alloc.c 2005-11-18 15:23:09.000000000 +0000
+++ linux/mm/page_alloc.c 2005-11-18 18:16:28.000000000 +0000
@@ -36,6 +36,7 @@
#include <linux/memory_hotplug.h>
#include <linux/nodemask.h>
#include <linux/vmalloc.h>
+#include <linux/kallsyms.h>
#include <asm/tlbflush.h>
#include "internal.h"
@@ -122,6 +123,7 @@ static int bad_range(struct zone *zone,
return 0;
}
+struct vm_area_struct *zap_vma;
static void bad_page(const char *function, struct page *page)
{
printk(KERN_EMERG "Bad page state at %s (in process '%s', page %p)\n",
@@ -129,6 +131,13 @@ static void bad_page(const char *functio
printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d\n",
(int)(2*sizeof(unsigned long)), (unsigned long)page->flags,
page->mapping, page_mapcount(page), page_count(page));
+ if (zap_vma) {
+ printk(KERN_EMERG "vm_flags:0x%lx", zap_vma->vm_flags);
+ print_symbol(" %s", (unsigned long)
+ (zap_vma->vm_ops? zap_vma->vm_ops->open: NULL));
+ print_symbol(" %s\n", (unsigned long)
+ (zap_vma->vm_ops? zap_vma->vm_ops->nopage: NULL));
+ }
printk(KERN_EMERG "Backtrace:\n");
dump_stack();
{
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]