03 Jan, 2009
1 commit
-
…/git/tip/linux-2.6-tip
* 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (66 commits)
x86: export vector_used_by_percpu_irq
x86: use logical apicid in x2apic_cluster's x2apic_cpu_mask_to_apicid_and()
sched: nominate preferred wakeup cpu, fix
x86: fix lguest used_vectors breakage, -v2
x86: fix warning in arch/x86/kernel/io_apic.c
sched: fix warning in kernel/sched.c
sched: move test_sd_parent() to an SMP section of sched.h
sched: add SD_BALANCE_NEWIDLE at MC and CPU level for sched_mc>0
sched: activate active load balancing in new idle cpus
sched: bias task wakeups to preferred semi-idle packages
sched: nominate preferred wakeup cpu
sched: favour lower logical cpu number for sched_mc balance
sched: framework for sched_mc/smt_power_savings=N
sched: convert BALANCE_FOR_xx_POWER to inline functions
x86: use possible_cpus=NUM to extend the possible cpus allowed
x86: fix cpu_mask_to_apicid_and to include cpu_online_mask
x86: update io_apic.c to the new cpumask code
x86: Introduce topology_core_cpumask()/topology_thread_cpumask()
x86: xen: use smp_call_function_many()
x86: use work_on_cpu in x86/kernel/cpu/mcheck/mce_amd_64.c
...Fixed up trivial conflict in kernel/time/tick-sched.c manually
29 Dec, 2008
1 commit
-
GCC has a bug with __weak alias functions: if the functions are in
the same compilation unit as their call site, GCC can decide to
inline them - and thus rob the linker of the opportunity to override
the weak alias with the real thing.So move all the IRQ handling related __weak symbols to kernel/irq/chip.c.
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar
27 Dec, 2008
1 commit
-
Impact: fix panic on null pointer with sparseirq
Some GCC versions seem to inline the weak global function,
when that function is empty.Work it around, by making the functions return a (dummy) integer.
Signed-off-by: Yinghai
Signed-off-by: Ingo Molnar
26 Dec, 2008
1 commit
-
Impact: cleanup
before CONFIG_SPARSE_IRQ age, for_each_irq_desc() sat in irqnr.h and
could be called from generic code.CONFIG_SPARSE_IRQ breaks this assumption, but SPARSE_IRQ version
for_each_irq_desc() also can move into irqnr.h easily.Also, this patch unifies CONFIG_SPARSE_IRQ and !CONFIG_SPARSE_IRQ
for_each_irq_desc().Signed-off-by: KOSAKI Motohiro
Signed-off-by: Ingo Molnar
25 Dec, 2008
1 commit
19 Dec, 2008
1 commit
-
Signed-off-by: Yinghai Lu
Acked-by: Randy Dunlap
Signed-off-by: Ingo Molnar
17 Dec, 2008
2 commits
-
Conflicts:
arch/x86/kernel/io_apic.cMerge irq/sparseirq here, to resolve conflicts.
-
Impact: improve NUMA handling by migrating irq_desc on smp_affinity changes
if CONFIG_NUMA_MIGRATE_IRQ_DESC is set:
- make irq_desc to go with affinity aka irq_desc moving etc
- call move_irq_desc in irq_complete_move()
- legacy irq_desc is not moved, because they are allocated via static arrayfor logical apic mode, need to add move_desc_in_progress_in_same_domain,
otherwise it will not be moved ==> also could need two phases to get
irq_desc moved.Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar
13 Dec, 2008
2 commits
-
Conflicts:
arch/x86/kernel/io_apic.c
kernel/sched.c
kernel/sched_stats.h -
Impact: change existing irq_chip API
Not much point with gentle transition here: the struct irq_chip's
setaffinity method signature needs to change.Fortunately, not widely used code, but hits a few architectures.
Note: In irq_select_affinity() I save a temporary in by mangling
irq_desc[irq].affinity directly. Ingo, does this break anything?(Folded in fix from KOSAKI Motohiro)
Signed-off-by: Rusty Russell
Signed-off-by: Mike Travis
Reviewed-by: Grant Grundler
Acked-by: Ingo Molnar
Cc: ralf@linux-mips.org
Cc: grundler@parisc-linux.org
Cc: jeremy@xensource.com
Cc: KOSAKI Motohiro
09 Dec, 2008
1 commit
-
Impact: build fix on Alpha
-tip testing found this build failure on the Alpha defconfig:
/home/mingo/tip/fs/proc/stat.c: In function 'show_stat':
/home/mingo/tip/fs/proc/stat.c:48: error: implicit declaration of function 'for_each_irq_desc'
/home/mingo/tip/fs/proc/stat.c:48: error: expected ';' before '{' tokencan not use irq_desc() in stat.c on older architectures.
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar
08 Dec, 2008
1 commit
-
Impact: new feature
Problem on distro kernels: irq_desc[NR_IRQS] takes megabytes of RAM with
NR_CPUS set to large values. The goal is to be able to scale up to much
larger NR_IRQS value without impacting the (important) common case.To solve this, we generalize irq_desc[NR_IRQS] to an (optional) array of
irq_desc pointers.When CONFIG_SPARSE_IRQ=y is used, we use kzalloc_node to get irq_desc,
this also makes the IRQ descriptors NUMA-local (to the site that calls
request_irq()).This gets rid of the irq_cfg[] static array on x86 as well: irq_cfg now
uses desc->chip_data for x86 to store irq_cfg.Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar
23 Nov, 2008
2 commits
-
Impact: reduce struct irq_desc size
struct irq_desc: reorder to remove padding on 64bits
shrinks irq_desc to 128 bytes which saves data space & cache lines
On a generic x86_64/SMP build this reduces the reported data size by
64k.Signed-off-by: Richard Kennedy
Signed-off-by: Ingo Molnar -
Impact: fix kernel-doc build
Fix missing & excess irq.h kernel-doc:
Warning(include/linux/irq.h:182): No description found for parameter 'irq'
Warning(include/linux/irq.h:182): Excess struct/union/enum/typedef member 'affinity_entry' description in 'irq_desc'Signed-off-by: Randy Dunlap
Cc: Andrew Morton
Signed-off-by: Ingo Molnar
10 Nov, 2008
1 commit
-
Impact: preserve user-modified affinities on interrupts
Kumar Galak noticed that commit
18404756765c713a0be4eb1082920c04822ce588 (genirq: Expose default irq
affinity mask (take 3))overrides an already set affinity setting across a free /
request_irq(). Happens e.g. with ifdown/ifup of a network device.Change the logic to mark the affinities as set and keep them
intact. This also fixes the unlocked access to irq_desc in
irq_select_affinity() when called from irq_affinity_proc_write()Signed-off-by: Thomas Gleixner
Signed-off-by: Ingo Molnar
18 Oct, 2008
1 commit
-
Move the irq_desc related iterators out of irq.h, into irqnr.h, also
available via interrupt.h.This way non-genirq (and even non-hardirq) architectures get the
common definitions and iterators.Signed-off-by: Thomas Gleixner
Signed-off-by: Ingo Molnar
16 Oct, 2008
21 commits
-
There is no need for irq_desc here. Even for sparse_irq we can
handle this clever in for_each_irq_nr().Signed-off-by: Thomas Gleixner
-
Signed-off-by: Thomas Gleixner
-
Revert the dynarray changes. They need more thought and polishing.
Signed-off-by: Thomas Gleixner
-
Remove the leftover of sparseirqs.
Signed-off-by: Thomas Gleixner
-
This code is not ready, but we need to rip it out instead of rebasing
as we would lose the APIC/IO_APIC unification otherwise.Signed-off-by: Thomas Gleixner
-
For the non sparse irq case an inline function is perfectly fine.
Signed-off-by: Thomas Gleixner
-
Move all of those to linux/irq.h where they belong.
Signed-off-by: Thomas Gleixner
-
fix non-sparseirq architectures.
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
This has been deprecated for years, the user space irqbalanced utility
works better with numa, has configurable policies, etc...Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
also print out irq no in /proc/interrups and /proc/stat in hex, so could
tell bus/dev/func.Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
when CONFIG_HAVE_SPARSE_IRQ
preallocate some irq_2_iommu entries, and use get_one_free_irq_2_iomm to
get new one and link to irq_desc if needed.else will use dyn_array or static array.
v2:
Signed-off-by: Ingo Molnar -
so later don't need compare with -1U
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
change names:
irq_desc() ==> irq_desc_alloc
__irq_desc() ==> irq_descAlso split a few of the uses in lowlevel x86 code.
v2: need to check if desc is null in smp_irq_move_cleanup
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
So we could remove some duplicated calling to irq_desc
v2: make sure irq_desc in init/main.c is not used without generic_hardirqs
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
There are a handful of loops that go from 0 to nr_irqs and use
get_irq_desc() on them. These would allocate all the irq_desc
entries, regardless of the need for them.Use the smarter for_each_irq_desc() iterator that will only iterate
over the present ones.v2: make sure arch without GENERIC_HARDIRQS work too
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
add an irq_desc accessor that will not allocate any sparse entry
but returns failure if there's no entry present.Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
based on Eric's patch ...
together mold it with dyn_array for irq_desc, will allcate kstat_irqs for
nr_irq_desc alltogether if needed. -- at that point nr_cpus is known already.v2: make sure system without generic_hardirqs works they don't have irq_desc
v3: fix merging
v4: [mingo@elte.hu] fix typo[ mingo@elte.hu ] irq: build fix
fix:
arch/x86/xen/spinlock.c: In function 'xen_spin_lock_slow':
arch/x86/xen/spinlock.c:90: error: 'struct kernel_stat' has no member named 'irqs'Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
irq_timer_state[] is a NR_IRQS sized array that is a side-by array to
the real irq_desc[] array.Integrate that field into the (now dynamic) irq_desc dynamic array and
save some RAM.v2: keep the old way to support arch not support irq_desc
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
add CONFIG_HAVE_SPARSE_IRQ to for use condensed array.
Get rid of irq_desc[] array assumptions.Preallocate 32 irq_desc, and irq_desc() will try to get more.
( No change in functionality is expected anywhere, except the odd build
failure where we missed a code site or where a crossing commit itroduces
new irq_desc[] usage. )v2: according to Eric, change get_irq_desc() to irq_desc()
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar -
Signed-off-by: Yinghai Lu
Signed-off-by: Ingo Molnar
22 Jul, 2008
1 commit
-
Signed-off-by: Thomas Gleixner
19 Jul, 2008
1 commit
12 Jul, 2008
1 commit
-
Generic infrastructure for migrating the irq from the process context in the
presence of CONFIG_GENERIC_PENDING_IRQ.This will be used later for migrating irq in the presence of
interrupt-remapping.Signed-off-by: Suresh Siddha
Cc: akpm@linux-foundation.org
Cc: arjan@linux.intel.com
Cc: andi@firstfloor.org
Cc: ebiederm@xmission.com
Cc: jbarnes@virtuousgeek.org
Cc: steiner@sgi.com
Signed-off-by: Ingo Molnar