Commit 91879bba authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Zhi Wang
Browse files

drm/i915/gvt: devirtualize dma_pin_guest_page



Just call the function directly and remove a pointless wrapper.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarZhi Wang <zhi.a.wang@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20220411141403.86980-23-hch@lst.de


Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarZhi Wang <zhi.a.wang@intel.com>
parent 8398eee8
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -42,18 +42,6 @@

#define GEN8_DECODE_PTE(pte) (pte & GENMASK_ULL(63, 12))

static int vgpu_pin_dma_address(struct intel_vgpu *vgpu,
				unsigned long size,
				dma_addr_t dma_addr)
{
	int ret = 0;

	if (intel_gvt_hypervisor_dma_pin_guest_page(vgpu, dma_addr))
		ret = -EINVAL;

	return ret;
}

static int vgpu_gem_get_pages(
		struct drm_i915_gem_object *obj)
{
@@ -89,7 +77,7 @@ static int vgpu_gem_get_pages(
	for_each_sg(st->sgl, sg, page_num, i) {
		dma_addr_t dma_addr =
			GEN8_DECODE_PTE(readq(&gtt_entries[i]));
		if (vgpu_pin_dma_address(vgpu, PAGE_SIZE, dma_addr)) {
		if (intel_gvt_dma_pin_guest_page(vgpu, dma_addr)) {
			ret = -EINVAL;
			goto out;
		}
+1 −0
Original line number Diff line number Diff line
@@ -767,6 +767,7 @@ 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);
int intel_gvt_dma_pin_guest_page(struct intel_vgpu *vgpu, dma_addr_t dma_addr);
int intel_gvt_dma_map_guest_page(struct intel_vgpu *vgpu, unsigned long gfn,
		unsigned long size, dma_addr_t *dma_addr);
void intel_gvt_dma_unmap_guest_page(struct intel_vgpu *vgpu,
+0 −2
Original line number Diff line number Diff line
@@ -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 (*dma_pin_guest_page)(struct intel_vgpu *vgpu, dma_addr_t dma_addr);
};

#endif /* _GVT_HYPERCALL_H_ */
+1 −3
Original line number Diff line number Diff line
@@ -1921,8 +1921,7 @@ int intel_gvt_dma_map_guest_page(struct intel_vgpu *vgpu, unsigned long gfn,
	return ret;
}

static int kvmgt_dma_pin_guest_page(struct intel_vgpu *vgpu,
		dma_addr_t dma_addr)
int intel_gvt_dma_pin_guest_page(struct intel_vgpu *vgpu, dma_addr_t dma_addr)
{
	struct gvt_dma *entry;
	int ret = 0;
@@ -1968,7 +1967,6 @@ void intel_gvt_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,
	.dma_pin_guest_page = kvmgt_dma_pin_guest_page,
};

struct intel_gvt_host intel_gvt_host = {
+0 −15
Original line number Diff line number Diff line
@@ -71,19 +71,4 @@ static inline void intel_gvt_hypervisor_host_exit(struct device *dev, void *gvt)
	intel_gvt_host.mpt->host_exit(dev, gvt);
}

/**
 * intel_gvt_hypervisor_dma_pin_guest_page - pin guest dma buf
 * @vgpu: a vGPU
 * @dma_addr: guest dma addr
 *
 * Returns:
 * 0 on success, negative error code if failed.
 */
static inline int
intel_gvt_hypervisor_dma_pin_guest_page(struct intel_vgpu *vgpu,
					dma_addr_t dma_addr)
{
	return intel_gvt_host.mpt->dma_pin_guest_page(vgpu, dma_addr);
}

#endif /* _GVT_MPT_H_ */