-
Notifications
You must be signed in to change notification settings - Fork 349
Host component DMA copy the whole copy_bytes. #5001
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
Conversation
|
This is a fix for CONFIG_HOST_PTABLE. It is helpful if anyone can explain this config because I couldn't find any information about it. |
|
@fuyuntsuo what platform are you working on? this is not enable on Intel's cAVS platforms, please see it in src/platform/Kconfig. |
keyonjie
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change breaks Intel's non-cAVS platforms.
|
It's MT8195 DUT we use to verify the change. We know there are many platforms selecting CONFIG_HOST_PTABLE but MT8915 is the only one we have. The change is component-level so theoretically it should be platform-independent. If possible @keyonjie can you share what error Intel non-cAVS platforms show? Then we can find out what this change is missing. Thanks! |
you can just click "Details" of "sof-ci/jenkins/pr-device-test" to see the on device test result, or here is the link: |
|
@fuyuntsuo some logs quoted from the etrace: |
|
@keyonjie Thanks for the hint! Seems like this DMA call sequence does not apply to all the platforms selecting CONFIG_HOST_PTABLE. Unfortunately we have only MT8195 to verify this PR. Can anyone advise how to avoid breaking Intel's non-cAVS platfroms? |
81a3ae1 to
062b213
Compare
|
I think this fix to force DMA to copy the block size is a needed feature, but we probably want to have this a Kconfig option where it's default can be set y or n depending on the platform. |
|
SOFCI TEST |
|
Lets take this for v2.0 with the Kconfig update. |
062b213 to
e380983
Compare
Host component stops copying bytes at element's end and resumes copying the remaining bytes in the next round. This leads to jitter between components of the same pipeline. Such jitter might cause buffer overwrite for component which processes block by block. Triggering extra DMA copy until all the copy_bytes are copied can eliminate the jitter and hence no more buffer overwrite occurs. Signed-off-by: fy.tsuo <fy.tsuo@intelli-go.com>
e380983 to
a615b5b
Compare
| return ret; | ||
| } | ||
|
|
||
| ret = dma_copy(hd->chan, copy_bytes, DMA_COPY_ONE_SHOT); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just wondering: does this needs DMA_COPY_BLOCKING flag too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it should block the caller until DMA copy completes.
|
@yaochunhung @kuanhsuncheng good for you ? |
|
CI failures unrelated and known. |
Host component stops copying bytes at element's end and resumes
copying the remaining bytes in the next round. This leads to jitter
between components of the same pipeline. Such jitter might cause
buffer overwrite for component which processes block by block.
Triggering extra DMA copy until all the copy_bytes are copied can
eliminate the jitter and hence no more buffer overwrite occurs.
Signed-off-by: fy.tsuo fy.tsuo@intelli-go.com