Skip to content

Amd upstreaming commits may 7 2025#332

Closed
bentheredonethat wants to merge 14 commits intoOpenAMP:mainfrom
bentheredonethat:amd-upstreaming-commits-may-7-2025
Closed

Amd upstreaming commits may 7 2025#332
bentheredonethat wants to merge 14 commits intoOpenAMP:mainfrom
bentheredonethat:amd-upstreaming-commits-may-7-2025

Conversation

@bentheredonethat
Copy link
Copy Markdown
Contributor

@bentheredonethat bentheredonethat commented May 7, 2025

AMD fork of Libmetla has been carrying commits for a while to ensure that the Libmetal AMP Demo for AMD-Xilinx SOC's boots on board with latest tools.
This series pushes patches that have been held for awhile.

Some of the patches are so that Libmetal Demo can be configured via Yocto build, others so demo works on now SOCs and there are a few bug fixes.

@bentheredonethat bentheredonethat force-pushed the amd-upstreaming-commits-may-7-2025 branch from db47455 to 8d3c1b1 Compare May 7, 2025 19:53
@bentheredonethat
Copy link
Copy Markdown
Contributor Author

bentheredonethat commented May 7, 2025

some of the warnings are due to some choices in the first commit. please let me know if those are ok.. as the original location of that is deleted in a later commit and the warnnings are fixed.

some small issues with a commit length came up too.

other warnings are because of symbols in AMD-Xilinx BSP (camel-case issue)

@bentheredonethat bentheredonethat force-pushed the amd-upstreaming-commits-may-7-2025 branch 7 times, most recently from d1b1039 to ef1a328 Compare May 8, 2025 14:19
@arnopo arnopo requested review from arnopo, edmooring and tnmysh May 15, 2025 07:57
@arnopo
Copy link
Copy Markdown
Contributor

arnopo commented May 15, 2025

Hello @bentheredonethat,
Could you provide more details in your PR description about the aim of this PR?
You also need to add your sign-off in the commit, in addition to the author's.

Wendy Liang and others added 14 commits May 15, 2025 07:25
Add IPI uio based API implementation.

examples: linux: add IPI with R5 rproc kick sysfs impelmentation

Add IPI mailbox IPI implementation with the remoteproc kick
sysfs API.

examples: linux: zynqmp: Use IPI commit API

Change to use IPI common API so that it can swtich from
IPI uio implementaion or IPI rproc sysfs implementation.

Signed-off-by: Wendy Liang <wendy.liang@xilinx.com>
Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Ensure there are macro guards for IPI symbol

Signed-off-by: Ben Levinsky <ben.levinsky@xilinx.com>
examples: linux: zynqmp_r5: dynamically set TTC and IPI vars

Previously, TTC and IPI variables within libmetal demo for linux
were hardcoded for zynqmp SoC. Now TTC and IPI are set based on
whether target is zynqmp or versal.

examples: generic: zynqmp_r5: dynamically set TTC and IPI vars

Previously, TTC and IPI variables within libmetal demo for baremetal
were hardcoded for zynqmp SoC. Now TTC and IPI are set based on
whether target is zynqmp or versal.

examples: freertos: zynqmp_r5: dynamically set TTC and IPI vars

Previously, TTC and IPI variables within libmetal demo for FreeRTOS
were hardcoded for zynqmp SoC. Now TTC and IPI are set based on
whether target is zynqmp or versal.

Signed-off-by: Ben Levinsky <ben.levinsky@xilinx.com>
Correct integer arithmetic errors in computing average latency.
Collect and show min, max latency in addition to the average.
Use floating point to compute and show throughput.

Signed-off-by: Sergei Korneichuk <sergei.korneichuk@xilinx.com>
Acked-by: ben Levinsky <ben.levinsky@xilinx.com>
There is compilation error of the Linux ZynqMP AMP Demo in
shmem_throughput_demo.c due to the MB definition being re-defined.

The MB symbol is provided in lib/utilities.h as part of
commit 7643dda ("lib: utilities: Match upstream for MB/GB macros")

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Acked-by: Sergei Korneichuk <sergei.korneichuk@amd.com>
lib: generic: xlnx: Use CMAKE_C_FLAGS to determine if SDT symbol is
present.

Currently the file bspconfig.h file is used to determine if System Device
Tree workflow is being used. Instead change condition to be if
SDT is in CMAKE_C_FLAGS variable.

