[PATCH 00/10] Introduce Virtual IRQ (VIRQ) framework

Raymond Mao <[email protected]>
Newsgroups org.infradead.lists.opensbi
Message-ID <[email protected]>
From: Raymond Mao <[email protected]>

This series introduces a Virtual IRQ (VIRQ) framework for OpenSBI to
support domain-aware wired interrupt couriering.

The main use case is to let OpenSBI receive a host HWIRQ in M-mode,
map it into a per-channel VIRQ number space, route it to a target
domain, notify the target S-mode payload, and let that payload
pop/complete the pending VIRQ through an SBI ecall interface.

The implementation is organized as follows:

  - add irqchip helpers for S-mode pending notification
  - extend domain context switching to support VIRQ-driven
    cross-domain couriering and return-to-previous-domain flow
  - add the core VIRQ mapping, routing, and per-(domain,hart)
    pending queue framework
  - add a VIRQ vendor ecall extension for POP and COMPLETE
  - parse sysirq routing rules from DT under /chosen/opensbi-domains
  - derive APLIC target hart routing from sysirq nodes
  - update the irqchip/APLIC path to support deferred completion and
    per-HWIRQ APLIC targets
  - document the DT binding and routing rules

The DT routing model is based on "opensbi,mpxy-sysirq" nodes.
Each interrupts-extended entry contributes one routed physical source,
its entry index becomes the VIRQ number within the selected
opensbi,mpxy-channel-id, and opensbi,domain selects the destination
OpenSBI domain.

This series depends on a previous patch set:
[PATCH v2 1/3] lib: utils: irqchip: implement APLIC hwirq operation hooks
https://lore.kernel.org/opensbi/[email protected]/#t

Raymond Mao (10):
  lib: irqchip: add S-mode notification helpers
  lib: sbi: domain: adaptation for supporting VIRQ couriering domain
    context switch
  lib: sbi: Add Virtual IRQ (VIRQ) subsystem
  lib: sbi: Add VIRQ ecall extension
  lib: sbi: domain: add domain lookup by name
  lib: utils: fdt: parse sysirq routing from DT
  lib: utils: irqchip: derive APLIC targets from sysirq nodes
  lib: irqchip: support deferred completion and per-HWIRQ APLIC targets
  lib: sbi: domain: ensure boot_hartid is assigned
  docs: domain: document sysirq VIRQ mapping and routing rules

 docs/domain_support.md                |   63 ++
 include/sbi/sbi_domain.h              |    7 +
 include/sbi/sbi_domain_context.h      |   24 +
 include/sbi/sbi_ecall_interface.h     |   26 +
 include/sbi/sbi_irqchip.h             |   24 +
 include/sbi/sbi_virq.h                |  492 +++++++++++
 include/sbi_utils/fdt/fdt_helper.h    |   17 +
 include/sbi_utils/irqchip/aplic.h     |    1 +
 lib/sbi/Kconfig                       |   10 +
 lib/sbi/objects.mk                    |    4 +
 lib/sbi/sbi_domain.c                  |   49 ++
 lib/sbi/sbi_domain_context.c          |  152 +++-
 lib/sbi/sbi_ecall_virq.c              |   56 ++
 lib/sbi/sbi_irqchip.c                 |   39 +-
 lib/sbi/sbi_trap.c                    |   16 +
 lib/sbi/sbi_virq.c                    | 1136 +++++++++++++++++++++++++
 lib/utils/fdt/fdt_domain.c            |  119 ++-
 lib/utils/fdt/fdt_helper.c            |   49 ++
 lib/utils/irqchip/aplic.c             |   60 +-
 lib/utils/irqchip/fdt_irqchip_aplic.c |  103 +++
 20 files changed, 2429 insertions(+), 18 deletions(-)
 create mode 100644 include/sbi/sbi_virq.h
 create mode 100644 lib/sbi/sbi_ecall_virq.c
 create mode 100644 lib/sbi/sbi_virq.c

-- 
2.25.1

-- 
opensbi mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/opensbi
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.