From: Denis Mukhin <[email protected]> Introduce CONFIG_PRINTK_RATELIMIT_MS and CONFIG_PRINTK_RATELIMIT_BURST for configuring rate-limiting policy at the compile time.
Use symbols for global rate-limiting initialization in the console driver. Signed-off-by: Denis Mukhin <[email protected]> --- Changes since v1: - new patch --- xen/drivers/char/Kconfig | 25 +++++++++++++++++++++++++ xen/drivers/char/console.c | 6 ++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/xen/drivers/char/Kconfig b/xen/drivers/char/Kconfig index 8e49a52c735b..98b117762a0c 100644 --- a/xen/drivers/char/Kconfig +++ b/xen/drivers/char/Kconfig @@ -103,3 +103,28 @@ config XHCI Enabling this option makes Xen use extra ~230KiB memory, even if XHCI UART is not selected. If you have an x86 based system with USB3, say Y. + +config PRINTK_RATELIMIT_MS + int "printk rate-limiting time window (milliseconds)" + default 5000 + help + Specifies the time window, in milliseconds, for rate-limited printk + messages. No more than `CONFIG_PRINTK_RATELIMIT_BURST` messages will be + printed within this window. + + Setting this value to 0 disables rate-limiting entirely. + + Rate-limited messages are those controlled by the `loglvl` and + `guest_loglvl` command-line parameters. + +config PRINTK_RATELIMIT_BURST + int "printk rate-limited message burst size" + default 10 + help + Defines the maximum number of rate-limited printk messages that may be + printed within each `CONFIG_PRINTK_RATELIMIT_MS` time window. + + Setting this value to 0 disables rate-limiting entirely. + + Rate-limited messages are those controlled by the `loglvl` and + `guest_loglvl` command-line parameters. diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index c4c92e3efa39..ec87ecb3e5a0 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -1321,10 +1321,12 @@ static bool do_printk_ratelimit(unsigned int ratelimit_ms, } /* Minimum time in ms between messages */ -static const unsigned int printk_ratelimit_ms = 5 * 1000; +static const unsigned int printk_ratelimit_ms = + CONFIG_PRINTK_RATELIMIT_MS; /* Number of messages we send before ratelimiting */ -static const unsigned int printk_ratelimit_burst = 10; +static const unsigned int printk_ratelimit_burst = + CONFIG_PRINTK_RATELIMIT_BURST; bool printk_ratelimit(void) { -- 2.52.0
