acrn-kernel/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
Makefile ARM64: perf: add support for perf registers API 2014-03-13 11:22:37 +00:00
arm64ksyms.c
asm-offsets.c
cpu_ops.c
cputable.c
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
entry.S arm64: fix typo in entry.S 2014-01-13 13:55:13 +00:00
fpsimd.c
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
insn.c arm64: introduce aarch64_insn_gen_{nop|branch_imm}() helper functions 2014-01-08 15:21:29 +00:00
io.c
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
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
setup.c arm64: Use bus notifiers to set per-device coherent DMA ops 2014-05-03 22:20:34 +01:00
signal.c
signal32.c
sleep.S
smp.c arm64: topology: Implement basic CPU topology support 2014-03-04 10:30:07 +00:00
smp_spin_table.c arm64: smp: make local symbol static 2014-03-13 11:22:41 +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
sys.c
sys32.S
sys_compat.c
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
vdso.c arm64: vdso: clean up vdso_pagelist initialization 2014-02-26 11:16:30 +00:00
vmlinux.lds.S