Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/schedule/edf_schedule.c
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,9 @@ int scheduler_init_edf(void)
if (edf_sch->irq < 0)
return edf_sch->irq;

interrupt_mask(edf_sch->irq, cpu_get_id());
interrupt_unmask(edf_sch->irq, cpu_get_id());
Copy link
Member

Choose a reason for hiding this comment

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

@bkokoszx @mwasko fyi - as discussed on Tuesday.
@lyakh is masking and unmasking flow optimal, should we not be clearing the IRQ with interrupt_clear() ? We also need a comment here explaining why we are doing this.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@lgirdwood of course it isn't optimal and yes, interrupt_clear() would be the right function to call, but currently it only clears DSP "native" interrupts, and this is a level-2 interrupt. Let's test if this helps, if it does, we can try to extend interrupt_clear() to also work on "level interrupts."

Copy link
Contributor

Choose a reason for hiding this comment

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

@lyakh I did the stress test on this PR. The bug #4538 still can be reproduced. On the meantime, I did the stress test on the PR #4874. The bug #4538 can be fixed and no other regression is found. So I will ask Dell team to test PR4874.

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for the test. @lyakh @lgirdwood I would suggest to make the #4874 as hotfix for 1.9 and keep main unchanged as root causing the #4538 could be very time consuming.


interrupt_register(edf_sch->irq, edf_scheduler_run, edf_sch);
interrupt_enable(edf_sch->irq, edf_sch);

Expand Down