Lines Matching refs:vgpu
47 int intel_vgpu_gpa_to_mmio_offset(struct intel_vgpu *vgpu, u64 gpa) in intel_vgpu_gpa_to_mmio_offset() argument
49 u64 gttmmio_gpa = intel_vgpu_get_bar_gpa(vgpu, PCI_BASE_ADDRESS_0); in intel_vgpu_gpa_to_mmio_offset()
60 static void failsafe_emulate_mmio_rw(struct intel_vgpu *vgpu, u64 pa, in failsafe_emulate_mmio_rw() argument
67 if (!vgpu || !p_data) in failsafe_emulate_mmio_rw()
70 gvt = vgpu->gvt; in failsafe_emulate_mmio_rw()
71 mutex_lock(&vgpu->vgpu_lock); in failsafe_emulate_mmio_rw()
72 offset = intel_vgpu_gpa_to_mmio_offset(vgpu, pa); in failsafe_emulate_mmio_rw()
75 intel_vgpu_default_mmio_read(vgpu, offset, p_data, in failsafe_emulate_mmio_rw()
78 intel_vgpu_default_mmio_write(vgpu, offset, p_data, in failsafe_emulate_mmio_rw()
82 pt = vgpu->gtt.ggtt_mm->ggtt_mm.virtual_ggtt + offset; in failsafe_emulate_mmio_rw()
89 mutex_unlock(&vgpu->vgpu_lock); in failsafe_emulate_mmio_rw()
102 int intel_vgpu_emulate_mmio_read(struct intel_vgpu *vgpu, u64 pa, in intel_vgpu_emulate_mmio_read() argument
105 struct intel_gvt *gvt = vgpu->gvt; in intel_vgpu_emulate_mmio_read()
110 if (vgpu->failsafe) { in intel_vgpu_emulate_mmio_read()
111 failsafe_emulate_mmio_rw(vgpu, pa, p_data, bytes, true); in intel_vgpu_emulate_mmio_read()
114 mutex_lock(&vgpu->vgpu_lock); in intel_vgpu_emulate_mmio_read()
116 offset = intel_vgpu_gpa_to_mmio_offset(vgpu, pa); in intel_vgpu_emulate_mmio_read()
131 ret = intel_vgpu_emulate_ggtt_mmio_read(vgpu, offset, in intel_vgpu_emulate_mmio_read()
139 ret = intel_gvt_hypervisor_read_gpa(vgpu, pa, p_data, bytes); in intel_vgpu_emulate_mmio_read()
151 ret = intel_vgpu_mmio_reg_rw(vgpu, offset, p_data, bytes, true); in intel_vgpu_emulate_mmio_read()
163 mutex_unlock(&vgpu->vgpu_lock); in intel_vgpu_emulate_mmio_read()
177 int intel_vgpu_emulate_mmio_write(struct intel_vgpu *vgpu, u64 pa, in intel_vgpu_emulate_mmio_write() argument
180 struct intel_gvt *gvt = vgpu->gvt; in intel_vgpu_emulate_mmio_write()
185 if (vgpu->failsafe) { in intel_vgpu_emulate_mmio_write()
186 failsafe_emulate_mmio_rw(vgpu, pa, p_data, bytes, false); in intel_vgpu_emulate_mmio_write()
190 mutex_lock(&vgpu->vgpu_lock); in intel_vgpu_emulate_mmio_write()
192 offset = intel_vgpu_gpa_to_mmio_offset(vgpu, pa); in intel_vgpu_emulate_mmio_write()
207 ret = intel_vgpu_emulate_ggtt_mmio_write(vgpu, offset, in intel_vgpu_emulate_mmio_write()
215 ret = intel_gvt_hypervisor_write_gpa(vgpu, pa, p_data, bytes); in intel_vgpu_emulate_mmio_write()
219 ret = intel_vgpu_mmio_reg_rw(vgpu, offset, p_data, bytes, false); in intel_vgpu_emulate_mmio_write()
230 mutex_unlock(&vgpu->vgpu_lock); in intel_vgpu_emulate_mmio_write()
240 void intel_vgpu_reset_mmio(struct intel_vgpu *vgpu, bool dmlr) in intel_vgpu_reset_mmio() argument
242 struct intel_gvt *gvt = vgpu->gvt; in intel_vgpu_reset_mmio()
247 memcpy(vgpu->mmio.vreg, mmio, info->mmio_size); in intel_vgpu_reset_mmio()
249 vgpu_vreg_t(vgpu, GEN6_GT_THREAD_STATUS_REG) = 0; in intel_vgpu_reset_mmio()
252 vgpu_vreg_t(vgpu, GEN6_GT_CORE_STATUS) = 0; in intel_vgpu_reset_mmio()
255 vgpu_vreg_t(vgpu, GUC_STATUS) |= GS_MIA_IN_RESET; in intel_vgpu_reset_mmio()
257 if (IS_BROXTON(vgpu->gvt->gt->i915)) { in intel_vgpu_reset_mmio()
258 vgpu_vreg_t(vgpu, BXT_P_CR_GT_DISP_PWRON) &= in intel_vgpu_reset_mmio()
260 vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY0)) &= in intel_vgpu_reset_mmio()
262 vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY1)) &= in intel_vgpu_reset_mmio()
264 vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY0)) &= in intel_vgpu_reset_mmio()
266 vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY1)) &= in intel_vgpu_reset_mmio()
268 vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_A)) &= in intel_vgpu_reset_mmio()
270 vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_A)) |= in intel_vgpu_reset_mmio()
273 vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_B)) &= in intel_vgpu_reset_mmio()
275 vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_B)) |= in intel_vgpu_reset_mmio()
278 vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_C)) &= in intel_vgpu_reset_mmio()
280 vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_C)) |= in intel_vgpu_reset_mmio()
283 vgpu_vreg_t(vgpu, SKL_FUSE_STATUS) |= in intel_vgpu_reset_mmio()
295 memcpy(vgpu->mmio.vreg, mmio, GVT_GEN8_MMIO_RESET_OFFSET); in intel_vgpu_reset_mmio()
307 int intel_vgpu_init_mmio(struct intel_vgpu *vgpu) in intel_vgpu_init_mmio() argument
309 const struct intel_gvt_device_info *info = &vgpu->gvt->device_info; in intel_vgpu_init_mmio()
311 vgpu->mmio.vreg = vzalloc(info->mmio_size); in intel_vgpu_init_mmio()
312 if (!vgpu->mmio.vreg) in intel_vgpu_init_mmio()
315 intel_vgpu_reset_mmio(vgpu, true); in intel_vgpu_init_mmio()
325 void intel_vgpu_clean_mmio(struct intel_vgpu *vgpu) in intel_vgpu_clean_mmio() argument
327 vfree(vgpu->mmio.vreg); in intel_vgpu_clean_mmio()
328 vgpu->mmio.vreg = NULL; in intel_vgpu_clean_mmio()