From bff2877061f5a523b448c73bda64c015293f097b Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 13 Mar 2019 14:51:39 -0400 Subject: [PATCH] Add autocons to Genesis This permits genesis to use ACPI to determine console after boot. This isn't as good as console=, but it's close for most scenarios. --- xCAT-genesis-scripts/usr/bin/autocons.py | 58 +++++++++++++++++++ .../dracut/hooks/cmdline/09-autoconsole.sh | 1 + 2 files changed, 59 insertions(+) create mode 100644 xCAT-genesis-scripts/usr/bin/autocons.py create mode 100644 xCAT-genesis-scripts/usr/lib/dracut/hooks/cmdline/09-autoconsole.sh diff --git a/xCAT-genesis-scripts/usr/bin/autocons.py b/xCAT-genesis-scripts/usr/bin/autocons.py new file mode 100644 index 000000000..66d50d159 --- /dev/null +++ b/xCAT-genesis-scripts/usr/bin/autocons.py @@ -0,0 +1,58 @@ +import os +import struct +import termios + +addrtoname = { + 0x3f8: '/dev/ttyS0', + 0x2f8: '/dev/ttyS1', + 0x3e8: '/dev/ttyS2', + 0x2e8: '/dev/ttyS3', +} +speedmap = { + 0: None, + 3: 9600, + 4: 19200, + 6: 57600, + 7: 115200, +} + +termiobaud = { + 9600: termios.B9600, + 19200: termios.B19200, + 57600: termios.B57600, + 115200: termios.B115200, +} + +def do_serial_config(): + if 'console=ttyS' in open('/proc/cmdline').read(): + return None # Do not do autoconsole if manually configured + spcr = open("/sys/firmware/acpi/tables/SPCR", "rb") + spcr = bytearray(spcr.read()) + if spcr[8] != 2 or spcr[36] != 0 or spcr[40] != 1: + return None + address = struct.unpack(' {0} >&0 2>&1'.format(serialinfo['tty'])) + diff --git a/xCAT-genesis-scripts/usr/lib/dracut/hooks/cmdline/09-autoconsole.sh b/xCAT-genesis-scripts/usr/lib/dracut/hooks/cmdline/09-autoconsole.sh new file mode 100644 index 000000000..670f33c49 --- /dev/null +++ b/xCAT-genesis-scripts/usr/lib/dracut/hooks/cmdline/09-autoconsole.sh @@ -0,0 +1 @@ +python /usr/bin/autocons.py