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.

Reply via email to