From: Denis Mukhin <dmukhin@ford.com>
Introduce CONFIG_CONRING_ALIGN_PAGE_SIZE to control rounding down of the
user-defined conring buffer size.
Also, update the logline reporting the final conring buffer size to report
bytes instead of kilobytes, since the user-defined size may not necessarily
be kilobyte-alined.
Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
Changes since v4:
- new patch
---
xen/drivers/char/Kconfig | 7 +++++++
xen/drivers/char/console.c | 15 +++++++++------
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/xen/drivers/char/Kconfig b/xen/drivers/char/Kconfig
index d083ba4c9cdf..1b96fbc3ed7c 100644
--- a/xen/drivers/char/Kconfig
+++ b/xen/drivers/char/Kconfig
@@ -95,6 +95,13 @@ config SERIAL_TX_BUFSIZE
Default value is 32768 (32KiB).
+config CONRING_ALIGN_PAGE_SIZE
+ bool
+ default y
+ help
+ This selects the console ring buffer size alignment (rounding down)
+ to a multiple of PAGE_SIZE.
+
config CONRING_SHIFT
int "Console ring buffer size (power of 2)"
range 14 27
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 9394ab2a89eb..c13818715a52 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -470,12 +470,15 @@ void __init console_init_ring(void)
return;
opt_conring_size = max(opt_conring_size, conring_size);
- size = ROUNDDOWN(opt_conring_size, PAGE_SIZE);
- if ( size != opt_conring_size )
+ if ( IS_ENABLED(CONFIG_CONRING_ALIGN_PAGE_SIZE) )
{
- opt_conring_size = size;
- printk(XENLOG_WARNING "Rounding down console ring size to multiple of %lu KiB.\n",
- PAGE_SIZE >> 10);
+ size = ROUNDDOWN(opt_conring_size, PAGE_SIZE);
+ if ( size != opt_conring_size )
+ {
+ opt_conring_size = size;
+ printk(XENLOG_WARNING "Rounding down console ring size to multiple of %lu KiB.\n",
+ PAGE_SIZE >> 10);
+ }
}
if ( opt_conring_size >= GB(2) )
{
@@ -512,7 +515,7 @@ void __init console_init_ring(void)
nrspin_unlock_irqrestore(&console_lock, flags);
- printk("Allocated console ring of %u KiB.\n", opt_conring_size >> 10);
+ printk("Allocated console ring of %u bytes.\n", opt_conring_size);
}
/*
--
2.52.0