Re: 2.6.16-rc1-mm5

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Benoit Boissinot <[email protected]> wrote:
>
> On 2/3/06, Benoit Boissinot <[email protected]> wrote:
> > On 2/3/06, Andrew Morton <[email protected]> wrote:
> > >
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc1/2.6.16-rc1-mm5/
> > >
> > >
> > > - The ntp/time rework patches from John Stultz have been resurrected and fixed.
> > >
> > > - There's now a `hot-fixes' directory at the above URL.  Please look in
> > >   there for any updates which should be applied.
> >
> > It runs fine here, no problems. Even iptables works this time.
> 
> Actually it spoke too fast, I have the following oops with
> CONFIG_DEBUG_INITDATA=y (it does not oops without this config
> option).
> 
> I can send full dmesg and .config if needed (the bug is reproducable).
> 
> with gcc4.1 (I supposed buffered_rmqueue is inlined):
> 
> BUG: unable to handle kernel paging request at virtual address c0401000
>  printing eip:
> c013ea41
> *pde = 1ff0a163
> *pte = 00401000
> Oops: 0002 [#1]
> last sysfs file: /devices/pci0000:00/0000:00:1e.0/0000:02:03.0/rf_kill
> Modules linked in: aes ieee80211_crypt_ccmp radeon drm ipt_multiport xt_state xt_limit ipt_REJECT xt_tcpudp iptable_filter iptable_nat ip_nat ip_tables x_tables ip_conntrack_irc ip_conntrack_ftp ip_conntrack nfnetlink snd_seq snd_seq_device snd_intel8x0 snd_ac97_codec snd_ac97_bus snd_pcm snd_timer snd soundcore snd_page_alloc speedstep_centrino cpufreq_stats freq_table cpufreq_conservative cpufreq_ondemand cpufreq_performance cpufreq_powersave fan button thermal processor battery ac uhci_hcd ehci_hcd usbcore tg3 ipw2200 ieee80211 ieee80211_crypt psmouse ide_cd cdrom
> CPU:    0
> EIP:    0060:[<c013ea41>]    Not tainted VLI
> EFLAGS: 00010287   (2.6.16-rc1-mm5-casaverde #15) 
> EIP is at get_page_from_freelist+0x2d1/0x330
> eax: 00000000   ebx: 00000000   ecx: 00000400   edx: 00000400
> esi: c1008020   edi: c0401000   ebp: da64eed8   esp: da64ee8c
> ds: 007b   es: 007b   ss: 0068
> Process hg (pid: 18179, threadinfo=da64e000 task=da437560)
> Stack: <0>00000002 00000044 c1008020 00000001 00000001 c03b8b60 00000000 c03b8b40 
>        00000002 00000000 000280d2 c03b900c 00000000 00000202 00000000 00000001 
>        c03b9008 da437560 000280d2 da64ef18 c013f1b5 00000044 00000000 00000000 
> Call Trace:
>  <c0103f05> show_stack_log_lvl+0xc5/0xf0   <c01040ba> show_registers+0x18a/0x210
>  <c010421f> die+0xdf/0x1f0   <c0114266> do_page_fault+0x276/0x5ec
>  <c010391f> error_code+0x4f/0x54   <c013f1b5> __alloc_pages+0x55/0x2c0
>  <c01461d4> __handle_mm_fault+0x3f4/0x730   <c01143b4> do_page_fault+0x3c4/0x5ec
>  <c010391f> error_code+0x4f/0x54  

Ahem, I don't think I actually tested that.

This would seem to be needed, but I don't think it'll fix that one.


From: Andrew Morton <[email protected]>

Don't touch page_state[not-possible-CPU].

And a couple of little optimisations.

Signed-off-by: Andrew Morton <[email protected]>
---

 mm/page_alloc.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff -puN mm/page_alloc.c~reduce-size-of-percpudata-and-make-sure-per_cpuobject-update2 mm/page_alloc.c
--- devel/mm/page_alloc.c~reduce-size-of-percpudata-and-make-sure-per_cpuobject-update2	2006-02-03 12:26:33.000000000 -0800
+++ devel-akpm/mm/page_alloc.c	2006-02-03 12:34:34.000000000 -0800
@@ -1213,18 +1213,21 @@ static void __get_page_state(struct page
 {
 	int cpu = 0;
 
-	memset(ret, 0, sizeof(*ret));
+	memset(ret, 0, nr * sizeof(unsigned long));
 	cpus_and(*cpumask, *cpumask, cpu_online_map);
 
 	cpu = first_cpu(*cpumask);
 	while (cpu < NR_CPUS) {
 		unsigned long *in, *out, off;
 
+		if (!cpu_isset(cpu, *cpumask))
+			continue;
+
 		in = (unsigned long *)&per_cpu(page_states, cpu);
 
 		cpu = next_cpu(cpu, *cpumask);
 
-		if (cpu < NR_CPUS)
+		if (likely(cpu < NR_CPUS))
 			prefetch(&per_cpu(page_states, cpu));
 
 		out = (unsigned long *)ret;
@@ -1886,8 +1889,7 @@ static void setup_pagelist_highmark(stru
  * not check if the processor is online before following the pageset pointer.
  * Other parts of the kernel may not check if the zone is available.
  */
-static struct per_cpu_pageset
-	boot_pageset[NR_CPUS];
+static struct per_cpu_pageset boot_pageset[NR_CPUS];
 
 /*
  * Dynamically allocate memory for the
_

-
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]
  Powered by Linux