From: Ian Campbell on 20 Mar 2010 03:20 Looks good to me, thanks Yinghai. On Sat, 2010-03-20 at 06:38 +0000, Yinghai Lu wrote: > From: Ian Campbell <ian.campbell(a)citrix.com> > > This avoids an infinite loop in free_early_partial(). > > Add a warning to free_early_partial to catch future problems. > > -v5: put back start > end back into WARN_ONCE() > -v6: use one line for if according to linus > > Signed-off-by: Ian Campbell <ian.campbell(a)citrix.com> > Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> > Cc: Peter Zijlstra <peterz(a)infradead.org> > Cc: Ingo Molnar <mingo(a)elte.hu> > --- > kernel/early_res.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > Index: linux-2.6/kernel/early_res.c > =================================================================== > --- linux-2.6.orig/kernel/early_res.c > +++ linux-2.6/kernel/early_res.c > @@ -333,6 +333,12 @@ void __init free_early_partial(u64 start > struct early_res *r; > int i; > > + if (start == end) > + return; > + > + if (WARN_ONCE(start > end, "free_early_partial: wrong range [%#llx, %#llx]\n", start, end)) > + return; > + > try_next: > i = find_overlapped_early(start, end); > if (i >= max_early_res) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Joel Becker on 25 Mar 2010 18:40 On Wed, Mar 24, 2010 at 03:37:02AM -0700, Yinghai Lu wrote: > From: Ian Campbell <ian.campbell(a)citrix.com> > > This avoids an infinite loop in free_early_partial(). > > Add a warning to free_early_partial to catch future problems. > > -v5: put back start > end back into WARN_ONCE() > -v6: use one line for if according to linus > > Signed-off-by: Ian Campbell <ian.campbell(a)citrix.com> > Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> > Cc: Peter Zijlstra <peterz(a)infradead.org> > Cc: Ingo Molnar <mingo(a)elte.hu> Tested-by: Joel Becker <joel.becker(a)oracle.com> I ran into this when moving my paravirt_ops PVMs to 2.6.34-rc1. I turned on CONFIG_NO_BOOTMEM to try it because it was the default. I had to put earlyprintk=xen on the command line to debug the problem. My boots hung after: .... (early) Local APIC disabled by BIOS -- you can enable it with "lapic" (early) APIC: disable apic facility (early) APIC: switched to apic NOOP (early) Allocating PCI resources starting at 78000000 (gap: 78000000:88000000) (early) Booting paravirtualized kernel on Xen (early) Xen version: 3.1.3-rc3 (early) setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1 Bisecting narrowed the problem to fb90ef [early_res: Add free_early_partial()]. Turning off CONFIG_NO_BOOTMEM allowed me to boot. I then hunted up references to this function, which found me this patch. This patch successfully resolved the problem. Joel -- "The nice thing about egotists is that they don't talk about other people." - Lucille S. Harper Joel Becker Principal Software Developer Oracle E-mail: joel.becker(a)oracle.com Phone: (650) 506-8127 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Johannes Weiner on 26 Mar 2010 19:50 On Fri, Mar 26, 2010 at 03:21:33PM -0700, Yinghai Lu wrote: > From: Ian Campbell <ian.campbell(a)citrix.com> > > This avoids an infinite loop in free_early_partial(). > > Add a warning to free_early_partial to catch future problems. > > -v5: put back start > end back into WARN_ONCE() > -v6: use one line for warning according to linus > -v7: more test by > > Signed-off-by: Ian Campbell <ian.campbell(a)citrix.com> > Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> > Tested-by: Konrad Rzeszutek Wilk <konrad.wilk(a)oracle.com> > Tested-by: Joel Becker <joel.becker(a)oracle.com> > Tested-by: Stanislaw Gruszka <sgruszka(a)redhat.com> > Cc: Peter Zijlstra <peterz(a)infradead.org> > Cc: Ingo Molnar <mingo(a)elte.hu> > --- > kernel/early_res.c | 6 ++++++ > 1 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/kernel/early_res.c b/kernel/early_res.c > index 3cb2c66..69bed5b 100644 > --- a/kernel/early_res.c > +++ b/kernel/early_res.c > @@ -333,6 +333,12 @@ void __init free_early_partial(u64 start, u64 end) > struct early_res *r; > int i; > > + if (start == end) > + return; > + > + if (WARN_ONCE(start > end, "free_early_partial: wrong range [%#llx, %#llx]\n", start, end)) > + return; I think you can drop the function name, it will be in the stack dump anyway. And that would get the line back into bounds :) Other than that, Acked-by: Johannes Weiner <hannes(a)cmpxchg.org> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Yinghai Lu on 26 Mar 2010 20:00 On 03/26/2010 04:54 PM, Johannes Weiner wrote: > On Fri, Mar 26, 2010 at 04:49:10PM -0700, Yinghai Lu wrote: >> >> is there any chance that dump stack only print out address instead of function name ? > > I suppose so, lacking frame pointers, but you still have > filename + linenumber + 'wrong range'. ok, will remove that function name. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Johannes Weiner on 26 Mar 2010 20:00 On Fri, Mar 26, 2010 at 04:49:10PM -0700, Yinghai Lu wrote: > On 03/26/2010 04:42 PM, Johannes Weiner wrote: > > On Fri, Mar 26, 2010 at 03:21:33PM -0700, Yinghai Lu wrote: > >> From: Ian Campbell <ian.campbell(a)citrix.com> > >> > >> This avoids an infinite loop in free_early_partial(). > >> > >> Add a warning to free_early_partial to catch future problems. > >> > >> -v5: put back start > end back into WARN_ONCE() > >> -v6: use one line for warning according to linus > >> -v7: more test by > >> > >> Signed-off-by: Ian Campbell <ian.campbell(a)citrix.com> > >> Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> > >> Tested-by: Konrad Rzeszutek Wilk <konrad.wilk(a)oracle.com> > >> Tested-by: Joel Becker <joel.becker(a)oracle.com> > >> Tested-by: Stanislaw Gruszka <sgruszka(a)redhat.com> > >> Cc: Peter Zijlstra <peterz(a)infradead.org> > >> Cc: Ingo Molnar <mingo(a)elte.hu> > >> --- > >> kernel/early_res.c | 6 ++++++ > >> 1 files changed, 6 insertions(+), 0 deletions(-) > >> > >> diff --git a/kernel/early_res.c b/kernel/early_res.c > >> index 3cb2c66..69bed5b 100644 > >> --- a/kernel/early_res.c > >> +++ b/kernel/early_res.c > >> @@ -333,6 +333,12 @@ void __init free_early_partial(u64 start, u64 end) > >> struct early_res *r; > >> int i; > >> > >> + if (start == end) > >> + return; > >> + > >> + if (WARN_ONCE(start > end, "free_early_partial: wrong range [%#llx, %#llx]\n", start, end)) > >> + return; > > > > I think you can drop the function name, it will be in the stack dump > > anyway. And that would get the line back into bounds :) > > > > Other than that, > > Acked-by: Johannes Weiner <hannes(a)cmpxchg.org> > > Thanks. > > is there any chance that dump stack only print out address instead of function name ? I suppose so, lacking frame pointers, but you still have filename + linenumber + 'wrong range'. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 4 Prev: [PATCH 0/3] reduce per cpu boot up messages Next: acpi/sbs: fix build for ACPI_SYSFS_POWER=n |