|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Option for serial baudrate (x86)
Adds an option to select the baudrate for the serial port that is used
for kernel and/or debug output. This is a useful for running the KVM
port as bare-metal x86 instance.
Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
plat/kvm/Config.uk | 22 ++++++++++++++++++++++
plat/kvm/x86/serial_console.c | 18 ++++++++++++++++--
2 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/plat/kvm/Config.uk b/plat/kvm/Config.uk
index 9aa8a632..3372b6c5 100644
--- a/plat/kvm/Config.uk
+++ b/plat/kvm/Config.uk
@@ -41,6 +41,28 @@ config KVM_DEBUG_VGA_CONSOLE
depends on ARCH_X86_64
help
Choose VGA console for the debug printing
+
+if (KVM_KVM_KERNEL_SERIAL_CONSOLE || KVM_DEBUG_SERIAL_CONSOLE) && ARCH_X86_64
+menu "Serial console configuration"
+ choice
+ prompt "Baudrate"
+ default KVM_SERIAL_BAUD_115200
+
+ config KVM_SERIAL_BAUD_115200
+ bool "115200"
+
+ config KVM_SERIAL_BAUD_57600
+ bool "57600"
+
+ config KVM_SERIAL_BAUD_38400
+ bool "38400"
+
+ config KVM_SERIAL_BAUD_19200
+ bool "19200"
+ endchoice
+endmenu
+endif
+
endmenu
config KVM_PCI
diff --git a/plat/kvm/x86/serial_console.c b/plat/kvm/x86/serial_console.c
index dc9eafa0..f46c69a2 100644
--- a/plat/kvm/x86/serial_console.c
+++ b/plat/kvm/x86/serial_console.c
@@ -25,6 +25,7 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <uk/config.h>
#include <kvm-x86/serial_console.h>
#include <x86/cpu.h>
@@ -39,6 +40,19 @@
#define COM1_DIV_LO (COM1 + 0)
#define COM1_DIV_HI (COM1 + 1)
+/* baudrate divisor */
+#define COM1_BAUDDIV_HI 0x00
+
+#if CONFIG_KVM_SERIAL_BAUD_19200
+#define COM1_BAUDDIV_LO 0x04
+#elif CONFIG_KVM_SERIAL_BAUD_38400
+#define COM1_BAUDDIV_LO 0x03
+#elif CONFIG_KVM_SERIAL_BAUD_57600
+#define COM1_BAUDDIV_LO 0x02
+#else /* default, CONFIG_KVM_SERIAL_BAUD_115200 */
+#define COM1_BAUDDIV_LO 0x01
+#endif
+
#define DLAB 0x80
#define PROT 0x03 /* 8N1 (8 bits, no parity, one stop bit) */
@@ -46,8 +60,8 @@ void _libkvmplat_init_serial_console(void)
{
outb(COM1_INTR, 0x00); /* Disable all interrupts */
outb(COM1_CTRL, DLAB); /* Enable DLAB (set baudrate divisor) */
- outb(COM1_DIV_LO, 0x01);/* Set div to 1 (lo byte) 115200 baud */
- outb(COM1_DIV_HI, 0x00);/* (hi byte) */
+ outb(COM1_DIV_LO, COM1_BAUDDIV_LO);/* Div (lo byte) */
+ outb(COM1_DIV_HI, COM1_BAUDDIV_HI);/* (hi byte) */
outb(COM1_CTRL, PROT); /* Set 8N1, clear DLAB */
}
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |