2003-06-29 12:05:26

by Zwane Mwaikambo

[permalink] [raw]
Subject: Oops in __change_page_attr Re: (was 2.5.73-mm2)

On Sat, 28 Jun 2003, William Lee Irwin III wrote:

> On Sat, Jun 28, 2003 at 04:00:13PM -0700, Andrew Morton wrote:
> > What architectures has this been tested on?
>
> i386 only, CONFIG_HIGHMEM64G with various combinations of highpte &
> highpmd, and nohighmem. No CONFIG_HIGHMEM4G or non-i386 machines that
> can run 2.5.x are within my grasp (obviously CONFIG_HIGHMEM4G machines
> could, I just don't have them, and the discontig code barfs on mem=).

Well i just tried it on a 16G box with CONFIG_HIGHMEM4G;

Manfred, Bill said this would be best routed your way.

Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 0009e140
...
Calibrating delay loop... 1395.91 BogoMIPS
------------[ cut here ]------------
kernel BUG at arch/i386/mm/pageattr.c:110!
invalid operand: 0000 [#1]
PREEMPT SMP DEBUG_PAGEALLOC
CPU: 0
EIP: 0060:[<c011c443>] Not tainted VLI
EFLAGS: 00010046
EIP is at __change_page_attr+0x13/0x1a0
eax: c03b4000 ebx: c18c0000 ecx: 00000000 edx: 00000001
esi: c18c0000 edi: 00000000 ebp: 00000246 esp: c03b5f14
ds: 007b es: 007b ss: 0068
Process swapper (pid: 0, threadinfo=c03b4000 task=c03380e0)
Stack: c0111f51 00000000 c18c0000 00000000 00000246 c011c645 c18c0000 00000000
00000000 c18c0000 00000003 c18c0000 c011c80f c18c0000 00000001 00000000
c0142964 c18c0000 00000001 00000000 00000002 c033d4a0 00000000 00000000
Call Trace:
[<c0111f51>] timer_interrupt+0xc1/0x1a0
[<c011c645>] change_page_attr+0x75/0xe0
[<c011c80f>] kernel_map_pages+0x1f/0x57
[<c0142964>] free_hot_cold_page+0x24/0x110
[<c010d552>] do_IRQ+0x1f2/0x220
[<c03c1feb>] one_highpage_init+0xab/0xd0
[<c03c2046>] set_highmem_pages_init+0x36/0x50
[<c03c2386>] mem_init+0x156/0x1f0
[<c0105000>] _stext+0x0/0x80
[<c03b6861>] start_kernel+0x121/0x1b0

Code: 08 83 e0 08 74 05 e8 bd 20 00 00 5b 5e 5f 5d c3 90 8d b4 26 00 00 00
00 55 57 56 53 83 ec 04 8b 5c 24 18 3b 1d d0 86 40 c0 72 08 <0f> 0b 6e 00
60 8f 2f c0 53 31 ed e8 4d 14 03 00 8b 15 50 7f 33
<0>Kernel panic: Attempted to kill the idle task!
In idle task - not syncing
--
function.linuxpower.ca


2003-06-29 12:28:04

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: Oops in __change_page_attr Re: (was 2.5.73-mm2)

On Sun, 29 Jun 2003, Zwane Mwaikambo wrote:

> On Sat, 28 Jun 2003, William Lee Irwin III wrote:
>
> > On Sat, Jun 28, 2003 at 04:00:13PM -0700, Andrew Morton wrote:
> > > What architectures has this been tested on?
> >
> > i386 only, CONFIG_HIGHMEM64G with various combinations of highpte &
> > highpmd, and nohighmem. No CONFIG_HIGHMEM4G or non-i386 machines that
> > can run 2.5.x are within my grasp (obviously CONFIG_HIGHMEM4G machines
> > could, I just don't have them, and the discontig code barfs on mem=).
>
> Well i just tried it on a 16G box with CONFIG_HIGHMEM4G;
>
> Manfred, Bill said this would be best routed your way.

Just to isolate things, this still occurs without highpmd.

--
function.linuxpower.ca

2003-06-29 12:49:05

by Manfred Spraul

[permalink] [raw]
Subject: Re: Oops in __change_page_attr Re: (was 2.5.73-mm2)

--- 2.5/arch/i386/mm/pageattr.c 2003-06-29 14:45:19.000000000 +0200
+++ build-2.5/arch/i386/mm/pageattr.c 2003-06-29 14:58:11.000000000 +0200
@@ -197,6 +197,8 @@
#ifdef CONFIG_DEBUG_PAGEALLOC
void kernel_map_pages(struct page *page, int numpages, int enable)
{
+ if (page >= highmem_start_page)
+ return;
/* the return value is ignored - the calls cannot fail,
* large pages are disabled at boot time.
*/


Attachments:
patch-dbg-4-unmap-fix (418.00 B)

2003-06-29 13:02:11

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: Oops in __change_page_attr Re: (was 2.5.73-mm2)

On Sun, 29 Jun 2003, Manfred Spraul wrote:

> Could you try the attached patch?
> The code tries to map/unmap highmem pages on the fly, and that fails,
> because highmem pages are never mapped.

Thanks, that fixes it =)

--
function.linuxpower.ca