Commit 554e158
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 26fc28e commit 554e158
2 files changed
Lines changed: 10 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
449 | 449 | | |
450 | 450 | | |
451 | 451 | | |
452 | | - | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
453 | 457 | | |
454 | 458 | | |
455 | 459 | | |
456 | | - | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
457 | 465 | | |
458 | 466 | | |
459 | 467 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
402 | 402 | | |
403 | 403 | | |
404 | 404 | | |
405 | | - | |
406 | 405 | | |
407 | 406 | | |
408 | 407 | | |
| |||
414 | 413 | | |
415 | 414 | | |
416 | 415 | | |
417 | | - | |
418 | | - | |
419 | 416 | | |
420 | 417 | | |
421 | 418 | | |
422 | 419 | | |
423 | 420 | | |
424 | 421 | | |
425 | 422 | | |
426 | | - | |
427 | 423 | | |
428 | | - | |
429 | | - | |
430 | | - | |
431 | 424 | | |
432 | 425 | | |
433 | 426 | | |
| |||
0 commit comments