From nobody Mon Feb 9 16:26:50 2026 Delivered-To: importer@patchew.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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1770248272; cv=pass; d=zohomail.com; s=zohoarc; b=BDxkK9gXwMiRZIfvDTdxV37XqcH1jS6dIfjLUJYv2hRekL+l3OsIGdVwZ18u92xwmaUJ6INIG9vglmfhU2jXuQKiEOQIsjydLW8248+2cawv9aqp0DWSRDDlMz8Lsp6Gbi60Wx8gl32jYkjrJKNRaZLIZRFi/jXi0JPn/UMOelU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770248272; h=Content-Type: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=z+m+wfbaQfqsO+srFswTlFpdkOkHztR+/HdKJrjtAEE=; b=bWqb4PuoI0OwmLstjxED/JOeRfbeLah9uRLX3j/hmds3z8CKaZYkJd+yyZorRAK5bGleCxXiYgcCk7oSofoywo1hrcv1lO0aKRseEgqfHHT5kHdGi+RTlCzAv14Sl/tin33cyCzv9YvEq5Jo7vDtVme/qmf0aNXZAmf5RAwoJFU= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770248272050266.9138116683147; Wed, 4 Feb 2026 15:37:52 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221255.1529541 (Exim 4.92) (envelope-from ) id 1vnmR6-0002It-RB; Wed, 04 Feb 2026 23:37:28 +0000 Received: by outflank-mailman (output) from mailman id 1221255.1529541; Wed, 04 Feb 2026 23:37:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR6-0002I3-JP; Wed, 04 Feb 2026 23:37:28 +0000 Received: by outflank-mailman (input) for mailman id 1221255; Wed, 04 Feb 2026 23:37:27 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR5-0001wI-94 for xen-devel@lists.xenproject.org; Wed, 04 Feb 2026 23:37:27 +0000 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azlp170110003.outbound.protection.outlook.com [2a01:111:f403:c107::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7389be09-0222-11f1-b161-2bf370ae4941; Thu, 05 Feb 2026 00:37:22 +0100 (CET) Received: from BN9PR03CA0504.namprd03.prod.outlook.com (2603:10b6:408:130::29) by DM4PR12MB7766.namprd12.prod.outlook.com (2603:10b6:8:101::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Wed, 4 Feb 2026 23:37:16 +0000 Received: from BN1PEPF00004683.namprd03.prod.outlook.com (2603:10b6:408:130:cafe::c4) by BN9PR03CA0504.outlook.office365.com (2603:10b6:408:130::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.12 via Frontend Transport; Wed, 4 Feb 2026 23:37:14 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004683.mail.protection.outlook.com (10.167.243.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Wed, 4 Feb 2026 23:37:15 +0000 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:15 -0600 Received: from SATLEXMB04.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Wed, 4 Feb 2026 17:37:14 -0600 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" X-Inumbo-ID: 7389be09-0222-11f1-b161-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vjpu7FHY3GbsqJ8C+iiNw+C7Ci+IqUwNbvJhUQGkrjtip+u1LeH3LRvbxOUVfaHtagXmpFAKBDpb/JKvJ6UzPfL8dhfZbKN16lMfVNz05txJWqgnhSFYiJaC8pX/V/N5TLaTPvH9qnhyBpEk3b1MbLZJtmxJrPmjNB47wDW/CpwgcVGpSWgsl5KjTEFY2F8p6osP7bzz7UDgpMSM1AWlYzb1qhvnjt5ygc3cucbhEJD7Lp1RGFB90VZQfxgtUXmRaEXPTz7qR8v5Eo0iz9+JFkawccu/0O/XvQ5KejQbV5osk8iNf5jgSVoXy1mjbUb5INYSO0U55DI65sLEVDJsoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z+m+wfbaQfqsO+srFswTlFpdkOkHztR+/HdKJrjtAEE=; b=oZu6urX+QGXoQzrPduGk/GB1YpW0Hub/re+Zpzz/XavS8kYDpkFmnw7JSZyRnKDZMIWRuTaw7GG/+SgH+x4lKviXqNeHrCI6si0JaeKa6kglqBlODWTA/FeOIRNXJuCIc9BVWTOExlLHibeuZUkQq4s5odnCJMn8jUEnqdV/5htKhqn+7IHSxwQ0gCKIfxEkWFXwP2Nj3zHGE/FlWDeDyrxZtS9uOJOhi5FY0kb/FEQhP+f37sHnf3FIDyuj1UawBZxdtf11asdLnQlHYlxrwt9z7THkMGRTYL9jZ8gCMtig3hzgori6KeoS31DRI92rh2vW1C/Wgy2N/O3wkRp5GQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z+m+wfbaQfqsO+srFswTlFpdkOkHztR+/HdKJrjtAEE=; b=HNFtjdPXYa1EsdXB2qJWCScK8rQYph6QQQlTMZnh05ASZzDrB4HUUTI7xYJeNC1cqH/zcKGszhTUuDuFAGCIrmxe/93r0jRAw1sXBIXqSF80q5IjckWDvSwbR7mpNjVD0UFMt3ApBK0ctJD46dJuUfR51+/wV39ZbGzy2JMjBsM= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Stefano Stabellini To: CC: , , , , , , , , , , Stefano Stabellini Subject: [PATCH v10 1/5] xen/console: use ACCESS_ONCE for console_rx Date: Wed, 4 Feb 2026 15:37:08 -0800 Message-ID: <20260204233712.3396752-1-stefano.stabellini@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004683:EE_|DM4PR12MB7766:EE_ X-MS-Office365-Filtering-Correlation-Id: aa101bac-8a89-4080-6fb6-08de6446542d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?J4tKs+0eqjb0iO28ALtbpTkHjXACNu8eenXMsCjbOr0uAYb87QyHcOEzPsiY?= =?us-ascii?Q?U0/yjFZ+KN6qtUI8/6iJfBnn13ncBTMdMJKKN+VGhzBt9VDoJjhCV6piXusf?= =?us-ascii?Q?7K+fFupV4kQtbR0pOENuIV279DU6Bwp8o5ySzDz+pK857K4Wl8zqENsc2ZXH?= =?us-ascii?Q?p/aKxTGIIAW6h5xm1JGPgS+AaibTkhXK8nY2Oqq3EkQE7+5KK21iVLA9gQfd?= =?us-ascii?Q?ZaqPGRvLnFONeIfUIHa7doXBFAsopOiIAftD/inX7KGHWqR5TtcWTv5JCp7i?= =?us-ascii?Q?zJBc9QU/uKrE8uhia3laYBzm7+NIqEgy/AADrfX59y/xR42jMCaTsWpdHqIh?= =?us-ascii?Q?kpzxSDvQPcEwCBetPfqEP82JqwZlvdBBAG9xpbFrgrhJU31FbuWJLxrN9gVU?= =?us-ascii?Q?9P2/Cox7sDzm/TyLXqn1z/d34u2RF2PsgtXmTL/SjUTRWxOsEByp96YhRyE/?= =?us-ascii?Q?KhtXE/vQURW1Gi0fl7GRVcew2G1YSect7Dl8WzH3fhm+G1LDam1mfnQhrG+h?= =?us-ascii?Q?sM6H2ANGWg/tGYgOLyvQudZeqjMvp3gb8wrmbuPc3vZyA0eqEu1LTbZeoJ0+?= =?us-ascii?Q?wrhl6T5rRWrQ3UCpJtqXtIFUppCLL2mJVH0wKsSY4sTyY+eRyyhGWbP1kaZA?= =?us-ascii?Q?9QmtbSfwj0NmFUFbFhiIqDFROeY1z0j0rAHyVr1niJZid8eB4AR0+23cGqNi?= =?us-ascii?Q?xO+ssf/6auYLYr1eRD0OKWhyvlPqKJammFDzC4A/eJFurAPpwzdvFVYVqxNV?= =?us-ascii?Q?H01RCUjEDv2F9vxcGylrOCdY/SNs5093HjdYo/kVQpLUNUoHPRtCUkIPjjT0?= =?us-ascii?Q?7cgekssLFRaorju0VjgRNRpsJ7IYsbLsfLGiLpjT45o7HE92NVpnvj53Pt7p?= =?us-ascii?Q?E4bQIG0ksFZ7Yoy9z8afummCzJJckYP8X5sNOVm21SSFNHBvJaUiMAyzxnCX?= =?us-ascii?Q?gt08w2tev2CbUS9ORNjY/TljiaUXpEHTTDZkRe/Fv6NHhrXoq1D0DTTHMkz9?= =?us-ascii?Q?fZi//3R/r43NncW7TBRC2jtn1EMYd9QTYeA7KXqt6tpzkkcEO30eJLw1tmvM?= =?us-ascii?Q?2qwI+99kxkvxjHb03mWzZ/Z9x6A4ithd/Dl8jUxgOWKHQTmQA12O5eMkEUsr?= =?us-ascii?Q?ihUBeYBi5LrKjpxBojgJDxDW40m9EMNObmf0H7StmISzlsrjxcJMnuXsCfNs?= =?us-ascii?Q?ZijWyq02p324fBSXw/zJKAYATa7hbHnjKf9c6g7dtbewjU+z5cgQas3IErVT?= =?us-ascii?Q?Xj9BVRXq8ZK+UplcZsxL3XWcozLmLsy1FhiZGk+6uGJXBY0kLh16+MDggVVm?= =?us-ascii?Q?6e7KkxCDdxIySDiiz//n2Uludu8+CO87+iVD8R1dw/9lFLXEBalP+VlTujhO?= =?us-ascii?Q?twkpbX72tQ696/m7lDZOSkhiQg52GBCJlWUwV4xf24lflY7krWZtndf1jTeu?= =?us-ascii?Q?L5cbaT3oc/7qN8yzGsya3uLtK1aYq3cgFheSRsc4YqdsMg+nUwqFfCdgWkeZ?= =?us-ascii?Q?+h8rfKOBMfQQQ2PBaQqkZmr9lAcM3n3c+zEi5hDegMqXTnt7DNUbBdsQIBXV?= =?us-ascii?Q?pWON+ZG8u4XPLSnxtYFxQByIzLTb3vQ5Xsde4WWHMd9TekdTMnBT8oFzRicu?= =?us-ascii?Q?/agBKOGReUldDyp0CTKUN/t3eqEqFR+9EJrq74BjAmv75YdIs7Qn3Gga6xVE?= =?us-ascii?Q?JMd5Kg=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rsjbAevPMSM3fUKJQMwNMYY793JTZywSi1j/83iHyZ4xq7CCSpxsMSKymI5vLnesJhO017OJNAaU4w5aeuk0Fo3/cr1mlgumZeTtp/o6EgXAgB402Tv8dfYFnfTtV7dR/cWw3A8XtvrK7t6m6uC1ohKSrmYURSPVItdghSb+SJNrxCATbRwimmtXhVF0qX3/gbWlxqyevQCOLq7iJuydjTVWCdpbrOeQfxD1+4FWIg8z/TYEgqL2PjFixNtH2Ab8A1sec/y4HlKrfjvfwRkHDJgf1p5YJQZ2pPygHVS7sHaxSBJBscKdIL+jRNreg4C50MW6Mhier+cSbOTfVJ7wYqnWkjMrmTyc43NuFlavRo4M7tFyLcOxCZdiPBr3IbY/zVpgknbkC2ACjoccAmaf4A82jG3nvS1T4l5S2tOz3X5zt46ALdImoOVA1g+gKRen X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 23:37:15.5506 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aa101bac-8a89-4080-6fb6-08de6446542d X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004683.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7766 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1770248274007158500 Content-Type: text/plain; charset="utf-8" There can be concurrent reads and writes to the console_rx variable so it is prudent to use ACCESS_ONCE. Signed-off-by: Stefano Stabellini Acked-by: Jan Beulich Reviewed-by: Denis Mukhin --- xen/drivers/char/console.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 2bdb4d5fb4..35f541ca8e 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -518,11 +518,12 @@ static unsigned int __read_mostly console_rx =3D 0; struct domain *console_get_domain(void) { struct domain *d; + unsigned int rx =3D ACCESS_ONCE(console_rx); =20 - if ( console_rx =3D=3D 0 ) - return NULL; + if ( rx =3D=3D 0 ) + return NULL; =20 - d =3D rcu_lock_domain_by_id(console_rx - 1); + d =3D rcu_lock_domain_by_id(rx - 1); if ( !d ) return NULL; =20 @@ -542,7 +543,7 @@ void console_put_domain(struct domain *d) =20 static void console_switch_input(void) { - unsigned int next_rx =3D console_rx; + unsigned int next_rx =3D ACCESS_ONCE(console_rx); =20 /* * Rotate among Xen, dom0 and boot-time created domUs while skipping @@ -555,7 +556,7 @@ static void console_switch_input(void) =20 if ( next_rx++ >=3D max_console_rx ) { - console_rx =3D 0; + ACCESS_ONCE(console_rx) =3D 0; printk("*** Serial input to Xen"); break; } @@ -575,7 +576,7 @@ static void console_switch_input(void) =20 rcu_unlock_domain(d); =20 - console_rx =3D next_rx; + ACCESS_ONCE(console_rx) =3D next_rx; printk("*** Serial input to DOM%u", domid); break; } @@ -592,7 +593,7 @@ static void __serial_rx(char c) struct domain *d; int rc =3D 0; =20 - if ( console_rx =3D=3D 0 ) + if ( ACCESS_ONCE(console_rx) =3D=3D 0 ) return handle_keypress(c, false); =20 d =3D console_get_domain(); @@ -1193,7 +1194,7 @@ void __init console_endboot(void) * a useful 'how to switch' message. */ if ( opt_conswitch[1] =3D=3D 'x' ) - console_rx =3D max_console_rx; + ACCESS_ONCE(console_rx) =3D max_console_rx; =20 register_keyhandler('w', conring_dump_keyhandler, "synchronously dump console ring buffer (dmesg)", = 0); --=20 2.25.1 From nobody Mon Feb 9 16:26:50 2026 Delivered-To: importer@patchew.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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1770248267; cv=pass; d=zohomail.com; s=zohoarc; b=FegCl24yx8C7Lk8iIV/ZjKi9BC/baVN2UZricf/Od0qVmbkBRx+/l95vH+p2J/LmJjYDwYaBEEqQ15DoVVOw2D7CFNS3KeDx6VYEeqeYNK/0wsb5932agKcFeDhvjPXruhmPwh1n6HUsK2apzr/F9PD16Dl4WKKqlEy7wpcYvxM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770248267; h=Content-Type: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=7MFwuvb8+rgtwgN4iWI9ztcKuHcy7B3bPq6D5eSNPBM=; b=Ewuvr72M4vBUtood/e4EwEZKcffFhTp0fCkOnDFj2NTVvj5jBBEO5UNdfuclAYtr4CG0vEl8Oc90gSv1szd9AjVwRB4XnQhB6DRHL4OlKc77DjvO0zuqPvuO9U7WaYOl/N7Wn7l78VfBeZWsbdatA2aTu44dQ04uUt6dBAe1Ot0= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177024826794042.531964645062885; Wed, 4 Feb 2026 15:37:47 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221252.1529518 (Exim 4.92) (envelope-from ) id 1vnmR3-0001wX-TD; Wed, 04 Feb 2026 23:37:25 +0000 Received: by outflank-mailman (output) from mailman id 1221252.1529518; Wed, 04 Feb 2026 23:37:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR3-0001wQ-Qf; Wed, 04 Feb 2026 23:37:25 +0000 Received: by outflank-mailman (input) for mailman id 1221252; Wed, 04 Feb 2026 23:37:24 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR2-0001wI-S5 for xen-devel@lists.xenproject.org; Wed, 04 Feb 2026 23:37:24 +0000 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c105::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 738610a5-0222-11f1-b161-2bf370ae4941; Thu, 05 Feb 2026 00:37:22 +0100 (CET) Received: from PH8PR07CA0034.namprd07.prod.outlook.com (2603:10b6:510:2cf::15) by DS0PR12MB8813.namprd12.prod.outlook.com (2603:10b6:8:14e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.15; Wed, 4 Feb 2026 23:37:18 +0000 Received: from SA2PEPF000015CB.namprd03.prod.outlook.com (2603:10b6:510:2cf:cafe::d3) by PH8PR07CA0034.outlook.office365.com (2603:10b6:510:2cf::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.14 via Frontend Transport; Wed, 4 Feb 2026 23:37:15 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by SA2PEPF000015CB.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Wed, 4 Feb 2026 23:37:16 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:16 -0600 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 15:37:16 -0800 Received: from SATLEXMB04.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Wed, 4 Feb 2026 17:37:15 -0600 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" X-Inumbo-ID: 738610a5-0222-11f1-b161-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eOWXyyGaMVmZ+SGeqsqzJgedQg644vcPFTtJhiy3oC73xLnMoFbg7U2Y0EsWHFCHpJP0y7oBtx5JEIoCWIcQMo1NtYi49ebIyrvZIn3YtV5+DCicB657d8jE5T4G5hobiJobGFfO3pqMySXXLhZMVq9D1NKTxFDBnKx1XCgo88A5rXEGAywK3I9GGx25QdplrBzqzQi+zcY0QvAo+fFlO9d/HW1XA+endkm5VEvOUsUkTFytlGne19Lr44ABmqc8eXR9cscYTPrvZqVsoLWqkn7MchbIWTOc1WrSt/01kfrijnpeEW21fv/xaXyhjXx9zTXVQtyocSaiiJBz8ut5xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7MFwuvb8+rgtwgN4iWI9ztcKuHcy7B3bPq6D5eSNPBM=; b=kMy7d44dpvTcIETOfTL9QTzMpOdMzBG0b1hw/JUYLKqmwopMmybcb4B/xJJcUKC+a0d3DdSPUQ+UuG9H/J+XeGgUeGmyV3ykByiSONYeUaxSr4/vfDF7fJwiUMXrqL4RLSX9SKmCjuk6TZ/t9SVkcp01KZScjXmlNayHr2xJfHDGx+R60fXU6cMIlUFxzrTT07CuaK73uQWfTD/cO2marp/yw33J5lY5Dv3AXwQl+dTCNx3oWoC/3vNjdABlwCdvf0h3KZlzqWqt7hnO9v56VqrDMUu7s3TqL8iFWKqA1YJQ66W7xBN2j3+wzkrmaDAKA8MCx/v5yts94ySpGGCoFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7MFwuvb8+rgtwgN4iWI9ztcKuHcy7B3bPq6D5eSNPBM=; b=vtWsPxowl+bEnV+jV+fLdpgwVhrJx0ppgIyD2WSzP3Yq1jcafvi8pFoichXadX1FNrZ280On/sMovqUdjjcr5eoBR5Cb9IVQntcfQGRUPVcWtmkaWgNjmjqI94i6/C5TaBndNJoQpRTYw3kjHRYJLay4Q8i7gUqXelVicX0Ewao= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Stefano Stabellini To: CC: , , , , , , , , , , Stefano Stabellini Subject: [PATCH v10 2/5] xen: change VIRQ_CONSOLE to VIRQ_DOMAIN to allow non-hwdom binding Date: Wed, 4 Feb 2026 15:37:09 -0800 Message-ID: <20260204233712.3396752-2-stefano.stabellini@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF000015CB:EE_|DS0PR12MB8813:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d1a508a-bca5-4518-0af0-08de644654f1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?m6QZibMyGtulUGtjPx/hDDDVkTMQc1f+xz+z0NzpU50IystHdwbWOOy3sHWr?= =?us-ascii?Q?NZ/Y2VD/V1PLFX3NU2WpFSk1Vt5T3ZbrMq2nIb55ZwWXh3t9zSGMg8uaHjnd?= =?us-ascii?Q?hhZ7otTXKLzVVxgR8vBZJ2Y7dPJIt70b6K/0Iz5yStBWU38BoCL0vUmDTKsq?= =?us-ascii?Q?5pXwsiROJ3IBiQckEVdy/eTGPgNNfz/61IG8+FB2EyTPSe7hX4P9iTYA3Fzv?= =?us-ascii?Q?bUzMzx+yG/EHz/ymWzfmbj9WvDcPBpRXQwybkYBFv/PuX5A1fuuU5l9B5GMf?= =?us-ascii?Q?NuAgNZ+Dluej5wkT8k+052i5b/KIw+P2VnIiSOqieRADLCay/iZ9qhf1RBYG?= =?us-ascii?Q?tPF2/6T3x7CaEM2L+OWPCedxfGeb+ytLLH0IzOu+65Tv7pCVOAVY6Xkk9VKu?= =?us-ascii?Q?lFW4Zlft/1lxs+BSsNIK2UtI3nCCjmhSCvwMDRjuNafj2fvGmKoT+ctyY3D1?= =?us-ascii?Q?FeUSRandoAW7Hw5+FrpHrGmVhrROqDfLFrj7KRx2saf0IoUI4bVPTaUJncpj?= =?us-ascii?Q?GynO2LlmfGCKZ6ur/LfOlaC5mYUSDH4YcFnWYL6FMhGkx3rOEq82rj70hLdZ?= =?us-ascii?Q?t1OVnC596ZoD8ung4w4ZjVcNfWnzlt4UQnPHF2UAhJBqDHXQY6vheEOXiVzN?= =?us-ascii?Q?RflDE+z3CM0cVH2AF4zGdmWzMcXRafIkCgLGXMxx/5BlSsLJZbtw/xZlH/0d?= =?us-ascii?Q?jj+uj4aFmK69s1U8FTpcDE8a7kmwtSLmvnR88c7PbDHDS9jRZ/iHc5Ibkcum?= =?us-ascii?Q?q6KHHvaHw+90wSUH7onTeyEGBYSA78IESwCxsEwuL0T638N+Al+z6vIk3dQs?= =?us-ascii?Q?jJo4/9rAfrbHCKB6hkP94MME4+EyTK0R9n+/ouP4ch6CgdOa88Q4bnpz3cJl?= =?us-ascii?Q?ltkt+gPs3LgiQQA3QUEoPw11NXddI61xNmH6U/A7LSHjrimhJUwZA3/Ub2CA?= =?us-ascii?Q?+yFv/ZaK8ALvVO6LMGo7uOps/Bm4zqjSyVdIDbsAluiJxZwT8AlkQ6f0rSLF?= =?us-ascii?Q?D0gxHZ1iL+Bs0DX25Re0zylHbc2vTK+i2oEosqBRnDl+rXCOODJZGbx/xyaR?= =?us-ascii?Q?xw4waiUKf6yv83dPKmFEyBuDhEJCkJZmExqmA3ViUGRRfqb7iaYjCXVNu2xv?= =?us-ascii?Q?Ur+YWkbE5iJgd16slaIvTkOLpb4JC349bqXsKmDs9hdnQe0KNKZPsbDzwy0u?= =?us-ascii?Q?YIaNZg1yz05x2eOTxpe8QfF5FPIe8B33IaUp1FIwTNinPl/wOQYugSEiojqm?= =?us-ascii?Q?K8KztzM0D/kdTHCe9Py6LL5XC3Zw20BP+XFm1B5UpqfZ3TewMDfpFNG0f6aM?= =?us-ascii?Q?FAQvxq2fn+ze7SVWV6wPP6APAg5K/J+0jK8pjP3LGUI9Th5vU4M2X2XBt2I5?= =?us-ascii?Q?tYFa1E9Zo4F2dh4q2cZasR6XXyfTEXcsDQjrqyDyhw+/IR8LwrGKYoczSn3J?= =?us-ascii?Q?mhkvC174lL91GVnajbDKyegAu+dulrVKCzXoCt8XCS3CNBnOBdXx5Nd4DIEp?= =?us-ascii?Q?76wTcxZNOJ7L8iQcGtDPUDrPi4HK4Vrdk9jjDym8PetvTxVsxynODeVXMaT+?= =?us-ascii?Q?YW5ssXJq8K01/GgPuDuhy70tZ5Z03FyYO8SB8lD8rtPMlQ2vheP6ofHyqSU1?= =?us-ascii?Q?dH9QGN/UhNfL4nASOx/jf/oy/Z90nEzzODR3SuOXGlFnYlSELIHI8M3bq4NQ?= =?us-ascii?Q?xGUTTA=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AOLnCJM/lj8+fI4goO9tnLKUn1JsmE455ZnplaKwb2tLH9OXED45XCFLjR6lBoOXl2ywxfifcBaxFXqIHyxoIZem6BnQ5G0ohdXPxG0eJmTqlYVbBKDn4FTfawa3WzzValdrUZGFloQddBsOy6YTB9Y93bLZFRqid93dKMUDx/9FyT0Ubi5XKNVEYAgGN8a/5Z2pJdacQQdtcmZoWjjNTQ653+DtpGFA+98kjhTEfTdtNdf8t9SM1Dk4Vdp3K6lWfBABO/Sawlvc6CYE1TinGjmS38qYE7MEUgD/CkIJ6LmgNifDOSHGL40Ub88Y1kT0cGx6UEvOPoAwVuGUULgwxVSzNbGb+mvkXL03g4cKmmEwGk+0eOWpzXplE/82rSG0PYcjPK8ME4vtO9HvyieEj/fwxeU9m9RvDFiJZ2VYptUyuqTDWytusA5bskypGjDG X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 23:37:16.8044 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d1a508a-bca5-4518-0af0-08de644654f1 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF000015CB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8813 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1770248270370154100 Content-Type: text/plain; charset="utf-8" Today only hwdom can bind VIRQ_CONSOLE. This patch changes the virq from global to VIRQ_DOMAIN to allow other domains to bind to it. Note that Linux silently falls back to polling when binding fails, which masks the issue. Signed-off-by: Jason Andryuk Signed-off-by: Stefano Stabellini Reviewed-by: Denis Mukhin --- Changes in v10: - update comment in xen/include/public/xen.h --- xen/common/event_channel.c | 1 + xen/drivers/char/console.c | 2 +- xen/include/public/xen.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index a3d18bc464..f9becb4ca5 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -138,6 +138,7 @@ static enum virq_type get_virq_type(unsigned int virq) return VIRQ_VCPU; =20 case VIRQ_ARGO: + case VIRQ_CONSOLE: return VIRQ_DOMAIN; =20 case VIRQ_ARCH_0 ... VIRQ_ARCH_7: diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 35f541ca8e..fbc89ca2a4 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -613,7 +613,7 @@ static void __serial_rx(char c) * Always notify the hardware domain: prevents receive path from * getting stuck. */ - send_global_virq(VIRQ_CONSOLE); + send_guest_domain_virq(d, VIRQ_CONSOLE); } #ifdef CONFIG_SBSA_VUART_CONSOLE else diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h index b12fd10e63..b8146bd00a 100644 --- a/xen/include/public/xen.h +++ b/xen/include/public/xen.h @@ -176,7 +176,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_ulong_t); /* ` enum virq { */ #define VIRQ_TIMER 0 /* V. Timebase update, and/or requested timeout= . */ #define VIRQ_DEBUG 1 /* V. Request guest to dump debug info. = */ -#define VIRQ_CONSOLE 2 /* G. Bytes received on emergency console. = */ +#define VIRQ_CONSOLE 2 /* D. Bytes received on Xen console. = */ #define VIRQ_DOM_EXC 3 /* G. Exceptional event for some domain. = */ #define VIRQ_TBUF 4 /* G. Trace buffer has records available. = */ #define VIRQ_DEBUGGER 6 /* G. A domain has paused for debugging. = */ --=20 2.25.1 From nobody Mon Feb 9 16:26:50 2026 Delivered-To: importer@patchew.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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1770248265; cv=pass; d=zohomail.com; s=zohoarc; b=fZK3uoNdSlsHeSx+gYYhr3uw/CBVy/P3GUAV5xUxgCyKdV5wsbpqt09D75OX9sZ1fymDWhvS0kkcjT8qwCIxBiY15tcqJVcSHCbefKBN3lRHsdrU8WTEADiVVZ9z1bsSAFNIb1DGeHN/BUQZ0L22yOAWqMSx0TSTfLbCuvztCIs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770248265; h=Content-Type: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=mqwBp4MnNYKS6IvAa9j+HIjyvIvt0WGP7tqhc7zOsLU=; b=fq00PV8cgzix+tQ20cWXBVKrgjyGjDcfUujwz8a/kva1ywbHIglEHhx41F8yM0Yf2hzFuq1vDZRYrsAam4jDB5WIqDGkSHRKGEpNpRtOI0y2Gw/yBCGCTP4iT1j54bZnTla0cI55NhgZqeSA3c6zn801qS/PHznRnnID+Qgw97s= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770248265500333.6617448368538; Wed, 4 Feb 2026 15:37:45 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221254.1529533 (Exim 4.92) (envelope-from ) id 1vnmR6-0002DJ-EL; Wed, 04 Feb 2026 23:37:28 +0000 Received: by outflank-mailman (output) from mailman id 1221254.1529533; Wed, 04 Feb 2026 23:37:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR6-0002Cg-8e; Wed, 04 Feb 2026 23:37:28 +0000 Received: by outflank-mailman (input) for mailman id 1221254; Wed, 04 Feb 2026 23:37:27 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR5-0001wI-1B for xen-devel@lists.xenproject.org; Wed, 04 Feb 2026 23:37:27 +0000 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c112::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7549d2a6-0222-11f1-b161-2bf370ae4941; Thu, 05 Feb 2026 00:37:25 +0100 (CET) Received: from BN9PR03CA0501.namprd03.prod.outlook.com (2603:10b6:408:130::26) by SJ0PR12MB8115.namprd12.prod.outlook.com (2603:10b6:a03:4e3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.12; Wed, 4 Feb 2026 23:37:18 +0000 Received: from BN1PEPF00004683.namprd03.prod.outlook.com (2603:10b6:408:130:cafe::c6) by BN9PR03CA0501.outlook.office365.com (2603:10b6:408:130::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.13 via Frontend Transport; Wed, 4 Feb 2026 23:37:11 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004683.mail.protection.outlook.com (10.167.243.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Wed, 4 Feb 2026 23:37:17 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:17 -0600 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 4 Feb 2026 17:37:17 -0600 Received: from SATLEXMB04.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Wed, 4 Feb 2026 17:37:16 -0600 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" X-Inumbo-ID: 7549d2a6-0222-11f1-b161-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bXOHtvNtMhHVxi9pGyN95NyCmt2c9E4rh8Hhcur3/DVhNUxTbAU84yoqgVDoGJMEqwLc57vXqU9K7PYa3k+YckdbPgsQUW46PGpNLvmFYpbD7jFz+7EMOGNPe5BUF7WxDGVfZP/A6mJS+eUdGxoqf0LAfMoW7uix341EQLLRuRV0IKyUrdiQaOhufT/3F/OGqIMIMkOIGH+M+uG9zJWEUlDuBJ1uZF0pKsST2eqh7qoy07cq+IYfyGKyCsEiCYQAdZtHa80qwGMViFndBlXxTExh5QoPiqGb90XXj9tGTNn5zHHAX/1aGzMLe8Eadwp42GVDfAM6ctbZRx8TrMvj2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mqwBp4MnNYKS6IvAa9j+HIjyvIvt0WGP7tqhc7zOsLU=; b=ExoQGo4s3V/+PqVPPuHLz+5xsKbXQW+A8ESdkvieZ79cdcI1ulC6h64qt7YkFQM8rwz1uXESevV4wWhd1yrj1Nta7p/iOPymzf2Ns3j0hkregsT5mqqAT2p1fA55KxttkMdNay22fBqGaHZF7Yc2EXkroefHGOom+Sg9pJKobs8VdiDVtSlvLtoPny6NXwa/FyRA61L2L0WaCcWJWf1gjcO8U9qaev8W/TidkhKCUocI+uvahHsYIa2+nzkrpw7lhd1vx+VYsHaQInbVQX0oTbiBrb+0S6nr5weontOI66CNhz4Ru0FKPHGo8Md3mrJU/uJyEAJELghvlY9omHgn+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mqwBp4MnNYKS6IvAa9j+HIjyvIvt0WGP7tqhc7zOsLU=; b=Q8kPY6rzJI0ZKXYBLrWSkfNwkscV0FguUXxIF1F5Ukv7ZYThPByrJvwTp5BsaTAP4z05DSY5mEmZ8vhVw2ecMM45x0a4x7ToMprBGR/nKEcz1jOzyLzmWfBfIX6ln20qyVIdafxHqnd5DIKzI8CGoRFAIDxHErJhSFpZyoHeEtU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Stefano Stabellini To: CC: , , , , , , , , , , Stefano Stabellini Subject: [PATCH v10 3/5] xen/console: add locking for serial_rx ring buffer access Date: Wed, 4 Feb 2026 15:37:10 -0800 Message-ID: <20260204233712.3396752-3-stefano.stabellini@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB03.amd.com: stefano.stabellini@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004683:EE_|SJ0PR12MB8115:EE_ X-MS-Office365-Filtering-Correlation-Id: 5d5794e7-a201-4095-f762-08de64465582 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bufdVQeOzJdkhUBif+opBdDYVnsog7QBoI0OWVG/O3EqsIjUEhf8ukNSE5oV?= =?us-ascii?Q?LgbsDb2mVKn+RQfRW8+zKjuD38w0S/q+WGzqdZSzHLYGlgTifg7ZuTrXvm+v?= =?us-ascii?Q?sJ2cEfbIW6RZ/J71fgvzfOyKNOW3un3YOZhZKiC2vX/8U6R4EuugCjgVWWOo?= =?us-ascii?Q?cxgjuHmD3HaB1mz0lYxtwX+6NkrXthGZleZL9F4UwFky8D2+QYRzNBz/dQ2n?= =?us-ascii?Q?k+Mk6O50fqZKcjL876MBIZSIPlKINW+WSwzppLSHw+rn9TLzCyuxS9pyCUs9?= =?us-ascii?Q?JA4PApib8O8uG7NcfqYd51qcwNyTzS7AhzXG6qWs63NK1I4YBMCU4G85fqbk?= =?us-ascii?Q?JWgsphyq1hFzrGvua4rAQozTKP1yweYx+uCEvHUNJp6Cw7aCtCa/RRWbX4qt?= =?us-ascii?Q?o9UsYVqscPMmLVI4x6eehrBK7zyh1UIiqQ9Bp7yURG85VUdwCXUuCET+/0HN?= =?us-ascii?Q?d26pveSC2Vfvv9lE1lH6mYhSJ/UKLU2IR1VuzrihvsRmsEEsoIluacGGQm5k?= =?us-ascii?Q?CLxw/l8eOPr+Qji8NE3G/XcCSBPn4kTlz0XSnJjeeMq4FjbzsFyY3Th5d8Tp?= =?us-ascii?Q?YYQ4TYvPWTliiKouSeZl3EBkJczSQo8Gq09JwNBcck8F08NAW9BVrE0JdTaF?= =?us-ascii?Q?E4zX30HhBukUaM2zM2u4SLnaBFfVgQ4NcdY+VFhd7qat09hwBDOdKx3H9W7c?= =?us-ascii?Q?3Vuv15KrL/n/7nUfCu+vAapAEDwj9vtxPQgOTr7FurutGFSpuX2aGqlY1Kxj?= =?us-ascii?Q?pFmdtnfkptcN4BuynPLl3g3GYCyn3onIVZxgoYciGG0hxPnyiqCKGR7q33V3?= =?us-ascii?Q?w126WabMX9c+xwDny0p9hlTvdvbBWkzm3xeW557aI1lhedJ/fetfdUDT4/Tt?= =?us-ascii?Q?9qEDNoQbNITT5/n4elkCOjeURcBDJmrPv+6e60N9Ezr6XHNQjLwdT1QbKmdR?= =?us-ascii?Q?5vDQMkfEe7QaWtOhuhYW72M95DXDWS060iDJbRYeKaMw5vWi+QFyMf8mqtsO?= =?us-ascii?Q?bXHLXAC40YgyGV7FWC49jDPKEVK7HMQcypYqjAm8cR4gf5TGr82+DxCYaVm5?= =?us-ascii?Q?D4bBeTYg8cGJymuE2J77aQYcMKZ5Kd+lQ4LvdC1ctFHDSH8Zn0KOHN3rNRnU?= =?us-ascii?Q?+LBiCvM9m9/2tGajJB6/KTpEAExMFIT37nvcVKCu6J4/OTzkNE4HrMHXD9dX?= =?us-ascii?Q?+qy0xbfpiHN2v8LwgmQiqLt7LX2wlyF0NvLUmkqL9tPzD4vHCUir48BlmTFk?= =?us-ascii?Q?J/U+OdIlDaRH5k/wcn14U90Y8WYaYi47yJOC7jAJ6vthF/8VRp6WLpFBWuqL?= =?us-ascii?Q?SHDYcPNTbZZSIGGZw7E1wvwzSNBCrh5P1SDhCO4b7L3fxe4oQIYhh3wE8/IU?= =?us-ascii?Q?k7ATZXbn6ggl4rbL3ptbxcX7XPfR22rjFPuP7PSRw8wGYATRPtrqXk7qqulT?= =?us-ascii?Q?qNuBnIj834Vr/xDa2N9rICgvS0ZWNxPIjsPBLVZea0mZ5zUWJpj5sLpfMitz?= =?us-ascii?Q?npLYYLar37DkEyYFbKWnRKpoQLUi2osBsaztxsBm5d01fUkwGnNwpA7EUI2M?= =?us-ascii?Q?joxEExgZGUvC6+A0SjVG1BgycAvl4krr6nESVWRBTBJzXWfqxZBCo2C7IH/Z?= =?us-ascii?Q?F9/lbxL2an0YJEf27I/qrlt7J1zLaqzM6s5OctIbc7//Ph7niym/lDKwoCfM?= =?us-ascii?Q?LDLwGQ=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rQBX5GxwKI8nUpmd7O15a3ozboYJ/XImy0TPuLglSISmQKFuc3Bak46f9CH2OlKgfdN7R+wL3W4OLUc0dJE/lOV4ByG2VqYJL8v0PrVoORvHhZsXYg6EsEdSCEMAEivkpA9VufT/AsrH7/W0rSqicW8Mc4d+Mz9115GYlS2U1BeK8hNuqJT2ge15AuHkV281c1yJD1M+Uv5EgowVJXPGIhUpRpOhTVCooNZ3vYYj7ErjAMS2ox061KyJ1LAXGuPZiHi8lfHd1zamu0weItCFjd+q4XS/js2Q5Olvc6BABNaXdhiGFlsR19Duxq2HWQ0di90BaSFBAZu0FWzDHaDZJqr2vjAxjZ6KusTSM9ZNhu2DMZU8og1DEai8zQN8YWaN2ArzpTFx3aayDlHEX6BbsA3ud2yeH9HPfckvhx9YcPbcTOUWq1CQSeBv1dQjlgkp X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 23:37:17.7884 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5d5794e7-a201-4095-f762-08de64465582 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004683.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8115 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1770248266451154100 Content-Type: text/plain; charset="utf-8" Guard every mutation of serial_rx_cons/prod with console_lock so that cross-domain reads can't see stale data: - In console_switch_input(): protect console_rx assignment with the lock using irqsave/irqrestore variants since this can be called from interrupt context - In __serial_rx(): protect the ring buffer write operation when delivering input to the hardware domain - In do_console_io() CONSOLEIO_read: hold the lock around the entire read loop, using a local buffer copy to avoid holding the lock during copy_to_guest_offset() This is preparatory work for allowing multiple domains to use the console_io hypercalls where proper synchronization is required. Signed-off-by: Stefano Stabellini Reviewed-by: Denis Mukhin --- Changes in v10: - patch split into two halves, this is the first half --- xen/drivers/char/console.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index fbc89ca2a4..ad53073b99 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -553,10 +553,13 @@ static void console_switch_input(void) { domid_t domid; struct domain *d; + unsigned long flags; =20 if ( next_rx++ >=3D max_console_rx ) { + nrspin_lock_irqsave(&console_lock, flags); ACCESS_ONCE(console_rx) =3D 0; + nrspin_unlock_irqrestore(&console_lock, flags); printk("*** Serial input to Xen"); break; } @@ -576,7 +579,9 @@ static void console_switch_input(void) =20 rcu_unlock_domain(d); =20 + nrspin_lock_irqsave(&console_lock, flags); ACCESS_ONCE(console_rx) =3D next_rx; + nrspin_unlock_irqrestore(&console_lock, flags); printk("*** Serial input to DOM%u", domid); break; } @@ -602,12 +607,16 @@ static void __serial_rx(char c) =20 if ( is_hardware_domain(d) ) { + unsigned long flags; + /* * Deliver input to the hardware domain buffer, unless it is * already full. */ + nrspin_lock_irqsave(&console_lock, flags); if ( (serial_rx_prod - serial_rx_cons) !=3D SERIAL_RX_SIZE ) serial_rx_ring[SERIAL_RX_MASK(serial_rx_prod++)] =3D c; + nrspin_unlock_irqrestore(&console_lock, flags); =20 /* * Always notify the hardware domain: prevents receive path from @@ -796,6 +805,7 @@ long do_console_io( { long rc; unsigned int idx, len; + char kbuf[SERIAL_RX_SIZE]; =20 rc =3D xsm_console_io(XSM_OTHER, current->domain, cmd); if ( rc ) @@ -817,6 +827,7 @@ long do_console_io( break; =20 rc =3D 0; + nrspin_lock_irq(&console_lock); while ( (serial_rx_cons !=3D serial_rx_prod) && (rc < count) ) { idx =3D SERIAL_RX_MASK(serial_rx_cons); @@ -825,14 +836,19 @@ long do_console_io( len =3D SERIAL_RX_SIZE - idx; if ( (rc + len) > count ) len =3D count - rc; - if ( copy_to_guest_offset(buffer, rc, &serial_rx_ring[idx], le= n) ) - { - rc =3D -EFAULT; - break; - } + memcpy(kbuf, &serial_rx_ring[idx], len); + + nrspin_unlock_irq(&console_lock); + + if ( copy_to_guest_offset(buffer, rc, kbuf, len) ) + return -EFAULT; rc +=3D len; + + nrspin_lock_irq(&console_lock); + serial_rx_cons +=3D len; } + nrspin_unlock_irq(&console_lock); break; default: rc =3D -ENOSYS; --=20 2.25.1 From nobody Mon Feb 9 16:26:50 2026 Delivered-To: importer@patchew.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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1770248275; cv=pass; d=zohomail.com; s=zohoarc; b=hRoh/Vz7gTzbeFOCvfZqsVclutQ4gD+JjPJCYOEiszjW7IaI+8C5YyT38oG49/UwChVob9UGyoGpFY+v6ZpnvSAPkiQsLlG4z24RjEzQKNT54zH6Goeespz48LCRqaREeNcAusF7SiDoGjNzrE5taVKm8+GIN2QbRyqcvTQIWSU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770248275; h=Content-Type: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=KJpIPQ9Ec8gZQSWwgKAgJ5LcBcdzjYPpdERL2oD0YAY=; b=X0VqKJFzmQrsS17cpEEZzcHWs9VzNNUi7OF/elCM5+G1jwrSf29opYG90upYoQnNdUPY8sozECv10sFvsTCWz8uRs+hO16ery/VsUf8AU3fwoq7d4Nc0j7z7Iu7btnLzHmBu9WOhzcuKsz6TQRobdLsMWL4xcjxaI3g/++juAYo= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770248275696769.7513198415083; Wed, 4 Feb 2026 15:37:55 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221256.1529559 (Exim 4.92) (envelope-from ) id 1vnmRA-0002vO-9V; Wed, 04 Feb 2026 23:37:32 +0000 Received: by outflank-mailman (output) from mailman id 1221256.1529559; Wed, 04 Feb 2026 23:37:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmRA-0002v5-5c; Wed, 04 Feb 2026 23:37:32 +0000 Received: by outflank-mailman (input) for mailman id 1221256; Wed, 04 Feb 2026 23:37:31 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR9-0001wI-38 for xen-devel@lists.xenproject.org; Wed, 04 Feb 2026 23:37:31 +0000 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazlp17011000f.outbound.protection.outlook.com [2a01:111:f403:c100::f]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 77f34a59-0222-11f1-b161-2bf370ae4941; Thu, 05 Feb 2026 00:37:30 +0100 (CET) Received: from BN9PR03CA0501.namprd03.prod.outlook.com (2603:10b6:408:130::26) by SJ0PR12MB6710.namprd12.prod.outlook.com (2603:10b6:a03:44c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.12; Wed, 4 Feb 2026 23:37:19 +0000 Received: from BN1PEPF00004683.namprd03.prod.outlook.com (2603:10b6:408:130:cafe::c6) by BN9PR03CA0501.outlook.office365.com (2603:10b6:408:130::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.13 via Frontend Transport; Wed, 4 Feb 2026 23:37:13 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004683.mail.protection.outlook.com (10.167.243.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Wed, 4 Feb 2026 23:37:19 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:18 -0600 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:18 -0600 Received: from SATLEXMB04.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Wed, 4 Feb 2026 17:37:17 -0600 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" X-Inumbo-ID: 77f34a59-0222-11f1-b161-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=N+5GhNmgPyXYn+xfNH7p1CHD+wBKFMgTdy4kIwrzotDd5gba9c3ScKOg/mwJ3HKjwaTSD4DPTzag1QbBV34i0S7EBs3ZvOPAek2OKXYZaHLbQPk+ASuCYzP8JmDen56sPd7T4QlWlZlLDdSUHCGDPzHaK9k6S2+kSEJJZVYUDsQfs9HK6JShZkkgnQyTby0kMePKDUE6rsxcyrorroQkZ7oCVMrbRXK5IvOr073IRqVDX+/Mcpvt6zbn/WdGA+XUbH5W8EkPw1hjjgK8ZPiGPaKRGepv47CEd+CrA7gFtGiAwPdDJuWcnMs26iUCAzlDl91UTmSuOZSOJXIWMzSc0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KJpIPQ9Ec8gZQSWwgKAgJ5LcBcdzjYPpdERL2oD0YAY=; b=M0d54LBxdZlOTwy/7HkAwnoLg34w1QLIpsRS4o6TTOQtnrczKAzk3mZLrFt/gy3vemr4gtWRzh1Axou+yjl9N9lc4+1WckyU/sg+5mU8v/lm6SY1wXcfCw9ojSXHBeohaO006M5LDG8H43CKqeI7EASuu+l47J6v6svYRPqS0ulut4CnBVkBxj6wmYOEB4TKiylB9gSIGUgVj55L8IdFUvUa7b7sUfVM/l+PTArma+LNIiL95BZOeEp89d6pTuV3tRTkIym9J5p6V98tIxtsL6ankC2R9DbG3ZR3QrxMX0jKRSwvUYs3sljbLzZmZRcqK2SsmkRyRSC3fV73G3h4BA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KJpIPQ9Ec8gZQSWwgKAgJ5LcBcdzjYPpdERL2oD0YAY=; b=Wf0iy+1oByQJ9uQCCteZqtveWhWm6wdyMz4su/UBKkxNxsJsyY5vgrBGsIKQXU4AOqL2ykaHFaK7EKdCsbH6Q7I1KJhKZkELViGvoI1B6dvH4ouefLptfxWJ9bzbdUoL4OzT6ja6DYYNqrXcSxgHGQtVv2gIdzoyNzTRBeSBEQE= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Stefano Stabellini To: CC: , , , , , , , , , , Stefano Stabellini Subject: [PATCH v10 4/5] xen/console: handle multiple domains using console_io hypercalls Date: Wed, 4 Feb 2026 15:37:11 -0800 Message-ID: <20260204233712.3396752-4-stefano.stabellini@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004683:EE_|SJ0PR12MB6710:EE_ X-MS-Office365-Filtering-Correlation-Id: b64183d4-733f-4220-59f9-08de6446567c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?OF2O+aGGIss1OtiLDTMUA2LuQsO76ODGpr3DwQrYhQGmATnIEN1pQPjp95Jd?= =?us-ascii?Q?/ueW8M55ZENJzyswc8g1AoGMNURSryLdRRlNuzjHtbxOoBiL1hW5aH8el3nS?= =?us-ascii?Q?l+7+QYHv2PFDpJeHtrub76YRZEfMNUa63ajDl20G+zUyymtQ+8qOpdu/IHIX?= =?us-ascii?Q?jHy7YkaxYq7e79nbWy80kh1QQz2t2qeF6okDq1p8fRnAU1MXzap1LfuDpX3W?= =?us-ascii?Q?9euDlK4CSP7cWsXvJBRiqcSZ3OKTP4yBtKp1urLxNbpE3sWwN1vXodPCRqb5?= =?us-ascii?Q?8EQx1cfjHMVAP56V1nYpNXzEJwf6t4jHvfmxohk6gmS5RyQjFwlJB2Kci06n?= =?us-ascii?Q?CQ5ZT4TzzAB2R3EeDTclP//HzLZwJndSTlBFr11oM0uXDRT//2bkPkN8ZfHi?= =?us-ascii?Q?yxkJznwrPaB3ofGXePBlXJDlcg5QAVEC8jEFKlUtLRzAD9s4sHLcICTxKwvE?= =?us-ascii?Q?TDDOZq7aAO50m+zm6h25JcvJKQG2qg8fQ598g0L+X3bSYswnWO5PZNxUzTVF?= =?us-ascii?Q?Ko/npBGDFS4vlslSwnQsInOepKstBDggA87stgvT680Rk1H+RvX4zkJh1ooJ?= =?us-ascii?Q?N1iCIP8hd/aETstEw4KtQj6esA+GHVDKjMd5rYc82XzZ8MggLO9gup5MeEpt?= =?us-ascii?Q?Bdv1E7UDilRg9AuKOcFERqKkbSYvDpZcH54dabgaazA79Yny/sb0XSkDp/Yq?= =?us-ascii?Q?bFizPQmY0l8m0OANB3gW7rIuSNg9+L+TEw9AqPAmO0rfhzf87pByGWiPgpQ6?= =?us-ascii?Q?N6K8npC1TLRUNJSOsrVZDZNQSWe/75ZChbe3p029UjprJZIfVjvas4M/Higk?= =?us-ascii?Q?mQJCIdwTW5ir+SxgQzgE2657m5PZ+M6NsZJre+nb374SxxhEUpw30GUaWUdn?= =?us-ascii?Q?9M7WLy/TdqtkdoJiUEOPsKiV8NUqjo53t4DIqpcEcDZwLIoVSQwpG05T9trO?= =?us-ascii?Q?QkxkT0UMCynDAbH7A05UW4Ktw3be4BTWK7opJRILTyFknw4NVJIONJMZXlxJ?= =?us-ascii?Q?csaZknDlZyTsCUUrSaeVMAIZ8cVeYdmBihSkt5wsLYNXkOS8EOWlIij2ereD?= =?us-ascii?Q?Y7xqBvFBJFvjJhrPqz4ToHjMBlnsx2pfNZH0ly4R7O0jVEn4wM/Cd+qln2cH?= =?us-ascii?Q?M8I+5YshirtoeH8NViYIGO/vk3jEwALUFh8F4jEpOpOP5oKO0edXo1uZKlHI?= =?us-ascii?Q?xD7Jfgq2rHzbv09GIOJlOzRboGqWGxhnl2zlHvldJkeCzxwbEhVUTAPzWun3?= =?us-ascii?Q?UYxwD0D5EKs5ivktC7pPWGK1VUEplSOXaGFgV+d3lFKnXHFoJHaD5/LaYQ23?= =?us-ascii?Q?ElXZesaUiVCJHP31wPI+ZOenwJKFrajWFzQ8Wec4BHAhEvTF0+xK08ytNQUb?= =?us-ascii?Q?uOgnLrbPK5YT+quXffIXrtvG1Tec4aHCBC82dyLVG80GrbOyPU+fhdVkAOXi?= =?us-ascii?Q?p5iS+525S5fMXUzkdeKV3JWF8UdPWW7rSg/tHT/7v/jFUBoSQJuzskdde9j6?= =?us-ascii?Q?SdZ9psgLNNLyf78BHYW31FmiBUYXhRhCI+2vR5Uqe2hpk8sT78S5J6eGpZh8?= =?us-ascii?Q?cxegJlp4xy0nMO2p/BSdgd1nblsQ4wijhNUE3kFRO8Ko7ZDzMLHf6yfdq3EO?= =?us-ascii?Q?cz5QYAN5dB2xeO5p5XLbs3fDptuhHb4FyVxyfLsrbNdROoFqiiNji2qcAP9Y?= =?us-ascii?Q?3hRsig=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1Mbec0mvVIBuAf+0dvipf7CbZvT2zx8OGDElS3biPMkESmdrCI1MIHxaI3bjWkN2vrtU3zvwK+qXu5KReuYMzvdXksKX7OTZx8cALiQqPaYNe9I+ZRR8McQ2e5ePHY63oaMA3BfPIuFPPjlpG4rqEJyZKEDOfuhRDrRop53ODDm3yZfB0vG7BCTb0IWUsONMBPdh0CuLHSGGkamQcvL32sxNaCTikcWZUwfnRGPQLr2m2IwYeZcEel0P+UtrxMV+lkd3Sj4XgJuzKjmRbYHKyEInxSnDbwzS0NYA4TEQmpYAGgmWlbTTxGLks8WcWSJKRoaJXLAtq5gBFlmd+LoTVzPOWmvLpR2QmtMJ+VMopnBqqOqg0aG0h1Bonugou2nYoqbMt6Yaa/RHiZ/68NjgnfUEbIPPmPTf1PW8cKa9WSsefCD/kCdvIgfXwD1xKfWr X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 23:37:19.4241 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b64183d4-733f-4220-59f9-08de6446567c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004683.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6710 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1770248276054158500 Content-Type: text/plain; charset="utf-8" Allow multiple dom0less domains to use the console_io hypercalls to print to the console. Handle them in a similar way to vpl011: only the domain which has focus can read from the console. All domains can write to the console but the ones without focus have a prefix. In this case the prefix is applied by using guest_printk instead of printk or console_puts which is what the original code was already doing. When switching focus using Ctrl-AAA, discard any unread data in the input buffer. Input is read quickly and the user would be aware of it being slow or stuck as they use Ctrl-AAA to switch focus domain. In that situation, it is to be expected that the unread input is lost. The domain writes are buffered when the domain is not in focus. Push out the buffer after the domain enters focus on the first guest write. Locking updates: - Discard unread input under the lock when switching focus (including when returning to Xen) so that cross-domain reads can't see stale data - Require is_focus_domain() callers to hold console_lock, and re-check focus after each chunk in the CONSOLEIO_read loop so a focus change simply stops further copies without duplicating or leaking input - Hold cons->lock while flushing buffered writes in the focus path so the direct-write fast path does not race buffered guests or HVM debug output Signed-off-by: Stefano Stabellini Reviewed-by: Denis Mukhin --- Changes in v10: - patch split into two halves this is the second half --- xen/drivers/char/console.c | 52 ++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index ad53073b99..d3ce925131 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -541,6 +541,12 @@ void console_put_domain(struct domain *d) rcu_unlock_domain(d); } =20 +static bool is_focus_domain(const struct domain *d) +{ + ASSERT(rspin_is_locked(&console_lock)); + return d !=3D NULL && d->domain_id =3D=3D console_rx - 1; +} + static void console_switch_input(void) { unsigned int next_rx =3D ACCESS_ONCE(console_rx); @@ -559,6 +565,7 @@ static void console_switch_input(void) { nrspin_lock_irqsave(&console_lock, flags); ACCESS_ONCE(console_rx) =3D 0; + serial_rx_cons =3D serial_rx_prod; nrspin_unlock_irqrestore(&console_lock, flags); printk("*** Serial input to Xen"); break; @@ -581,6 +588,8 @@ static void console_switch_input(void) =20 nrspin_lock_irqsave(&console_lock, flags); ACCESS_ONCE(console_rx) =3D next_rx; + /* Don't let the next dom read the previous dom's unread data.= */ + serial_rx_cons =3D serial_rx_prod; nrspin_unlock_irqrestore(&console_lock, flags); printk("*** Serial input to DOM%u", domid); break; @@ -610,7 +619,7 @@ static void __serial_rx(char c) unsigned long flags; =20 /* - * Deliver input to the hardware domain buffer, unless it is + * Deliver input to the focus domain buffer, unless it is * already full. */ nrspin_lock_irqsave(&console_lock, flags); @@ -740,6 +749,7 @@ static long guest_console_write(XEN_GUEST_HANDLE_PARAM(= char) buffer, unsigned int flags =3D opt_console_to_ring ? CONSOLE_ALL : CONSOLE_DEFAULT; struct domain *cd =3D current->domain; + struct domain_console *cons =3D cd->console; =20 while ( count > 0 ) { @@ -752,17 +762,36 @@ static long guest_console_write(XEN_GUEST_HANDLE_PARA= M(char) buffer, if ( copy_from_guest(kbuf, buffer, kcount) ) return -EFAULT; =20 - if ( is_hardware_domain(cd) ) + /* + * Take both cons->lock and console_lock: + * - cons->lock protects cons->buf and cons->idx + * - console_lock protects console_send() and is_focus_domain() + * checks + * + * The order must be respected. guest_printk() takes the + * console_lock and it is called with cons->lock held. It is + * important that cons->lock is taken first. + */ + spin_lock(&cons->lock); + nrspin_lock_irq(&console_lock); + if ( is_focus_domain(cd) ) { + if ( cons->idx ) + { + console_send(cons->buf, cons->idx, flags); + cons->idx =3D 0; + } + spin_unlock(&cons->lock); + /* Use direct console output as it could be interactive */ - nrspin_lock_irq(&console_lock); console_send(kbuf, kcount, flags); nrspin_unlock_irq(&console_lock); } else { char *kin =3D kbuf, *kout =3D kbuf, c; - struct domain_console *cons =3D cd->console; + + nrspin_unlock_irq(&console_lock); =20 /* Strip non-printable characters */ do @@ -775,7 +804,6 @@ static long guest_console_write(XEN_GUEST_HANDLE_PARAM(= char) buffer, } while ( --kcount > 0 ); =20 *kout =3D '\0'; - spin_lock(&cons->lock); kcount =3D kin - kbuf; if ( c !=3D '\n' && (cons->idx + (kout - kbuf) < (ARRAY_SIZE(cons->buf) - 1))= ) @@ -828,6 +856,8 @@ long do_console_io( =20 rc =3D 0; nrspin_lock_irq(&console_lock); + if ( !is_focus_domain(current->domain) ) + count =3D 0; while ( (serial_rx_cons !=3D serial_rx_prod) && (rc < count) ) { idx =3D SERIAL_RX_MASK(serial_rx_cons); @@ -844,7 +874,19 @@ long do_console_io( return -EFAULT; rc +=3D len; =20 + /* + * First get console_lock again, then check is_focus_domain(). + * It is possible that we switched focus domain during + * copy_to_guest_offset(). In that case, serial_rx_cons and + * serial_rx_prod have been reset so it would be wrong to + * update serial_rx_cons here. Get out of the loop instead. + * + * rc is updated regardless to provide the correct return + * value to the VM as the data has been copied. + */ nrspin_lock_irq(&console_lock); + if ( !is_focus_domain(current->domain) ) + break; =20 serial_rx_cons +=3D len; } --=20 2.25.1 From nobody Mon Feb 9 16:26:50 2026 Delivered-To: importer@patchew.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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1770248264; cv=pass; d=zohomail.com; s=zohoarc; b=j7jwOT4PoIPUAezEHLkJGpEokBm6e/sUxOWTS0IAue57IJGzRNIyK6wuxk6hlDjlBE2b4JgBqt9OIkr5zzF+u1smg1vX1M9LsbD4EATpFo4LEym0A5F5MPAej6uWJ1DdRtnlpioj+gC7m39zGfi8Al+EzvJ5ZnnFf4oEyfXY6Q8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770248264; h=Content-Type: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=3YQTbuJVfM0sef3zdqjvdf8PT/yiTIdcCgsVM88URmI=; b=iwapQplSyEr8WXQ1dYoYnMoa2bMRG35ZXUkdkp8WviysWBWoc2DDrlswpkb67uyetK+Q/aqcEUFfn1RMs0Bqv7u/jpsezdoqKASxFRdXyRYDqo0IzuDJZnseyf4nmH64BXIkaGSFumI+1OWJ3vPpmxYP3vXKmdRjF7Ghko9Qhx8= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 17702482643011009.2945933890497; Wed, 4 Feb 2026 15:37:44 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1221253.1529528 (Exim 4.92) (envelope-from ) id 1vnmR6-0002Ao-4w; Wed, 04 Feb 2026 23:37:28 +0000 Received: by outflank-mailman (output) from mailman id 1221253.1529528; Wed, 04 Feb 2026 23:37:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR6-0002Ab-22; Wed, 04 Feb 2026 23:37:28 +0000 Received: by outflank-mailman (input) for mailman id 1221253; Wed, 04 Feb 2026 23:37:26 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vnmR4-0001zb-FD for xen-devel@lists.xenproject.org; Wed, 04 Feb 2026 23:37:26 +0000 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazlp170120007.outbound.protection.outlook.com [2a01:111:f403:c101::7]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7537a689-0222-11f1-9ccf-f158ae23cfc8; Thu, 05 Feb 2026 00:37:24 +0100 (CET) Received: from PH8PR07CA0033.namprd07.prod.outlook.com (2603:10b6:510:2cf::20) by LV8PR12MB9081.namprd12.prod.outlook.com (2603:10b6:408:188::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.12; Wed, 4 Feb 2026 23:37:20 +0000 Received: from SA2PEPF000015CB.namprd03.prod.outlook.com (2603:10b6:510:2cf:cafe::ac) by PH8PR07CA0033.outlook.office365.com (2603:10b6:510:2cf::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.13 via Frontend Transport; Wed, 4 Feb 2026 23:37:18 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by SA2PEPF000015CB.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Wed, 4 Feb 2026 23:37:19 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:19 -0600 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 4 Feb 2026 17:37:19 -0600 Received: from SATLEXMB04.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Wed, 4 Feb 2026 17:37:18 -0600 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" X-Inumbo-ID: 7537a689-0222-11f1-9ccf-f158ae23cfc8 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FliW+oRrlzbj5N4k8TI8NvCkYQvyXTYhokJtgDDR5kzCWfHKAdYMjOhf6aUGznN3yfslFcVIdFVKuIAv0EzGwc1a7JSa4Ki68rlfZSQqkYiKCRikkR5Oh5KU8Nq3Ve0B+4TGiCwAZmTn4gOUI51QZ1iZvQdxwur25aXiovx+HKup4I0kjRhYmrKS720n92d14KuwPPIERfHFp0ucqbRVerBLZ14UWn7vmLlN2P3fgjBS2+jAepD6Sqe22uxm6iTMe9qCuLwHCN1wbwRch0HVPW2udpnmpzu2FjS82kZED9MBtbadgWOTIZx5n5OPAHa7A1390KYe/m1TRSn151Xc+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3YQTbuJVfM0sef3zdqjvdf8PT/yiTIdcCgsVM88URmI=; b=psa3Xm6kzFK/dlH+RcXG6s18ZyO8Fu+Ql7IVcOhxXqZWhUA2N5PHufdsXVoGDSepSOcCxKn5Hy5gToB2XkBedoqVddlO7ViEPxa07tfzYPCXrYrpCaNkvhG7yLz2BxOCyz8vEOiAAf2PFWEKn5xiHNhG83C4xCjMZDmSHAa/PP9QW55pcHA/G6Dl+JKoziM3Fn8muSPmJslXonoRm+XQYziunVf6jGFuxQ3+5sbOBrg8AAPBq1xOKIEwH0dKl9zkSW7cqV3g5Ky6X/W1IOlYzPLMBuFGTwzpiIUfM+ZfHL/c9OeoyeM5WgFD8dBAJeNzUuuWuuwhmyfdggEBX0y0mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3YQTbuJVfM0sef3zdqjvdf8PT/yiTIdcCgsVM88URmI=; b=w0NDRwwhvfCXdxdnF983Yc4SDGnR6TCDK4JV75QciuNGa7QWJV24X/O2NGNX8ADJ+b7HjV858H8QHBCQn0rcrWs1l1ILrL2nfdADSbPnTK5a/y6kFloFaCO3OHTU4bJfj3W2lb2N9SV8vNMgx2ZofryNcaEr/UDeugS1l0OPGqw= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Stefano Stabellini To: CC: , , , , , , , , , , Stefano Stabellini Subject: [PATCH v10 5/5] xen: enable dom0less guests to use console_io hypercalls Date: Wed, 4 Feb 2026 15:37:12 -0800 Message-ID: <20260204233712.3396752-5-stefano.stabellini@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF000015CB:EE_|LV8PR12MB9081:EE_ X-MS-Office365-Filtering-Correlation-Id: 667219e7-6117-4efd-f2a6-08de644656d1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6p1lYikMgf5hL9z7dgBMfC+myq5P4Sot3oLo6ykKNe+wYL5YB66Dc2X5WA0a?= =?us-ascii?Q?BSFOF58WVI4jTMWdfcztc2GeTqLfy7dt5DrbH7ZzzzNzBRqBN7dPEp/NFAUT?= =?us-ascii?Q?JrVOyUKBgvWb9D9i1ZjvH3XRRyYf7T7u9m8BgHpVwK9S0//1Y2dVlgtbhgP6?= =?us-ascii?Q?/2WOZX+lawy7rckBCaookGNv8nKAnfoJlZswAnipaU/mhdEZNgTuONThsP1d?= =?us-ascii?Q?Q9Um40g5S2uXiCqNlqrt3H2dUebopt2zbAnVUktUU6+JZgQFjvNuFh+3g+gy?= =?us-ascii?Q?qZDKaxAwZ98ilDcPbaFPV1JWfGtHrb/M6OyawCFIzTAHF6ArqtGIaQ2qZgk5?= =?us-ascii?Q?rV8B1YuKfLexJjWJi9axLtWdnx3WfKt2hUH+e5Vk17iKnNd2ftDMUNyY14a5?= =?us-ascii?Q?zdzth3cgVk+++HuadaAVZXPtMEQIzupAe++iznMoI0a73VkqCbiAb5PDsBqV?= =?us-ascii?Q?+86v83V2Kb1XSkestyW6uWz4VbxFJP4y4LVIn4dQzp8HSzME8HQuIFcMZurd?= =?us-ascii?Q?7yKH2hccFDx4bAs+ZIgvSBMmgaS8gH2yqEZDqWUDkVYRPttj/+Ew117W/EM9?= =?us-ascii?Q?R5+nv9ttJV9U0MMQ3cX0k1AtaoluaFowcg9cwMoQhlcRMFrj5rYipuxYacGQ?= =?us-ascii?Q?GGHsMFM1S+nem4PEwAA9I4WNlmL6gK2GvWrqe3HeUt502lIHAoHMbHu3REiX?= =?us-ascii?Q?nYCrWL1QxzFCoZOZpRYwWC21plXMGrzsK+JeWYyB+EHE9PkdzyFtYfmFjGcN?= =?us-ascii?Q?uS0Fgi3gDlD5QlxiWDm969RO0YHiNYd1wXynbUOAMrfxKnBZietafSYnuQyE?= =?us-ascii?Q?cLwMwgQWnRR3axGbRJU4shdLmiyJk8jnuD6x6icsuT+QEZKu+hSxBJgjQ94c?= =?us-ascii?Q?2li29e7ablxpL3jYRfuMwMUOymdabEQYusAEHXEK8SIIKENpiXJOjhdkBZ7z?= =?us-ascii?Q?IGNeTQtbNygSRnX/g22GQteXu0Q2VObJIV/FlbmoRZp7DFPlZkyQd7solmuO?= =?us-ascii?Q?/V5lIuuKlfZ2VDnd7r/9NHOD3Xz8RrP8/k0X6YOk6oC3uQLG+S/TXWSxPI+H?= =?us-ascii?Q?rFYVJSufDEmH9y9N7ZagX8UApc+6vRWpQg+qbP2jIik1nRFKvYeuWUdUdx9A?= =?us-ascii?Q?9MUvfQjGisdKsJUd9f7VyqWv9LAEwDKqAKyJUe8Z8XLjZLOMcmixYcK8tUWt?= =?us-ascii?Q?7NlI/wf+WE4eB4nxglPWA3eFMbC/KiRCB7bn/7XsHsdap7pyrPo+rUfvGSIF?= =?us-ascii?Q?4S4DmZ9emiwZMboQr3aXzx2zXLVLyyYWe1rC4tpNrO8xgKluftzJUi5cdlpd?= =?us-ascii?Q?Yc1Q3vVBncVk5VvUzvy88Jcs/AdDNr/HhyVoddGaYScG4y3mXrOn+giPVNNe?= =?us-ascii?Q?ZWpAd12jj8yZmtUQPOn7D57b3Mwrsm5yeFElbG7tc+WEJGZkHrbRaYyapVz/?= =?us-ascii?Q?7MhkJiOmp8vjnsKBTqoKtdZ5K/VWeRKrZdpLl69Y2CnpVNgQCcHtgkN3Q5bT?= =?us-ascii?Q?bvYRYWgiV06i3o/JUQiELWGoolAw09ppCL0oN8p+MSy1vzlN7UmbYyncrSFA?= =?us-ascii?Q?Hcld6riFhuLUaKnmsirTsDe9NEc/UjdpS4nqr1L52ytPTyOHXc3g7/ubdVBd?= =?us-ascii?Q?+v0ABE0EtqznOV0d7pPHsjg+JlU5qzWA29CiyjswKdvyqcDtjs5eX1ykrwqt?= =?us-ascii?Q?IGwiAw=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2+9wX8DY0f821lFtAN/xmgdaGhpypnAMB3xYzY6ymyNll4kod+/6hdlsGkKLt5mYj0tcH6PWP6U0boxa8oi5ktHcjiq0v+b4ggk/xbfSM4WNBMAQZU+eioBFQIkAZrpJ/Y682DT/lg9Yx+d0Bj6xsXu1PC/SLjCI/8EYlpop8ZuLWCzXoMKjCbCYr/rmagKj/RD3w4iI0YUAmbvbCkAMTXl4XbJrGztpvyC9HLvqvQQBuFYBltFou5HLXpi1uI0RbfrPuCV/axbRxs9T7TzRKrS633r/cVTG9mhIDsBJ0+qsri/OMHMn4gJ1kcqYCl+uO/IB6v7LZCagsJFfc8Cu2HoLWrlp6uS3YGfjeOSpq8MknszIQoZXzM45P+CZSUruAEAmOuW44WyjJ7okiy9QwZJDeiDvPiuhrgy3fA43UidDyYI/lJIOrppMUSPC3Qrw X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 23:37:19.9609 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 667219e7-6117-4efd-f2a6-08de644656d1 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF000015CB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9081 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1770248266211158500 Content-Type: text/plain; charset="utf-8" Enable dom0less guests on ARM to use console_io hypercalls: - set input_allow =3D true for dom0less domains - update the in-code comment in console.c - prioritize the VUART check to retain the same behavior as today Signed-off-by: Stefano Stabellini Reviewed-by: Denis Mukhin =20 --- xen/common/device-tree/dom0less-build.c | 2 ++ xen/drivers/char/console.c | 16 ++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr= ee/dom0less-build.c index 840d14419d..cb7026fa7e 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -829,6 +829,8 @@ static int __init construct_domU(struct kernel_info *ki= nfo, =20 rangeset_destroy(kinfo->xen_reg_assigned); =20 + d->console->input_allowed =3D true; + return rc; } =20 diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index d3ce925131..7f0c3d8376 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -610,11 +610,20 @@ static void __serial_rx(char c) if ( ACCESS_ONCE(console_rx) =3D=3D 0 ) return handle_keypress(c, false); =20 + /* Includes an is_focus_domain() check. */ d =3D console_get_domain(); if ( !d ) return; =20 - if ( is_hardware_domain(d) ) +#ifdef CONFIG_SBSA_VUART_CONSOLE + /* Prioritize vpl011 if enabled for this domain */ + if ( d->arch.vpl011.base_addr ) + { + /* Deliver input to the emulated UART. */ + rc =3D vpl011_rx_char_xen(d, c); + } + else +#endif { unsigned long flags; =20 @@ -633,11 +642,6 @@ static void __serial_rx(char c) */ send_guest_domain_virq(d, VIRQ_CONSOLE); } -#ifdef CONFIG_SBSA_VUART_CONSOLE - else - /* Deliver input to the emulated UART. */ - rc =3D vpl011_rx_char_xen(d, c); -#endif =20 if ( consoled_is_enabled() ) /* Deliver input to the PV shim console. */ --=20 2.25.1