Thomas Gleixner
a33a5d2d16
genirq/generic_pending: Do not lose pending affinity update
...
The generic pending interrupt mechanism moves interrupts from the interrupt
handler on the original target CPU to the new destination CPU. This is
required for x86 and ia64 due to the way the interrupt delivery and
acknowledge works if the interrupts are not remapped.
However that update can fail for various reasons. Some of them are valid
reasons to discard the pending update, but the case, when the previous move
has not been fully cleaned up is not a legit reason to fail.
Check the return value of irq_do_set_affinity() for -EBUSY, which indicates
a pending cleanup, and rearm the pending move in the irq dexcriptor so it's
tried again when the next interrupt arrives.
Fixes: 996c591227d9 ("x86/irq: Plug vector cleanup race")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Song Liu <songliubraving@fb.com>
Cc: Joerg Roedel <jroedel@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <liu.song.a23@gmail.com>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: stable@vger.kernel.org
Cc: Mike Travis <mike.travis@hpe.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Tariq Toukan <tariqt@mellanox.com>
Link: https://lkml.kernel.org/r/20180604162224.386544292@linutronix.de
2018-06-06 15:18:19 +02:00
..
bpf
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2018-05-25 19:54:42 -07:00
cgroup
Merge branch 'for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2018-04-03 18:00:13 -07:00
configs
debug
* Fix 2032 time access issues and new compiler warnings
2018-04-12 10:21:19 -07:00
events
perf/core: Fix possible Spectre-v1 indexing for ->aux_pages[]
2018-05-05 08:37:27 +02:00
gcov
irq
genirq/generic_pending: Do not lose pending affinity update
2018-06-06 15:18:19 +02:00
livepatch
livepatch: Allow to call a custom callback when freeing shadow variables
2018-04-17 13:42:48 +02:00
locking
locking/percpu-rwsem: Annotate rwsem ownership transfer by setting RWSEM_OWNER_UNKNOWN
2018-05-16 11:45:16 +02:00
power
PM / QoS: mark expected switch fall-throughs
2018-04-09 13:49:40 +02:00
printk
New features:
2018-04-10 11:27:30 -07:00
rcu
sched
sched/headers: Fix typo
2018-05-31 12:27:13 +02:00
time
tick/broadcast: Use for_each_cpu() specially on UP kernels
2018-05-15 22:45:54 +02:00
trace
tracing: Make the snapshot trigger work with instances
2018-05-28 12:49:32 -04:00
.gitignore
acct.c
async.c
audit.c
audit/stable-4.17 PR 20180403
2018-04-06 15:01:25 -07:00
audit.h
audit_fsnotify.c
audit_tree.c
audit_watch.c
auditfilter.c
auditsc.c
backtracetest.c
bounds.c
capability.c
compat.c
compat: fix 4-byte infoleak via uninitialized struct field
2018-05-10 17:51:58 -07:00
configs.c
context_tracking.c
cpu.c
cpu_pm.c
crash_core.c
kexec: export PG_swapbacked to VMCOREINFO
2018-04-13 17:10:27 -07:00
crash_dump.c
cred.c
delayacct.c
dma.c
elfcore.c
exec_domain.c
exit.c
kernel: use kernel_wait4() instead of sys_wait4()
2018-04-02 20:14:51 +02:00
extable.c
fail_function.c
fork.c
fork: unconditionally clear stack on fork
2018-04-20 17:18:35 -07:00
freezer.c
futex.c
futex_compat.c
groups.c
hung_task.c
irq_work.c
jump_label.c
kallsyms.c
kcmp.c
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kcov.c
kexec.c
kexec: call do_kexec_load() in compat syscall directly
2018-04-02 20:15:01 +02:00
kexec_core.c
kexec_file.c
kernel/kexec_file.c: allow archs to set purgatory load address
2018-04-13 17:10:28 -07:00
kexec_internal.h
kmod.c
kprobes.c
kprobes: Fix random address output of blacklist file
2018-04-25 10:27:56 -04:00
ksysfs.c
kthread.c
kthread: Allow kthread_park() on a parked kthread
2018-05-25 08:03:51 +02:00
latencytop.c
Makefile
memremap.c
module-internal.h
module.c
init: fix false positives in W+X checking
2018-05-11 17:28:45 -07:00
module_signing.c
notifier.c
nsproxy.c
padata.c
panic.c
taint: add taint for randstruct
2018-04-11 10:28:35 -07:00
params.c
kernel/params.c: downgrade warning for unsafe parameters
2018-04-11 10:28:37 -07:00
pid.c
xarray: add the xa_lock to the radix_tree_root
2018-04-11 10:28:39 -07:00
pid_namespace.c
Merge branch 'userns-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2018-04-03 19:15:32 -07:00
profile.c
ptrace.c
range.c
reboot.c
relay.c
resource.c
resource: fix integer overflow at reallocation
2018-04-13 17:10:27 -07:00
seccomp.c
seccomp: Move speculation migitation control to arch code
2018-05-05 00:51:44 +02:00
signal.c
sched/core: Introduce set_special_state()
2018-05-04 07:54:54 +02:00
smp.c
smpboot.c
smpboot.h
softirq.c
stacktrace.c
stop_machine.c
stop_machine, sched: Fix migrate_swap() vs. active_balance() deadlock
2018-05-03 07:38:03 +02:00
sys.c
kernel/sys.c: fix potential Spectre v1 issue
2018-05-25 18:12:11 -07:00
sys_ni.c
syscalls/core: Prepare CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y for compat syscalls
2018-04-05 16:59:38 +02:00
sysctl.c
kernel/sysctl.c: add kdoc comments to do_proc_do{u}intvec_minmax_conv_param
2018-04-11 10:28:38 -07:00
sysctl_binary.c
staging: irda: remove remaining remants of irda code removal
2018-04-16 11:26:49 +02:00
task_work.c
taskstats.c
test_kprobes.c
torture.c
tracepoint.c
tracepoint: Do not warn on ENOMEM
2018-04-30 12:09:56 -04:00
tsacct.c
ucount.c
headers: untangle kmemleak.h from mm.h
2018-04-05 21:36:27 -07:00
uid16.c
fs: add do_fchownat(), ksys_fchown() helpers and ksys_{,l}chown() wrappers
2018-04-02 20:15:59 +02:00
uid16.h
kernel: provide ksys_*() wrappers for syscalls called by kernel/uid16.c
2018-04-02 20:15:30 +02:00
umh.c
kernel: use kernel_wait4() instead of sys_wait4()
2018-04-02 20:14:51 +02:00
up.c
user-return-notifier.c
user.c
user_namespace.c
utsname.c
uts: create "struct uts_namespace" from kmem_cache
2018-04-11 10:28:35 -07:00
utsname_sysctl.c
watchdog.c
watchdog_hld.c
workqueue.c
Merge branch 'for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2018-04-03 18:00:13 -07:00
workqueue_internal.h