mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-23 07:39:22 +00:00
term/serial: Add support for PCI serial devices
Loosely based on early_pci_serial_init() from Linux, allow GRUB to make
use of PCI serial devices.
Specifically, my Alderlake NUC exposes the Intel AMT SoL UART as a PCI
enumerated device but doesn't include it in the EFI tables.
Tested and confirmed working on a "Lenovo P360 Tiny" with Intel AMT
enabled. This specific machine has (from lspci -vv):
00:16.3 Serial controller: Intel Corporation Device 7aeb (rev 11) (prog-if 02 [16550])
DeviceName: Onboard - Other
Subsystem: Lenovo Device 330e
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin D routed to IRQ 19
Region 0: I/O ports at 40a0 [size=8]
Region 1: Memory at b4224000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: serial
From which the following config (/etc/default/grub) gets a working
serial setup:
GRUB_CMDLINE_LINUX="console=tty0 earlyprintk=pciserial,00:16.3,115200 console=ttyS0,115200"
GRUB_SERIAL_COMMAND="serial --port=0x40a0 --speed=115200"
GRUB_TERMINAL="serial console"
Documentation is added to note that serial devices found on the PCI bus will
be exposed as "pci,XX:XX.X" and how to find serial terminal logical names.
Also, some minor documentation improvements were added.
This can be tested in QEMU by adding a pci-serial device, e.g. using the option
"-device pci-serial".
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Glenn Washburn <development@efficientek.com>
Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
3ee57bd277
commit
8eb3d4df3f
6 files changed
+116
-4
No files matched your search
+10
-3
@@ -2716,8 +2716,7 @@ grub> @kbd{terminal_input serial; terminal_output serial}
|
||||
The command @command{serial} initializes the serial unit 0 with the
|
||||
speed 9600bps. The serial unit 0 is usually called @samp{COM1}, so, if
|
||||
you want to use COM2, you must specify @samp{--unit=1} instead. This
|
||||
command accepts many other options, so please refer to @ref{serial},
|
||||
for more details.
|
||||
command accepts many other options, @pxref{serial} for more details.
|
||||
|
||||
Without argument or with @samp{--port=auto}, GRUB will attempt to use
|
||||
ACPI when available to auto-detect the default serial port and its
|
||||
@@ -4164,6 +4163,9 @@ Additionally, an MMIO address can be suffixed with:
|
||||
@samp{.q} for 64-bit long long word access
|
||||
@end itemize
|
||||
|
||||
Also, @var{port} can be of the form @samp{pci,XX:XX.X} to indicate a serial
|
||||
device exposed on the PCI bus.
|
||||
|
||||
@var{speed} is the transmission speed; default is 9600. @var{word} and
|
||||
@var{stop} are the number of data bits and stop bits. Data bits must
|
||||
be in the range 5-8 and stop bits must be 1 or 2. Default is 8 data
|
||||
@@ -4179,10 +4181,15 @@ The serial port is not used as a communication channel unless the
|
||||
@command{terminal_input} or @command{terminal_output} command is used
|
||||
(@pxref{terminal_input}, @pxref{terminal_output}).
|
||||
|
||||
Note, valid @var{port} values, excluding IO port addresses, can be found
|
||||
by listing terminals with @command{terminal_output}, selecting all names
|
||||
prefixed by @samp{serial_} and removing that prefix.
|
||||
|
||||
Examples:
|
||||
@example
|
||||
serial --port=3f8 --speed=9600
|
||||
serial --port=0x3f8 --speed=9600
|
||||
serial --port=mmio,fefb0000.l --speed=115200
|
||||
serial --port=pci,00:16.3 --speed=115200
|
||||
@end example
|
||||
|
||||
See also @ref{Serial terminal}.
|
||||
|
||||
Reference in new issue
Block a user