Acked-by: Sergei Korneichuk <sergei.korneichuk@amd.com>

lib: freertos: xlnx: Use CMAKE_C_FLAGS to determine if SDT symbol is
present.

Currently the file bspconfig.h file is used to determine if System Device
Tree workflow is being used. Instead change condition to be if SDT is in
CMAKE_C_FLAGS variable.

As part of this also make the freertos build up to parity with baremetal.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Reviewed-by: Tanmay Shah <tanmay.shah@amd.com>
Enable application values for Linux platform to be overwritten via
CMake Configure step.

Also ZynqMP Bitmask is incorrect. Make sure it properly kicks RPU0.

examples: linux: zynqmp: Add Versal-NET IPI Values

Ensure that Versal-NET IPI values are present for Libmetal AMP Demo on
Linux platform.

As part of this, also copy convention in zynqmp_r5 area and move values to
common.h

Acked-by: Sergei Korneichuk <sergei.korneichuk@amd.com>

examples: linux: zynqmp: Fix Typo in ZynqMP IPI Base address

Base address is ff3600000. Remove extra zero.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Acked-by: Tanmay Shah <tanmay.shah@amd.com>
examples: zynqmp_r5: CMake: Enable demo to build without libxil present
in SDT flow

As in SDT Workflow for Rigel there can be template application in BSP for
Libmetal, let Rigel manage the dependency for template application in
that case.

examples: zynqmp_r5: CMake: Add SDT-required libs as link dependencies

Push required linking libs to CMake so that surrounding tooling
does not have to manage pushing these in.

examples: zynqmp_r5: CMake: Allow user to pass in app binary name

Enable CMake tooling to designate output ELF name for FreeRTOS and
Standalone targets.

Reviewed-by: Tanmay Shah <tanmay.shah@amd.com>
Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
As part of this, move the latest logic that was present in
examples/system/linux/zynqmp to examples/system/linux/xlnx.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
As FreeRTOS enable/disable is not required, remove
superfluous lines for the demo.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Change argument to atomic_flag* to matcj standalone

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
There can be race condition where RPU side believes demo is done before
APU is actually finished. Then the RPU goes to the next demo. APU does
an IPI kick and RPU reads a buffer at the wrong time and believes it
is seeing corruption issue.

Fix this by adding a handshake so that:
- At the start of the RPU demo, the RPU sets a bit to denote it is waiting.
- At the start of the APU demo, set the same bit in memory so each party
  is in sync.
- Once RPU is done (which should be before APU is done), RPU will wait on
  the bit to flip.
- Once APU is done processing, it will flip the bit and both RPU and APU
  can proceed.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Acked-by: Tanmay Shah <tanmay.shah@amd.com>
IPI is the same as Versal NET so re-use that value but pass separate
TTC value.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Acked-by: Tanmay Shah <tanmay.shah@amd.com>
fix cmake files for latest

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
@bentheredonethat bentheredonethat force-pushed the amd-upstreaming-commits-may-7-2025 branch from ef1a328 to c8fcd13 Compare May 15, 2025 14:25
@bentheredonethat
Copy link
Copy Markdown
Contributor Author

updated per your comment @arnopo

@arnopo
Copy link
Copy Markdown
Contributor

arnopo commented May 19, 2025

I would not be in favor of adding new demos in libmetal. I think this should be in the system reference. More than that, I would expect that we only integrate a few demos that provide examples to help developers implement Libmetal on their own platform.

I propose to add the discussion to the agenda for next week's system reference meeting.

@edmooring
Copy link
Copy Markdown
Contributor

I would not be in favor of adding new demos in libmetal. I think this should be in the system reference. More than that, I would expect that we only integrate a few demos that provide examples to help developers implement Libmetal on their own platform.

I propose to add the discussion to the agenda for next week's system reference meeting.

I am inclined to agree with you. Was there any resolution in the meeting?

@nathalie-ckc
Copy link
Copy Markdown

Hi @edmooring , from the meeting:

  • Arnaud: Thought were not going to extend application for specific machine (maintain legacy ok)
  • Ben: Not adding new application. It is a big PR. Can split it up. It's extending support & robustness.
  • Arnaud: Looks like a lot of C files added (e.g. ipi-mb.c)
  • action: Ben to split up the libmetal PR 332 to be addressed feature-per-feature & demo-per-demo

https://github.com/OpenAMP/openamp-system-reference/wiki/OpenAMP-System-Reference-Meeting-Notes-2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants