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

[PATCH v1 0/8] xen/console: cleanup console input switch logic



Currently, on x86, console input can be rotated in round-robin manner
only between dom0, PV shim, and Xen itself. On Arm the input rotation
can include domUs with vpl011.
  
The patch series introduces the concept of "console focus", which is
defined as the ID of the domain that currently owns the physical console
input.
  
The patch series originates from the NS16550 UART emulator series [1]
for x86, which requires ability to switch physical console input to a
PVH/HVM domain with an emulated UART.
 
The main idea is introducing a per-domain permission flag that is set
during domain initialization and used by the console driver to switch
the input across permitted domains.
 
Patch 0 removes all the trailing white spaces in the console driver code.
 
Patch 1 introduces a new domain permission flag to mark ownership of the
console input for the console driver.   
 
Patches 2-4 prepare console driver to allow console input rotation
across multiple domains based on the new permission flag.
 
Patches 5-6 perform mechanical renames to fit the usage in the code.
 
Patch 7 cleans up the console input switch logic.
 
Patch 8 simplifies the existing vUART code by using newly introduced APIs.

CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/1723361248

[1]: 
https://lore.kernel.org/xen-devel/20250103-vuart-ns8250-v3-v1-0-c5d36b31d66c@xxxxxxxx/

Denis Mukhin (8):
  xen/console: fix trailing whitespaces
  xen/console: introduce console input permission
  xen/domain: introduce domid_top
  xen/domain: introduce domid_alloc()
  xen/console: rename switch_serial_input() to console_switch_focus()
  xen/console: rename console_rx to console_focus
  xen/console: introduce console_set_focus()
  xen/console: introduce console_get_focus()

 xen/arch/arm/dom0less-build.c      |  15 ++-
 xen/arch/arm/domain_build.c        |  19 +++-
 xen/arch/arm/include/asm/setup.h   |   2 -
 xen/arch/arm/setup.c               |   2 -
 xen/arch/arm/vpl011.c              |   7 +-
 xen/arch/ppc/include/asm/setup.h   |   2 -
 xen/arch/riscv/include/asm/setup.h |   2 -
 xen/arch/x86/include/asm/setup.h   |   2 -
 xen/arch/x86/pv/shim.c             |   2 +
 xen/common/domain.c                |   5 +
 xen/common/domctl.c                |  71 +++++++++------
 xen/common/kernel.c                |   8 ++
 xen/drivers/char/console.c         | 142 +++++++++++++++++------------
 xen/include/xen/console.h          |   3 +-
 xen/include/xen/domain.h           |   5 +
 xen/include/xen/sched.h            |   8 +-
 16 files changed, 180 insertions(+), 115 deletions(-)

-- 
2.34.1





 


Rackspace

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