drm/i915/gvt: devirtualize ->is_valid_gfn
Just call the code directly and move towards the callers. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Zhi Wang <zhi.a.wang@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20220411141403.86980-19-hch@lst.de Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Zhi Wang <zhi.a.wang@intel.com>
This commit is contained in:
parent
b3bece3495
commit
bd73b4b193
4 changed files with 18 additions and 37 deletions
|
|
@ -49,6 +49,22 @@
|
|||
static bool enable_out_of_sync = false;
|
||||
static int preallocated_oos_pages = 8192;
|
||||
|
||||
static bool intel_gvt_is_valid_gfn(struct intel_vgpu *vgpu, unsigned long gfn)
|
||||
{
|
||||
struct kvm *kvm = vgpu->kvm;
|
||||
int idx;
|
||||
bool ret;
|
||||
|
||||
if (!vgpu->attached)
|
||||
return false;
|
||||
|
||||
idx = srcu_read_lock(&kvm->srcu);
|
||||
ret = kvm_is_visible_gfn(kvm, gfn);
|
||||
srcu_read_unlock(&kvm->srcu, idx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* validate a gm address and related range size,
|
||||
* translate it to host gm address
|
||||
|
|
@ -1331,7 +1347,7 @@ static int ppgtt_populate_spt(struct intel_vgpu_ppgtt_spt *spt)
|
|||
ppgtt_set_shadow_entry(spt, &se, i);
|
||||
} else {
|
||||
gfn = ops->get_pfn(&ge);
|
||||
if (!intel_gvt_hypervisor_is_valid_gfn(vgpu, gfn)) {
|
||||
if (!intel_gvt_is_valid_gfn(vgpu, gfn)) {
|
||||
ops->set_pfn(&se, gvt->gtt.scratch_mfn);
|
||||
ppgtt_set_shadow_entry(spt, &se, i);
|
||||
continue;
|
||||
|
|
@ -2315,7 +2331,7 @@ static int emulate_ggtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
|
|||
/* one PTE update may be issued in multiple writes and the
|
||||
* first write may not construct a valid gfn
|
||||
*/
|
||||
if (!intel_gvt_hypervisor_is_valid_gfn(vgpu, gfn)) {
|
||||
if (!intel_gvt_is_valid_gfn(vgpu, gfn)) {
|
||||
ops->set_pfn(&m, gvt->gtt.scratch_mfn);
|
||||
goto out;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ struct intel_gvt_mpt {
|
|||
dma_addr_t dma_addr);
|
||||
|
||||
int (*dma_pin_guest_page)(struct intel_vgpu *vgpu, dma_addr_t dma_addr);
|
||||
bool (*is_valid_gfn)(struct intel_vgpu *vgpu, unsigned long gfn);
|
||||
};
|
||||
|
||||
#endif /* _GVT_HYPERCALL_H_ */
|
||||
|
|
|
|||
|
|
@ -1980,22 +1980,6 @@ static void kvmgt_dma_unmap_guest_page(struct intel_vgpu *vgpu,
|
|||
mutex_unlock(&vgpu->cache_lock);
|
||||
}
|
||||
|
||||
static bool kvmgt_is_valid_gfn(struct intel_vgpu *vgpu, unsigned long gfn)
|
||||
{
|
||||
struct kvm *kvm = vgpu->kvm;
|
||||
int idx;
|
||||
bool ret;
|
||||
|
||||
if (!vgpu->attached)
|
||||
return false;
|
||||
|
||||
idx = srcu_read_lock(&kvm->srcu);
|
||||
ret = kvm_is_visible_gfn(kvm, gfn);
|
||||
srcu_read_unlock(&kvm->srcu, idx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct intel_gvt_mpt kvmgt_mpt = {
|
||||
.host_init = kvmgt_host_init,
|
||||
.host_exit = kvmgt_host_exit,
|
||||
|
|
@ -2005,7 +1989,6 @@ static const struct intel_gvt_mpt kvmgt_mpt = {
|
|||
.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,
|
||||
.is_valid_gfn = kvmgt_is_valid_gfn,
|
||||
};
|
||||
|
||||
struct intel_gvt_host intel_gvt_host = {
|
||||
|
|
|
|||
|
|
@ -157,21 +157,4 @@ intel_gvt_hypervisor_dma_pin_guest_page(struct intel_vgpu *vgpu,
|
|||
return intel_gvt_host.mpt->dma_pin_guest_page(vgpu, dma_addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_gvt_hypervisor_is_valid_gfn - check if a visible gfn
|
||||
* @vgpu: a vGPU
|
||||
* @gfn: guest PFN
|
||||
*
|
||||
* Returns:
|
||||
* true on valid gfn, false on not.
|
||||
*/
|
||||
static inline bool intel_gvt_hypervisor_is_valid_gfn(
|
||||
struct intel_vgpu *vgpu, unsigned long gfn)
|
||||
{
|
||||
if (!intel_gvt_host.mpt->is_valid_gfn)
|
||||
return true;
|
||||
|
||||
return intel_gvt_host.mpt->is_valid_gfn(vgpu, gfn);
|
||||
}
|
||||
|
||||
#endif /* _GVT_MPT_H_ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue