From: Anup Patel <apatel@ventanamicro.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: devicetree@vger.kernel.org, "Conor Dooley" <conor+dt@kernel.org>,
"Saravana Kannan" <saravanak@google.com>,
"Marc Zyngier" <maz@kernel.org>,
"Anup Patel" <anup@brainfault.org>,
"Paul Walmsley" <paul.walmsley@sifive.com>,
linux-kernel@vger.kernel.org, "Rob Herring" <robh+dt@kernel.org>,
"Björn Töpel" <bjorn@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Atish Patra" <atishp@atishpatra.org>,
linux-riscv@lists.infradead.org,
"Frank Rowand" <frowand.list@gmail.com>,
linux-arm-kernel@lists.infradead.org,
"Andrew Jones" <ajones@ventanamicro.com>
Subject: Re: [PATCH v15 00/10] Linux RISC-V AIA Support
Date: Mon, 26 Feb 2024 09:44:59 +0530 [thread overview]
Message-ID: <CAK9=C2W7LfM0BNQf=ovVzDjqsCoqS=5RvTUFn33SH9EVm6xjmw@mail.gmail.com> (raw)
In-Reply-To: <20240226040746.1396416-1-apatel@ventanamicro.com>
Hi Thomas,
On Mon, Feb 26, 2024 at 9:39 AM Anup Patel <apatel@ventanamicro.com> wrote:
>
> The RISC-V AIA specification is ratified as-per the RISC-V international
> process. The latest ratified AIA specifcation can be found at:
> https://github.com/riscv/riscv-aia/releases/download/1.0/riscv-interrupts-1.0.pdf
>
> At a high-level, the AIA specification adds three things:
> 1) AIA CSRs
> - Improved local interrupt support
> 2) Incoming Message Signaled Interrupt Controller (IMSIC)
> - Per-HART MSI controller
> - Support MSI virtualization
> - Support IPI along with virtualization
> 3) Advanced Platform-Level Interrupt Controller (APLIC)
> - Wired interrupt controller
> - In MSI-mode, converts wired interrupt into MSIs (i.e. MSI generator)
> - In Direct-mode, injects external interrupts directly into HARTs
>
> For an overview of the AIA specification, refer the AIA virtualization
> talk at KVM Forum 2022:
> https://static.sched.com/hosted_files/kvmforum2022/a1/AIA_Virtualization_in_KVM_RISCV_final.pdf
> https://www.youtube.com/watch?v=r071dL8Z0yo
>
> To test this series, use QEMU v7.2 (or higher) and OpenSBI v1.2 (or higher).
>
> This series depends upon per-device MSI domain (and few other) patches merged
> by Thomas (tglx) which are available in irq/msi branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
>
> These patches can also be found in the riscv_aia_v15 branch at:
> https://github.com/avpatel/linux.git
>
> Changes since v14:
> - Dropped 9 patches which are already merged by Thomas (tglx) and available in
> his irq/msi branch at git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
> - Added new PATCH1 which adds changes missed out in merging AIA support for
> RISC-V INTC.
> - Added a separate cpuhp state for IMSIC driver in PATCH3 which ensures that
> cpuhp notifiers of IMSIC are called as early as possible.
> - Removed redundant barriers in PATCH3.
> - Addressed few other nit comments.
>
> Changes since v13:
> - Split PATCH1 into six granular patches
> - Addressed nit comments from Thomas and Bjorn
>
> Changes since v12:
> - Rebased on Linux-6.8-rc5
> - Dropped per-device MSI domain patches which are already merged by Thomas (tglx)
> - Addressed nit comments from Thomas and Clement
> - Added a new patch2 to fix lock dependency warning
> - Replaced local sync IPI in the IMSIC driver with per-CPU timer
> - Simplified locking in the IMSIC driver to avoid lock dependency issues
> - Added a dirty bitmap in the IMSIC driver to optimize per-CPU local sync loop
>
> Changes since v11:
> - Rebased on Linux-6.8-rc1
> - Included kernel/irq related patches from "genirq, irqchip: Convert ARM
> MSI handling to per device MSI domains" series by Thomas.
> (PATCH7, PATCH8, PATCH9, PATCH14, PATCH16, PATCH17, PATCH18, PATCH19,
> PATCH20, PATCH21, PATCH22, PATCH23, and PATCH32 of
> https://lore.kernel.org/linux-arm-kernel/20221121135653.208611233@linutronix.de/)
> - Updated APLIC MSI-mode driver to use the new WIRED_TO_MSI mechanism.
> - Updated IMSIC driver to support per-device MSI domains for PCI and
> platform devices.
>
> Changes since v10:
> - Rebased on Linux-6.6-rc7
> - Dropped PATCH3 of v10 series since this has been merged by MarcZ
> for Linux-6.6-rc7
> - Changed the IMSIC ID management strategy from 1-n approach to
> x86-style 1-1 approach
>
> Changes since v9:
> - Rebased on Linux-6.6-rc4
> - Use builtin_platform_driver() in PATCH5, PATCH9, and PATCH12
>
> Changes since v8:
> - Rebased on Linux-6.6-rc3
> - Dropped PATCH2 of v8 series since we won't be requiring
> riscv_get_intc_hartid() based on Marc Z's comments on ACPI AIA support.
> - Addressed Saravana's comments in PATCH3 of v8 series
> - Update PATCH9 and PATCH13 of v8 series based on comments from Sunil
>
> Changes since v7:
> - Rebased on Linux-6.6-rc1
> - Addressed comments on PATCH1 of v7 series and split it into two PATCHes
> - Use DEFINE_SIMPLE_PROP() in PATCH2 of v7 series
>
> Changes since v6:
> - Rebased on Linux-6.5-rc4
> - Updated PATCH2 to use IS_ENABLED(CONFIG_SPARC) instead of
> !IS_ENABLED(CONFIG_OF_IRQ)
> - Added new PATCH4 to fix syscore registration in PLIC driver
> - Update PATCH5 to convert PLIC driver into full-blown platform driver
> with a re-written probe function.
>
> Changes since v5:
> - Rebased on Linux-6.5-rc2
> - Updated the overall series to ensure that only IPI, timer, and
> INTC drivers are probed very early whereas rest of the interrupt
> controllers (such as PLIC, APLIC, and IMISC) are probed as
> regular platform drivers.
> - Renamed riscv_fw_parent_hartid() to riscv_get_intc_hartid()
> - New PATCH1 to add fw_devlink support for msi-parent DT property
> - New PATCH2 to ensure all INTC suppliers are initialized which in-turn
> fixes the probing issue for PLIC, APLIC and IMSIC as platform driver
> - New PATCH3 to use platform driver probing for PLIC
> - Re-structured the IMSIC driver into two separate drivers: early and
> platform. The IMSIC early driver (PATCH7) only initialized IMSIC state
> and provides IPIs whereas the IMSIC platform driver (PATCH8) is probed
> provides MSI domain for platform devices.
> - Re-structure the APLIC platform driver into three separe sources: main,
> direct mode, and MSI mode.
>
> Changes since v4:
> - Rebased on Linux-6.5-rc1
> - Added "Dependencies" in the APLIC bindings (PATCH6 in v4)
> - Dropped the PATCH6 which was changing the IOMMU DMA domain APIs
> - Dropped use of IOMMU DMA APIs in the IMSIC driver (PATCH4)
>
> Changes since v3:
> - Rebased on Linux-6.4-rc6
> - Dropped PATCH2 of v3 series instead we now set FWNODE_FLAG_BEST_EFFORT via
> IRQCHIP_DECLARE()
> - Extend riscv_fw_parent_hartid() to support both DT and ACPI in PATCH1
> - Extend iommu_dma_compose_msi_msg() instead of adding iommu_dma_select_msi()
> in PATCH6
> - Addressed Conor's comments in PATCH3
> - Addressed Conor's and Rob's comments in PATCH7
>
> Changes since v2:
> - Rebased on Linux-6.4-rc1
> - Addressed Rob's comments on DT bindings patches 4 and 8.
> - Addessed Marc's comments on IMSIC driver PATCH5
> - Replaced use of OF apis in APLIC and IMSIC drivers with FWNODE apis
> this makes both drivers easily portable for ACPI support. This also
> removes unnecessary indirection from the APLIC and IMSIC drivers.
> - PATCH1 is a new patch for portability with ACPI support
> - PATCH2 is a new patch to fix probing in APLIC drivers for APLIC-only systems.
> - PATCH7 is a new patch which addresses the IOMMU DMA domain issues pointed
> out by SiFive
>
> Changes since v1:
> - Rebased on Linux-6.2-rc2
> - Addressed comments on IMSIC DT bindings for PATCH4
> - Use raw_spin_lock_irqsave() on ids_lock for PATCH5
> - Improved MMIO alignment checks in PATCH5 to allow MMIO regions
> with holes.
> - Addressed comments on APLIC DT bindings for PATCH6
> - Fixed warning splat in aplic_msi_write_msg() caused by
> zeroed MSI message in PATCH7
> - Dropped DT property riscv,slow-ipi instead will have module
> parameter in future.
>
> Anup Patel (10):
> irqchip/riscv-intc: Fix low-level interrupt handler setup for AIA
> dt-bindings: interrupt-controller: Add RISC-V incoming MSI controller
> irqchip: Add RISC-V incoming MSI controller early driver
> irqchip/riscv-imsic: Add device MSI domain support for platform
> devices
> irqchip/riscv-imsic: Add device MSI domain support for PCI devices
> dt-bindings: interrupt-controller: Add RISC-V advanced PLIC
> irqchip: Add RISC-V advanced PLIC driver for direct-mode
> irqchip/riscv-aplic: Add support for MSI-mode
> RISC-V: Select APLIC and IMSIC drivers
> MAINTAINERS: Add entry for RISC-V AIA drivers
>
> .../interrupt-controller/riscv,aplic.yaml | 172 ++++
> .../interrupt-controller/riscv,imsics.yaml | 172 ++++
> MAINTAINERS | 14 +
> arch/riscv/Kconfig | 2 +
> drivers/irqchip/Kconfig | 25 +
> drivers/irqchip/Makefile | 3 +
> drivers/irqchip/irq-riscv-aplic-direct.c | 326 +++++++
> drivers/irqchip/irq-riscv-aplic-main.c | 211 +++++
> drivers/irqchip/irq-riscv-aplic-main.h | 52 ++
> drivers/irqchip/irq-riscv-aplic-msi.c | 263 ++++++
> drivers/irqchip/irq-riscv-imsic-early.c | 201 ++++
> drivers/irqchip/irq-riscv-imsic-platform.c | 374 ++++++++
> drivers/irqchip/irq-riscv-imsic-state.c | 865 ++++++++++++++++++
> drivers/irqchip/irq-riscv-imsic-state.h | 108 +++
> drivers/irqchip/irq-riscv-intc.c | 10 +-
> include/linux/cpuhotplug.h | 1 +
> include/linux/irqchip/riscv-aplic.h | 145 +++
> include/linux/irqchip/riscv-imsic.h | 87 ++
> 18 files changed, 3028 insertions(+), 3 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/interrupt-controller/riscv,aplic.yaml
> create mode 100644 Documentation/devicetree/bindings/interrupt-controller/riscv,imsics.yaml
> create mode 100644 drivers/irqchip/irq-riscv-aplic-direct.c
> create mode 100644 drivers/irqchip/irq-riscv-aplic-main.c
> create mode 100644 drivers/irqchip/irq-riscv-aplic-main.h
> create mode 100644 drivers/irqchip/irq-riscv-aplic-msi.c
> create mode 100644 drivers/irqchip/irq-riscv-imsic-early.c
> create mode 100644 drivers/irqchip/irq-riscv-imsic-platform.c
> create mode 100644 drivers/irqchip/irq-riscv-imsic-state.c
> create mode 100644 drivers/irqchip/irq-riscv-imsic-state.h
> create mode 100644 include/linux/irqchip/riscv-aplic.h
> create mode 100644 include/linux/irqchip/riscv-imsic.h
>
> --
> 2.34.1
>
My email client reported "There was a problem delivering your
message to tglx@linutronix.de."
Link to this series is
https://lore.kernel.org/all/20240226040746.1396416-1-apatel@ventanamicro.com/
Let me know if you want me to re-send this series.
Regards,
Anup
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
prev parent reply other threads:[~2024-02-26 4:15 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-26 4:07 [PATCH v15 00/10] Linux RISC-V AIA Support Anup Patel
2024-02-26 4:07 ` [PATCH v15 01/10] irqchip/riscv-intc: Fix low-level interrupt handler setup for AIA Anup Patel
2024-02-26 4:07 ` [PATCH v15 02/10] dt-bindings: interrupt-controller: Add RISC-V incoming MSI controller Anup Patel
2024-02-26 4:07 ` [PATCH v15 03/10] irqchip: Add RISC-V incoming MSI controller early driver Anup Patel
2024-02-26 4:07 ` [PATCH v15 04/10] irqchip/riscv-imsic: Add device MSI domain support for platform devices Anup Patel
2024-02-26 4:07 ` [PATCH v15 05/10] irqchip/riscv-imsic: Add device MSI domain support for PCI devices Anup Patel
2024-02-26 4:07 ` [PATCH v15 06/10] dt-bindings: interrupt-controller: Add RISC-V advanced PLIC Anup Patel
2024-02-26 4:07 ` [PATCH v15 07/10] irqchip: Add RISC-V advanced PLIC driver for direct-mode Anup Patel
2024-02-26 4:07 ` [PATCH v15 08/10] irqchip/riscv-aplic: Add support for MSI-mode Anup Patel
2024-03-06 5:43 ` Samuel Holland
2024-03-06 6:52 ` Anup Patel
2024-03-06 15:51 ` Björn Töpel
2024-03-06 16:14 ` Anup Patel
2024-03-07 15:01 ` Björn Töpel
2024-03-07 15:25 ` Anup Patel
2024-02-26 4:07 ` [PATCH v15 09/10] RISC-V: Select APLIC and IMSIC drivers Anup Patel
2024-02-26 4:07 ` [PATCH v15 10/10] MAINTAINERS: Add entry for RISC-V AIA drivers Anup Patel
2024-02-26 4:14 ` Anup Patel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAK9=C2W7LfM0BNQf=ovVzDjqsCoqS=5RvTUFn33SH9EVm6xjmw@mail.gmail.com' \
--to=apatel@ventanamicro.com \
--cc=ajones@ventanamicro.com \
--cc=anup@brainfault.org \
--cc=atishp@atishpatra.org \
--cc=bjorn@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=maz@kernel.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=robh+dt@kernel.org \
--cc=saravanak@google.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).