lkml.org 
[lkml]   [2021]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 20/29] drm/i915/gvt: devirtualize ->{enable,disable}_page_track
    Date
    Just call the kvmgt functions directly.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    drivers/gpu/drm/i915/gvt/gvt.h | 3 +++
    drivers/gpu/drm/i915/gvt/hypercall.h | 2 --
    drivers/gpu/drm/i915/gvt/kvmgt.c | 6 ++----
    drivers/gpu/drm/i915/gvt/mpt.h | 28 ---------------------------
    drivers/gpu/drm/i915/gvt/page_track.c | 8 ++++----
    5 files changed, 9 insertions(+), 38 deletions(-)

    diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h
    index b0bd52921b55e..28e405e00fecd 100644
    --- a/drivers/gpu/drm/i915/gvt/gvt.h
    +++ b/drivers/gpu/drm/i915/gvt/gvt.h
    @@ -764,6 +764,9 @@ void intel_gvt_debugfs_remove_vgpu(struct intel_vgpu *vgpu);
    void intel_gvt_debugfs_init(struct intel_gvt *gvt);
    void intel_gvt_debugfs_clean(struct intel_gvt *gvt);

    +int intel_gvt_page_track_add(struct intel_vgpu *info, u64 gfn);
    +int intel_gvt_page_track_remove(struct intel_vgpu *info, u64 gfn);
    +
    #include "trace.h"
    #include "mpt.h"

    diff --git a/drivers/gpu/drm/i915/gvt/hypercall.h b/drivers/gpu/drm/i915/gvt/hypercall.h
    index dbde492cafc84..ded13a63ab663 100644
    --- a/drivers/gpu/drm/i915/gvt/hypercall.h
    +++ b/drivers/gpu/drm/i915/gvt/hypercall.h
    @@ -45,8 +45,6 @@ struct intel_vgpu;
    struct intel_gvt_mpt {
    int (*host_init)(struct device *dev, void *gvt);
    void (*host_exit)(struct device *dev, void *gvt);
    - int (*enable_page_track)(struct intel_vgpu *vgpu, u64 gfn);
    - int (*disable_page_track)(struct intel_vgpu *vgpu, u64 gfn);

    int (*dma_map_guest_page)(struct intel_vgpu *vgpu, unsigned long gfn,
    unsigned long size, dma_addr_t *dma_addr);
    diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c
    index 3bc400629920d..4795d7c223ad7 100644
    --- a/drivers/gpu/drm/i915/gvt/kvmgt.c
    +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
    @@ -1684,7 +1684,7 @@ static void kvmgt_host_exit(struct device *dev, void *gvt)
    intel_gvt_cleanup_vgpu_type_groups((struct intel_gvt *)gvt);
    }

    -static int kvmgt_page_track_add(struct intel_vgpu *info, u64 gfn)
    +int intel_gvt_page_track_add(struct intel_vgpu *info, u64 gfn)
    {
    struct kvm *kvm = info->kvm;
    struct kvm_memory_slot *slot;
    @@ -1714,7 +1714,7 @@ static int kvmgt_page_track_add(struct intel_vgpu *info, u64 gfn)
    return 0;
    }

    -static int kvmgt_page_track_remove(struct intel_vgpu *info, u64 gfn)
    +int intel_gvt_page_track_remove(struct intel_vgpu *info, u64 gfn)
    {
    struct kvm *kvm = info->kvm;
    struct kvm_memory_slot *slot;
    @@ -1950,8 +1950,6 @@ static void kvmgt_dma_unmap_guest_page(struct intel_vgpu *vgpu,
    static const struct intel_gvt_mpt kvmgt_mpt = {
    .host_init = kvmgt_host_init,
    .host_exit = kvmgt_host_exit,
    - .enable_page_track = kvmgt_page_track_add,
    - .disable_page_track = kvmgt_page_track_remove,
    .dma_map_guest_page = kvmgt_dma_map_guest_page,
    .dma_unmap_guest_page = kvmgt_dma_unmap_guest_page,
    .dma_pin_guest_page = kvmgt_dma_pin_guest_page,
    diff --git a/drivers/gpu/drm/i915/gvt/mpt.h b/drivers/gpu/drm/i915/gvt/mpt.h
    index 2d4bb6eaa08e3..d2723ac8bb044 100644
    --- a/drivers/gpu/drm/i915/gvt/mpt.h
    +++ b/drivers/gpu/drm/i915/gvt/mpt.h
    @@ -71,34 +71,6 @@ static inline void intel_gvt_hypervisor_host_exit(struct device *dev, void *gvt)
    intel_gvt_host.mpt->host_exit(dev, gvt);
    }

    -/**
    - * intel_gvt_hypervisor_enable_page_track - track a guest page
    - * @vgpu: a vGPU
    - * @gfn: the gfn of guest
    - *
    - * Returns:
    - * Zero on success, negative error code if failed.
    - */
    -static inline int intel_gvt_hypervisor_enable_page_track(
    - struct intel_vgpu *vgpu, unsigned long gfn)
    -{
    - return intel_gvt_host.mpt->enable_page_track(vgpu, gfn);
    -}
    -
    -/**
    - * intel_gvt_hypervisor_disable_page_track - untrack a guest page
    - * @vgpu: a vGPU
    - * @gfn: the gfn of guest
    - *
    - * Returns:
    - * Zero on success, negative error code if failed.
    - */
    -static inline int intel_gvt_hypervisor_disable_page_track(
    - struct intel_vgpu *vgpu, unsigned long gfn)
    -{
    - return intel_gvt_host.mpt->disable_page_track(vgpu, gfn);
    -}
    -
    /**
    * intel_gvt_hypervisor_dma_map_guest_page - setup dma map for guest page
    * @vgpu: a vGPU
    diff --git a/drivers/gpu/drm/i915/gvt/page_track.c b/drivers/gpu/drm/i915/gvt/page_track.c
    index 84856022528ee..3375b51c75f1e 100644
    --- a/drivers/gpu/drm/i915/gvt/page_track.c
    +++ b/drivers/gpu/drm/i915/gvt/page_track.c
    @@ -87,7 +87,7 @@ void intel_vgpu_unregister_page_track(struct intel_vgpu *vgpu,
    track = radix_tree_delete(&vgpu->page_track_tree, gfn);
    if (track) {
    if (track->tracked)
    - intel_gvt_hypervisor_disable_page_track(vgpu, gfn);
    + intel_gvt_page_track_remove(vgpu, gfn);
    kfree(track);
    }
    }
    @@ -112,7 +112,7 @@ int intel_vgpu_enable_page_track(struct intel_vgpu *vgpu, unsigned long gfn)
    if (track->tracked)
    return 0;

    - ret = intel_gvt_hypervisor_enable_page_track(vgpu, gfn);
    + ret = intel_gvt_page_track_add(vgpu, gfn);
    if (ret)
    return ret;
    track->tracked = true;
    @@ -139,7 +139,7 @@ int intel_vgpu_disable_page_track(struct intel_vgpu *vgpu, unsigned long gfn)
    if (!track->tracked)
    return 0;

    - ret = intel_gvt_hypervisor_disable_page_track(vgpu, gfn);
    + ret = intel_gvt_page_track_remove(vgpu, gfn);
    if (ret)
    return ret;
    track->tracked = false;
    @@ -172,7 +172,7 @@ int intel_vgpu_page_track_handler(struct intel_vgpu *vgpu, u64 gpa,

    if (unlikely(vgpu->failsafe)) {
    /* Remove write protection to prevent furture traps. */
    - intel_vgpu_disable_page_track(vgpu, gpa >> PAGE_SHIFT);
    + intel_gvt_page_track_remove(vgpu, gpa >> PAGE_SHIFT);
    } else {
    ret = page_track->handler(page_track, gpa, data, bytes);
    if (ret)
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-11-02 08:09    [W:4.483 / U:0.296 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site