* [GIT PULL] percpu for 2.6.31
@ 2009-06-18 8:07 Tejun Heo
2009-06-18 21:22 ` Linus Torvalds
0 siblings, 1 reply; 11+ messages in thread
From: Tejun Heo @ 2009-06-18 8:07 UTC (permalink / raw)
To: Linus Torvalds, Ingo Molnar, Linux Kernel Mailing List,
Andrew Morton, kyle
Hello, Linus.
Please pull from percpu-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
This contains two logical changes 1. convert most archs to dynamic
percpu allocator and 2. fix x86 lpage allocator and re-enable it.
Both have been posted multiple times and shouldn't break most of the
popular archs. One known breakage is on parisc which Kyle agreed to
fix post merge.
Ingo, does this look okay to you? If so, I'll create for-next branch
with the rest of patches and also push other percpu changes through it
(Rusty's drop prefix patches and Christoph's this_cpu_* patches) and
publish it to linux-next.
Thanks.
Documentation/kernel-parameters.txt | 6 +
arch/alpha/include/asm/percpu.h | 101 +---------
arch/alpha/include/asm/tlbflush.h | 1 +
arch/arm/kernel/smp.c | 4 +-
arch/arm/mach-kirkwood/cpuidle.c | 2 +-
arch/avr32/kernel/cpu.c | 2 +-
arch/blackfin/mach-common/smp.c | 2 +-
arch/blackfin/mm/sram-alloc.c | 22 +-
arch/cris/include/asm/mmu_context.h | 3 +-
arch/cris/mm/fault.c | 2 +-
arch/ia64/Kconfig | 3 +
arch/ia64/kernel/crash.c | 2 +-
arch/ia64/kernel/smp.c | 4 +-
arch/ia64/kernel/traps.c | 2 +-
arch/ia64/kvm/kvm-ia64.c | 2 +-
arch/ia64/sn/kernel/setup.c | 2 +-
arch/ia64/xen/irq_xen.c | 24 ++--
arch/mips/kernel/cevt-bcm1480.c | 6 +-
arch/mips/kernel/cevt-sb1250.c | 6 +-
arch/mips/kernel/topology.c | 2 +-
arch/mips/sgi-ip27/ip27-timer.c | 4 +-
arch/parisc/kernel/irq.c | 2 +-
arch/parisc/kernel/topology.c | 2 +-
arch/powerpc/Kconfig | 3 +
arch/powerpc/kernel/cacheinfo.c | 2 +-
arch/powerpc/kernel/process.c | 2 +-
arch/powerpc/kernel/sysfs.c | 4 +-
arch/powerpc/kernel/time.c | 6 +-
arch/powerpc/mm/pgtable.c | 2 +-
arch/powerpc/mm/stab.c | 4 +-
arch/powerpc/oprofile/op_model_cell.c | 2 +-
arch/powerpc/platforms/cell/cpufreq_spudemand.c | 2 +-
arch/powerpc/platforms/cell/interrupt.c | 2 +-
arch/powerpc/platforms/ps3/interrupt.c | 2 +-
arch/powerpc/platforms/ps3/smp.c | 2 +-
arch/powerpc/platforms/pseries/dtl.c | 2 +-
arch/powerpc/platforms/pseries/iommu.c | 2 +-
arch/s390/appldata/appldata_base.c | 2 +-
arch/s390/include/asm/percpu.h | 32 +---
arch/s390/kernel/nmi.c | 2 +-
arch/s390/kernel/smp.c | 2 +-
arch/s390/kernel/time.c | 4 +-
arch/s390/kernel/vtime.c | 2 +-
arch/sh/kernel/localtimer.c | 2 +-
arch/sh/kernel/topology.c | 2 +-
arch/sparc/Kconfig | 3 +
arch/sparc/kernel/nmi.c | 6 +-
arch/sparc/kernel/pci_sun4v.c | 2 +-
arch/sparc/kernel/sysfs.c | 4 +-
arch/sparc/kernel/time_64.c | 4 +-
arch/x86/Kconfig | 3 -
arch/x86/include/asm/percpu.h | 9 +
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/nmi.c | 8 +-
arch/x86/kernel/apic/x2apic_cluster.c | 2 +-
arch/x86/kernel/cpu/common.c | 2 +-
arch/x86/kernel/cpu/cpu_debug.c | 6 +-
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 4 +-
arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 2 +-
arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c | 4 +-
arch/x86/kernel/cpu/intel_cacheinfo.c | 6 +-
arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 4 +-
arch/x86/kernel/cpu/mcheck/mce_intel_64.c | 2 +-
arch/x86/kernel/cpu/mcheck/therm_throt.c | 4 +-
arch/x86/kernel/cpu/perf_counter.c | 16 +-
arch/x86/kernel/cpu/perfctr-watchdog.c | 2 +-
arch/x86/kernel/ds.c | 4 +-
arch/x86/kernel/hpet.c | 2 +-
arch/x86/kernel/irq_32.c | 8 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/kvmclock.c | 2 +-
arch/x86/kernel/paravirt.c | 2 +-
arch/x86/kernel/process_64.c | 2 +-
arch/x86/kernel/setup_percpu.c | 219 ++++++++++++++++------
arch/x86/kernel/smpboot.c | 2 +-
arch/x86/kernel/tlb_uv.c | 6 +-
arch/x86/kernel/topology.c | 2 +-
arch/x86/kernel/uv_time.c | 2 +-
arch/x86/kernel/vmiclock_32.c | 2 +-
arch/x86/kvm/svm.c | 2 +-
arch/x86/kvm/vmx.c | 6 +-
arch/x86/kvm/x86.c | 2 +-
arch/x86/mm/kmemcheck/kmemcheck.c | 2 +-
arch/x86/mm/kmmio.c | 2 +-
arch/x86/mm/mmio-mod.c | 4 +-
arch/x86/mm/pageattr.c | 65 ++++---
arch/x86/oprofile/nmi_int.c | 4 +-
arch/x86/xen/enlighten.c | 4 +-
arch/x86/xen/multicalls.c | 2 +-
arch/x86/xen/smp.c | 8 +-
arch/x86/xen/spinlock.c | 4 +-
arch/x86/xen/time.c | 10 +-
block/as-iosched.c | 10 +-
block/blk-softirq.c | 2 +-
block/cfq-iosched.c | 10 +-
crypto/sha512_generic.c | 2 +-
drivers/acpi/processor_core.c | 2 +-
drivers/acpi/processor_thermal.c | 2 +-
drivers/base/cpu.c | 2 +-
drivers/char/random.c | 2 +-
drivers/connector/cn_proc.c | 2 +-
drivers/cpufreq/cpufreq.c | 8 +-
drivers/cpufreq/cpufreq_conservative.c | 12 +-
drivers/cpufreq/cpufreq_ondemand.c | 15 +-
drivers/cpufreq/cpufreq_stats.c | 2 +-
drivers/cpufreq/cpufreq_userspace.c | 11 +-
drivers/cpufreq/freq_table.c | 2 +-
drivers/cpuidle/governors/ladder.c | 2 +-
drivers/cpuidle/governors/menu.c | 2 +-
drivers/crypto/padlock-aes.c | 2 +-
drivers/lguest/page_tables.c | 2 +-
drivers/lguest/x86/core.c | 2 +-
drivers/xen/events.c | 13 +-
fs/buffer.c | 4 +-
fs/file.c | 2 +-
include/linux/percpu-defs.h | 10 +-
include/linux/percpu.h | 12 +-
init/main.c | 24 ---
kernel/kprobes.c | 2 +-
kernel/lockdep.c | 2 +-
kernel/module.c | 6 +-
kernel/perf_counter.c | 8 +-
kernel/printk.c | 2 +-
kernel/profile.c | 4 +-
kernel/rcuclassic.c | 4 +-
kernel/rcupdate.c | 2 +-
kernel/rcupreempt.c | 10 +-
kernel/rcutorture.c | 4 +-
kernel/sched.c | 30 ++--
kernel/sched_clock.c | 2 +-
kernel/sched_rt.c | 2 +-
kernel/smp.c | 6 +-
kernel/softirq.c | 6 +-
kernel/softlockup.c | 6 +-
kernel/taskstats.c | 4 +-
kernel/time/tick-sched.c | 2 +-
kernel/time/timer_stats.c | 2 +-
kernel/timer.c | 2 +-
kernel/trace/ftrace.c | 2 +-
kernel/trace/ring_buffer.c | 2 +-
kernel/trace/trace.c | 6 +-
kernel/trace/trace_events.c | 6 +-
kernel/trace/trace_hw_branches.c | 4 +-
kernel/trace/trace_irqsoff.c | 2 +-
kernel/trace/trace_stack.c | 2 +-
kernel/trace/trace_sysprof.c | 2 +-
kernel/trace/trace_workqueue.c | 2 +-
lib/radix-tree.c | 2 +-
lib/random32.c | 2 +-
mm/Makefile | 2 +-
mm/allocpercpu.c | 28 +++
mm/kmemleak-test.c | 6 +-
mm/page-writeback.c | 5 +-
mm/percpu.c | 64 ++++++-
mm/quicklist.c | 2 +-
mm/slab.c | 4 +-
mm/slub.c | 6 +-
mm/swap.c | 4 +-
mm/vmalloc.c | 2 +-
mm/vmstat.c | 2 +-
net/core/drop_monitor.c | 2 +-
net/core/flow.c | 6 +-
net/core/sock.c | 2 +-
net/ipv4/route.c | 2 +-
net/ipv4/syncookies.c | 4 +-
net/ipv6/syncookies.c | 4 +-
net/rds/ib_stats.c | 2 +-
net/rds/iw_stats.c | 2 +-
net/rds/page.c | 2 +-
net/socket.c | 2 +-
170 files changed, 653 insertions(+), 553 deletions(-)
Jesper Nilsson (1):
CRIS: Change DEFINE_PER_CPU of current_pgd to be non volatile.
Tejun Heo (16):
percpu: fix too lazy vunmap cache flushing
percpu: use dynamic percpu allocator as the default percpu allocator
percpu: cleanup percpu array definitions
use-percpu-aligned
percpu: clean up percpu variable definitions
percpu: enforce global definition
alpha: kill unnecessary __used attribute in PER_CPU_ATTRIBUTES
alpha: switch to dynamic percpu allocator
s390: switch to dynamic percpu allocator
x86: fix duplicate free in setup_pcpu_remap() failure path
x86: rename remap percpu first chunk allocator to lpage
x86: prepare setup_pcpu_lpage() for pageattr fix
x86: reorganize cpa_process_alias()
x86: fix pageattr handling for lpage percpu allocator and re-enable it
x86: implement percpu_alloc kernel parameter
x86: ensure percpu lpage doesn't consume too much vmalloc space
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 8:07 [GIT PULL] percpu for 2.6.31 Tejun Heo
@ 2009-06-18 21:22 ` Linus Torvalds
2009-06-18 21:39 ` Andrew Morton
2009-06-18 22:33 ` Tejun Heo
0 siblings, 2 replies; 11+ messages in thread
From: Linus Torvalds @ 2009-06-18 21:22 UTC (permalink / raw)
To: Tejun Heo; +Cc: Ingo Molnar, Linux Kernel Mailing List, Andrew Morton, kyle
On Thu, 18 Jun 2009, Tejun Heo wrote:
>
> Please pull from percpu-for-linus git tree from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
I'm very unhappy with this kind of crap.
Has it been tested AT ALL? Apparently not.
arch/x86/kernel/cpu/mcheck/mce.c:98: error: multiple storage classes in declaration specifiers
arch/x86/kernel/cpu/mcheck/mce.c:98: error: non-static declaration of ‘per_cpu__mces_seen’ follows static declaration
arch/x86/kernel/cpu/mcheck/mce.c:98: note: previous declaration of ‘per_cpu__mces_seen’ was here
.. and tons of other similar errors ..
and it was apparently done on purpose, for no good reason. The bug with
static per-cpu variables is only for some broken architectures.
Even the _documentation_ uses "static DEFINE_PER_CPU(..)" for chissake!
To make matters worse, this whole series was clearly rebased (or applied
from some other queue) just _minutes_ before sending it to me. No wonder
it had zero testing:
- commit:
Date: Thu Jun 18 16:22:05 2009 +0900
- email:
Date: Thu, 18 Jun 2009 17:07:16 +0900
I'm not pulling it. Or rather, I pulled it, ended up doing other work,
noticed the problems, and had to re-do my whole tree because I refuse to
have sh*t like this in the kernel.
And I'm not going to pull trees that get rebased like this with basically
no testing before sending it to me. There's a reason I don't like
rebasing.
Linus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 21:22 ` Linus Torvalds
@ 2009-06-18 21:39 ` Andrew Morton
2009-06-18 22:43 ` Tejun Heo
2009-06-19 6:49 ` Ingo Molnar
2009-06-18 22:33 ` Tejun Heo
1 sibling, 2 replies; 11+ messages in thread
From: Andrew Morton @ 2009-06-18 21:39 UTC (permalink / raw)
To: Linus Torvalds; +Cc: tj, mingo, linux-kernel, kyle
On Thu, 18 Jun 2009 14:22:20 -0700 (PDT)
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Thu, 18 Jun 2009, Tejun Heo wrote:
> >
> > Please pull from percpu-for-linus git tree from:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
>
> I'm very unhappy with this kind of crap.
AFACIT none of these patches have ever been in linux-next. Half or
more of them turned up on the mailing list for the first time two days
ago and there's little evidence that anyone has even looked at them.
If this doesn't mean "you missed 2.6.31" then what does?
Yes, things like this can be messy and hard to develop and maintain
outside the merge window. We understand this. There are special
cases. But when this happens, let's talk about it and see what we can
do! Please let's not pretend that this is an ordinary old git merge
like all the others.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 21:22 ` Linus Torvalds
2009-06-18 21:39 ` Andrew Morton
@ 2009-06-18 22:33 ` Tejun Heo
2009-06-18 22:45 ` Tejun Heo
2009-06-19 1:47 ` Tejun Heo
1 sibling, 2 replies; 11+ messages in thread
From: Tejun Heo @ 2009-06-18 22:33 UTC (permalink / raw)
To: Linus Torvalds
Cc: Ingo Molnar, Linux Kernel Mailing List, Andrew Morton, kyle
Hello, Linus.
Linus Torvalds wrote:
>
> On Thu, 18 Jun 2009, Tejun Heo wrote:
>> Please pull from percpu-for-linus git tree from:
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
>
> I'm very unhappy with this kind of crap.
>
> Has it been tested AT ALL? Apparently not.
>
> arch/x86/kernel/cpu/mcheck/mce.c:98: error: multiple storage classes in declaration specifiers
> arch/x86/kernel/cpu/mcheck/mce.c:98: error: non-static declaration of ‘per_cpu__mces_seen’ follows static declaration
> arch/x86/kernel/cpu/mcheck/mce.c:98: note: previous declaration of ‘per_cpu__mces_seen’ was here
> .. and tons of other similar errors ..
Oops, my apologies. I had them as floating series and apparently used
different base commit when applying them. I did grep run and full yes
build on the original quilt tree but didn't after quiltimport. Sorry.
> and it was apparently done on purpose, for no good reason. The bug with
> static per-cpu variables is only for some broken architectures.
Yes, for two of them s390 and alpha. Another route was to tell the
compiler to generate external references were to use weak attribute
which also required globally unique name. The first take of the
patchset used guard symbols to guarantee variable scope
(static/extern) and uniqueness while using weak attribute for the
actual percpu symbol. It worked but was a bit too complex. Consensus
(at least of the ones involved in the discussion) was limiting percpu
definitions to extern is an acceptable compromise.
> Even the _documentation_ uses "static DEFINE_PER_CPU(..)" for chissake!
Yeap, that was me going through grep output and thinking oh... I'll do
it later and then forget about it. Will update now.
> To make matters worse, this whole series was clearly rebased (or applied
> from some other queue) just _minutes_ before sending it to me. No wonder
> it had zero testing:
>
> - commit:
> Date: Thu Jun 18 16:22:05 2009 +0900
> - email:
> Date: Thu, 18 Jun 2009 17:07:16 +0900
>
> I'm not pulling it. Or rather, I pulled it, ended up doing other work,
> noticed the problems, and had to re-do my whole tree because I refuse to
> have sh*t like this in the kernel.
>
> And I'm not going to pull trees that get rebased like this with basically
> no testing before sending it to me. There's a reason I don't like
> rebasing.
Percpu patches used to run through Ingo's x86 tree (so reached
linux-next from there) but recent changes went out of scope for x86 so
the two patchsets posted here didn't have home. They were posted well
before the merge window (IIRC the first postings were about two months
ago) and went through four and three revision cycles.
The tree was prepared in kind of hurry because I realized that no one
was gonna push it through a few days ago. It's true that these
patches didn't see wider testing in linux-next or any other public
tree, so it seems these should wait for the next merge window. I'll
maintain the percpu tree and push it through linux-next during this
devel cycle.
Sorry about the trouble.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 21:39 ` Andrew Morton
@ 2009-06-18 22:43 ` Tejun Heo
2009-06-19 6:49 ` Ingo Molnar
1 sibling, 0 replies; 11+ messages in thread
From: Tejun Heo @ 2009-06-18 22:43 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linus Torvalds, mingo, linux-kernel, kyle
Hello, Andrew.
Andrew Morton wrote:
> On Thu, 18 Jun 2009 14:22:20 -0700 (PDT)
> Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
>> On Thu, 18 Jun 2009, Tejun Heo wrote:
>>> Please pull from percpu-for-linus git tree from:
>>>
>>> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
>> I'm very unhappy with this kind of crap.
>
> AFACIT none of these patches have ever been in linux-next. Half or
> more of them turned up on the mailing list for the first time two days
> ago and there's little evidence that anyone has even looked at them.
Unfortunately, they grew out of their home so they didn't have proper
path to linux-next but I wasn't that careless. The two patchsets went
through three and four revisions.
percpu-convert-most-archs-to-dynamic-percpu
http://thread.gmane.org/gmane.linux.kernel.cross-arch/3818
http://www.gossamer-threads.com/lists/linux/kernel/1083895
http://thread.gmane.org/gmane.linux.kernel/839059
x86-percpu-fix-pageattr-handling
http://thread.gmane.org/gmane.linux.kernel.cross-arch/3825
http://thread.gmane.org/gmane.linux.kernel/844298
http://article.gmane.org/gmane.linux.kernel/837157
http://thread.gmane.org/gmane.linux.kernel/836771
> If this doesn't mean "you missed 2.6.31" then what does?
>
> Yes, things like this can be messy and hard to develop and maintain
> outside the merge window. We understand this. There are special
> cases. But when this happens, let's talk about it and see what we can
> do! Please let's not pretend that this is an ordinary old git merge
> like all the others.
Sorry. My fault. It used to go through x86 and this was me realizing
that nobody was gonna take care of these patchsets and prepping trees
myself in a hurry. Won't happen again.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 22:33 ` Tejun Heo
@ 2009-06-18 22:45 ` Tejun Heo
2009-06-19 1:47 ` Tejun Heo
1 sibling, 0 replies; 11+ messages in thread
From: Tejun Heo @ 2009-06-18 22:45 UTC (permalink / raw)
To: Linus Torvalds
Cc: Ingo Molnar, Linux Kernel Mailing List, Andrew Morton, kyle
Tejun Heo wrote:
> the two patchsets posted here didn't have home. They were posted well
> before the merge window (IIRC the first postings were about two months
> ago) and went through four and three revision cycles.
Correction: They are four and five weeks old. It somehow felt longer
to me. :-)
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 22:33 ` Tejun Heo
2009-06-18 22:45 ` Tejun Heo
@ 2009-06-19 1:47 ` Tejun Heo
2009-06-19 5:39 ` Ingo Molnar
1 sibling, 1 reply; 11+ messages in thread
From: Tejun Heo @ 2009-06-19 1:47 UTC (permalink / raw)
To: Linus Torvalds
Cc: Ingo Molnar, Linux Kernel Mailing List, Andrew Morton, kyle
Hello, again.
Tejun Heo wrote:
> Oops, my apologies. I had them as floating series and apparently used
> different base commit when applying them. I did grep run and full yes
> build on the original quilt tree but didn't after quiltimport. Sorry.
I digged through git changelogs to find out where it went wrong. I
did use the same base commit when quiltimporting but when I updated
the patches on top of mainline two days ago, I forgot to quilt add the
file and the mce change got committed to the base tree instead of
quilt patch. After pulling the latest master into the quilt branch
yesterday, I updated the series for newcomers and everything worked
fine (as the base tree change got merged by git). quiltimporting of
course lost the base tree change and thinking the output gotta be
identical I didn't test the final git tree.
Anyways, I'm dropping the for-linus branch from percpu tree, fixing it
up, adding patchsets scheduled for .32 release and will try to get it
merged into #linux-next.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-19 1:47 ` Tejun Heo
@ 2009-06-19 5:39 ` Ingo Molnar
2009-06-19 19:39 ` Linus Torvalds
0 siblings, 1 reply; 11+ messages in thread
From: Ingo Molnar @ 2009-06-19 5:39 UTC (permalink / raw)
To: Tejun Heo; +Cc: Linus Torvalds, Linux Kernel Mailing List, Andrew Morton, kyle
* Tejun Heo <tj@kernel.org> wrote:
> Hello, again.
>
> Tejun Heo wrote:
> > Oops, my apologies. I had them as floating series and apparently used
> > different base commit when applying them. I did grep run and full yes
> > build on the original quilt tree but didn't after quiltimport. Sorry.
>
> I digged through git changelogs to find out where it went wrong.
> I did use the same base commit when quiltimporting but when I
> updated the patches on top of mainline two days ago, I forgot to
> quilt add the file and the mce change got committed to the base
> tree instead of quilt patch. After pulling the latest master into
> the quilt branch yesterday, I updated the series for newcomers and
> everything worked fine (as the base tree change got merged by
> git). quiltimporting of course lost the base tree change and
> thinking the output gotta be identical I didn't test the final git
> tree.
>
> Anyways, I'm dropping the for-linus branch from percpu tree,
> fixing it up, adding patchsets scheduled for .32 release and will
> try to get it merged into #linux-next.
Please create a -git based bit for the x86 side (as i asked you
previously) - we can certainly get that upstream sooner after the
necessary amount of testing.
Condolences for trying to improve a dozen SMP architectures at once,
you've ended up with:
- being forced to rebase all the time. (This will happen in the
cycle to come too: just watch as the conflicts in linux-next
mount up with the architecture trees. Your tree will become
crappy quickly due to the combined noise.)
- the 10x patch logistics end up killing your overall quality, let
crap creep in and cause breakage even on x86.
You wasted 3 months of your life on that. Now you've learned not to
do that ever again - i've been there, done that, got the T-shirt.
Just stick your new stuff behind an ARCH_HAS flag, add it to the
architecture(s) you care about and forget about the rest - let the
remaining arch maintainers pick things up in their own pace. You'll
get 90% of the benefits to Linux with just 30% of the work.
( Many wont btw: we still dont have lockdep support in all
architectures - 3 years and counting. It's a highly useful purely
sw feature with zero hardware dependencies. Fortunately it's
well-modularized and the functionality is non-essential. Percpu
allocation is not so lucky as it's essential functionality. )
Ingo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-18 21:39 ` Andrew Morton
2009-06-18 22:43 ` Tejun Heo
@ 2009-06-19 6:49 ` Ingo Molnar
1 sibling, 0 replies; 11+ messages in thread
From: Ingo Molnar @ 2009-06-19 6:49 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linus Torvalds, tj, linux-kernel, kyle
* Andrew Morton <akpm@linux-foundation.org> wrote:
> On Thu, 18 Jun 2009 14:22:20 -0700 (PDT)
> Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
> > On Thu, 18 Jun 2009, Tejun Heo wrote:
> > >
> > > Please pull from percpu-for-linus git tree from:
> > >
> > > git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
> >
> > I'm very unhappy with this kind of crap.
>
> AFACIT none of these patches have ever been in linux-next. Half
> or more of them turned up on the mailing list for the first time
> two days ago and there's little evidence that anyone has even
> looked at them.
Hm, i've seen many of them (for months literally) and you were
definitely Cc:-ed to all of them. The new bits (which i think you
are referring to) are not included in this series - only the old
bits.
I even asked you about them a month ago, whether you'd want to pick
Tejun's bits up into -mm because they are clearly generic VM patches
and they seemed to be falling between the cracks for v2.6.31. I had
two small bits of x86 relevant percpu patches which i'd gladly have
bounced over to you.
Btw., it will be a lot of work for Tejun to go through another 3
months with a patch-set of this magnitude:
170 files changed, 653 insertions(+), 553 deletions(-)
and i suspect it will cause a fair amount of linux-next conflict
resolution overhead as well. So Tejun, if you can get it tested
please consider targeting it for this merge window still. I can
help out with some -tip testig if you want.
Ingo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-19 5:39 ` Ingo Molnar
@ 2009-06-19 19:39 ` Linus Torvalds
2009-06-19 21:08 ` Ingo Molnar
0 siblings, 1 reply; 11+ messages in thread
From: Linus Torvalds @ 2009-06-19 19:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Tejun Heo, Linux Kernel Mailing List, Andrew Morton, kyle
On Fri, 19 Jun 2009, Ingo Molnar wrote:
>
> ( Many wont btw: we still dont have lockdep support in all
> architectures - 3 years and counting. It's a highly useful purely
> sw feature with zero hardware dependencies. Fortunately it's
> well-modularized and the functionality is non-essential. Percpu
> allocation is not so lucky as it's essential functionality. )
When it coems to code coverage, x86 matters _so_ much more than any other
architecture, that verification features like lockdep etc are way more
important on x86 than on anything else.
Sure, there may be locking issues in some arch-specific code, and other
architectures could be better off caring. But the advantage of lockdep for
some pissant architecture that has a very limited user base (maybe lots of
chips, but much more limited _use_ - fewer drivers, fewer workloads etc)
is much lower, since those architectures know that x86 will give them 99%
of the coverage.
So it's quite reasonable to think that other architectures simply care
less.
Linus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] percpu for 2.6.31
2009-06-19 19:39 ` Linus Torvalds
@ 2009-06-19 21:08 ` Ingo Molnar
0 siblings, 0 replies; 11+ messages in thread
From: Ingo Molnar @ 2009-06-19 21:08 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Tejun Heo, Linux Kernel Mailing List, Andrew Morton, kyle
* Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Fri, 19 Jun 2009, Ingo Molnar wrote:
> >
> > ( Many wont btw: we still dont have lockdep support in all
> > architectures - 3 years and counting. It's a highly useful purely
> > sw feature with zero hardware dependencies. Fortunately it's
> > well-modularized and the functionality is non-essential. Percpu
> > allocation is not so lucky as it's essential functionality. )
>
> When it coems to code coverage, x86 matters _so_ much more than
> any other architecture, that verification features like lockdep
> etc are way more important on x86 than on anything else.
>
> Sure, there may be locking issues in some arch-specific code, and
> other architectures could be better off caring. But the advantage
> of lockdep for some pissant architecture that has a very limited
> user base (maybe lots of chips, but much more limited _use_ -
> fewer drivers, fewer workloads etc) is much lower, since those
> architectures know that x86 will give them 99% of the coverage.
>
> So it's quite reasonable to think that other architectures simply
> care less.
Hm, agreed, i accept that point. A minimal architecture can be
implemented in as little as 10-20 KLOC, and the chances of there
being lockups in that code, versus the millions of lines of code
they take advantage of, is proportionately low.
Btw., here's the current lockdep support list:
for N in arch/*/; do printf "%30s: %d\n" $N \
$(git grep -l -w LOCKDEP_SUPPORT $N | wc -l); done | \
sort -t: -n -k 2 -r
arch/x86/: 1
arch/um/: 1
arch/sparc/: 1
arch/sh/: 1
arch/s390/: 1
arch/powerpc/: 1
arch/mips/: 1
arch/blackfin/: 1
arch/avr32/: 1
arch/arm/: 1
arch/xtensa/: 0
arch/parisc/: 0
arch/mn10300/: 0
arch/microblaze/: 0
arch/m68knommu/: 0
arch/m68k/: 0
arch/m32r/: 0
arch/ia64/: 0
arch/h8300/: 0
arch/frv/: 0
arch/cris/: 0
arch/alpha/: 0
Lockdep is supported on 10 architectures, not supported on 12.
We still have regular friction between pre-lockdep and post-lockdep
APIs, such as local_irq_save / raw_local_irq_save. If some generic
code makes use of raw_local_irq_save then non-lockdep architectures
break and the 'offending' tree gets excluded from linux-next.
So there's ongoing cost involved for the core kernel as well and
non-lockdep architectures dont just hurt themselves, they also hurt
core kernel changes, via their incomplete APIs. Such assymetries
could be eliminated without adding lockdep support, by providing 1:1
aliases - but not even this minimal step is done as there's
basically no incentive on the part of these architectures to do it.
Taking advantage of other trees while costing them - that looks a
bit like parasitic behavior to me, in this specific instance of
lockdep support - wouldnt you agree to a certain degree?
Ingo
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-06-19 21:09 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-18 8:07 [GIT PULL] percpu for 2.6.31 Tejun Heo
2009-06-18 21:22 ` Linus Torvalds
2009-06-18 21:39 ` Andrew Morton
2009-06-18 22:43 ` Tejun Heo
2009-06-19 6:49 ` Ingo Molnar
2009-06-18 22:33 ` Tejun Heo
2009-06-18 22:45 ` Tejun Heo
2009-06-19 1:47 ` Tejun Heo
2009-06-19 5:39 ` Ingo Molnar
2009-06-19 19:39 ` Linus Torvalds
2009-06-19 21:08 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox