[PATCH 0/6] Add aarch64/xilinx-versal

Gedare Bloom gedare at rtems.org
Wed Jun 23 04:29:51 UTC 2021


This patch series adds support for the Xilinx Versal ACAP
targeting the qemu emulated support (xlnx-versal-virt) and
with a config for vck190. The hardware support on vck190 is
still work-in-progress, and the ilp32 has not been tested.

The patch set includes non-functional changes to make the
icspicfgr0/1 an array for better indexing, to add the
physical secure timer, and a mnemonic to access the group 1
interrupt enable at EL3. These non-functional changes wound
up being unnecessary, but were left in case they are useful
to someone in the future. The virtual and physical secure timers
do not work with the xilinx_versal_lp64_qemu BSP. Only the
physical non-secure timer works, and only in EL1 security mode.

The xlnx-versal-virt direct boots on qemu in EL3. The current
approach steps down directly to EL1 in Secure Mode. If EL3 is
instead stepped down to EL2 and then to EL1 non-secure, the
timer IRQ dispatching does not work properly for some reason.
So now we have support in place to run in EL1 Secure mode
or in EL1 Non-Secure mode, controlled by a configuration option.
The a53 and a72 BSPs can only work in the EL1 Non-Secure mode,
while the xilinx_zynq_lp64_qemu seems to be able to work with
both EL1 Secure and Non-Secure modes. The selection is made by
a new config option, AARCH_IS_NON_SECURE.

Tester Results for xilinx_versal_lp64_qemu:

Passed:        549
Failed:          1
User Input:      5
Expected Fail:   0
Indeterminate:   0
Benchmark:       3
Timeout:         0
Test too long:   0
Invalid:         0
Wrong Version:   0
Wrong Build:     0
Wrong Tools:     0
------------------
Total:         558
Failures:
 spcpucounter01.exe
User Input:
 top.exe
 fileio.exe
 capture.exe
 monitor.exe
 termios.exe
Benchmark:
 dhrystone.exe
 whetstone.exe
 linpack.exe

The failure in spcpucounter01.exe appears to be related to the
ongoing problem with qemu random failures. Manual testing can
pass or fail.

No regressions noted in a53, a72, or zynqmp qemu testing.

Gedare Bloom (5):
  aarch64/xilinx-versal: new BSPs for qemu and vck190
  bsps/dev/irq: make icspicfgr an indexable array
  bsps/aarch64: add mnemonic for ICC_IGRPEN1_EL3
  bsps/aarch64: add physical secure timer
  bsps/aarch64: add non-secure mode and versal support

