@@ -763,6 +763,20 @@ static int pri_surf_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
else
set_bit(event, vgpu->irq.flip_done_event[pipe]);
+ if (vgpu->vdev.pri_flip_trigger)
+ eventfd_signal(vgpu->vdev.pri_flip_trigger, 1);
+
+ return 0;
+}
+
+static int cur_surf_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
+ void *p_data, unsigned int bytes)
+{
+ write_vreg(vgpu, offset, p_data, bytes);
+
+ if (vgpu->vdev.cur_flip_trigger)
+ eventfd_signal(vgpu->vdev.cur_flip_trigger, 1);
+
return 0;
}
@@ -1969,9 +1983,9 @@ static int init_generic_mmio_info(struct intel_gvt *gvt)
MMIO_D(CURPOS(PIPE_B), D_ALL);
MMIO_D(CURPOS(PIPE_C), D_ALL);
- MMIO_D(CURBASE(PIPE_A), D_ALL);
- MMIO_D(CURBASE(PIPE_B), D_ALL);
- MMIO_D(CURBASE(PIPE_C), D_ALL);
+ MMIO_DH(CURBASE(PIPE_A), D_ALL, NULL, cur_surf_mmio_write);
+ MMIO_DH(CURBASE(PIPE_B), D_ALL, NULL, cur_surf_mmio_write);
+ MMIO_DH(CURBASE(PIPE_C), D_ALL, NULL, cur_surf_mmio_write);
MMIO_D(CUR_FBC_CTL(PIPE_A), D_ALL);
MMIO_D(CUR_FBC_CTL(PIPE_B), D_ALL);
Send the primary plane and the cursor plane flip events to user space. Signed-off-by: Tina Zhang <tina.zhang@intel.com> --- drivers/gpu/drm/i915/gvt/handlers.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-)