Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable-v2.8] Merge avs-tplg and sof-ace-tplg under production directory #8861

Merged
merged 5 commits into from
Feb 14, 2024

Conversation

marc-hb
Copy link
Collaborator

@marc-hb marc-hb commented Feb 14, 2024

This is a backport to stable-v2.8 of a subset of mega commit 65e4c1f ("topology2: Merge avs-tplg and sof-ace-tplg under production directory") on the main branch.

This is the absolute minimum subset that meets CI's new topology expectations and allows to permanently run all tests on stable-v2.8 going forward.

Unlike that mega commit, this PR is not just smaller as a whole but also split into much smaller, separate commits that can be easily reviewed for correctness and to make sure it does exactly what its commit message says. Each commit builds and it's easy to compare build directories from one commit to the next and check that topology files are only moved around without any change (and I actually did that).

marc-hb and others added 5 commits February 14, 2024 01:18
This also drops the NHLT-free, cavs25 variants of the HDA generic
topologies, keeping only the ace variants. See below.

This prepares for merging avs-tplg/ and sof-ace-tplg/ as done in main
branch mega commit 65e4c1f ("topology2: Merge avs-tplg and
sof-ace-tplg under production directory")

But unlike that mega commit, it's easy to compare outputs before and
after this commit and make sure they're the same (they are).

Note this does _not_ include the "Deep Buffer cleanups" commit
80f283d ("topology2: Mark DeepBuffer D0I3 compatible by default")
and commit 4bb4875 ("topology2: Remove redundant
DEEPBUFFER_FW_DMA_MS=100 settings") that got rid of the
copy/paste/diverge between cavs and ace variants HDA generic and ace HDA
generic.

Signed-off-by: Marc Herbert <[email protected]>
Keeping only the ace variants that would clash with these.

This prepares for merging avs-tplg/ and sof-ace-tplg/ as was done in
main branch mega commit 65e4c1f ("topology2: Merge avs-tplg and
sof-ace-tplg under production directory")

But unlike that mega commit, it's easy to compare outputs before and
after this commit and make sure they're the same (they are).

Note this does _not_ include the "Deep Buffer cleanups" commit
80f283d ("topology2: Mark DeepBuffer D0I3 compatible by default")
and commit 4bb4875 ("topology2: Remove redundant
DEEPBUFFER_FW_DMA_MS=100 settings") that got rid of the
copy/paste/diverge between cavs and ace variants HDA generic and ace HDA
generic.

Signed-off-by: Marc Herbert <[email protected]>
Main branch commit 65e4c1f ("topology2: Merge avs-tplg and
sof-ace-tplg under production directory") did too many things in the
same commit. It should have been split into 2 or 3 different
commits. Renaming and splitting a file in the same commit is almost
never a good idea. Making actual coding changes at the same time adds
insult to injury: it makes these changes almost impossible to spot in
the git diff.

When you add the usual "stable versus main" branch divergence on top, it
all compounds to make a backport incredibly complex, time-consuming and
error-prone.

So this backport to stable-v2.8 does NOT do all those things at once. It
does only the MINIMUM to achieve the "merge of avs-tplg/ and
sof-ace-tplg/ under production/" and that's it. Unlike the mega commit,
it's very easy to look at the diff. It's also easy to compare outputs
before and after this commit and make sure they're the same - they are.

When a file is renamed, it _only_ renames that file - as should
have been done in the original pull request. All other changes from that
original commit are dropped and should be manually cherry-picked to
stable-v2.8 if desired or wanted as a dependency and foundation for
further backports.

   -------- original commit message for reference -------

Merge the avs-tplg and sof-ace-tplg under a common production directory.

After a successful build CMake will copy the topology files to a target
directory from where they can be copied to DUT/release:

$ tree tools/build_tools/topology/topology2/target
tools/build_tools/topology/topology2/target
├── development
│   ├── cavs-sdw-hdmi.tplg
│   ├── cavs-sdw-src-gain-mixin.tplg
        ...
│   ├── sof-tgl-nocodec-rtcaec.tplg
│   └── sof-tgl-nocodec.tplg
├── sof-ace-tplg -> sof-ipc4-tplg
└── sof-ipc4-tplg
    ├── sof-adl-rt711-4ch.tplg
    ├── sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg
        ...
    ├── sof-tgl-rt712.tplg
    └── sof-tgl-rt715-rt711-rt1308-mono.tplg

As noted in the documentation, on the deployed system a symlink is needed
for ACE1/2 platforms for backwards compatibility:
sof-ace-tplg -> sof-ipc4-tplg

Link: https://github.com/thesofproject/sof-docs/blob/master/getting_started/intel_debug/introduction.rst#2-topology-file

The sof-hda-generic-2/4ch.tplg will be generated without embedded NHLT as
it is not used under normal circumstance.
Two flavor of the generic topology is generated for CAVS2.5 and ACE1/2 with
included NHLT binary in case it is used by existing users, but it is
unlikely.

Signed-off-by: Peter Ujfalusi <[email protected]>
(cherry picked from commit 65e4c1f)
Zero functional change.

Signed-off-by: Marc Herbert <[email protected]>
Addition modelled after main branch mega
commit 65e4c1f ("topology2: Merge avs-tplg and sof-ace-tplg under
production directory")

As the "Deep Buffer cleanups" commit 80f283d ("topology2: Mark
DeepBuffer D0I3 compatible by default") and
commit 4bb4875 ("topology2: Remove redundant
DEEPBUFFER_FW_DMA_MS=100 settings") are not in this stable-v2.8 branch,
the following parameters are present here:

  DEEPBUFFER_FW_DMA_MS=100, DEEPBUFFER_D0I3_COMPATIBLE=true

Signed-off-by: Marc Herbert <[email protected]>
@marc-hb marc-hb changed the title [stable-v2.8] [stable-v2.8] Merge avs-tplg and sof-ace-tplg under production directory Feb 14, 2024
@marc-hb
Copy link
Collaborator Author

marc-hb commented Feb 14, 2024

https://sof-ci.01.org/sofpr/PR8861/build2705/devicetest/index.html has only one suspend/resume failure.

There was one DUT-specific issue with https://sof-ci.01.org/sofpr/PR8861/build2704/devicetest/index.html (internal run 37897) so I aborted it.

@marc-hb
Copy link
Collaborator Author

marc-hb commented Feb 14, 2024

SOFCI TEST

@marc-hb
Copy link
Collaborator Author

marc-hb commented Feb 14, 2024

Only one multiple pause/resume failure in ACE https://sof-ci.01.org/sofpr/PR8861/build2707/devicetest/index.html after 30 minutes. Maybe related to #8770? Everything else is green.

Only one suspend/resume failure in CAVS https://sof-ci.01.org/sofpr/PR8861/build2708/devicetest/index.html

QB cannot only test the main branch, known issue: https://sof-ci.01.org/sof-pr-viewer/#/build/PR8861/build13564131

@marc-hb marc-hb marked this pull request as ready for review February 14, 2024 04:40
@marc-hb marc-hb requested a review from jsarha as a code owner February 14, 2024 04:40
@marc-hb marc-hb requested review from fredoh9 and plbossart February 14, 2024 04:41
# 2 or 4 DMIC, no NHLT blob included in topology
"sof-hda-generic\;sof-hda-generic-2ch\;HDA_CONFIG=mix,NUM_DMICS=2,\
DEEPBUFFER_FW_DMA_MS=100,DEEPBUFFER_D0I3_COMPATIBLE=true"
"sof-hda-generic\;sof-hda-generic-4ch\;HDA_CONFIG=mix,NUM_DMICS=4,\
Copy link
Collaborator

@ranj063 ranj063 Feb 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when you have NUM_DMICS as 4 you also need PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please correct me but I think it is there... I copied it from 65e4c1f

@marc-hb marc-hb mentioned this pull request Feb 14, 2024
Copy link
Collaborator

@kv2019i kv2019i left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. So this will drop the NHLT blobs from the generic topologies (to implement #8683), but as use of these blobs is behind a kernel module parameter that is off by default, this will not affect any default configuration.

Copy link
Contributor

@ujfalusi ujfalusi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@marc-hb, I'm not sure what benefit this specific split brings, patch three is still - as you called it - a mega patch...
If you must split, I would recommend:

  • avs-tplg: introduce the set of hda-generic tplgs w/ and w/o NHLT
  • sof-ace-tplg: introduce the set of hda-generic tplgs w/ and w/o NHLT
  • mega patch to merge

imho a single revert to get back to the old state is cleaner in some ways when doing such intrusive change anyways.

@@ -1,18 +1,18 @@
# SPDX-License-Identifier: BSD-3-Clause

# Array of "input-file-name;output-file-name;comma separated pre-processor variables"
set(TPLGS
list(APPEND TPLGS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is not related to topic, unless it is part of the 'preparation' umbrella.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, this could have been another "preparation" commit. However I felt like this commit was small and easy enough to review. Moreover this CMake change makes no output difference at this early stage.

# CAVS HDMI only topology with passthrough pipelines
"sof-hda-generic\;sof-hda-generic-idisp\;DEEPBUFFER_FW_DMA_MS=100"
# CAVS HDA topology with mixer-based pipelines for HDA and passthrough pipelines for HDMI
"sof-hda-generic\;sof-hda-generic\;HDA_CONFIG=mix,DEEPBUFFER_FW_DMA_MS=100"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?

Copy link
Collaborator Author

@marc-hb marc-hb Feb 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise these would clash in the next commit with the identical ones in sof-ace-tplg/

PS: to see this thread in the relevant context you must open the commit "avs-tplg: drop the NHLT-free, cavs25 variants of HDA generic". Otherwise Github makes a mess.

DEEPBUFFER_D0I3_COMPATIBLE=true"
# HDA topology with mixer-based pipelines for HDA and passthrough pipelines for HDMI
"sof-hda-generic\;sof-hda-generic\;HDA_CONFIG=mix,DEEPBUFFER_FW_DMA_MS=100,\
DEEPBUFFER_D0I3_COMPATIBLE=true"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could have been done in the previous patch..

# HDA topology with mixer-based pipelines for HDA and
# passthrough pipelines for HDMI and
# 2 or 4 DMIC, no NHLT blob included in topology
"sof-hda-generic\;sof-hda-generic-2ch\;HDA_CONFIG=mix,NUM_DMICS=2,\
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so, at the previous patch the tplg2 build was incomplete?
I know bisecting is not a primary concern, just pointing out.

@marc-hb
Copy link
Collaborator Author

marc-hb commented Feb 14, 2024

so, at the previous patch the tplg2 build was incomplete?

Possibly yes.

I know bisecting is not a primary concern, just pointing out.

It depends what you mean by "bisecting". If bisecting implies running tests then no, it's not a concern inside this PR. Running tests in CI is not possible before this PR anyway (and obviously possible after this complete PR - that's the entire purpose).

On the other hand, I did "bisect" this PR by carefully comparing the build directories before versus after each commit. Each commit is crafted to make that sort of "bisect" easier. For the same reason, each commit is focused on one change and one change only to make it easier to review.

@marc-hb
Copy link
Collaborator Author

marc-hb commented Feb 14, 2024

patch three is still - as you called it - a mega patch...

I respectfully disagree. Patch 3 has two "pure" renames + small CMake changes + 1 deleted CMakeLists.txt. This makes it easier to test and IMHO to review.

@kv2019i kv2019i merged commit ea28f10 into thesofproject:stable-v2.8 Feb 14, 2024
34 of 42 checks passed
@marc-hb marc-hb deleted the topo2-merge-28 branch February 14, 2024 17:10
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