Commit 44e7cab
committed
enable the virtual timer interrupt on application processors
The switch from the physical timer (CNTP_*) to the virtual timer
(CNTV_*) updated the FDT parsing in init(), which now selects the
third interrupt triplet of the "arm,armv8-timer" node (Virtual, PPI
11 / INTID 27). init_cpu() still selected the second triplet
(Non-secure Phys, PPI 14 / INTID 30), so every application processor
enabled the physical timer PPI in its redistributor while
set_oneshot_timer programs the virtual timer. Timer PPIs are per-core:
sleeping tasks on the secondary cores were never woken up again.
This is why thread_test with --smp 4 timed out: of eight threads only
the two scheduled on the boot core finished; the six on the secondary
cores slept forever.
Skip the same two triplets in init_cpu() so all cores enable the
virtual timer interrupt.1 parent 2575d7e commit 44e7cab
1 file changed
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
627 | 627 | | |
628 | 628 | | |
629 | 629 | | |
630 | | - | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
631 | 639 | | |
632 | 640 | | |
633 | 641 | | |
| |||
0 commit comments