From nobody Mon Feb 9 04:56:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1770255406; cv=none; d=zohomail.com; s=zohoarc; b=SO8m/4bU8OOtiPWQafhkp+G9EqtUn4nDgXYFvBUzgw6JRdKL+Q09e6HG+59c+ZZPHWGLoywwSbuV+Gbv07cr3GYwoZ5KVzV1fCICB5mpobxVO70f23eMawD/5c+n0HXxnSxrqp1pdLInvcxgkzbpr0XG59yMaWGfsvYh60gs5Ew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770255406; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2hWVAX5cInV9+JHNZ4ERQlXamvda79ZLFDIRyBNBnyg=; b=EVHelOK+JsTazxeZQlyXcTLJeU8cGCeg94fZtwIf6veziKi12HWi27JAp/Bs3sYHi4XdMNvADEcpJXsREU5RqrujPlFUchxsrqTA1ivB84njBFLJMtv/pTkhG2FWajVU2U34YOZ6x+R0jfF48falGrnOgbQNUdR0aUQYvCDz3mw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770255406065867.9990728919665; Wed, 4 Feb 2026 17:36:46 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221351.1529617 (Exim 4.92) (envelope-from ) id 1vnoI4-0001vS-Bz; Thu, 05 Feb 2026 01:36:16 +0000 Received: by outflank-mailman (output) from mailman id 1221351.1529617; Thu, 05 Feb 2026 01:36:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI4-0001uv-9R; Thu, 05 Feb 2026 01:36:16 +0000 Received: by outflank-mailman (input) for mailman id 1221351; Thu, 05 Feb 2026 01:36:15 +0000 Received: from mail.xenproject.org ([104.130.215.37]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI3-0001iz-6Q for xen-devel@lists.xenproject.org; Thu, 05 Feb 2026 01:36:15 +0000 Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.96) (envelope-from ) id 1vnoI3-003wQC-0N; Thu, 05 Feb 2026 01:36:14 +0000 Received: from [140.209.201.102] (helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnoI2-00HVX2-1u; Thu, 05 Feb 2026 01:36:14 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From; bh=2hWVAX5cInV9+JHNZ4ERQlXamvda79ZLFDIRyBNBnyg=; b=WxbR2H+NO/hx9lVr0ieB68MZO1 bdXxPrxCmpFVs8mf4ofpC35FMRpfjksgu01WDUKkJthpYm2MMtecQxX14e0A8s87rZ1PPnBuABYjP Sf88iq0ZzaRvu22v4l9Gv6AoVZeNhiutYr8GNdwIEziqNFonoF+wX7ThC5dXjiSEkLJQ=; From: dmukhin@xen.org To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v5 1/6] xen/console: group conring code together Date: Wed, 4 Feb 2026 17:36:01 -0800 Message-ID: <20260205013606.3384798-2-dmukhin@ford.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260205013606.3384798-1-dmukhin@ford.com> References: <20260205013606.3384798-1-dmukhin@ford.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1770255407917158500 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 Groups conring buffer management code in the console driver for ease of maintaining this code. Not a functional change. Signed-off-by: Denis Mukhin --- Changes since v4: - new patch --- xen/drivers/char/console.c | 161 ++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 81 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 2bdb4d5fb417..86319600e0af 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -126,17 +126,6 @@ static int cf_check parse_console_timestamps(const cha= r *s); custom_runtime_param("console_timestamps", parse_console_timestamps, con_timestamp_mode_upd); =20 -/* conring_size: allows a large console ring than default (16kB). */ -static uint32_t __initdata opt_conring_size; -size_param("conring_size", opt_conring_size); - -#define _CONRING_SIZE 16384 -#define CONRING_IDX_MASK(i) ((i)&(conring_size-1)) -static char __initdata _conring[_CONRING_SIZE]; -static char *__read_mostly conring =3D _conring; -static uint32_t __read_mostly conring_size =3D _CONRING_SIZE; -static uint32_t conringc, conringp; - static int __read_mostly sercon_handle =3D -1; =20 #ifdef CONFIG_X86 @@ -350,6 +339,17 @@ static void cf_check do_dec_thresh(unsigned char key, = bool unused) * ******************************************************** */ =20 +/* conring_size: allows a large console ring than default (16kB). */ +static uint32_t __initdata opt_conring_size; +size_param("conring_size", opt_conring_size); + +#define _CONRING_SIZE 16384 +#define CONRING_IDX_MASK(i) ((i)&(conring_size-1)) +static char __initdata _conring[_CONRING_SIZE]; +static char *__read_mostly conring =3D _conring; +static uint32_t __read_mostly conring_size =3D _CONRING_SIZE; +static uint32_t conringc, conringp; + static void cf_check conring_notify(void *unused) { send_global_virq(VIRQ_CON_RING); @@ -416,47 +416,6 @@ long read_console_ring(struct xen_sysctl_readconsole *= op) } #endif /* CONFIG_SYSCTL */ =20 - -/* - * ******************************************************* - * *************** ACCESS TO SERIAL LINE ***************** - * ******************************************************* - */ - -/* Characters received over the serial line are buffered for domain 0. */ -#define SERIAL_RX_SIZE 128 -#define SERIAL_RX_MASK(_i) ((_i)&(SERIAL_RX_SIZE-1)) -static char serial_rx_ring[SERIAL_RX_SIZE]; -static unsigned int serial_rx_cons, serial_rx_prod; - -static void (*serial_steal_fn)(const char *str, size_t nr) =3D early_puts; - -int console_steal(int handle, void (*fn)(const char *str, size_t nr)) -{ - if ( (handle =3D=3D -1) || (handle !=3D sercon_handle) ) - return 0; - - if ( serial_steal_fn !=3D NULL ) - return -EBUSY; - - serial_steal_fn =3D fn; - return 1; -} - -void console_giveback(int id) -{ - if ( id =3D=3D 1 ) - serial_steal_fn =3D NULL; -} - -void console_serial_puts(const char *s, size_t nr) -{ - if ( serial_steal_fn !=3D NULL ) - serial_steal_fn(s, nr); - else - serial_puts(sercon_handle, s, nr); -} - /* * Flush contents of the conring to the selected console devices. */ @@ -501,6 +460,75 @@ static void cf_check conring_dump_keyhandler(unsigned = char key) printk("failed to dump console ring buffer: %d\n", rc); } =20 +void __init console_init_ring(void) +{ + char *ring; + unsigned int i, order, memflags; + unsigned long flags; + + if ( !opt_conring_size ) + return; + + order =3D get_order_from_bytes(max(opt_conring_size, conring_size)); + memflags =3D MEMF_bits(crashinfo_maxaddr_bits); + while ( (ring =3D alloc_xenheap_pages(order, memflags)) =3D=3D NULL ) + { + BUG_ON(order =3D=3D 0); + order--; + } + opt_conring_size =3D PAGE_SIZE << order; + + nrspin_lock_irqsave(&console_lock, flags); + for ( i =3D conringc ; i !=3D conringp; i++ ) + ring[i & (opt_conring_size - 1)] =3D conring[i & (conring_size - 1= )]; + conring =3D ring; + smp_wmb(); /* Allow users of console_force_unlock() to see larger buff= er. */ + conring_size =3D opt_conring_size; + nrspin_unlock_irqrestore(&console_lock, flags); + + printk("Allocated console ring of %u KiB.\n", opt_conring_size >> 10); +} + +/* + * ******************************************************* + * *************** ACCESS TO SERIAL LINE ***************** + * ******************************************************* + */ + +/* Characters received over the serial line are buffered for domain 0. */ +#define SERIAL_RX_SIZE 128 +#define SERIAL_RX_MASK(_i) ((_i)&(SERIAL_RX_SIZE-1)) +static char serial_rx_ring[SERIAL_RX_SIZE]; +static unsigned int serial_rx_cons, serial_rx_prod; + +static void (*serial_steal_fn)(const char *str, size_t nr) =3D early_puts; + +int console_steal(int handle, void (*fn)(const char *str, size_t nr)) +{ + if ( (handle =3D=3D -1) || (handle !=3D sercon_handle) ) + return 0; + + if ( serial_steal_fn !=3D NULL ) + return -EBUSY; + + serial_steal_fn =3D fn; + return 1; +} + +void console_giveback(int id) +{ + if ( id =3D=3D 1 ) + serial_steal_fn =3D NULL; +} + +void console_serial_puts(const char *s, size_t nr) +{ + if ( serial_steal_fn !=3D NULL ) + serial_steal_fn(s, nr); + else + serial_puts(sercon_handle, s, nr); +} + /* * CTRL- changes input direction, rotating among Xen, Dom0, * and the DomUs started from Xen at boot. @@ -1125,35 +1153,6 @@ void __init console_init_preirq(void) } } =20 -void __init console_init_ring(void) -{ - char *ring; - unsigned int i, order, memflags; - unsigned long flags; - - if ( !opt_conring_size ) - return; - - order =3D get_order_from_bytes(max(opt_conring_size, conring_size)); - memflags =3D MEMF_bits(crashinfo_maxaddr_bits); - while ( (ring =3D alloc_xenheap_pages(order, memflags)) =3D=3D NULL ) - { - BUG_ON(order =3D=3D 0); - order--; - } - opt_conring_size =3D PAGE_SIZE << order; - - nrspin_lock_irqsave(&console_lock, flags); - for ( i =3D conringc ; i !=3D conringp; i++ ) - ring[i & (opt_conring_size - 1)] =3D conring[i & (conring_size - 1= )]; - conring =3D ring; - smp_wmb(); /* Allow users of console_force_unlock() to see larger buff= er. */ - conring_size =3D opt_conring_size; - nrspin_unlock_irqrestore(&console_lock, flags); - - printk("Allocated console ring of %u KiB.\n", opt_conring_size >> 10); -} - void __init console_init_irq(void) { serial_init_irq(); --=20 2.52.0 From nobody Mon Feb 9 04:56:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1770255397; cv=none; d=zohomail.com; s=zohoarc; b=frpt8tWUCmeN2TUc2wcoYgPWl3EwKOqy1cxsnzzKoYpHNd3KbXlDQGYOtwNJXukzh6VvUjUcuPRTX5cahgnW1p6LnKrA1GAxQB0iroZl6EspO9B9wPSCL7QH3I6NMnkMLqVWO8moCcuHEX3juecmfhuxVoOp6WT4T9O2e5bl+pM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770255397; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OmHZuBlSWJtfYojCeHKDKiy+Jl/+TAljxD/KKQZ0HFU=; b=KinmXZvl3CR+6nHouwdZRePT5uBd5Z2n74qWb2TPflKDBuiXyd6DndosPqgJjsutiqcEAdDN6kZH2obffDxRbWG5S1dF/a2WCpLEcz5V7kbSqGOQy8hESYavFWpoPJmGLT5qvkjm1bF5WL3kLdQ0KDcMMW3SWI7dZReidA25jDA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770255397686571.4118528651929; Wed, 4 Feb 2026 17:36:37 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221352.1529627 (Exim 4.92) (envelope-from ) id 1vnoI5-00029b-Id; Thu, 05 Feb 2026 01:36:17 +0000 Received: by outflank-mailman (output) from mailman id 1221352.1529627; Thu, 05 Feb 2026 01:36:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI5-00029U-Fd; Thu, 05 Feb 2026 01:36:17 +0000 Received: by outflank-mailman (input) for mailman id 1221352; Thu, 05 Feb 2026 01:36:16 +0000 Received: from mail.xenproject.org ([104.130.215.37]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI4-0001w6-CE for xen-devel@lists.xenproject.org; Thu, 05 Feb 2026 01:36:16 +0000 Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.96) (envelope-from ) id 1vnoI4-003wQK-0H; Thu, 05 Feb 2026 01:36:15 +0000 Received: from [140.209.201.102] (helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnoI3-00HVXD-1m; Thu, 05 Feb 2026 01:36:15 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From; bh=OmHZuBlSWJtfYojCeHKDKiy+Jl/+TAljxD/KKQZ0HFU=; b=n5+kAtOKhadDbzsHZdN1u0lU/w fL/5Y0aJF/yxV9x7oEsewB/E2kjfDJmz533UFMuyzR68vvyrAkJjk6cGhlllJmo0ZJc+POQpt6i0i 3lZpNMAMoT2m1zOhMbRd//TxTejqBCm8KNUc9RWR2/MacQyBUx3ioxT1h3TI3tylGPKo=; From: dmukhin@xen.org To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com, Jason Andryuk Subject: [PATCH v5 2/6] xen/console: make console buffer size configurable Date: Wed, 4 Feb 2026 17:36:02 -0800 Message-ID: <20260205013606.3384798-3-dmukhin@ford.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260205013606.3384798-1-dmukhin@ford.com> References: <20260205013606.3384798-1-dmukhin@ford.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1770255400836158500 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 Add new CONRING_SHIFT Kconfig parameter to specify the boot console buffer = size as a power of 2. The supported range is [14..27] -> [16KiB..128MiB]. Set default to 15 (32 KiB). Resolves: https://gitlab.com/xen-project/xen/-/issues/185 Signed-off-by: Denis Mukhin Reviewed-by: Jason Andryuk --- Changes since v4: - n/a --- docs/misc/xen-command-line.pandoc | 5 +++-- xen/drivers/char/Kconfig | 24 ++++++++++++++++++++++++ xen/drivers/char/console.c | 6 +++--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line= .pandoc index c1f2def9f99c..87392142e8e9 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -425,10 +425,11 @@ The following are examples of correct specifications: ### conring_size > `=3D ` =20 -> Default: `conring_size=3D16k` - Specify the size of the console ring buffer. =20 +The default console ring buffer size is selected at build time via +CONFIG_CONRING_SHIFT setting. + ### console > `=3D List of [ vga | com1[H,L] | com2[H,L] | pv | dbgp | ehci | xhci | n= one ]` =20 diff --git a/xen/drivers/char/Kconfig b/xen/drivers/char/Kconfig index 8e49a52c735b..d083ba4c9cdf 100644 --- a/xen/drivers/char/Kconfig +++ b/xen/drivers/char/Kconfig @@ -95,6 +95,30 @@ config SERIAL_TX_BUFSIZE =20 Default value is 32768 (32KiB). =20 +config CONRING_SHIFT + int "Console ring buffer size (power of 2)" + range 14 27 + default 15 + help + Select the boot console ring buffer size as a power of 2. + Run-time console ring buffer size is the same as the boot console ring + buffer size, unless overridden via 'conring_size=3D' boot parameter. + + 27 =3D> 128 MiB + 26 =3D> 64 MiB + 25 =3D> 32 MiB + 24 =3D> 16 MiB + 23 =3D> 8 MiB + 22 =3D> 4 MiB + 21 =3D> 2 MiB + 20 =3D> 1 MiB + 19 =3D> 512 KiB + 18 =3D> 256 KiB + 17 =3D> 128 KiB + 16 =3D> 64 KiB + 15 =3D> 32 KiB (default) + 14 =3D> 16 KiB + config XHCI bool "XHCI DbC UART driver" depends on X86 diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 86319600e0af..522b2f489a53 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -339,12 +339,12 @@ static void cf_check do_dec_thresh(unsigned char key,= bool unused) * ******************************************************** */ =20 -/* conring_size: allows a large console ring than default (16kB). */ +/* conring_size: override build-time CONFIG_CONRING_SHIFT setting. */ static uint32_t __initdata opt_conring_size; size_param("conring_size", opt_conring_size); =20 -#define _CONRING_SIZE 16384 -#define CONRING_IDX_MASK(i) ((i)&(conring_size-1)) +#define _CONRING_SIZE (1U << CONFIG_CONRING_SHIFT) +#define CONRING_IDX_MASK(i) ((i) & (conring_size - 1)) static char __initdata _conring[_CONRING_SIZE]; static char *__read_mostly conring =3D _conring; static uint32_t __read_mostly conring_size =3D _CONRING_SIZE; --=20 2.52.0 From nobody Mon Feb 9 04:56:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1770255407; cv=none; d=zohomail.com; s=zohoarc; b=jjD1mWIBTEKAio0fqdBFhd5MbR19+Kkg5Vm4rHrxlA8qbnwnU1UBMYqRS+zqDKolXu8Jm+SQKTQ6/P4rxkzKEVmfFmSbzFCjiuCBv/N1/xbiYwuK9IYB4ozuM5sE3vMfFvWOeQDVPdkLNt4Rckh0iaAn87c5qRQ0ROCnZhul6eM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770255407; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V01t8A+mJ7h/gTCjHOoEQ3pd7zM8Gkx0R6n2fTb3EgQ=; b=IPmHJoELSe8nBY8VJ4jxUK4HLVxIq50ar7AX6HdOb3yy3vT2qRXsVBWys7jMneBFIFQg7oBN/8dx9ia7RUkY3MqAiBWp8UJWGWaLD26HhFqvtchRiJA3G5InuvJwty3S9ki4YFm/XK8XnawhANAk0n3nTQacqQhxo5hYFOIBey4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770255407813879.0789390037485; Wed, 4 Feb 2026 17:36:47 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221353.1529638 (Exim 4.92) (envelope-from ) id 1vnoI6-0002NY-Pd; Thu, 05 Feb 2026 01:36:18 +0000 Received: by outflank-mailman (output) from mailman id 1221353.1529638; Thu, 05 Feb 2026 01:36:18 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI6-0002NR-Ml; Thu, 05 Feb 2026 01:36:18 +0000 Received: by outflank-mailman (input) for mailman id 1221353; Thu, 05 Feb 2026 01:36:17 +0000 Received: from mail.xenproject.org ([104.130.215.37]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI5-00025u-1m for xen-devel@lists.xenproject.org; Thu, 05 Feb 2026 01:36:17 +0000 Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.96) (envelope-from ) id 1vnoI5-003wQU-06; Thu, 05 Feb 2026 01:36:16 +0000 Received: from [140.209.201.102] (helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnoI4-00HVXH-1g; Thu, 05 Feb 2026 01:36:16 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From; bh=V01t8A+mJ7h/gTCjHOoEQ3pd7zM8Gkx0R6n2fTb3EgQ=; b=Vq17SajWMVN+UU0/U0os2P+SNq HODh3cO6Rpp7W/QCtNQePQiQdqqLD4Px4w0nnJMwibiTsww3OmeoQ+BF0ZauW2mHftLMYPOMGPj6J ecweXR72JxhTRg9FLRCSHjdvUrgnlbKbRjEkN6VgVNB+uV4mPZzwz3Byp1Gjm2ePIocs=; From: dmukhin@xen.org To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v5 3/6] xen/console: promote conring{,_size} to __ro_after_init Date: Wed, 4 Feb 2026 17:36:03 -0800 Message-ID: <20260205013606.3384798-4-dmukhin@ford.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260205013606.3384798-1-dmukhin@ford.com> References: <20260205013606.3384798-1-dmukhin@ford.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1770255410282154100 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 Both conring{,_size} should be RO after initialization is completed. Suggested-by: Andrew Cooper Signed-off-by: Denis Mukhin --- Changes since v4: - new patch --- xen/drivers/char/console.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 522b2f489a53..ef9131439bba 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -346,8 +346,8 @@ size_param("conring_size", opt_conring_size); #define _CONRING_SIZE (1U << CONFIG_CONRING_SHIFT) #define CONRING_IDX_MASK(i) ((i) & (conring_size - 1)) static char __initdata _conring[_CONRING_SIZE]; -static char *__read_mostly conring =3D _conring; -static uint32_t __read_mostly conring_size =3D _CONRING_SIZE; +static char *__ro_after_init conring =3D _conring; +static uint32_t __ro_after_init conring_size =3D _CONRING_SIZE; static uint32_t conringc, conringp; =20 static void cf_check conring_notify(void *unused) --=20 2.52.0 From nobody Mon Feb 9 04:56:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1770255400; cv=none; d=zohomail.com; s=zohoarc; b=OvzoGCkqw6Szkv8VKUkIivCKtQfJhY/ayhiV49Wxaw9H4a9CGUytSJ60sh5zdkOdSg2sVxCXFe7XIBxTZDoZD0idOsmcAAghoUbdwNqCwcyeNH2OPi1gHQ8O/o2LIgJyoBx6VY6Cn4HKVKmJNo0wMJ5xsqALW719bQWava17L4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770255400; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uMEQbYnd5xAAaBu981UD1vQcoXX8eKP0LOT3hk6YJ3Q=; b=PKLT9H1epOTohI+SuUR41wxVGddiggr75u8wlrEanZvIDurfGNJpxnPcxgnc37UujJLm6yJAP/jjG7fcncRmTvIgt0WZ+4A2Z1I2fCSuUepVxFUAyU43h1vGyKV1Qk/AAkQzPcA7SjF+r09/soEO0L4ips5bwxxtROm8kSWk3DQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770255400549970.7441198928673; Wed, 4 Feb 2026 17:36:40 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221354.1529648 (Exim 4.92) (envelope-from ) id 1vnoI9-0002d4-0b; Thu, 05 Feb 2026 01:36:21 +0000 Received: by outflank-mailman (output) from mailman id 1221354.1529648; Thu, 05 Feb 2026 01:36:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI8-0002ct-Sj; Thu, 05 Feb 2026 01:36:20 +0000 Received: by outflank-mailman (input) for mailman id 1221354; Thu, 05 Feb 2026 01:36:19 +0000 Received: from mail.xenproject.org ([104.130.215.37]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI6-0002Qc-Ul for xen-devel@lists.xenproject.org; Thu, 05 Feb 2026 01:36:18 +0000 Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.96) (envelope-from ) id 1vnoI6-003wQh-01; Thu, 05 Feb 2026 01:36:17 +0000 Received: from [140.209.201.102] (helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnoI5-00HVXL-1b; Thu, 05 Feb 2026 01:36:17 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From; bh=uMEQbYnd5xAAaBu981UD1vQcoXX8eKP0LOT3hk6YJ3Q=; b=mam4JDzfk/p6OWqgGA5SomxTJ1 kfYr2LSIJttLdq4REByJY0418pIva21EdHEZQIO78b3QA0GPewW29bZ0QHloo0DXgouG4vk2mrXcv mviqLNow7s48GtjqYemVl4uDFo1wfUx6XF4hlmHTfx54LHwxzj9LP/4Aocal7ROGpHfk=; From: dmukhin@xen.org To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v5 4/6] xen/console: use memcpy() in console_init_ring() Date: Wed, 4 Feb 2026 17:36:04 -0800 Message-ID: <20260205013606.3384798-5-dmukhin@ford.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260205013606.3384798-1-dmukhin@ford.com> References: <20260205013606.3384798-1-dmukhin@ford.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1770255402433154100 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 Make console_init_ring() more efficient by using memcpy()'s, rather than copying the ring a byte at a time. Suggested-by: Andrew Cooper Signed-off-by: Denis Mukhin --- Changes since v4: - new patch --- xen/drivers/char/console.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index ef9131439bba..3ad86fd436e2 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -463,7 +463,7 @@ static void cf_check conring_dump_keyhandler(unsigned c= har key) void __init console_init_ring(void) { char *ring; - unsigned int i, order, memflags; + unsigned int start, size, chunk, order, memflags; unsigned long flags; =20 if ( !opt_conring_size ) @@ -479,11 +479,23 @@ void __init console_init_ring(void) opt_conring_size =3D PAGE_SIZE << order; =20 nrspin_lock_irqsave(&console_lock, flags); - for ( i =3D conringc ; i !=3D conringp; i++ ) - ring[i & (opt_conring_size - 1)] =3D conring[i & (conring_size - 1= )]; + + start =3D conringc & (conring_size - 1); + size =3D min(conringp - conringc, conring_size); + chunk =3D min(size, conring_size - start); + + memcpy(&ring[0], &conring[start], chunk); + if ( size > chunk ) + memcpy(&ring[chunk], &conring[0], size - chunk); + + /* Data is moved to [0..size), re-position conring pointers. */ + conringc =3D 0; + conringp =3D size; + conring =3D ring; smp_wmb(); /* Allow users of console_force_unlock() to see larger buff= er. */ conring_size =3D opt_conring_size; + nrspin_unlock_irqrestore(&console_lock, flags); =20 printk("Allocated console ring of %u KiB.\n", opt_conring_size >> 10); --=20 2.52.0 From nobody Mon Feb 9 04:56:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1770255411; cv=none; d=zohomail.com; s=zohoarc; b=BAkt9dIqHAvo39qmgIzPqzijOAfU58u6jmnADaGVjNvY1CTK5CVMC3O7a+VyNhb1ynlgc2XhdUsadUC64Ji1l77RfyNzQW08yVJf8qZmet4kBUFdHpNcVeMTeHCB+HTaPRMfAqI6xXXwc6tIoX77kdiXIHLldmxl4Gu7pGkzChg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770255411; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BMutOBe+27MwLrOuLnd1uuC/N9cHX1rSjncNYS0rwBk=; b=dvRCDfEedXrDbUPqXKX6BDYOo0Xbwtxe+onnGx1sFbo7P65s62bDynRLiV6Hf+3qyHVFdL/LW5Fd+5GYxqTa+vt015et5+yDHwqubP2bPFhg1IdtWFU0rtjgMXLZ2DG0vmK/NDwvZUqx0CO4gQ0uRBaCRsGYSR88AnH3TiDslNM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177025541117673.17861323859802; Wed, 4 Feb 2026 17:36:51 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221355.1529654 (Exim 4.92) (envelope-from ) id 1vnoI9-0002g9-Ch; Thu, 05 Feb 2026 01:36:21 +0000 Received: by outflank-mailman (output) from mailman id 1221355.1529654; Thu, 05 Feb 2026 01:36:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI9-0002fQ-6G; Thu, 05 Feb 2026 01:36:21 +0000 Received: by outflank-mailman (input) for mailman id 1221355; Thu, 05 Feb 2026 01:36:19 +0000 Received: from mail.xenproject.org ([104.130.215.37]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI7-0002TG-1r for xen-devel@lists.xenproject.org; Thu, 05 Feb 2026 01:36:19 +0000 Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.96) (envelope-from ) id 1vnoI6-003wR7-3B; Thu, 05 Feb 2026 01:36:18 +0000 Received: from [140.209.201.102] (helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnoI6-00HVXX-1W; Thu, 05 Feb 2026 01:36:18 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From; bh=BMutOBe+27MwLrOuLnd1uuC/N9cHX1rSjncNYS0rwBk=; b=YfLCsDy85/YQXPUp+nhtR32ejQ sNRH1x0KloisX4lyHEJmPs0Te51ZWTdZWTWd4K7GeNECWxBny/uWMP4+bMudNtgCqPSJGJwuZ4ki6 8YIz55bbVEYQKEssoW8dLT1cAECE4ZzUyYzpn0AGeqgkwgIKtzS8L92YeDloOis1lc0Y=; From: dmukhin@xen.org To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v5 5/6] xen/console: update conring memory allocation Date: Wed, 4 Feb 2026 17:36:05 -0800 Message-ID: <20260205013606.3384798-6-dmukhin@ford.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260205013606.3384798-1-dmukhin@ford.com> References: <20260205013606.3384798-1-dmukhin@ford.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1770255412296154100 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 conring buffer doesn't need to be aligned to it's size; it just needs to be contiguous. Use xmalloc_bytes() in console_init_preirq() for run-time conring buffer allocation. Warn user when the conring size is being changed behind the user's back during the console initialization. Also, limit the user-selectable conring buffer size to the maximum of 2GB and minimum of _CONRING_SIZE. Suggested-by: Andrew Cooper Signed-off-by: Denis Mukhin --- Changes since v4: - new patch --- xen/drivers/char/console.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 3ad86fd436e2..9394ab2a89eb 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -463,20 +463,34 @@ static void cf_check conring_dump_keyhandler(unsigned= char key) void __init console_init_ring(void) { char *ring; - unsigned int start, size, chunk, order, memflags; + unsigned int start, size, chunk; unsigned long flags; =20 if ( !opt_conring_size ) return; =20 - order =3D get_order_from_bytes(max(opt_conring_size, conring_size)); - memflags =3D MEMF_bits(crashinfo_maxaddr_bits); - while ( (ring =3D alloc_xenheap_pages(order, memflags)) =3D=3D NULL ) + opt_conring_size =3D max(opt_conring_size, conring_size); + size =3D ROUNDDOWN(opt_conring_size, PAGE_SIZE); + if ( size !=3D opt_conring_size ) { - BUG_ON(order =3D=3D 0); - order--; + opt_conring_size =3D size; + printk(XENLOG_WARNING "Rounding down console ring size to multiple= of %lu KiB.\n", + PAGE_SIZE >> 10); } - opt_conring_size =3D PAGE_SIZE << order; + if ( opt_conring_size >=3D GB(2) ) + { + opt_conring_size =3D GB(2); + printk(XENLOG_WARNING "Limiting user-configured console ring size.= \n"); + } + else if ( opt_conring_size < _CONRING_SIZE ) + { + opt_conring_size =3D _CONRING_SIZE; + printk(XENLOG_WARNING "Using compile-time console ring size.\n"); + } + + /* Contiguous buffer; does not need to be naturally aligned. */ + ring =3D xmalloc_bytes(opt_conring_size); + BUG_ON(ring =3D=3D NULL); =20 nrspin_lock_irqsave(&console_lock, flags); =20 --=20 2.52.0 From nobody Mon Feb 9 04:56:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1770255401; cv=none; d=zohomail.com; s=zohoarc; b=M62o2hfh43Z8ysaNTGh4Red734Hgsj1ZJ0giVsD+WO2XjTE6ufzqypWUhML55dOuRXDKyDc1bxLxESRP1Og3GRxQ99UehtY3U5RZ4jQMInBsrm+JoJ6+sGFyPNcn8NyVFOn9WZtp0d+VQGM38i60b+ARpDhJysI47rhpA3gp4RU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770255401; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bNWaJuUXW1hcVfeutPblFaJxcDIyBZhI3ZQ6lYZGoTo=; b=Ne43Hs8bdv9jFbcS1hZQxRtFYzE3EQJpO2RQLHfo0auftfd/GStK71qYwwJlldrfioLOeb4VWsp2Dq2nAPT63alGh+Yl8hFtFCgy7DEmFQgFwagagxy0JTFMlu3C45JUD8zZgSjffV8Ng683xAz4vWGTSAc4yMW3qkrPm1h5FhQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770255401601119.53845509868336; Wed, 4 Feb 2026 17:36:41 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221356.1529658 (Exim 4.92) (envelope-from ) id 1vnoI9-0002ng-NS; Thu, 05 Feb 2026 01:36:21 +0000 Received: by outflank-mailman (output) from mailman id 1221356.1529658; Thu, 05 Feb 2026 01:36:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI9-0002mM-Hu; Thu, 05 Feb 2026 01:36:21 +0000 Received: by outflank-mailman (input) for mailman id 1221356; Thu, 05 Feb 2026 01:36:20 +0000 Received: from mail.xenproject.org ([104.130.215.37]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnoI8-0002cG-0K for xen-devel@lists.xenproject.org; Thu, 05 Feb 2026 01:36:20 +0000 Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.96) (envelope-from ) id 1vnoI7-003wRJ-33; Thu, 05 Feb 2026 01:36:19 +0000 Received: from [140.209.201.102] (helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnoI7-00HVXb-1R; Thu, 05 Feb 2026 01:36:19 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From; bh=bNWaJuUXW1hcVfeutPblFaJxcDIyBZhI3ZQ6lYZGoTo=; b=SVkMCn+PN2IcPts2W9aqfA74Q/ 3LhLaJthRaMLGDt5IMwKF9TsHjQWxQA7RlLRpqGUdCnP2GOxwcTbPJLIrxLIc2VA31I/9bsnqXfwA UDaUW6Ov1D2RETN8r6ef+r+kBXyRGddOfvmkexjwjkzLLeuL5XAIz5uOpY/KdZMYKOn8=; From: dmukhin@xen.org To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com, julien@xen.org, michal.orzel@amd.com, roger.pau@citrix.com, sstabellini@kernel.org, dmukhin@ford.com Subject: [PATCH v5 6/6] xen/console: add conring buffer size alignment setting Date: Wed, 4 Feb 2026 17:36:06 -0800 Message-ID: <20260205013606.3384798-7-dmukhin@ford.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260205013606.3384798-1-dmukhin@ford.com> References: <20260205013606.3384798-1-dmukhin@ford.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1770255401817158500 Content-Type: text/plain; charset="utf-8" From: Denis Mukhin =20 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 Signed-off-by: Denis Mukhin --- 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 =20 Default value is 32768 (32KiB). =20 +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; =20 opt_conring_size =3D max(opt_conring_size, conring_size); - size =3D ROUNDDOWN(opt_conring_size, PAGE_SIZE); - if ( size !=3D opt_conring_size ) + if ( IS_ENABLED(CONFIG_CONRING_ALIGN_PAGE_SIZE) ) { - opt_conring_size =3D size; - printk(XENLOG_WARNING "Rounding down console ring size to multiple= of %lu KiB.\n", - PAGE_SIZE >> 10); + size =3D ROUNDDOWN(opt_conring_size, PAGE_SIZE); + if ( size !=3D opt_conring_size ) + { + opt_conring_size =3D size; + printk(XENLOG_WARNING "Rounding down console ring size to mult= iple of %lu KiB.\n", + PAGE_SIZE >> 10); + } } if ( opt_conring_size >=3D GB(2) ) { @@ -512,7 +515,7 @@ void __init console_init_ring(void) =20 nrspin_unlock_irqrestore(&console_lock, flags); =20 - printk("Allocated console ring of %u KiB.\n", opt_conring_size >> 10); + printk("Allocated console ring of %u bytes.\n", opt_conring_size); } =20 /* --=20 2.52.0