0ea9db01f0
which serial device to use in that case respectively to not rely on the OFW names of the input/output and stdin/stdout devices. Instead check whether input and output refers to the same device and is of type serial (uart(4) was already doing this) and for the fallback to a serial console in case a keyboard is the selected input device but unplugged do the same for stdin and stdout in case the input device is nonexistent (PS/2 and USB keyboards) or has a 'keyboard' property (RS232 keyboards). Additionally also check whether the OFW did a fallback to a serial console in the same way in case the output device is nonexistent. While at it save on some variables and for sys/boot/sparc64/loader/metadata.c move the code in question to a new function md_bootserial() so it can be kept in sync with uart_cpu_getdev_console() more easily. This fixes selecting a serial console and the appropriate device when using a device path for the 'input-device' and 'output-device' OFW environment variables instead of an alias for the serial device to use or when using a screen alias that additionally denotes a video mode (like e.g. 'screen:r1024x768x60') but no keyboard is plugged in (amongst others). It also makes the code select a serial console in case the OFW did the same due to a misconfiguration like both 'input-device' and 'output-device' set to 'keyboard' or to a nonexisting device (whether the OFW does a fallback to a serial console in case of a misconfiguration or one ends up with just no console at all highly depends on the OBP version however). - Reduce the size of buffers that only ever need to hold the string 'serial' accordingly. Double the size of buffers that may need to hold a device path as e.g. '/pci@8,700000/ebus@5/serial@1,400000:a' exceeds 32 chars. - Remove the package handle of the '/options' node from the argument list of uart_cpu_getdev_dbgport() as it's unused there and future use is also unlikely. MFC after: 1 week |
||
---|---|---|
.. | ||
uart_bus_acpi.c | ||
uart_bus_ebus.c | ||
uart_bus_isa.c | ||
uart_bus_pccard.c | ||
uart_bus_pci.c | ||
uart_bus_puc.c | ||
uart_bus.h | ||
uart_core.c | ||
uart_cpu_alpha.c | ||
uart_cpu_amd64.c | ||
uart_cpu_i386.c | ||
uart_cpu_ia64.c | ||
uart_cpu_pc98.c | ||
uart_cpu_sparc64.c | ||
uart_cpu.h | ||
uart_dbg.c | ||
uart_dev_ns8250.c | ||
uart_dev_sab82532.c | ||
uart_dev_z8530.c | ||
uart_if.m | ||
uart_kbd_sun_tables.h | ||
uart_kbd_sun.c | ||
uart_kbd_sun.h | ||
uart_subr.c | ||
uart_tty.c | ||
uart.h |