[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 0/4] Support RISC-V IOPMP
From: |
Ethan Chen |
Subject: |
[PATCH v4 0/4] Support RISC-V IOPMP |
Date: |
Wed, 22 Nov 2023 13:32:47 +0800 |
This series implements IOPMP specification v1.0.0-draft4 rapid-k model.
The specification url:
https://github.com/riscv-non-isa/iopmp-spec/blob/main/riscv_iopmp_specification.pdf
When IOPMP is enabled, a DMA device ATCDMAC300 is added to RISC-V virt
platform. This DMA device is connected to the IOPMP and has the functionalities
required by IOPMP, including:
- Support setup the connection to IOPMP
- Support asynchronous I/O to handle stall transactions
- Send transaction information
IOPMP takes a transaction which partially match an entry as a partially hit
error. The transaction size is depending on source device, destination device
and bus.
Source device can send a transaction_info to IOPMP. IOPMP will check partially
hit by transaction_info. If source device does not send a transaction_info,
IOPMP checks information in IOMMU and dose not check partially hit.
Changes for v4:
- Add descriptions of IOPMP and ATCDMAC300
- Refine coding style and comments
- config XILINX_AXI does not include file stream.c but selects config STREAM
instead.
- ATCDMAC300: INT_STATUS is write 1 clear per bit
Rename iopmp_address_sink to transcation_info_sink
- IOPMP: Refine error message and remove unused variable
- VIRT: Document new options
atcdmac300 is only added when iopmp is enabled
serial setting should not be changed
Ethan Chen (4):
hw/core: Add config stream
Add RISC-V IOPMP support
hw/dma: Add Andes ATCDMAC300 support
hw/riscv/virt: Add IOPMP support
docs/system/riscv/virt.rst | 11 +
hw/Kconfig | 1 +
hw/core/Kconfig | 3 +
hw/core/meson.build | 2 +-
hw/dma/Kconfig | 4 +
hw/dma/atcdmac300.c | 566 ++++++++++
hw/dma/meson.build | 1 +
hw/misc/Kconfig | 4 +
hw/misc/meson.build | 1 +
hw/misc/riscv_iopmp.c | 966 ++++++++++++++++++
hw/riscv/Kconfig | 2 +
hw/riscv/virt.c | 65 ++
include/hw/dma/atcdmac300.h | 180 ++++
include/hw/misc/riscv_iopmp.h | 341 +++++++
.../hw/misc/riscv_iopmp_transaction_info.h | 28 +
include/hw/riscv/virt.h | 10 +-
16 files changed, 2183 insertions(+), 2 deletions(-)
create mode 100644 hw/dma/atcdmac300.c
create mode 100644 hw/misc/riscv_iopmp.c
create mode 100644 include/hw/dma/atcdmac300.h
create mode 100644 include/hw/misc/riscv_iopmp.h
create mode 100644 include/hw/misc/riscv_iopmp_transaction_info.h
--
2.34.1
- [PATCH v4 0/4] Support RISC-V IOPMP,
Ethan Chen <=