Since 4.7 kernel, qxl drm driver spews the errors when using VT:
kernel: [TTM] Buffer eviction failed
kernel: qxl 0000:00:02.0: object_init failed for (4026540032, 0x00000001)
kernel: [drm:qxl_alloc_bo_reserved [qxl]] *ERROR* failed to allocate VRAM BO
In my test case, just install a QEMU/KVM VM with QXL interface, login GUI, and then switch to VT1. At login there, the error appears repeatedly.
4.6 kernel works fine.
The git bisection spotted that it was introduced by
drm/qxl: Use drm_fb_helper deferred_io support
This was originally reported for opensuse TW:
OK, I found out the culprit. It's the race of dirty update callback and the dirty clip update. The schedule_work() in drm_fb_helper_dirty() must be inside the spinlock. Otherwise the concurrent calls may conflict, one clears the clip while the another is called after that with the cleared clip area.
I'll post the patch soon later.
I can confirm this bug remains in the 4.8 kernel as well. KVM with Archlinux guest (virt-manager defaults, except for window scaling) results in the following message displayed between every command:
[TTM] Byffer eviction failed
qxl 0000:00:02:0: object_init failed for (402650032, 0x00000001)
[drm:qxl_alloc_bo_reserved [qxl1] *ERROR* failed to allocate VRAM BO
Arch kernel package: linux-4.8.2-1-x86_64.pkg.tar.xz