This means modifying 'xtensa-build-zephyr.py' to allow
building the new platform and adding a new toml file for
the platform.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
The user can configure west to pass additional arguments to rimage
for signing, we need to use them when signing LLEXT modules too.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Renamed soc from ace30_ptl to ace30.
We were previously using the wrong soc name.
The correct name is ace30.
There is only one ptl platform, but there can be several ace30 platforms.
Signed-off-by: Grzegorz Bernat <grzegorzx.bernat@intel.com>
Currently LLEXT module starting addresses are hard-coded in their
respective CMakeLists.txt files. This is very wasteful, since it's
unknown in what order modules are loaded, inflexible and not easily
extendible to other platforms. Switch to calculating addresses
automatically based on a single per-platform Kconfig value.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The Zephyr documentation uses the term "overlay" for Device Tree, not
for Kconfig.
This commit does not change the wrongly named --overlay option not to
break anything but it stops that wrong name from leaking all over the
code. Also tweak the --help text.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
With addition of loadable modules, SOF firmware installation depends
much more on symbolic links. Add a step to build script to create a
tarball of the installed firmware binaries in the build-staging-sof
tree. The created tarball (e.g. build-sof-staging/sof/sof.tar.gz)
provides a ready structure that can be unpacked to e.g. /lib/firmware on
Linux target machines.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
This patch adds to "scripts/rebuild-testbench.sh -p ptl" option
to test processing components with PTL ACE3.0 DSP build.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This script is used to get detailed build parameters for
testbench-xt version build. The PLATFORM is in most cases
the same as the platform name in build command line so it
can be set as default. Only the cases when the name
is different need to be preserved.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The goal of these new files is to:
1. Fuzz more code
2. Reduce the configuration gap between fuzzed SOF and the real thing.
See the fuzz_features.conf header for more details.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Extract -DCONFIG_* definitions hardcoded inside the script and move them
to a new .conf file where they belong.
This is a first, baby-step towards addressing the more general lack of
.config control described in #9386
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
OVERLAY_CONFIG was deprecated in Zephyr 3.4 commit
https://github.com/zephyrproject-rtos/zephyr/commits/3a345682ba81
Also enhance example and demonstrate the syntax to pass multiple files.
This finishes the work started by commit 6cd34c89a1
("xtensa-build-zephyr.py: use EXTRA_CONF_FILE instead of OVERLAY_CONFIG")
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
It was awkward to depend on ZEPHYR_TOOLCHAIN_VARIANT when the testbench
has absolutely nothing to do with it.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This is required to allow building XTOS with newer, clang-based, Cadence
toolchains as just submitted for ACP_7_0 in #9351
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
If the user requested the Cadence toolchain by defining
$XTENSA_TOOLS_ROOT, then do not "correct" the user and fallback on gcc
when that variable is wrong. Fail and point at the problem instead. No
one ever pays attention to build logs; as shown by new warnings being
submitted on a regular basis.
This also removes the local variable "XCC", the name of which was
collision-prone and confusingly capitalized.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
"COMPILER" is a very common name with a high risk of collision. Don't
use it for a minor, local variable. This also reduces confusion.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Under windows the Python interpreter has to be called explicitly.
Without it an attempt to execute a Python script fails silently.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Suggested-by: Marc Herbert <marc.herbert@intel.com>
Add a very simple uuid-registry.txt file containing all known UUIDs in
the tree, use it to generate a C header (the script validates it in
the process) that can then be used for a simplified
SOF_DEFINE_REG_UUID() mechanism that avoids the risk and temptation
temptation of components incorrectly implementing UUIDs.
The intent is that in the longer term, this file can be used by other
downstream tooling (manifest and topology generation) to more easily
reference known IDs by name in a way that avoids duplication and
error.
Signed-off-by: Andy Ross <andyross@google.com>
The sof-logger/smex tools and the .ldc formats are all dead code in
Zephyr builds. The logging/trace macros don't emit the correct
metadata anymore, using Zephry logging instead (and I don't think they
ever did?), and the resulting .ldc files are degenerate containing
just the header and the records for component UUIDs, which nothing
uses.
Save a few milliseconds of build time and a few bytes of output, and
free up the evolution path by not having to support legacy tools.
Signed-off-by: Andy Ross <andyross@google.com>
The older native_posix board is being deprecated, use native_sim,
which is the future-proof API. Mostly just swap the board target and
change the C API names.
Note the NATIVE_SIMULATOR_IF decoaration on LLVMFuzzerTestOneInput():
that forces the function to be included in the first-stage zephyr.elf
link (otherwise it would be dropped as Zephyr/SOF itself doesn't
reference the entry point) and to be visible as a global symbol to the
libfuzzer instrumentation layer.
Signed-off-by: Andy Ross <andyross@google.com>
As reported in #9262, this fixes the --all option.
Fixes commit 05bfc36dac ("ptl: Add initial PTL configuration")
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
OVERLAY_CONFIG has been deprecated by EXTRA_CONF_FILE since Zephyr 3.4
Also fix the corresponding --help string.
Zephyr 3.4 is one year old and has just been end-of-lifed.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Patch adds PTL configuration basing on MTL
DMIC depends on PM_DEVICE_RUNTIME and PM_DEVICE_POWER_DOMIAN settings.
To effectively enable DMIC these flags must be set.
Additionally DMIC Ownership bit is not supported on ACE 2.0 and ACE 3.0.
Therefore CONFIG_DAI_DMIC_HAS_OWNERSHIP is switched off.
Signed-off-by: Jakub Dabek <jakub.dabek@intel.com>
It was clear that hard-coded section names aren't reliable enough but
they broke down way earlier than has been expected.
This patch replaces hard-coded sections with a loop, scanning all
sections and selecting them based on their flags and types.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
When using a clang Cadence toolchain to build SOF and LLEXT modules
we need to select a different LLEXT type than when using a Zephyr gcc
toolchain.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Update Zephyr baseline to 53ddff639562 . The location of generated
headers has changed, so modify the SOF build scripts to use the new
location.
Change affecting SOF build targets:
6509b8199b02 shell: add shell backend for audio DSP using shared memory window
5a7600bec60b soc: intel_adsp: tools: add shell support to cavstool.py
db00b813f043 soc: intel_adsp: tools: align code style in maps_regs()
44dd5a4da9c0 soc: intel_adsp: tools: fix ace20 fw load flow
fa798ce2d5be soc: intel_adsp: only implement FW_STATUS boot protocol for cavs
8fc76f1b6d16 soc: intel_adsp: tools: improve FW boot handling on ace1.x
024bd41efb65 llext: xtensa: add support for the xt-clang toolchain
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Even with the cryptographic salt, the ability to match a download with
the corresponding build log is still useful.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Delete per-platform, "build-sof-staging/sof/intel/sof-ipc4-lib/mtl/"
directories every time just like we've always done it for
"build-sof-staging/sof/intel/sof-ipc4/mtl/". This is especially
important considering the new LLEXT complexity, symbolic links etc.
There is no way the build can be smart enough and extend "incremental"
builds to the staging directory.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
west.configuration.get() already returns a string, no need to call
'str()' on it again.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Zephyr now provides a convenient cmake API for LLEXT modules, update
SOF to use it by defining common cmake functions.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Always use a "raw string" for regular expressions, otherwise the
backslash is used to start Unicode escape sequences.
Fixes hopefully harmless error:
```
scripts/llext_link_helper.py:38: SyntaxWarning: invalid escape sequence '\.'
p = re.compile('(^lib|\.so$)')
```
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Upstream Zephyr moved the LLVM fuzzer entry point out of the arch
layer and made it an app responsibility, so we broke. Add back the
support here that got removed.
Fixes#9101
Signed-off-by: Andy Ross <andyross@google.com>
Install loadable LLEXT modules into the deployment tree and
create symbolic links for them.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
When an ELF section isn't found .get_section_by_name() raises an
AttributeError exception, catch it specitically instead of catching
any exception.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Pure comment fix, zero code change.
Fixes miss in commit f55338a985 ("Switch Zephyr build to new
sof/tools/rimage location")
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Installing most of the tools/ directory does not technically require
building any platform, so add that possibility.
This is useful because the Jenkins-based CI builds the (userspace) tools
separately. So far it has been picking hardcoded source paths but of
course the HWMv2 transition just broke that:
https://github.com/thesofproject/sof/pull/8913
While it's too late this time (we want to keep CI able to test stable
branches for some time), this commit prepares a future where all CIs can
stop hardcoding Zephyr source paths and pick the output of the
xtensa-build-zephyr.py installer and indirection layer instead.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Add support for relocatable objects to the llext module build system.
In such builds no ELF segments are created, so we need to process all
sections individually.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Every Linux developer should use deployable builds by default.
Until Peter Ujfalusi's very recent work in this script, we had a
complete `/lib/firmware/` structure disconnect between the IPC4 output
of this script and the IPC4 expectations of the Linux kernel. To
workaround this disconnect, every CI and Linux developer used to
implement duplicate and inconsistent firmware deployment hacks.
People crafting sof-bin releases also had to organize IPC4 releases
manually, which was extremely error-prone and with limited test
coverage (Thanks Kai and Mengdong!)
Now that Peter gracefully fixed the layout, documented it in sof-docs
and implemented it in this script, the time for all Linux developers to
drop their inconsistent deployment hacks is overdue. All these hacks
must be replaced with a simple, one-line recursive copy which makes sure
the layout committed in version control is constantly tested by
everyone.
So, make deployable builds the new default.
The new default will also help with sof-bin releases, making sure they
use a well tested /lib/firmware/ layout.
The --no-deployable-build was recently introduced to help minimize
disruption and migration effort for people and automation who do NOT use
Linux. The `/lib/firmware/` directory structure is irrelevant outside
Linux (but everyone is of course free to choose it)
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Contains the following squashed SOF commits:
nxp: imx8ulp: change SOC name to MIMX8UD7
zephyr: CMakeLists.txt use new `CONFIG_SOC_C` for 8ULP
cmake: update configs for NXP ADSP
and the following Zephyr patches affecting SOF:
951763939034 nxp: imx8ulp: change SOC name to MIMX8UD7
b8214b673970 dts: xtensa: nxp_imx8: add SAI1 node
a0e32f07ef76 dts: intel_adsp: ace: update host dma copy alignment
3fde2c50c6ef tracing: add intel ADSP memory window backend
6b9d01f995c7 intel_adsp/ace: power: No pending transaction before power gate
6ea749de5283 arch: rename arch_start_cpu() to arch_cpu_start()
b69d2486fee6 kernel: rename Z_KERNEL_STACK_BUFFER to K_KERNEL_STACK_BUFFER
1f55be8b42df nxp: imx8: change CONFIG_SOC_<name> to match the value
688fbb53aeb2 intel_adsp: ace: Fix sparse error
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
XTOS is going to be deprecated on i.MX8ULP so prevent
building it by removing it from the list of supported
platforms from `xtensa-build-all.sh`. This is needed for
switching to Zephyr native drivers.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>