CVSROOT: /cvs
Module name: src
Changes by: [email protected] 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.