Commit a2db578b authored by Phil Elwell's avatar Phil Elwell Committed by Greg Kroah-Hartman

staging: vchiq_arm: Avoid premature message stalls

The constants MAX_COMPLETIONS and MSG_QUEUE_SIZE control
the number of messages that can be outstanding to each client
before the system as a whole stalls. If the numbers are too
small then unnecessary thread switching will occur while
waiting for a (potentially low priority) client thread to
consume some data; badly written clients can even lead to
deadlock.

For services that carry many short messages, 16 messages can
represent a very small amount of data. Since the resources
are small - 16 bytes for a completion, 4 bytes for a message
pointer - increase the limits so they are unlikely to be hit
except in exceptional circumstances.
Signed-off-by: default avatarPhil Elwell <phil@raspberrypi.org>
Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ca3df03b
...@@ -64,10 +64,10 @@ ...@@ -64,10 +64,10 @@
#define VCHIQ_MINOR 0 #define VCHIQ_MINOR 0
/* Some per-instance constants */ /* Some per-instance constants */
#define MAX_COMPLETIONS 16 #define MAX_COMPLETIONS 128
#define MAX_SERVICES 64 #define MAX_SERVICES 64
#define MAX_ELEMENTS 8 #define MAX_ELEMENTS 8
#define MSG_QUEUE_SIZE 64 #define MSG_QUEUE_SIZE 128
#define KEEPALIVE_VER 1 #define KEEPALIVE_VER 1
#define KEEPALIVE_VER_MIN KEEPALIVE_VER #define KEEPALIVE_VER_MIN KEEPALIVE_VER
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment