Re: [PATCH v5 0/8] KVM: Various fixes and improvements around kicking vCPUs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/09/21 09:51, Vitaly Kuznetsov wrote:
Changes since v4 (Sean):
- Add Reviewed-by: tag to PATCHes 3 and 5.
- Drop unneeded 'vcpu' initialization from PATCH4.
- Return -ENOMEM from kvm_init() when cpumask allocation fails and drop
  unnecessary braces (PATCH 7).
- Drop cpumask_available() check from kvm_kick_many_cpus() and convert
  kvm_make_vcpu_request()'s parameter from 'cpumask_var_t' to
  'struct cpumask *' (PATCH 8)

This series is a continuation to Sean's "[PATCH 0/2] VM: Fix a benign race
in kicking vCPUs" work and v2 for my "KVM: Optimize
kvm_make_vcpus_request_mask() a bit"/"KVM: x86: Fix stack-out-of-bounds
memory access from ioapic_write_indirect()" patchset.

Now queued 3-4-5-7-8 as well, thanks.

Paolo

 From Sean:

"Fix benign races when kicking vCPUs where the task doing the kicking can
consume a stale vcpu->cpu.  The races are benign because of the
impliciations of task migration with respect to interrupts and being in
guest mode, but IMO they're worth fixing if only as an excuse to
document the flows.

Patch 2 is a tangentially related cleanup to prevent future me from
trying to get rid of the NULL check on the cpumask parameters, which
_looks_ like it can't ever be NULL, but has a subtle edge case due to the
way CONFIG_CPUMASK_OFFSTACK=y handles cpumasks."

Patch3 is a preparation to untangling kvm_make_all_cpus_request_except()
and kvm_make_vcpus_request_mask().

Patch4 is a minor optimization for kvm_make_vcpus_request_mask() for big
guests.

Patch5 is a minor cleanup.

Patch6 fixes a real problem with ioapic_write_indirect() KVM does
out-of-bounds access to stack memory.

Patches7 and 8 get rid of dynamic cpumask allocation for kicking vCPUs.

Sean Christopherson (2):
   KVM: Clean up benign vcpu->cpu data races when kicking vCPUs
   KVM: KVM: Use cpumask_available() to check for NULL cpumask when
     kicking vCPUs

Vitaly Kuznetsov (6):
   KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with
     vcpu_mask==NULL
   KVM: Optimize kvm_make_vcpus_request_mask() a bit
   KVM: Drop 'except' parameter from kvm_make_vcpus_request_mask()
   KVM: x86: Fix stack-out-of-bounds memory access from
     ioapic_write_indirect()
   KVM: Pre-allocate cpumasks for kvm_make_all_cpus_request_except()
   KVM: Make kvm_make_vcpus_request_mask() use pre-allocated
     cpu_kick_mask

  arch/x86/include/asm/kvm_host.h |   1 -
  arch/x86/kvm/hyperv.c           |  18 ++---
  arch/x86/kvm/ioapic.c           |  10 +--
  arch/x86/kvm/x86.c              |   8 +--
  include/linux/kvm_host.h        |   3 +-
  virt/kvm/kvm_main.c             | 115 +++++++++++++++++++++++---------
  6 files changed, 101 insertions(+), 54 deletions(-)





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux