^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) config HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Generic "hypervisor virtual console" infrastructure for various
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) hypervisors (pSeries, iSeries, Xen).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) It will automatically be selected if one of the back-end console drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) is selected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) config HVC_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) config HVC_CONSOLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) bool "pSeries Hypervisor Virtual Console support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) depends on PPC_PSERIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) select HVC_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) pSeries machines when partitioned support a hypervisor virtual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) console. This driver allows each pSeries partition to have a console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) which is accessed via the HMC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) config HVC_OLD_HVSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) bool "Old driver for pSeries serial port (/dev/hvsi*)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) depends on HVC_CONSOLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) config HVC_OPAL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) bool "OPAL Console support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) depends on PPC_POWERNV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) select HVC_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) PowerNV machines running under OPAL need that driver to get a console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) config HVC_RTAS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) bool "IBM RTAS Console support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) depends on PPC_RTAS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) IBM Console device driver which makes use of RTAS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) config HVC_IUCV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) bool "z/VM IUCV Hypervisor console support (VM only)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) depends on S390 && NET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) select IUCV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) This driver provides a Hypervisor console (HVC) back-end to access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) a Linux (console) terminal via a z/VM IUCV communication path.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) config HVC_XEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) bool "Xen Hypervisor Console support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) depends on XEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) select HVC_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) Xen virtual console device driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) config HVC_XEN_FRONTEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) bool "Xen Hypervisor Multiple Consoles support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) depends on HVC_XEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) select XEN_XENBUS_FRONTEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Xen driver for secondary virtual consoles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) config HVC_UDBG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) bool "udbg based fake hypervisor console"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) depends on PPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) This is meant to be used during HW bring up or debugging when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) no other console mechanism exist but udbg, to get you a quick
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) console for userspace. Do NOT enable in production kernels.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) config HVC_DCC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) bool "ARM JTAG DCC console"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) depends on ARM || ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) select SERIAL_CORE_CONSOLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) This console uses the JTAG DCC on ARM to create a console under the HVC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) driver. This console is used through a JTAG only on ARM. If you don't have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) a JTAG then you probably don't want this option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) config HVC_DCC_SERIALIZE_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) bool "Use DCC only on core 0"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) depends on SMP && HVC_DCC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) Some debuggers, such as Trace32 from Lauterbach GmbH, do not handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) reads/writes from/to DCC on more than one core. Each core has its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) own DCC device registers, so when a core reads or writes from/to DCC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) it only accesses its own DCC device. Since kernel code can run on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) any core, every time the kernel wants to write to the console, it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) might write to a different DCC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) In SMP mode, Trace32 only uses the DCC on core 0. In AMP mode, it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) creates multiple windows, and each window shows the DCC output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) only from that core's DCC. The result is that console output is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) either lost or scattered across windows.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) Selecting this option will enable code that serializes all console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) input and output to core 0. The DCC driver will create input and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) output FIFOs that all cores will use. Reads and writes from/to DCC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) are handled by a workqueue that runs only core 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) config HVC_RISCV_SBI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) bool "RISC-V SBI console support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) depends on RISCV_SBI_V01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) select HVC_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) This enables support for console output via RISC-V SBI calls, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) is normally used only during boot to output printk.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) If you don't know what do to here, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) config HVCS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) tristate "IBM Hypervisor Virtual Console Server support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) depends on PPC_PSERIES && HVC_CONSOLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) Partitionable IBM Power5 ppc64 machines allow hosting of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) firmware virtual consoles from one Linux partition by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) another Linux partition. This driver allows console data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) from Linux partitions to be accessed through TTY device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) interfaces in the device tree of a Linux partition running
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) this driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) module will be called hvcs. Additionally, this module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) will depend on arch specific APIs exported from hvcserver.ko
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) which will also be compiled when this driver is built as a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) module.