alf_queue: add note about MPMC preempt restrictions

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
qmempool: specialize and optimize qmempool for usage from softirq

Specialize and optimize the qmempool to run from softirq.
Don't allow qmempool to be used from interrupt context.

The percpu variables (SPSC queues) needs preempt protection, and
the shared MPMC queue also needs protection against the same CPU
access the same queue.

IDEA: When used from softirq, take advantage of the protection softirq
gives.  A softirq will never preempt another softirq, running on the
same CPU.  The only event that can preempt a softirq is an interrupt
handler (and perhaps we don't need to support calling qmempool from an
interrupt).  Another softirq, even the same one, can run on another
CPU however, but these helpers are only protecting our percpu
variables.

Thus, our percpu variables are safe if current the CPU is the one
serving the softirq (tested via in_serving_softirq()), like:

 if (!in_serving_softirq())
 	local_bh_disable();

This makes qmempool very fast, when accesses from softirq, but slower
when accessed outside softirq.  The other contexts need to disable
bottom-halves "bh" via local_bh_{disable,enable}.

Numbers (CPU E5-2695):
 - local_bh_{disable,enable} adds cost of 7.5ns.

Other alternative are:
 - local_irq_{disable,enable} would cost 2.9 ns
 - local_irq_save()+local_irq_restore() would cost 14.8 ns

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
qmempool: remove the never used stat counters

Planned to add stats, but never finished the work.  Remove
the stat counters before upstream submission.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
qmempool: remove the debug_percpu debugging function

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>