CVSROOT: /cvs Module name: src Changes by: j...@cvs.openbsd.org 2021/08/07 00:23:34
Modified files: sys/dev/pci/drm: drm_linux.c sys/dev/pci/drm/include/linux: irq_work.h Log message: use taskq_del_barrier() instead of taskq_barrier() when flushing work prompted by jcs@ reporting a protection fault trap in drm_mode_rmfb_work_fn() while playing a youtube video in firefox on a kaby lake machine. He later saw the same trace on tiger lake. The arguments to drm_mode_rmfb_work_fn() are on the stack in drm_mode_rmfb() with flush_work() called before return. taskq_barrier() is only a barrier for running not queued tasks. I suspect the linux functions expect any previously queued work to complete not just any currently running work. I'm not sure if the difference matters in practice.