2019-04-02 22:07:07 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
2013-01-18 14:44:22 +08:00
|
|
|
if TTY
|
|
|
|
|
2011-02-23 07:41:47 +08:00
|
|
|
config HVC_DRIVER
|
|
|
|
bool
|
|
|
|
help
|
|
|
|
Generic "hypervisor virtual console" infrastructure for various
|
2017-08-17 01:31:57 +08:00
|
|
|
hypervisors (pSeries, iSeries, Xen).
|
2011-02-23 07:41:47 +08:00
|
|
|
It will automatically be selected if one of the back-end console drivers
|
|
|
|
is selected.
|
|
|
|
|
|
|
|
config HVC_IRQ
|
|
|
|
bool
|
|
|
|
|
|
|
|
config HVC_CONSOLE
|
|
|
|
bool "pSeries Hypervisor Virtual Console support"
|
|
|
|
depends on PPC_PSERIES
|
|
|
|
select HVC_DRIVER
|
|
|
|
select HVC_IRQ
|
|
|
|
help
|
|
|
|
pSeries machines when partitioned support a hypervisor virtual
|
|
|
|
console. This driver allows each pSeries partition to have a console
|
|
|
|
which is accessed via the HMC.
|
|
|
|
|
powerpc/pseries: Re-implement HVSI as part of hvc_vio
On pseries machines, consoles are provided by the hypervisor using
a low level get_chars/put_chars type interface. However, this is
really just a transport to the service processor which implements
them either as "raw" console (networked consoles, HMC, ...) or as
"hvsi" serial ports.
The later is a simple packet protocol on top of the raw character
interface that is supposed to convey additional "serial port" style
semantics. In practice however, all it does is provide a way to
read the CD line and set/clear our DTR line, that's it.
We currently implement the "raw" protocol as an hvc console backend
(/dev/hvcN) and the "hvsi" protocol using a separate tty driver
(/dev/hvsi0).
However this is quite impractical. The arbitrary difference between
the two type of devices has been a major source of user (and distro)
confusion. Additionally, there's an additional mini -hvsi implementation
in the pseries platform code for our low level debug console and early
boot kernel messages, which means code duplication, though that low
level variant is impractical as it's incapable of doing the initial
protocol negociation to establish the link to the FSP.
This essentially replaces the dedicated hvsi driver and the platform
udbg code completely by extending the existing hvc_vio backend used
in "raw" mode so that:
- It now supports HVSI as well
- We add support for hvc backend providing tiocm{get,set}
- It also provides a udbg interface for early debug and boot console
This is overall less code, though this will only be obvious once we
remove the old "hvsi" driver, which is still available for now. When
the old driver is enabled, the new code still kicks in for the low
level udbg console, replacing the old mini implementation in the platform
code, it just doesn't provide the higher level "hvc" interface.
In addition to producing generally simler code, this has several benefits
over our current situation:
- The user/distro only has to deal with /dev/hvcN for the hypervisor
console, avoiding all sort of confusion that has plagued us in the past
- The tty, kernel and low level debug console all use the same code
base which supports the full protocol establishment process, thus the
console is now available much earlier than it used to be with the
old HVSI driver. The kernel console works much earlier and udbg is
available much earlier too. Hackers can enable a hard coded very-early
debug console as well that works with HVSI (previously that was only
supported for the "raw" mode).
I've tried to keep the same semantics as hvsi relative to how I react
to things like CD changes, with some subtle differences though:
- I clear DTR on close if HUPCL is set
- Current hvsi triggers a hangup if it detects a up->down transition
on CD (you can still open a console with CD down). My new implementation
triggers a hangup if the link to the FSP is severed, and severs it upon
detecting a up->down transition on CD.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-05-12 11:46:38 +08:00
|
|
|
config HVC_OLD_HVSI
|
|
|
|
bool "Old driver for pSeries serial port (/dev/hvsi*)"
|
|
|
|
depends on HVC_CONSOLE
|
|
|
|
|
2011-09-20 01:44:59 +08:00
|
|
|
config HVC_OPAL
|
|
|
|
bool "OPAL Console support"
|
|
|
|
depends on PPC_POWERNV
|
|
|
|
select HVC_DRIVER
|
|
|
|
select HVC_IRQ
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
PowerNV machines running under OPAL need that driver to get a console
|
|
|
|
|
2011-02-23 07:41:47 +08:00
|
|
|
config HVC_RTAS
|
|
|
|
bool "IBM RTAS Console support"
|
|
|
|
depends on PPC_RTAS
|
|
|
|
select HVC_DRIVER
|
|
|
|
help
|
|
|
|
IBM Console device driver which makes use of RTAS
|
|
|
|
|
|
|
|
config HVC_IUCV
|
|
|
|
bool "z/VM IUCV Hypervisor console support (VM only)"
|
2017-05-08 14:03:32 +08:00
|
|
|
depends on S390 && NET
|
2011-02-23 07:41:47 +08:00
|
|
|
select HVC_DRIVER
|
|
|
|
select IUCV
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
This driver provides a Hypervisor console (HVC) back-end to access
|
|
|
|
a Linux (console) terminal via a z/VM IUCV communication path.
|
|
|
|
|
|
|
|
config HVC_XEN
|
|
|
|
bool "Xen Hypervisor Console support"
|
|
|
|
depends on XEN
|
|
|
|
select HVC_DRIVER
|
|
|
|
select HVC_IRQ
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Xen virtual console device driver
|
|
|
|
|
2012-02-21 19:30:42 +08:00
|
|
|
config HVC_XEN_FRONTEND
|
|
|
|
bool "Xen Hypervisor Multiple Consoles support"
|
|
|
|
depends on HVC_XEN
|
|
|
|
select XEN_XENBUS_FRONTEND
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Xen driver for secondary virtual consoles
|
|
|
|
|
2011-02-23 07:41:47 +08:00
|
|
|
config HVC_UDBG
|
|
|
|
bool "udbg based fake hypervisor console"
|
2012-09-18 23:19:27 +08:00
|
|
|
depends on PPC
|
2011-02-23 07:41:47 +08:00
|
|
|
select HVC_DRIVER
|
2012-03-14 15:37:04 +08:00
|
|
|
help
|
2019-11-20 21:38:43 +08:00
|
|
|
This is meant to be used during HW bring up or debugging when
|
2012-03-14 15:37:04 +08:00
|
|
|
no other console mechanism exist but udbg, to get you a quick
|
|
|
|
console for userspace. Do NOT enable in production kernels.
|
2011-02-23 07:41:47 +08:00
|
|
|
|
|
|
|
config HVC_DCC
|
|
|
|
bool "ARM JTAG DCC console"
|
2015-09-13 01:44:39 +08:00
|
|
|
depends on ARM || ARM64
|
2011-02-23 07:41:47 +08:00
|
|
|
select HVC_DRIVER
|
|
|
|
help
|
2019-11-20 21:38:43 +08:00
|
|
|
This console uses the JTAG DCC on ARM to create a console under the HVC
|
2011-02-23 07:41:47 +08:00
|
|
|
driver. This console is used through a JTAG only on ARM. If you don't have
|
|
|
|
a JTAG then you probably don't want this option.
|
|
|
|
|
2018-03-09 06:27:34 +08:00
|
|
|
config HVC_RISCV_SBI
|
|
|
|
bool "RISC-V SBI console support"
|
|
|
|
depends on RISCV
|
|
|
|
select HVC_DRIVER
|
|
|
|
help
|
|
|
|
This enables support for console output via RISC-V SBI calls, which
|
|
|
|
is normally used only during boot to output printk.
|
|
|
|
|
|
|
|
If you don't know what do to here, say Y.
|
|
|
|
|
2011-02-23 07:41:47 +08:00
|
|
|
config HVCS
|
|
|
|
tristate "IBM Hypervisor Virtual Console Server support"
|
|
|
|
depends on PPC_PSERIES && HVC_CONSOLE
|
|
|
|
help
|
|
|
|
Partitionable IBM Power5 ppc64 machines allow hosting of
|
|
|
|
firmware virtual consoles from one Linux partition by
|
|
|
|
another Linux partition. This driver allows console data
|
|
|
|
from Linux partitions to be accessed through TTY device
|
|
|
|
interfaces in the device tree of a Linux partition running
|
|
|
|
this driver.
|
|
|
|
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
|
|
module will be called hvcs. Additionally, this module
|
|
|
|
will depend on arch specific APIs exported from hvcserver.ko
|
|
|
|
which will also be compiled when this driver is built as a
|
|
|
|
module.
|
|
|
|
|
2013-01-18 14:44:22 +08:00
|
|
|
endif # TTY
|