Revision f4e61f0c9add3b00bd5f2df3c814d688849b8707 authored by Wanpeng Li on 15 March 2021, 06:55:28 UTC, committed by Paolo Bonzini on 18 March 2021, 17:58:14 UTC
After commit 997acaf6b4b59c (lockdep: report broken irq restoration), the guest splatting below during boot: raw_local_irq_restore() called with IRQs enabled WARNING: CPU: 1 PID: 169 at kernel/locking/irqflag-debug.c:10 warn_bogus_irq_restore+0x26/0x30 Modules linked in: hid_generic usbhid hid CPU: 1 PID: 169 Comm: systemd-udevd Not tainted 5.11.0+ #25 RIP: 0010:warn_bogus_irq_restore+0x26/0x30 Call Trace: kvm_wait+0x76/0x90 __pv_queued_spin_lock_slowpath+0x285/0x2e0 do_raw_spin_lock+0xc9/0xd0 _raw_spin_lock+0x59/0x70 lockref_get_not_dead+0xf/0x50 __legitimize_path+0x31/0x60 legitimize_root+0x37/0x50 try_to_unlazy_next+0x7f/0x1d0 lookup_fast+0xb0/0x170 path_openat+0x165/0x9b0 do_filp_open+0x99/0x110 do_sys_openat2+0x1f1/0x2e0 do_sys_open+0x5c/0x80 __x64_sys_open+0x21/0x30 do_syscall_64+0x32/0x50 entry_SYSCALL_64_after_hwframe+0x44/0xae The new consistency checking, expects local_irq_save() and local_irq_restore() to be paired and sanely nested, and therefore expects local_irq_restore() to be called with irqs disabled. The irqflags handling in kvm_wait() which ends up doing: local_irq_save(flags); safe_halt(); local_irq_restore(flags); instead triggers it. This patch fixes it by using local_irq_disable()/enable() directly. Cc: Thomas Gleixner <tglx@linutronix.de> Reported-by: Dmitry Vyukov <dvyukov@google.com> Signed-off-by: Wanpeng Li <wanpengli@tencent.com> Message-Id: <1615791328-2735-1-git-send-email-wanpengli@tencent.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent c2162e1
File | Mode | Size |
---|---|---|
lxdialog | ||
tests | ||
.gitignore | -rw-r--r-- | 123 bytes |
Makefile | -rw-r--r-- | 7.2 KB |
conf.c | -rw-r--r-- | 15.6 KB |
confdata.c | -rw-r--r-- | 27.2 KB |
expr.c | -rw-r--r-- | 30.0 KB |
expr.h | -rw-r--r-- | 9.6 KB |
gconf-cfg.sh | -rwxr-xr-x | 733 bytes |
gconf.c | -rw-r--r-- | 38.1 KB |
gconf.glade | -rw-r--r-- | 25.0 KB |
images.c | -rw-r--r-- | 6.4 KB |
images.h | -rw-r--r-- | 857 bytes |
lexer.l | -rw-r--r-- | 9.1 KB |
list.h | -rw-r--r-- | 3.7 KB |
lkc.h | -rw-r--r-- | 4.4 KB |
lkc_proto.h | -rw-r--r-- | 1.9 KB |
mconf-cfg.sh | -rwxr-xr-x | 1.4 KB |
mconf.c | -rw-r--r-- | 27.3 KB |
menu.c | -rw-r--r-- | 22.2 KB |
merge_config.sh | -rwxr-xr-x | 4.6 KB |
nconf-cfg.sh | -rwxr-xr-x | 1.3 KB |
nconf.c | -rw-r--r-- | 38.1 KB |
nconf.gui.c | -rw-r--r-- | 14.8 KB |
nconf.h | -rw-r--r-- | 1.8 KB |
parser.y | -rw-r--r-- | 15.3 KB |
preprocess.c | -rw-r--r-- | 11.0 KB |
qconf-cfg.sh | -rwxr-xr-x | 594 bytes |
qconf.cc | -rw-r--r-- | 43.4 KB |
qconf.h | -rw-r--r-- | 6.4 KB |
streamline_config.pl | -rwxr-xr-x | 16.7 KB |
symbol.c | -rw-r--r-- | 28.6 KB |
util.c | -rw-r--r-- | 2.2 KB |
Computing file changes ...