lkml.org 
[lkml]   [2021]   [Jul]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v2 18/69] KVM: Export kvm_make_all_cpus_request() for use in marking VMs as bugged
    Date
    From: Sean Christopherson <sean.j.christopherson@intel.com>

    Export kvm_make_all_cpus_request() and hoist the request helper
    declarations of request up to the KVM_REQ_* definitions in preparation
    for adding a "VM bugged" framework. The framework will add KVM_BUG()
    and KVM_BUG_ON() as alternatives to full BUG()/BUG_ON() for cases where
    KVM has definitely hit a bug (in itself or in silicon) and the VM is all
    but guaranteed to be hosed. Marking a VM bugged will trigger a request
    to all vCPUs to allow arch code to forcefully evict each vCPU from its
    run loop.

    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
    ---
    include/linux/kvm_host.h | 18 +++++++++---------
    1 file changed, 9 insertions(+), 9 deletions(-)

    diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
    index 09618f8a1338..e87f07c5c601 100644
    --- a/include/linux/kvm_host.h
    +++ b/include/linux/kvm_host.h
    @@ -158,6 +158,15 @@ static inline bool is_error_page(struct page *page)
    })
    #define KVM_ARCH_REQ(nr) KVM_ARCH_REQ_FLAGS(nr, 0)

    +bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req,
    + struct kvm_vcpu *except,
    + unsigned long *vcpu_bitmap, cpumask_var_t tmp);
    +bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req);
    +bool kvm_make_all_cpus_request_except(struct kvm *kvm, unsigned int req,
    + struct kvm_vcpu *except);
    +bool kvm_make_cpus_request_mask(struct kvm *kvm, unsigned int req,
    + unsigned long *vcpu_bitmap);
    +
    #define KVM_USERSPACE_IRQ_SOURCE_ID 0
    #define KVM_IRQFD_RESAMPLE_IRQ_SOURCE_ID 1

    @@ -616,7 +625,6 @@ struct kvm {
    #define vcpu_err(vcpu, fmt, ...) \
    kvm_err("vcpu%i " fmt, (vcpu)->vcpu_id, ## __VA_ARGS__)

    -bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req);
    static inline void kvm_vm_bugged(struct kvm *kvm)
    {
    kvm->vm_bugged = true;
    @@ -955,14 +963,6 @@ void kvm_mmu_free_memory_cache(struct kvm_mmu_memory_cache *mc);
    void *kvm_mmu_memory_cache_alloc(struct kvm_mmu_memory_cache *mc);
    #endif

    -bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req,
    - struct kvm_vcpu *except,
    - unsigned long *vcpu_bitmap, cpumask_var_t tmp);
    -bool kvm_make_all_cpus_request_except(struct kvm *kvm, unsigned int req,
    - struct kvm_vcpu *except);
    -bool kvm_make_cpus_request_mask(struct kvm *kvm, unsigned int req,
    - unsigned long *vcpu_bitmap);
    -
    long kvm_arch_dev_ioctl(struct file *filp,
    unsigned int ioctl, unsigned long arg);
    long kvm_arch_vcpu_ioctl(struct file *filp,
    --
    2.25.1
    \
     
     \ /
      Last update: 2021-07-03 00:08    [W:2.165 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site