linux/arch/arm64/kernel
Sudeep Holla 601c942176 arm64: use cpu_online_mask when using forced irq_set_affinity
Commit 01f8fa4f01d8("genirq: Allow forcing cpu affinity of interrupts")
enabled the forced irq_set_affinity which previously refused to route an
interrupt to an offline cpu.

Commit ffde1de64012("irqchip: Gic: Support forced affinity setting")
implements this force logic and disables the cpu online check for GIC
interrupt controller.

When __cpu_disable calls migrate_irqs, it disables the current cpu in
cpu_online_mask and uses forced irq_set_affinity to migrate the IRQs
away from the cpu but passes affinity mask with the cpu being offlined
also included in it.

When calling irq_set_affinity with force == true in a cpu hotplug path,
the caller must ensure that the cpu being offlined is not present in the
affinity mask or it may be selected as the target CPU, leading to the
interrupt not being migrated.

This patch uses cpu_online_mask when using forced irq_set_affinity so
that the IRQs are properly migrated away.

Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-05-12 16:25:07 +01:00
..
vdso arm64: vdso: fix coarse clock handling 2014-02-05 11:55:30 +00:00
.gitignore arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
arm64ksyms.c arm64: use generic strnlen_user and strncpy_from_user functions 2013-12-19 17:43:06 +00:00
asm-offsets.c arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00:00
cpu_ops.c arm64: Slightly improve the warning on CPU0 enable-method 2013-10-31 16:37:26 +00:00
cputable.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
debug-monitors.c arm64: debug: remove noisy, pointless warning 2014-04-25 16:46:50 +01:00
early_printk.c arm64: fixmap: fix missing sub-page offset for earlyprintk 2014-05-03 22:20:31 +01:00
entry-fpsimd.S arm64: move FP-SIMD save/restore code to a macro 2012-12-05 11:26:50 +00:00
entry.S arm64: fix typo in entry.S 2014-01-13 13:55:13 +00:00
fpsimd.c arm64: kernel: implement fpsimd CPU PM notifier 2013-12-16 17:17:32 +00:00
head.S - Documentation clarification on CPU topology and booting requirements 2014-04-08 12:06:03 -07:00
hw_breakpoint.c arm64, hw_breakpoint.c: Fix CPU hotplug callback registration 2014-03-20 13:43:44 +01:00
hyp-stub.S arm64: add hypervisor stub 2012-12-05 11:26:49 +00:00
insn.c arm64: introduce aarch64_insn_gen_{nop|branch_imm}() helper functions 2014-01-08 15:21:29 +00:00
io.c arm64: Device specific operations 2012-09-17 13:42:04 +01:00
irq.c arm64: use cpu_online_mask when using forced irq_set_affinity 2014-05-12 16:25:07 +01:00
jump_label.c arm64, jump label: optimize jump label implementation 2014-01-08 15:23:53 +00:00
kgdb.c arm64: KGDB: Add step debugging support 2014-02-26 11:16:25 +00:00
kuser32.S arm64: atomics: fix use of acquire + release for full barrier semantics 2014-02-07 16:45:43 +00:00
Makefile ARM64: perf: add support for perf registers API 2014-03-13 11:22:37 +00:00
module.c arm64: move encode_insn_immediate() from module.c to insn.c 2014-01-08 15:21:29 +00:00
perf_event.c arm64: fix !CONFIG_COMPAT build failures 2014-04-06 23:25:04 +01:00
perf_regs.c arm64: fix !CONFIG_COMPAT build failures 2014-04-06 23:25:04 +01:00
process.c - KGDB support for arm64 2014-03-31 15:01:45 -07:00
psci.c arm64: remove return value form psci_init() 2014-02-28 14:14:53 +00:00
ptrace.c arm64: ptrace: avoid using HW_BREAKPOINT_EMPTY for disabled events 2013-12-19 17:41:25 +00:00
setup.c arm64: Use bus notifiers to set per-device coherent DMA ops 2014-05-03 22:20:34 +01:00
signal32.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-11-13 15:34:18 +09:00
signal.c arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
sleep.S arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00:00
smp_spin_table.c arm64: smp: make local symbol static 2014-03-13 11:22:41 +00:00
smp.c arm64: topology: Implement basic CPU topology support 2014-03-04 10:30:07 +00:00
stacktrace.c ARM64: unwind: Fix PC calculation 2014-02-17 09:16:33 +00:00
suspend.c arm64: kernel: fix per-cpu offset restore on resume 2014-01-24 14:27:40 +00:00
sys32.S arm64: compat: correct register concatenation for syscall wrappers 2013-10-25 15:59:36 +01:00
sys_compat.c compat: generic compat_sys_sched_rr_get_interval() implementation 2012-12-17 17:15:18 -08:00
sys.c arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
time.c arm64: init: Move of_clk_init to time_init 2014-04-25 18:15:56 +01:00
topology.c arm64: topology: Implement basic CPU topology support 2014-03-04 10:30:07 +00:00
traps.c arm64: debug: consolidate software breakpoint handlers 2013-06-12 11:23:02 +01:00
vdso.c arm64: vdso: clean up vdso_pagelist initialization 2014-02-26 11:16:30 +00:00
vmlinux.lds.S arm64: Remove unused __data_loc variable 2013-12-20 12:04:48 +00:00