OPAL needs to be kicked periodically in order for the firmware to make
progress on its tasks. To do so, create a heartbeat thread to perform this task
every N milliseconds, defined by the device tree. This task is also a central
location to handle all messages received from OPAL.
Details
Details
- Reviewers
nwhitehorn luporl - Commits
- rS345789: powerpc/powernv: Add OPAL heartbeat thread
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Looks good overall, but check the comments below.
sys/powerpc/powernv/opal_dev.c | ||
---|---|---|
134 ↗ | (On Diff #55574) | Shouldn't opal_call() return code be checked here? |
203 ↗ | (On Diff #55574) | Is "ibm,heartbeat-ms" property guaranteed to exist? Wouldn't it be better to check this and set a default or panic if it doesn't exist? |
sys/powerpc/powernv/opal_dev.c | ||
---|---|---|
134 ↗ | (On Diff #55574) | Technically, probably. The OPAL code, though, returns either OPAL_SUCCESS or OPAL_PARAMETER (invalid pointer argument), so we're likely not to see any failure. I'll add a check before committing, though. |
203 ↗ | (On Diff #55574) | If it doesn't exist, since opal_heartbeat_ms is static it's pre-initialized to 0. It'll then be caught when spawning the thread (see above at the top of opal_heartbeat()) No need to put the check in two places. |