Skip to content

hda-dma will timeout at waiting for DGCS_BF true #856

Closed

Description

@keyonjie

On APL platforms, we are randomly failed at hda_dma_host_preload() where hda-dma will timeout at waiting for DGCS_BF true.

Using simultaneous pipelines stress test can duplicate this easily. Scrip here:
https://github.com/thesofproject/sof/blob/master/tools/test/qa/tests/stability_test/multiplex_pipeline-test.sh

Setting DGCS_L1ETP at hda_dma_set_config() or Force Host DMA to exit L1 make the reproduce rate change, but can't eliminate it.

Activity

  1. added
    APLApplies to Apollolake platform
    blockedprogress blocked by something else, applies to either feature or bug
    on Jan 17, 2019
  2. added
    P1Blocker bugs or important features
    on Jan 17, 2019
  3. keyonjie commented on Jan 17, 2019

    @keyonjie
    ContributorAuthor

    Setting it to P1 as it is blocker now.

  4. lgirdwood commented on Jan 17, 2019

    @lgirdwood
    Member

    @keyonjie #804 has been merged now, does it help ?. @slawblauciak fyi

  5. keyonjie commented on Jan 18, 2019

    @keyonjie
    ContributorAuthor

    @keyonjie #804 has been merged now, does it help ?. @slawblauciak fyi

    I have tried it, #804 is for link dma only(paired to #783 for host dma hang fix), no help for host dma BF waiting timeout issue.

    please refer to #783, I commented there it only fixes hang issue, but not the DGCS_BF always false issue.

  6. keyonjie commented on Jan 18, 2019

    @keyonjie
    ContributorAuthor

    @mmaka1 I have tried what Marcin suggested(#783 (comment)) -- Setting DGCS_L1ETP at hda_dma_set_config() or Force Host DMA to exit L1 -- the result is that:
    it makes the reproduce rate change, but can't eliminate it.

    @mmaka1 can you help to look in this issue?

  7. lgirdwood commented on Jan 18, 2019

    @lgirdwood
    Member

    @keyonjie you have provided two different solutions, but you have not said which one improved the result and by how much it improved ? Can you also try and add some delay after DMA L1 exit before the next IO operation.

  8. 2 remaining items

  9. keyonjie commented on Jan 21, 2019

    @keyonjie
    ContributorAuthor

    @keyonjie you have provided two different solutions, but you have not said which one improved the result and by how much it improved ? Can you also try and add some delay after DMA L1 exit before the next IO operation.

    @lgirdwood the result here looks random to me, so I can't say which one improve and by how much it improved? Then I realized I can't try that blindly, I need to understand how it should work, that's why I dropped an email about it.

  10. keyonjie commented on Jan 21, 2019

    @keyonjie
    ContributorAuthor

    looks like the story line is #723 (FW hang, how about time out?) -> #783 (you got it!, timeout is better than freeze) -> #800 (caused burst noise!) -> #856 (Oh no, there is noise, need a full fix).

    add @dabekjakub to decide who will own it.

    @wenqingfu yes, that's how the story happened, @dabekjakub can you help find a owner for it?

  11. dabekjakub commented on Jan 21, 2019

    @dabekjakub
    Member

    @keyonjie @wenqingfu I think that @slawblauciak is our specialist in hda-dma related issues. However i will reasign this after we sync on bugscrub.

  12. keyonjie commented on Jan 21, 2019

    @keyonjie
    ContributorAuthor

    Add more info as below:
    At this BF fail cases, usually buffer is not empty(DGCS_BNE==1), and write pointer(DGBWP) is at 0x20 offset(period size is 0xc0, that means, dgbwp==0x20 or 0xe0), such as:
    dgcs: 0x86810120 dgbrp: 0x0, dgbwp: 0xe0

    I have also checked and confirmed that data are already copied to the whole buffer(which means buffer full actually), the only strange thing to me is that the DGCS.BF and DGBWP are not reflact this fact.

  13. dabekjakub commented on Jan 22, 2019

    @dabekjakub
    Member

    @keyonjie Could You check this one with non-smp architecture ?

  14. keyonjie commented on Jan 23, 2019

    @keyonjie
    ContributorAuthor

    @dabekjakub I actually checked this always with UP architeture.

  15. lgirdwood commented on Jan 23, 2019

    @lgirdwood
    Member

    @keyonjie is result the same with UP vs SMP ?

  16. keyonjie commented on Jan 24, 2019

    @keyonjie
    ContributorAuthor

    @keyonjie is result the same with UP vs SMP ?

    I think SMP fails much easier comparing with UP.

  17. slawblauciak commented on Jan 29, 2019

    @slawblauciak
    Collaborator

    @keyonjie how did you verify that the buffer has been in fact fully preloaded if the register values don't indicate it?

  18. keyonjie commented on Feb 18, 2019

    @keyonjie
    ContributorAuthor

    @keyonjie how did you verify that the buffer has been in fact fully preloaded if the register values don't indicate it?

    @slawblauciak I dumped the contents of those buffers to verify them.

  19. wenqingfu commented on Mar 21, 2019

    @wenqingfu

    Should this issue be closed by thesofproject/linux#705? @RanderWang @keyonjie @slawblauciak . If so, please close it

  20. RanderWang commented on Mar 22, 2019

    @RanderWang
    Collaborator

    yes, it should be closed by thesofproject/linux#705

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

Metadata

Metadata

Assignees

Labels

APLApplies to Apollolake platformP1Blocker bugs or important features

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions