[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1 14/14] xen/riscv: add basic UART support
Update Kconfig to select GENERIC_UART_INIT for basic UART init ( find a dt node and call device specific device_init() ). Drop `default n if RISCV` statement for config HAS_NS16550 as now ns16550 is ready to be compiled and used by RISC-V. Initialize a minimal amount of stuff to have UART and Xen console: - Initialize uart by calling uart_init(). - Initialize Xen console by calling console_init_{pre,post}irq(). - Initialize timer and its internal lists which are used by init_timer() which is called by ns16550_init_postirq(); otherwise "Unhandled exception: Store/AMO Page Fault" occurs. - Enable local interrupt to recieve an input from UART Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> --- xen/arch/riscv/Kconfig | 1 + xen/arch/riscv/setup.c | 16 ++++++++++++++++ xen/drivers/char/Kconfig | 1 - 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/xen/arch/riscv/Kconfig b/xen/arch/riscv/Kconfig index 27086cca9c..f5ba7a5a78 100644 --- a/xen/arch/riscv/Kconfig +++ b/xen/arch/riscv/Kconfig @@ -2,6 +2,7 @@ config RISCV def_bool y select FUNCTION_ALIGNMENT_16B select GENERIC_BUG_FRAME + select GENERIC_UART_INIT select HAS_DEVICE_TREE select HAS_PMAP select HAS_UBSAN diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c index 9765bcbb08..b5fd660a4b 100644 --- a/xen/arch/riscv/setup.c +++ b/xen/arch/riscv/setup.c @@ -4,11 +4,16 @@ #include <xen/bug.h> #include <xen/bootfdt.h> #include <xen/compile.h> +#include <xen/console.h> #include <xen/device_tree.h> #include <xen/init.h> #include <xen/irq.h> +#include <xen/keyhandler.h> #include <xen/mm.h> +#include <xen/percpu.h> +#include <xen/serial.h> #include <xen/shutdown.h> +#include <xen/timer.h> #include <xen/vmap.h> #include <xen/xvmalloc.h> @@ -73,6 +78,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id, remove_identity_mapping(); + percpu_init_areas(); + smp_clear_cpu_maps(); set_processor_id(0); @@ -136,8 +143,17 @@ void __init noreturn start_xen(unsigned long bootcpu_id, intc_preinit(); + uart_init(); + console_init_preirq(); + intc_init(); + timer_init(); + + local_irq_enable(); + + console_init_postirq(); + printk("All set up\n"); machine_halt(); diff --git a/xen/drivers/char/Kconfig b/xen/drivers/char/Kconfig index e6e12bb413..01fa31fb2b 100644 --- a/xen/drivers/char/Kconfig +++ b/xen/drivers/char/Kconfig @@ -3,7 +3,6 @@ config GENERIC_UART_INIT config HAS_NS16550 bool "NS16550 UART driver" if ARM - default n if RISCV default y help This selects the 16550-series UART support. For most systems, say Y. -- 2.49.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |