Re: [PATCH] bsps: Add BSP_FLUSH_KERNEL_CHAR_OUTPUT option
On 19.03.24 03:16, Chris Johns wrote: On 19/3/2024 3:49 am, Sebastian Huber wrote: Make the kernel I/O output character device flushing configurable. The bsp_reset() function should reset the unit and do nothing else. --- bsps/aarch64/xilinx-zynqmp/console/console.c | 3 ++- bsps/aarch64/xilinx-zynqmp/include/bsp.h | 2 -- .../console/console-config.c | 3 ++- bsps/arm/xilinx-zynqmp-rpu/include/bsp.h | 2 -- bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c | 3 --- .../xilinx-zynqmp/console/console-config.c| 2 +- bsps/arm/xilinx-zynqmp/include/bsp.h | 2 -- bsps/arm/xilinx-zynqmp/start/bspreset.c | 4 +--- bsps/include/bsp/bootcard.h | 5 + bsps/shared/start/bspfatal-default.c | 4 spec/build/bsps/bspopts.yml | 2 ++ spec/build/bsps/optflushkerncharout.yml | 20 +++ 12 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 spec/build/bsps/optflushkerncharout.yml diff --git a/bsps/aarch64/xilinx-zynqmp/console/console.c b/bsps/aarch64/xilinx-zynqmp/console/console.c index 9ce0b1da63..d1b2850952 100644 --- a/bsps/aarch64/xilinx-zynqmp/console/console.c +++ b/bsps/aarch64/xilinx-zynqmp/console/console.c @@ -41,6 +41,7 @@ #include #include +#include #include #include @@ -234,7 +235,7 @@ rtems_status_code console_initialize( return RTEMS_SUCCESSFUL; } -void zynqmp_debug_console_flush(void) +void bsp_flush_kernel_char_output(void) { zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); } diff --git a/bsps/aarch64/xilinx-zynqmp/include/bsp.h b/bsps/aarch64/xilinx-zynqmp/include/bsp.h index 0ccca8b196..d36abde415 100644 --- a/bsps/aarch64/xilinx-zynqmp/include/bsp.h +++ b/bsps/aarch64/xilinx-zynqmp/include/bsp.h @@ -86,8 +86,6 @@ BSP_START_TEXT_SECTION void zynqmp_setup_mmu_and_cache(void); */ BSP_START_TEXT_SECTION void zynqmp_setup_secondary_cpu_mmu_and_cache( void ); -void zynqmp_debug_console_flush(void); - uint32_t zynqmp_clock_i2c0(void); uint32_t zynqmp_clock_i2c1(void); diff --git a/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c b/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c index f52e008f2b..196b2dec58 100644 --- a/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c +++ b/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -79,7 +80,7 @@ rtems_status_code console_initialize( return RTEMS_SUCCESSFUL; } -void zynqmp_debug_console_flush(void) +void bsp_flush_kernel_char_output(void) { zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); } diff --git a/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h b/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h index e386bd4b26..060147967c 100644 --- a/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h +++ b/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h @@ -83,8 +83,6 @@ extern "C" { */ BSP_START_TEXT_SECTION void zynqmp_setup_mpu_and_cache(void); -void zynqmp_debug_console_flush(void); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c b/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c index eecb4da838..a894f55f6e 100644 --- a/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c +++ b/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c @@ -30,13 +30,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include #include void bsp_reset(void) { - zynqmp_debug_console_flush(); Why remove the call here? - while (true) { /* Wait */ } This BSP is rather new. Flushing the UART followed by an infinite loop doesn't really make sense. I did a full test run for this BSP and there are some more things to fix. diff --git a/bsps/arm/xilinx-zynqmp/console/console-config.c b/bsps/arm/xilinx-zynqmp/console/console-config.c index eadd7f11a2..360d193ba2 100644 --- a/bsps/arm/xilinx-zynqmp/console/console-config.c +++ b/bsps/arm/xilinx-zynqmp/console/console-config.c @@ -81,7 +81,7 @@ rtems_status_code console_initialize( return RTEMS_SUCCESSFUL; } -void zynqmp_debug_console_flush(void) +void bsp_flush_kernel_char_output(void) { zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); } diff --git a/bsps/arm/xilinx-zynqmp/include/bsp.h b/bsps/arm/xilinx-zynqmp/include/bsp.h index a08a5feee9..2785e4c2e0 100644 --- a/bsps/arm/xilinx-zynqmp/include/bsp.h +++ b/bsps/arm/xilinx-zynqmp/include/bsp.h @@ -79,8 +79,6 @@ extern "C" { */ BSP_START_TEXT_SECTION void zynqmp_setup_mmu_and_cache(void); -void zynqmp_debug_console_flush(void); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/bsps/arm/xilinx-zynqmp/start/bspreset.c b/bsps/arm/xilinx-zynqmp/start/bspreset.c index b43b19b05f..ed2f4da83a 100644 --- a/bsps/arm/xilinx-zynqmp/start/bspreset.c +++ b/bsps/arm/xilinx-zynqmp/start/bspreset.c @@ -30,12 +30,10 @@ * POSSIB
Re: [PATCH] bsps: Add BSP_FLUSH_KERNEL_CHAR_OUTPUT option
On 19/3/2024 3:49 am, Sebastian Huber wrote: > Make the kernel I/O output character device flushing configurable. The > bsp_reset() function should reset the unit and do nothing else. > --- > bsps/aarch64/xilinx-zynqmp/console/console.c | 3 ++- > bsps/aarch64/xilinx-zynqmp/include/bsp.h | 2 -- > .../console/console-config.c | 3 ++- > bsps/arm/xilinx-zynqmp-rpu/include/bsp.h | 2 -- > bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c | 3 --- > .../xilinx-zynqmp/console/console-config.c| 2 +- > bsps/arm/xilinx-zynqmp/include/bsp.h | 2 -- > bsps/arm/xilinx-zynqmp/start/bspreset.c | 4 +--- > bsps/include/bsp/bootcard.h | 5 + > bsps/shared/start/bspfatal-default.c | 4 > spec/build/bsps/bspopts.yml | 2 ++ > spec/build/bsps/optflushkerncharout.yml | 20 +++ > 12 files changed, 37 insertions(+), 15 deletions(-) > create mode 100644 spec/build/bsps/optflushkerncharout.yml > > diff --git a/bsps/aarch64/xilinx-zynqmp/console/console.c > b/bsps/aarch64/xilinx-zynqmp/console/console.c > index 9ce0b1da63..d1b2850952 100644 > --- a/bsps/aarch64/xilinx-zynqmp/console/console.c > +++ b/bsps/aarch64/xilinx-zynqmp/console/console.c > @@ -41,6 +41,7 @@ > #include > > #include > +#include > #include > #include > > @@ -234,7 +235,7 @@ rtems_status_code console_initialize( >return RTEMS_SUCCESSFUL; > } > > -void zynqmp_debug_console_flush(void) > +void bsp_flush_kernel_char_output(void) > { >zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); > } > diff --git a/bsps/aarch64/xilinx-zynqmp/include/bsp.h > b/bsps/aarch64/xilinx-zynqmp/include/bsp.h > index 0ccca8b196..d36abde415 100644 > --- a/bsps/aarch64/xilinx-zynqmp/include/bsp.h > +++ b/bsps/aarch64/xilinx-zynqmp/include/bsp.h > @@ -86,8 +86,6 @@ BSP_START_TEXT_SECTION void > zynqmp_setup_mmu_and_cache(void); > */ > BSP_START_TEXT_SECTION void zynqmp_setup_secondary_cpu_mmu_and_cache( void ); > > -void zynqmp_debug_console_flush(void); > - > uint32_t zynqmp_clock_i2c0(void); > > uint32_t zynqmp_clock_i2c1(void); > diff --git a/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c > b/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c > index f52e008f2b..196b2dec58 100644 > --- a/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c > +++ b/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c > @@ -35,6 +35,7 @@ > #include > #include > > +#include > #include > #include > > @@ -79,7 +80,7 @@ rtems_status_code console_initialize( >return RTEMS_SUCCESSFUL; > } > > -void zynqmp_debug_console_flush(void) > +void bsp_flush_kernel_char_output(void) > { >zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); > } > diff --git a/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h > b/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h > index e386bd4b26..060147967c 100644 > --- a/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h > +++ b/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h > @@ -83,8 +83,6 @@ extern "C" { > */ > BSP_START_TEXT_SECTION void zynqmp_setup_mpu_and_cache(void); > > -void zynqmp_debug_console_flush(void); > - > #ifdef __cplusplus > } > #endif /* __cplusplus */ > diff --git a/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c > b/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c > index eecb4da838..a894f55f6e 100644 > --- a/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c > +++ b/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c > @@ -30,13 +30,10 @@ > * POSSIBILITY OF SUCH DAMAGE. > */ > > -#include > #include > > void bsp_reset(void) > { > - zynqmp_debug_console_flush(); Why remove the call here? > - >while (true) { > /* Wait */ >} > diff --git a/bsps/arm/xilinx-zynqmp/console/console-config.c > b/bsps/arm/xilinx-zynqmp/console/console-config.c > index eadd7f11a2..360d193ba2 100644 > --- a/bsps/arm/xilinx-zynqmp/console/console-config.c > +++ b/bsps/arm/xilinx-zynqmp/console/console-config.c > @@ -81,7 +81,7 @@ rtems_status_code console_initialize( >return RTEMS_SUCCESSFUL; > } > > -void zynqmp_debug_console_flush(void) > +void bsp_flush_kernel_char_output(void) > { >zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); > } > diff --git a/bsps/arm/xilinx-zynqmp/include/bsp.h > b/bsps/arm/xilinx-zynqmp/include/bsp.h > index a08a5feee9..2785e4c2e0 100644 > --- a/bsps/arm/xilinx-zynqmp/include/bsp.h > +++ b/bsps/arm/xilinx-zynqmp/include/bsp.h > @@ -79,8 +79,6 @@ extern "C" { > */ > BSP_START_TEXT_SECTION void zynqmp_setup_mmu_and_cache(void); > > -void zynqmp_debug_console_flush(void); > - > #ifdef __cplusplus > } > #endif /* __cplusplus */ > diff --git a/bsps/arm/xilinx-zynqmp/start/bspreset.c > b/bsps/arm/xilinx-zynqmp/start/bspreset.c > index b43b19b05f..ed2f4da83a 100644 > --- a/bsps/arm/xilinx-zynqmp/start/bspreset.c > +++ b/bsps/arm/xilinx-zynqmp/start/bspreset.c > @@ -30,12 +30,10 @@ > * POSSIBILITY OF SUCH DAM
[PATCH] bsps: Add BSP_FLUSH_KERNEL_CHAR_OUTPUT option
Make the kernel I/O output character device flushing configurable. The bsp_reset() function should reset the unit and do nothing else. --- bsps/aarch64/xilinx-zynqmp/console/console.c | 3 ++- bsps/aarch64/xilinx-zynqmp/include/bsp.h | 2 -- .../console/console-config.c | 3 ++- bsps/arm/xilinx-zynqmp-rpu/include/bsp.h | 2 -- bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c | 3 --- .../xilinx-zynqmp/console/console-config.c| 2 +- bsps/arm/xilinx-zynqmp/include/bsp.h | 2 -- bsps/arm/xilinx-zynqmp/start/bspreset.c | 4 +--- bsps/include/bsp/bootcard.h | 5 + bsps/shared/start/bspfatal-default.c | 4 spec/build/bsps/bspopts.yml | 2 ++ spec/build/bsps/optflushkerncharout.yml | 20 +++ 12 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 spec/build/bsps/optflushkerncharout.yml diff --git a/bsps/aarch64/xilinx-zynqmp/console/console.c b/bsps/aarch64/xilinx-zynqmp/console/console.c index 9ce0b1da63..d1b2850952 100644 --- a/bsps/aarch64/xilinx-zynqmp/console/console.c +++ b/bsps/aarch64/xilinx-zynqmp/console/console.c @@ -41,6 +41,7 @@ #include #include +#include #include #include @@ -234,7 +235,7 @@ rtems_status_code console_initialize( return RTEMS_SUCCESSFUL; } -void zynqmp_debug_console_flush(void) +void bsp_flush_kernel_char_output(void) { zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); } diff --git a/bsps/aarch64/xilinx-zynqmp/include/bsp.h b/bsps/aarch64/xilinx-zynqmp/include/bsp.h index 0ccca8b196..d36abde415 100644 --- a/bsps/aarch64/xilinx-zynqmp/include/bsp.h +++ b/bsps/aarch64/xilinx-zynqmp/include/bsp.h @@ -86,8 +86,6 @@ BSP_START_TEXT_SECTION void zynqmp_setup_mmu_and_cache(void); */ BSP_START_TEXT_SECTION void zynqmp_setup_secondary_cpu_mmu_and_cache( void ); -void zynqmp_debug_console_flush(void); - uint32_t zynqmp_clock_i2c0(void); uint32_t zynqmp_clock_i2c1(void); diff --git a/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c b/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c index f52e008f2b..196b2dec58 100644 --- a/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c +++ b/bsps/arm/xilinx-zynqmp-rpu/console/console-config.c @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -79,7 +80,7 @@ rtems_status_code console_initialize( return RTEMS_SUCCESSFUL; } -void zynqmp_debug_console_flush(void) +void bsp_flush_kernel_char_output(void) { zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); } diff --git a/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h b/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h index e386bd4b26..060147967c 100644 --- a/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h +++ b/bsps/arm/xilinx-zynqmp-rpu/include/bsp.h @@ -83,8 +83,6 @@ extern "C" { */ BSP_START_TEXT_SECTION void zynqmp_setup_mpu_and_cache(void); -void zynqmp_debug_console_flush(void); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c b/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c index eecb4da838..a894f55f6e 100644 --- a/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c +++ b/bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c @@ -30,13 +30,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include #include void bsp_reset(void) { - zynqmp_debug_console_flush(); - while (true) { /* Wait */ } diff --git a/bsps/arm/xilinx-zynqmp/console/console-config.c b/bsps/arm/xilinx-zynqmp/console/console-config.c index eadd7f11a2..360d193ba2 100644 --- a/bsps/arm/xilinx-zynqmp/console/console-config.c +++ b/bsps/arm/xilinx-zynqmp/console/console-config.c @@ -81,7 +81,7 @@ rtems_status_code console_initialize( return RTEMS_SUCCESSFUL; } -void zynqmp_debug_console_flush(void) +void bsp_flush_kernel_char_output(void) { zynq_uart_reset_tx_flush(&zynqmp_uart_instances[BSP_CONSOLE_MINOR]); } diff --git a/bsps/arm/xilinx-zynqmp/include/bsp.h b/bsps/arm/xilinx-zynqmp/include/bsp.h index a08a5feee9..2785e4c2e0 100644 --- a/bsps/arm/xilinx-zynqmp/include/bsp.h +++ b/bsps/arm/xilinx-zynqmp/include/bsp.h @@ -79,8 +79,6 @@ extern "C" { */ BSP_START_TEXT_SECTION void zynqmp_setup_mmu_and_cache(void); -void zynqmp_debug_console_flush(void); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/bsps/arm/xilinx-zynqmp/start/bspreset.c b/bsps/arm/xilinx-zynqmp/start/bspreset.c index b43b19b05f..ed2f4da83a 100644 --- a/bsps/arm/xilinx-zynqmp/start/bspreset.c +++ b/bsps/arm/xilinx-zynqmp/start/bspreset.c @@ -30,12 +30,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include +#include void bsp_reset(void) { - zynqmp_debug_console_flush(); - while (true) { /* Wait */ } diff --git a/bsps/include/bsp/bootcard.h b/bsps/include/bsp/bootcard.h index 5f339d65f8..dfdc3ae7e0 100644 --- a/bsps/include/bsp/bootcard.h +++ b/bsps/include/bsp/bootcard.h @@ -94,6 +94,11 @@ struct Per_CPU_Control; */ void