This is possible, but in that case queue_work_on_cpu() should use wq_per_cpu(),
not per_cpu_ptr(). (otherwise queue_work(single_threaded_wq) won't work).
A bit off-topic, the comment near queue_work() says
* We queue the work to the CPU it was submitted, but there is no
* guarantee that it will be processed by that CPU.
This is wrong. Unless cpu_down() happens, we do guarantee it will be processed
by that CPU. Perhaps it makes sense to fix the comment as well?
Oleg.
--