[PATCH 3/4] lib: utils: Improve fdt_ipi
Anup Patel
anup at brainfault.org
Sun May 21 20:56:24 PDT 2023
On Tue, May 9, 2023 at 8:18 PM Xiang W <wxjstz at 126.com> wrote:
>
> Remove dummy driver. Optimize fdt_ipi_cold_init to exit the loop
> early.
>
> Signed-off-by: Xiang W <wxjstz at 126.com>
> ---
> lib/utils/ipi/fdt_ipi.c | 19 +++++--------------
> 1 file changed, 5 insertions(+), 14 deletions(-)
>
> diff --git a/lib/utils/ipi/fdt_ipi.c b/lib/utils/ipi/fdt_ipi.c
> index 66dc510..9e3e53f 100644
> --- a/lib/utils/ipi/fdt_ipi.c
> +++ b/lib/utils/ipi/fdt_ipi.c
> @@ -16,24 +16,17 @@
> extern struct fdt_ipi *fdt_ipi_drivers[];
> extern unsigned long fdt_ipi_drivers_size;
>
> -static struct fdt_ipi dummy = {
> - .match_table = NULL,
> - .cold_init = NULL,
> - .warm_init = NULL,
> - .exit = NULL,
> -};
> -
> -static struct fdt_ipi *current_driver = &dummy;
> +static struct fdt_ipi *current_driver = NULL;
>
> void fdt_ipi_exit(void)
> {
> - if (current_driver->exit)
> + if (current_driver && current_driver->exit)
> current_driver->exit();
> }
>
> static int fdt_ipi_warm_init(void)
> {
> - if (current_driver->warm_init)
> + if (current_driver && current_driver->warm_init)
> return current_driver->warm_init();
> return 0;
> }
> @@ -59,13 +52,11 @@ static int fdt_ipi_cold_init(void)
> return rc;
> }
> current_driver = drv;
> + return 0;
This will succeed if drv->cold_init == NULL.
> }
> -
> - if (current_driver != &dummy)
> - break;
> }
>
> - return 0;
> + return SBI_ENODEV;
On UP systems, there will be no IPI device so we can't fail here.
Regards,
Anup
> }
>
> int fdt_ipi_init(bool cold_boot)
> --
> 2.39.2
>
More information about the opensbi
mailing list