Linux version of callout_drain() does not perform unbound sleep while
waiting for timer to stop. Instead of that, it does non-blockable spins.
Implement the same logic in linuxkpi with spinning around callout_stop().
It uses 3-rd callout reset/stop syncronization method from callout(9).
This fixes following witness warning in drm-kmod:
calling _callout_stop_safe with the following non-sleepable locks held:
exclusive sleep mutex lnxspin (lnxspin) r = 0 (0xffffffff82140be0) locked @ /usr/ports/graphics/drm-devel-kmod/work/kms-drm-43fe25f/linuxkpi/gplv2/src/linux_dmafence.c:323
stack backtrace:
#0 0xffffffff8078e8b1 at witness_debugger+0x71
#1 0xffffffff8078f84d at witness_warn+0x40d
#2 0xffffffff8073efb7 at _callout_stop_safe+0x47
#3 0xffffffff81fac71c at dma_i915_sw_fence_wake_timer+0xac
#4 0xffffffff8221b75b at dma_fence_signal+0x16b
#5 0xffffffff81f5ac09 at i915_clflush_work+0x89
#6 0xffffffff81f1bc4f at linux_work_fn+0xdf
#7 0xffffffff807813aa at taskqueue_run_locked+0xaa
#8 0xffffffff80782434 at taskqueue_thread_loop+0x94
#9 0xffffffff806e1d70 at fork_exit+0x80
#10 0xffffffff809b4fae at fork_trampoline+0xe