Hi,
I encountered this comment in kernel/softirq.c:
/* Some compilers disobey section attribute on statics when not
initialized -- RR */
static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec) = { NULL };
static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec) = { NULL };
So I assume it's the combination of static and whatever section
DFINE_PER_CPU puts the variable in which is the problem.
However, there's a LOT of these "static DEFINE_PER_CPU" without any
initializer in the rest of the code, e.g.:
$ g 'static DEFINE_PER_CPU' kernel/sched.c
static DEFINE_PER_CPU(struct sched_entity, init_sched_entity);
static DEFINE_PER_CPU(struct cfs_rq, init_cfs_rq) ____cacheline_aligned_in_smp;
static DEFINE_PER_CPU(struct sched_rt_entity, init_sched_rt_entity);
static DEFINE_PER_CPU(struct rt_rq, init_rt_rq) ____cacheline_aligned_in_smp;
static DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
static DEFINE_PER_CPU(unsigned long long, time_offset);
static DEFINE_PER_CPU(unsigned long long, prev_cpu_time);
static DEFINE_PER_CPU(spinlock_t, aggregate_lock);
static DEFINE_PER_CPU(struct sched_domain, cpu_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_cpus);
static DEFINE_PER_CPU(struct sched_domain, core_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_core);
static DEFINE_PER_CPU(struct sched_domain, phys_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_phys);
static DEFINE_PER_CPU(struct sched_domain, node_domains);
static DEFINE_PER_CPU(struct sched_domain, allnodes_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_allnodes);
The comment seems to be ancient and I don't know who wrote it, so I'm
making a guess that it's Rusty Russel (Cced).
So which do we do, delete the comment (on the grounds that it is
invalid) or fix these other declarations (there's a lot of them)?
Vegard
--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036
--
| Dmitry Torokhov | 2.6.27-rc8+ - first impressions |
| Linus Torvalds | Linux 2.6.27-rc8 |
| Nick Piggin | [patch 3/6] mm: fix fault vs invalidate race for linear mappings |
| Alan Cox | [PATCH 00/76] Queued TTY Patches |
git: | |
| Petr Baudis | [FYI][PATCH] Customizing the WinGit installer |
| Pierre Habouzit | Re: git push (mis ?)behavior |
| Mark Levedahl | Allowing override of the default "origin" nickname |
| Junio C Hamano | [PATCH] Detached HEAD (experimental) |
| Richard Stallman | Real men don't attack straw men |
| Luca Dell'Oca | Authenticate squid in Active Directory |
| Leon Dippenaar | New tcp stack attack |
| Nuno Magalhães | Can't scp, ssh is slow to authenticate. |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| KOSAKI Motohiro | [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
| Andi Kleen | Re: [PATCH] Disable TSO for non standard qdiscs |
| Alexey Dobriyan | [PATCH 01/33] nf_conntrack_sip: de-static helper pointers |
