[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2] xen/console: Skip switching serial input to non existing domains


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Thu, 16 Mar 2023 11:26:35 +0100
  • 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
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=wqjSEeKLQh14yeaCPgTnilyQ2L9726uHpVLBKd6gwpQ=; b=LWvYDWywNOfUAaAsGhxgJaqgbDT+YzpgeV5VHiSUbnhHnyKeYVov1+5MmfJ2f3AvHoTVIjPpvhUEpPDghSKlwESSHesmMCakEqze1lpj4yvLoU5L72XEHz+GyijtMsv13qDt834fliLaci1YW4d5avfkQTucOJLIVQ7gvvbW6lGqTHUp/MhLD0vdb4qupsPd3x+P1YA6jT5u/5gbfGgNOe5jLsUVsF6j8AF09iCGcUAq9gY/brNDjJPXTOxo7w0AH5OYGmYYUL1W6bXGUBuw0DvgOEyoYvHjCqtXRYN3jB4repBTR8cB7DUmd39OXNpnUIU4a8jI2Mq7R/CIH45msg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bO4PA2JB8wrYw9DbV8TifN0Jhw0tah6DB6uEiNDXdQH6RPQUDkkqPjOfuPxVFw0KVWGTQjGpNfA4doLi6lvlalVPxgvAJpRfSvyXU0LcYXYU1vgaQKkBcvDP4Qbge7yf2y/dxW6Mi8YduwjtyIum0shiniDXfrgpWjjmKAG1zrzU4O/IPbTxYT4WypaJW1ObumQaHi8i13gIETeTiJHe86vcKhttfc4MZ8992nSERay2Mh0mR7QRoXdOMct/3gkXILUWWT8D6zGjGjwSaJ/jMhvGSX8eeQyISetGKkooR3mlce9wGnKuPY8FUO1o8zOkgvMxmydV7JIwf/gAKbMSHw==
  • Cc: Michal Orzel <michal.orzel@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, "Jan Beulich" <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, "Stefano Stabellini" <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Thu, 16 Mar 2023 10:27:01 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

At the moment, we direct serial input to hardware domain by default.
This does not make any sense when running in true dom0less mode, since
such domain does not exist. As a result, users wishing to write to
an emulated UART of a domU are always forced to execute CTRL-AAA first.
The same issue is when rotating among serial inputs, where we always
have to go through hardware domain case. This problem can be elaborated
further to all the domains that no longer exist.

Modify switch_serial_input() so that we skip switching serial input to
non existing domains.

For now, to minimize the required changes and to match the current
behavior with hwdom, the default input goes to the first real domain.
The choice is more or less arbitrary since dom0less domUs are supposedly
equal. This will be handled in the future by adding support in boot time
configuration for marking a specific domain preferred in terms of
directing serial input to.

Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
---
Changes in v2:
 - was: xen/console: Handle true dom0less case when switching serial input
 - use a more generic approach to handle all non-existing domains
---
 xen/drivers/char/console.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index e8468c121ad0..d843b8baf162 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -490,7 +490,24 @@ static void switch_serial_input(void)
     }
     else
     {
-        console_rx++;
+        unsigned int next_rx = console_rx + 1;
+
+        /* Skip switching serial input to non existing domains */
+        while ( next_rx < max_init_domid + 1 )
+        {
+            struct domain *d = rcu_lock_domain_by_id(next_rx - 1);
+
+            if ( d )
+            {
+                rcu_unlock_domain(d);
+                break;
+            }
+
+            next_rx++;
+        }
+
+        console_rx = next_rx;
+
         printk("*** Serial input to DOM%d", console_rx - 1);
     }
 
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.