[PATCH 0/9] Manage irqchip driver lifecycle from SBI core

Anup Patel anup at brainfault.org
Wed Nov 27 22:25:40 PST 2024


On Tue, Nov 5, 2024 at 9:40 AM Samuel Holland <samuel.holland at sifive.com> wrote:
>
> For three kinds of devices (IPI, irqchip, and timer) the platform is
> responsible for implementing extra warm init and exit lifecycle hooks.
> Since the driver lifecycle is the same regardless of platform, I think
> it makes sense to call these lifecycle functions from the SBI core, not
> the platform. This produces smaller code since we don't need to track
> the current driver in multiple places. And since it makes the FDT driver
> interface the same for all kinds of devices, it allows us to reuse the
> same FDT scan/match/init code across all of them.
>
> This series converts the irqchip drivers. This is the most complicated
> of the three conversions, because it required significant refactoring in
> the PLIC driver. Much of that refactoring is useful for other reasons
> (more generic power management flows), but I mostly limited the changes
> to what was needed for removing the driver .warm_init hook. I tested
> this series on Allwinner D1 and verified that cpuidle still works.
>
> I sent the IPI conversion here[1], and the timer conversion here[2].
>
> [1]: http://lists.infradead.org/pipermail/opensbi/2024-October/007546.html
> [2]: http://lists.infradead.org/pipermail/opensbi/2024-September/007332.html
>
>
> Samuel Holland (9):
>   lib: utils/irqchip: plic: Allow enabling IRQs by default
>   lib: utils/irqchip: plic: Move delegation to base PLIC driver
>   lib: utils/irqchip: plic: Provide a hartindex to context map
>   lib: utils/irqchip: plic: Common PM save/restore
>   lib: utils/irqchip: Move per-hart data from fdt_plic to plic
>   lib: sbi_irqchip: Register devices during cold init
>   lib: sbi_irqchip: Call driver warm_init from SBI core
>   platform: Drop irqchip warm init and exit hooks
>   lib: sbi_irqchip: Set the IRQ handler when registering a chip

Applied this series to the riscv/opensbi repo.

Thanks,
Anup

>
>  include/sbi/sbi_irqchip.h                    |  24 ++-
>  include/sbi/sbi_platform.h                   |  25 +--
>  include/sbi_utils/irqchip/fdt_irqchip.h      |  10 +-
>  include/sbi_utils/irqchip/fdt_irqchip_plic.h |  33 ---
>  include/sbi_utils/irqchip/imsic.h            |   2 -
>  include/sbi_utils/irqchip/plic.h             |  32 +--
>  lib/sbi/sbi_irqchip.c                        |  36 ++--
>  lib/utils/irqchip/aplic.c                    |   7 +
>  lib/utils/irqchip/fdt_irqchip.c              |  57 +----
>  lib/utils/irqchip/fdt_irqchip_aplic.c        |   8 -
>  lib/utils/irqchip/fdt_irqchip_imsic.c        |   1 -
>  lib/utils/irqchip/fdt_irqchip_plic.c         | 135 ++----------
>  lib/utils/irqchip/imsic.c                    |  13 +-
>  lib/utils/irqchip/plic.c                     | 209 ++++++++++++++-----
>  platform/fpga/ariane/platform.c              |  39 +---
>  platform/fpga/openpiton/platform.c           |  41 +---
>  platform/generic/allwinner/sun20i-d1.c       |  36 +---
>  platform/generic/platform.c                  |   1 -
>  platform/kendryte/k210/platform.c            |  17 +-
>  platform/nuclei/ux600/platform.c             |  17 +-
>  platform/template/platform.c                 |  21 +-
>  21 files changed, 300 insertions(+), 464 deletions(-)
>  delete mode 100644 include/sbi_utils/irqchip/fdt_irqchip_plic.h
>
> --
> 2.45.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list