On 2020/05/26 13:18, Tetsuo Handa wrote:
> due to mode->crtc_clock <= 0. Thus, somehow initializing mode->crtc_clock > 0 
> might be able
> to solve this problem.

Well, I came to think that vkms_enable_vblank() should return an error to the 
caller
when drm_calc_timestamping_constants() failed...

static int vkms_enable_vblank(struct drm_crtc *crtc)
{
        struct drm_device *dev = crtc->dev;
        unsigned int pipe = drm_crtc_index(crtc);
        struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
        struct vkms_output *out = drm_crtc_to_vkms_output(crtc);

        drm_calc_timestamping_constants(crtc, &crtc->mode);

        hrtimer_init(&out->vblank_hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
        out->vblank_hrtimer.function = &vkms_vblank_simulate;
        out->period_ns = ktime_set(0, vblank->framedur_ns);
        hrtimer_start(&out->vblank_hrtimer, out->period_ns, HRTIMER_MODE_REL);

        return 0;
}
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to