Kinsey Moore (1):
  aarch64: add support to drop EL3 to EL2

 .../shared/clock/arm-generic-timer-aarch64.c  |   8 +
 bsps/aarch64/shared/start/start.S             |  38 ++-
 bsps/aarch64/xilinx-versal/console/console.c  | 134 ++++++++++
 .../dev/serial/versal-uart-polled.c           | 228 ++++++++++++++++++
 bsps/aarch64/xilinx-versal/include/bsp.h      |  81 +++++++
 bsps/aarch64/xilinx-versal/include/bsp/irq.h  |  72 ++++++
 .../include/dev/serial/versal-uart-regs.h     | 141 +++++++++++
 .../include/dev/serial/versal-uart.h          |  90 +++++++
 bsps/aarch64/xilinx-versal/include/tm27.h     |  45 ++++
 bsps/aarch64/xilinx-versal/start/bspstart.c   |  48 ++++
 .../xilinx-versal/start/bspstarthooks.c       |  51 ++++
 .../aarch64/xilinx-versal/start/bspstartmmu.c |  77 ++++++
 bsps/include/dev/irq/arm-gic-regs.h           |   6 +-
 bsps/shared/dev/irq/arm-gicv3.c               |  24 +-
 spec/build/bsps/aarch64/a53/grp.yml           |   2 +
 spec/build/bsps/aarch64/a72/grp.yml           |   2 +
 spec/build/bsps/aarch64/optgtuseps.yml        |  17 ++
 spec/build/bsps/aarch64/optgtusevirt.yml      |  16 ++
 spec/build/bsps/aarch64/optisns.yml           |  20 ++
 spec/build/bsps/aarch64/xilinx-versal/abi.yml |  22 ++
 .../aarch64/xilinx-versal/bspqemuilp32.yml    |  19 ++
 .../aarch64/xilinx-versal/bspqemulp64.yml     |  19 ++
 .../aarch64/xilinx-versal/bspvck190ilp32.yml  |  19 ++
 .../aarch64/xilinx-versal/bspvck190lp64.yml   |  19 ++
 spec/build/bsps/aarch64/xilinx-versal/grp.yml |  56 +++++
 .../bsps/aarch64/xilinx-versal/grp_qemu.yml   |  18 ++
 .../bsps/aarch64/xilinx-versal/grp_vck190.yml |  18 ++
 .../aarch64/xilinx-versal/linkcmds_ilp32.yml  |  74 ++++++
 .../aarch64/xilinx-versal/linkcmds_lp64.yml   |  74 ++++++
 spec/build/bsps/aarch64/xilinx-versal/obj.yml |  44 ++++
 .../bsps/aarch64/xilinx-versal/optclkuart.yml |  20 ++
 .../aarch64/xilinx-versal/optconminor.yml     |  16 ++
 .../bsps/aarch64/xilinx-versal/optloadoff.yml |  22 ++
 .../aarch64/xilinx-versal/optnocachelen.yml   |  18 ++
 .../bsps/aarch64/xilinx-versal/optramlen.yml  |  18 ++
 .../bsps/aarch64/xilinx-versal/optramori.yml  |  22 ++
 .../bsps/aarch64/xilinx-versal/tstqemu.yml    |  19 ++
 .../bsps/aarch64/xilinx-versal/tstvck190.yml  |  19 ++
 spec/build/bsps/aarch64/xilinx-zynqmp/grp.yml |   2 +
 spec/build/bsps/optstartmon.yml               |  16 ++
 40 files changed, 1647 insertions(+), 7 deletions(-)
 create mode 100644 bsps/aarch64/xilinx-versal/console/console.c
 create mode 100644 bsps/aarch64/xilinx-versal/dev/serial/versal-uart-polled.c
 create mode 100644 bsps/aarch64/xilinx-versal/include/bsp.h
 create mode 100644 bsps/aarch64/xilinx-versal/include/bsp/irq.h
 create mode 100644 bsps/aarch64/xilinx-versal/include/dev/serial/versal-uart-regs.h
 create mode 100644 bsps/aarch64/xilinx-versal/include/dev/serial/versal-uart.h
 create mode 100644 bsps/aarch64/xilinx-versal/include/tm27.h
 create mode 100644 bsps/aarch64/xilinx-versal/start/bspstart.c
 create mode 100644 bsps/aarch64/xilinx-versal/start/bspstarthooks.c
 create mode 100644 bsps/aarch64/xilinx-versal/start/bspstartmmu.c
 create mode 100644 spec/build/bsps/aarch64/optgtuseps.yml
 create mode 100644 spec/build/bsps/aarch64/optgtusevirt.yml
 create mode 100644 spec/build/bsps/aarch64/optisns.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/abi.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/bspqemuilp32.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/bspqemulp64.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/bspvck190ilp32.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/bspvck190lp64.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/grp.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/grp_qemu.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/grp_vck190.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/linkcmds_ilp32.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/linkcmds_lp64.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/obj.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/optclkuart.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/optconminor.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/optloadoff.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/optnocachelen.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/optramlen.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/optramori.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/tstqemu.yml
 create mode 100644 spec/build/bsps/aarch64/xilinx-versal/tstvck190.yml
 create mode 100644 spec/build/bsps/optstartmon.yml

-- 
2.25.1



More information about the devel mailing list