Description: kernel: Fix arch random implementation
Symptom: arch_get_random_seed_long() invocations may slow down the interrupt handling on heavy interrupt producing loads.
Problem: The existing random device driver calls arch_get_random_seed_long() in interrupt context. The current implementation of this function uses the PRNO(TRNG) instruction to provide good entropy. This instruction is relatively slow and expensive and may
slow down the capacity of interrupts which can be handled
per cpu.
Solution: This fix reworks the arch_get_random_seed implementation.
It introduces a buffer concept to decouple the delivery
of random data via arch_get_random_seed*() from the generation of new random bytes and so does not limit
the interrupt handling per cpu any more.
Reproduction: Systems with heavy irq load show performance decrease.
Component: kernel
Description: kernel: Fix arch random implementation random_ seed_long( ) invocations may slow down the
interrupt handling on heavy interrupt producing loads.
arch_get_ random_ seed_long( ) in interrupt context. The
current implementation of this function uses the
PRNO(TRNG) instruction to provide good entropy. This
instruction is relatively slow and expensive and may random_ seed implementation. random_ seed*() from the
generation of new random bytes and so does not limit
Symptom: arch_get_
Problem: The existing random device driver calls
slow down the capacity of interrupts which can be handled
per cpu.
Solution: This fix reworks the arch_get_
It introduces a buffer concept to decouple the delivery
of random data via arch_get_
the interrupt handling per cpu any more.
Reproduction: Systems with heavy irq load show performance decrease.
Component: kernel
Upstream commit(s): kernel 4.18 f59f9ccae6bbfb8 f671c7c842
966f53e750aedc5