[Debian] Re: fix for 500876
dann frazier
dannf at dannf.org
Tue Mar 3 15:43:56 EST 2009
On Tue, Mar 03, 2009 at 09:34:26PM +0100, Ola Lundqvist wrote:
> Hi Dann
>
> The openvz 686 version is now regression tested. I have also asked the
> person that had the problem with this bug to verify the amd64 kernel as well.
>
> Best regards,
Thanks!
> // Ola
>
> On Tue, Mar 03, 2009 at 11:36:17AM -0700, dann frazier wrote:
> > On Tue, Mar 03, 2009 at 05:54:09PM +0100, Ola Lundqvist wrote:
> > > Hi Dann
> > >
> > > Looks very similar to the patch I proposed. Here it is.
> > > I was not aware you could add more files so I appended to the
> > > end of the file.
> >
> > Ah - yeah, in fact we _must_ have separate files. That gives us the
> > ability to generate older versions of the source tree from the
> > latest. Of course, that doesn't work so well for the "features"
> > patches, since they sometimes have to be regen'd to apply.
> >
> > > When you have different files like this, which order will it take
> > > them?
> >
> > That is determined by the series file. At application, the build
> > system parses the series file (using the changelog to determine
> > order), and applys all of the normal patches (series files that don't
> > end in "-extra"), followed by all of the -extra patches.
> >
> > I guess the only thing remaining is to verify that this patch works
> > well and risk of regression is low - do you have a system (or systems)
> > you can use to test the builds here?
> >
> > http://people.debian.org/~dannf/bugs/500876/
> >
> > > Best regards,
> > >
> > > // Ola
> > >
> > > On Tue, Mar 03, 2009 at 09:31:36AM -0700, dann frazier wrote:
> > > > On Tue, Mar 03, 2009 at 07:49:05AM +0100, Ola Lundqvist wrote:
> > > > > Hi Dann
> > > > >
> > > > > Quoting dann frazier <dannf at dannf.org>:
> > > > >
> > > > >> hey Ola,
> > > > >> Attached is a patch I have queued for lenny.
> > > > >> I've posted builds w/ this fix here:
> > > > >>
> > > > >> http://people.debian.org/~dannf/bugs/500876/
> > > > >
> > > > > Oh, thanks a lot.
> > > > >
> > > > >> Would you be able to review the patch/test the build to confirm that
> > > > >> its ok for a stable update? Note that it doesn't change the ABI.
> > > > >
> > > > > Good to know that it does not change the ABI. I was just about to send you
> > > > > a mail with my own work regarding this issue. My machine is currently
> > > > > building a package with this patch.
> > > > >
> > > > > Do you have a diff file on what you did? If not I'll send mine later today.
> > > > > The patch applied fine and seems to build on 686 arch at least.
> > > > >
> > > > > Best regards,
> > > > >
> > > > > // Ola
> > > >
> > > > oops - forgot to attach it
> > >
> > > > Index: debian/patches/series/14-extra
> > > > ===================================================================
> > > > --- debian/patches/series/14-extra (revision 0)
> > > > +++ debian/patches/series/14-extra (revision 0)
> > > > @@ -0,0 +1 @@
> > > > ++ features/all/openvz/fix-wrong-size-of-ub0_percpu.patch featureset=openvz
> > > > Index: debian/patches/features/all/openvz/fix-wrong-size-of-ub0_percpu.patch
> > > > ===================================================================
> > > > --- debian/patches/features/all/openvz/fix-wrong-size-of-ub0_percpu.patch (revision 0)
> > > > +++ debian/patches/features/all/openvz/fix-wrong-size-of-ub0_percpu.patch (revision 0)
> > > > @@ -0,0 +1,112 @@
> > > > +From: Konstantin Khlebnikov <khlebnikov at openvz.org>
> > > > +Date: Tue, 7 Oct 2008 08:57:48 +0000 (+0400)
> > > > +Subject: fix wrong size of ub0_percpu.
> > > > +X-Git-Tag: sync-2.6.27-15.10.08~5
> > > > +X-Git-Url: http://git.openvz.org/?p=linux-2.6.26-openvz;a=commitdiff_plain;h=777e8164ebf8a03e43511983cdec472f8691a8af
> > > > +
> > > > +fix wrong size of ub0_percpu.
> > > > +
> > > > +after commit b3242151 struct percpu_data dynamically allocated
> > > > +and have array only for 1 cpu, so static usage of it does not work.
> > > > +
> > > > +Plus rework macros for static percpu variables declaration and initialization.
> > > > +
> > > > +http://bugzilla.openvz.org/show_bug.cgi?id=1039
> > > > +
> > > > +Signed-off-by: Konstantin Khlebnikov <khlebnikov at openvz.org>
> > > > +Signed-off-by: Pavel Emelyanov <xemul at openvz.org>
> > > > +---
> > > > +
> > > > +diff --git a/include/linux/percpu.h b/include/linux/percpu.h
> > > > +index 5ac97e1..e159f4d 100644
> > > > +--- a/include/linux/percpu.h
> > > > ++++ b/include/linux/percpu.h
> > > > +@@ -74,11 +74,20 @@ struct percpu_data {
> > > > + (__typeof__(ptr))__p->ptrs[(cpu)]; \
> > > > + })
> > > > +
> > > > +-#define static_percpu_ptr(sptr, sptrs) ({ \
> > > > ++struct percpu_data_static {
> > > > ++ void *ptrs[NR_CPUS];
> > > > ++};
> > > > ++
> > > > ++#define DEFINE_PER_CPU_STATIC(type, name) \
> > > > ++ static struct percpu_data_static per_cpu_data__##name; \
> > > > ++ static __typeof__(type) per_cpu__##name[NR_CPUS]
> > > > ++
> > > > ++#define percpu_static_init(name) ({ \
> > > > + int i; \
> > > > + for (i = 0; i < NR_CPUS; i++) \
> > > > +- (sptr)->ptrs[i] = &(sptrs)[i]; \
> > > > +- (__typeof__(&sptrs[0]))__percpu_disguise(sptr);\
> > > > ++ (per_cpu_data__##name).ptrs[i] = &(per_cpu__##name)[i];\
> > > > ++ (__typeof__(&(per_cpu__##name)[0])) \
> > > > ++ __percpu_disguise(&(per_cpu_data__##name));\
> > > > + })
> > > > +
> > > > + extern void *percpu_populate(void *__pdata, size_t size, gfp_t gfp, int cpu);
> > > > +@@ -92,7 +101,11 @@ extern void percpu_free(void *__pdata);
> > > > + #else /* CONFIG_SMP */
> > > > +
> > > > + #define percpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); })
> > > > +-#define static_percpu_ptr(sptr, sptrs) (&sptrs[0])
> > > > ++
> > > > ++#define DEFINE_PER_CPU_STATIC(type, name) \
> > > > ++ static __typeof__(type) per_cpu__##name[NR_CPUS]
> > > > ++
> > > > ++#define percpu_static_init(name) (&(per_cpu__##name)[0])
> > > > +
> > > > + static inline void percpu_depopulate(void *__pdata, int cpu)
> > > > + {
> > > > +diff --git a/kernel/bc/beancounter.c b/kernel/bc/beancounter.c
> > > > +index 48fa1cc..8cd0ef0 100644
> > > > +--- a/kernel/bc/beancounter.c
> > > > ++++ b/kernel/bc/beancounter.c
> > > > +@@ -629,10 +629,7 @@ static void init_beancounter_syslimits(struct user_beancounter *ub)
> > > > + ub->ub_limit_rl.interval = 300*HZ;
> > > > + }
> > > > +
> > > > +-#ifdef CONFIG_SMP
> > > > +-static struct percpu_data ub0_percpu;
> > > > +-#endif
> > > > +-static struct ub_percpu_struct ub0_percpu_data[NR_CPUS];
> > > > ++DEFINE_PER_CPU_STATIC(struct ub_percpu_struct, ub0_percpu);
> > > > +
> > > > + void __init ub_init_early(void)
> > > > + {
> > > > +@@ -645,7 +642,7 @@ void __init ub_init_early(void)
> > > > + init_beancounter_nolimits(ub);
> > > > + init_beancounter_store(ub);
> > > > + init_beancounter_struct(ub);
> > > > +- ub->ub_percpu = static_percpu_ptr(&ub0_percpu, ub0_percpu_data);
> > > > ++ ub->ub_percpu = percpu_static_init(ub0_percpu);
> > > > +
> > > > + memset(¤t->task_bc, 0, sizeof(struct task_beancounter));
> > > > + (void)set_exec_ub(ub);
> > > > +diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c
> > > > +index 7322e50..0248f38 100644
> > > > +--- a/kernel/ve/ve.c
> > > > ++++ b/kernel/ve/ve.c
> > > > +@@ -111,12 +111,7 @@ struct ve_struct ve0 = {
> > > > +
> > > > + EXPORT_SYMBOL(ve0);
> > > > +
> > > > +-#ifdef CONFIG_SMP
> > > > +-static struct {
> > > > +- void *ptrs[NR_CPUS];
> > > > +-} ve0_cpu_stats;
> > > > +-#endif
> > > > +-static struct ve_cpu_stats ve0_cpu_stats_data[NR_CPUS];
> > > > ++DEFINE_PER_CPU_STATIC(struct ve_cpu_stats, ve0_cpu_stats);
> > > > +
> > > > + LIST_HEAD(ve_list_head);
> > > > + rwlock_t ve_list_lock = RW_LOCK_UNLOCKED;
> > > > +@@ -136,7 +131,7 @@ void init_ve0(void)
> > > > + struct ve_struct *ve;
> > > > +
> > > > + ve = get_ve0();
> > > > +- ve->cpu_stats = static_percpu_ptr(&ve0_cpu_stats, ve0_cpu_stats_data);
> > > > ++ ve->cpu_stats = percpu_static_init(ve0_cpu_stats);
> > > > + list_add(&ve->ve_list, &ve_list_head);
> > > > + }
> > > > +
> > > > Index: debian/changelog
> > > > ===================================================================
> > > > --- debian/changelog (revision 12956)
> > > > +++ debian/changelog (working copy)
> > > > @@ -18,6 +18,7 @@
> > > > [ dann frazier ]
> > > > * Fix softlockups in sungem driver (Closes: #514624)
> > > > * intel-agp: Add support for G41 chipset (Closes: #513228)
> > > > + * [openvz] Fix wrong size of ub0_percpu
> > > >
> > > > [ Martin Michlmayr ]
> > > > * rt2x00: Fix VGC lower bound initialization. (Closes: #510607)
> > > > @@ -30,7 +31,7 @@
> > > > * [sparc] Revert: Reintroduce dummy PCI host controller to workaround broken
> > > > X.org. Not supportable and breaks to many things.
> > > >
> > > > - -- dann frazier <dannf at debian.org> Fri, 13 Feb 2009 10:46:22 -0700
> > > > + -- dann frazier <dannf at debian.org> Thu, 26 Feb 2009 13:27:19 -0700
> > > >
> > > > linux-2.6 (2.6.26-13) unstable; urgency=high
> > > >
> > >
> > >
> >
> >
> >
>
--
dann frazier
More information about the Debian
mailing list