Public bug reported: Description: kvm: floating interrupts may get stuck Symptom: Most prominently guest stuck in IPL. Problem: When trying to pick an idle cpu to process the interrupts we can end up messing up, and picking, for example a stopped vcpu, because we first look up an index form the kvm->arch.idle_mask and then use it to obtain a cpu using kvm_get_vcpu() The trouble is, we made kvm->arch.idle_mask to be indexed with cpu_id, while kvm_get_vcpu() expects a vcpu_idx. Hereby vcpu_id is an identifier that comes from userspace, while vcpu_idx'es are given away at vcpu creation FCFS. In practice QEMU does currently the creation of vcpus so that the two end up having the same value. That is why we did not notice this problem for years. Reproduction: Make sure you cpu_id's and cpu_idx'es aren't the same, and try to IPL a guest.
Solution: Make kvm->arch.idle_mask cpu_idx based. Upstream-ID: a3e03bc1368c1bc16e19b001fc96dc7430573cc8 Date: 2021-09-09 Author: Halil Pasic <pa...@linux.ibm.com> Component: kernel ** Affects: linux (Ubuntu) Importance: Undecided Assignee: Skipper Bug Screeners (skipper-screen-team) Status: New ** Tags: architecture-s39064 bugnameltc-195431 severity-high targetmilestone-inin--- ** Tags added: architecture-s39064 bugnameltc-195431 severity-high targetmilestone-inin--- ** Changed in: ubuntu Assignee: (unassigned) => Skipper Bug Screeners (skipper-screen-team) ** Package changed: ubuntu => linux (Ubuntu) -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1951109 Title: [UBUNTU 20.04] kvm: floating interrupts may get stuck Status in linux package in Ubuntu: New Bug description: Description: kvm: floating interrupts may get stuck Symptom: Most prominently guest stuck in IPL. Problem: When trying to pick an idle cpu to process the interrupts we can end up messing up, and picking, for example a stopped vcpu, because we first look up an index form the kvm->arch.idle_mask and then use it to obtain a cpu using kvm_get_vcpu() The trouble is, we made kvm->arch.idle_mask to be indexed with cpu_id, while kvm_get_vcpu() expects a vcpu_idx. Hereby vcpu_id is an identifier that comes from userspace, while vcpu_idx'es are given away at vcpu creation FCFS. In practice QEMU does currently the creation of vcpus so that the two end up having the same value. That is why we did not notice this problem for years. Reproduction: Make sure you cpu_id's and cpu_idx'es aren't the same, and try to IPL a guest. Solution: Make kvm->arch.idle_mask cpu_idx based. Upstream-ID: a3e03bc1368c1bc16e19b001fc96dc7430573cc8 Date: 2021-09-09 Author: Halil Pasic <pa...@linux.ibm.com> Component: kernel To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1951109/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp