xfs
[Top] [All Lists]

ADD 800850 - XFS + CONFIG_HIGHMEM4GB bug

To: lord@xxxxxxx
Subject: ADD 800850 - XFS + CONFIG_HIGHMEM4GB bug
From: pv@xxxxxxxxxxxxx (lord@xxxxxxx)
Date: Wed, 6 Sep 2000 09:45:11 -0700 (PDT)
Cc: linux-xfs@xxxxxxxxxxx
Reply-to: sgi.bugs.xfs@xxxxxxxxxxxxxxxxx
Sender: owner-linux-xfs@xxxxxxxxxxx
Webexec: webpvupdate,pvincident
Webpv: jen.americas.sgi.com
View Incident: 
http://co-op.engr.sgi.com/BugWorks/code/bwxquery.cgi?search=Search&wlong=1&view_type=Bug&wi=800850

 Status : open                         Priority : 2                         
 Assigned Engineer : lord              Submitter : dxm                      
*Modified User : lord                 *Modified User Domain : sgi.com       
*Description :
Enabling CONFIG_HIGHMEM4GB on bruce (a 1400), then
running QA trips the following BUG() in QA 001:

kernel BUG at highmem.c:231!

Entering kdb (0xf6eec000) on processor 0 Panic: invalid operand
due to panic @ 0xc013077b
eax = 0x0000001d ebx = 0xfe268000 ecx = 0xc02b406c edx = 0x00000028 
esi = 0x00000000 edi = 0xc2055790 esp = 0xf6eedda0 eip = 0xc013077b 
ebp = 0xf6eeddb4  ss = 0x00000018  cs = 0x00000010 eflags = 0x00010246 

.....


==========================
ADDITIONAL INFORMATION (ADD)
From: lord@xxxxxxx (BugWorks)
Date: Sep 06 2000 09:45:10AM
==========================

In theory I though I had dealt with this, in the latest code
base, when we ask for a metadata pagebuf, we pass the MAPPABLE
flag into pagebuf, this translates into it asking for a page
which is not highmem by controlling the gfp_mask passed into
alloc_pages. There must be some way we are getting around
this, possibly there are some calls getting through without
this flag, but I do not see it right now. Also this particular
call is not the creation of an inode cluster - i.e. we have used
this location as an inode cluster before, if we are recreating
the page due to flush activity then it looks like the gfp_mask
is not a guarantee - which I doubt.

Try with this code in page_buf.c and see if this goes off first:
===========================================================================
Index: linux/fs/pagebuf/page_buf.c
===========================================================================

--- /usr/tmp/TmpDir.15256-0/linux/fs/pagebuf/page_buf.c_1.30    Wed Sep  6 
11:44:53 2000
+++ linux/fs/pagebuf/page_buf.c Wed Sep  6 11:43:33 2000
@@ -573,6 +573,11 @@
                                                all_mapped = 0;
                                                continue;
                                        }
+
+if ((flags & PBF_MAPPABLE) && (page_address(cached_page) == NULL)) {
+       printk("Unexpected highmem page 0x%p\n, cached_page);
+       BUG();
+}
                                }
                                cp = cached_page;
                                if (add_to_page_cache_unique(cp,

<Prev in Thread] Current Thread [Next in Thread>