Commit 4050dab5 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Zhi Wang
Browse files

drm/i915/gvt: devirtualize ->gfn_to_mfn

parent bd73b4b1
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1178,15 +1178,16 @@ static int is_2MB_gtt_possible(struct intel_vgpu *vgpu,
	struct intel_gvt_gtt_entry *entry)
{
	const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
	unsigned long pfn;
	kvm_pfn_t pfn;

	if (!HAS_PAGE_SIZES(vgpu->gvt->gt->i915, I915_GTT_PAGE_SIZE_2M))
		return 0;

	pfn = intel_gvt_hypervisor_gfn_to_mfn(vgpu, ops->get_pfn(entry));
	if (pfn == INTEL_GVT_INVALID_ADDR)
	if (!vgpu->attached)
		return -EINVAL;
	pfn = gfn_to_pfn(vgpu->kvm, ops->get_pfn(entry));
	if (is_error_noslot_pfn(pfn))
		return -EINVAL;

	return PageTransHuge(pfn_to_page(pfn));
}

+0 −1
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ struct intel_gvt_mpt {
	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);
	unsigned long (*gfn_to_mfn)(struct intel_vgpu *vgpu, unsigned long gfn);

	int (*dma_map_guest_page)(struct intel_vgpu *vgpu, unsigned long gfn,
				  unsigned long size, dma_addr_t *dma_addr);
+0 −16
Original line number Diff line number Diff line
@@ -1874,21 +1874,6 @@ void intel_vgpu_detach_regions(struct intel_vgpu *vgpu)
	vgpu->region = NULL;
}

static unsigned long kvmgt_gfn_to_pfn(struct intel_vgpu *vgpu,
		unsigned long gfn)
{
	kvm_pfn_t pfn;

	if (!vgpu->attached)
		return INTEL_GVT_INVALID_ADDR;

	pfn = gfn_to_pfn(vgpu->kvm, gfn);
	if (is_error_noslot_pfn(pfn))
		return INTEL_GVT_INVALID_ADDR;

	return pfn;
}

static int kvmgt_dma_map_guest_page(struct intel_vgpu *vgpu, unsigned long gfn,
		unsigned long size, dma_addr_t *dma_addr)
{
@@ -1985,7 +1970,6 @@ static const struct intel_gvt_mpt kvmgt_mpt = {
	.host_exit = kvmgt_host_exit,
	.enable_page_track = kvmgt_page_track_add,
	.disable_page_track = kvmgt_page_track_remove,
	.gfn_to_mfn = kvmgt_gfn_to_pfn,
	.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,
+0 −14
Original line number Diff line number Diff line
@@ -99,20 +99,6 @@ static inline int intel_gvt_hypervisor_disable_page_track(
	return intel_gvt_host.mpt->disable_page_track(vgpu, gfn);
}

/**
 * intel_gvt_hypervisor_gfn_to_mfn - translate a GFN to MFN
 * @vgpu: a vGPU
 * @gpfn: guest pfn
 *
 * Returns:
 * MFN on success, INTEL_GVT_INVALID_ADDR if failed.
 */
static inline unsigned long intel_gvt_hypervisor_gfn_to_mfn(
		struct intel_vgpu *vgpu, unsigned long gfn)
{
	return intel_gvt_host.mpt->gfn_to_mfn(vgpu, gfn);
}

/**
 * intel_gvt_hypervisor_dma_map_guest_page - setup dma map for guest page
 * @vgpu: a vGPU