HomeFreeBSD

acpi_powerres: Fix turning off power resources on first D-state switch

Description

acpi_powerres: Fix turning off power resources on first D-state switch

The power resource dependencies for each _PRx object are discovered
and cached in ac_prx on the power consumer struct
(struct acpi_powerconsumer) when a power consumer is registered. This
is done in acpi_pwr_get_power_resources. ACPI guarantees these _PRx
objects will evaluate to the same thing each time they are called.

This discovery process also registers those power resources, which were
previously only registered when they were referenced by the relevant
_PRx object for the target D-state when switching. This meant that
the first D-state switch for a power consumer would not turn off any
power resources as they wouldn't have been registered yet. This change
fixes this.

ac_prx will be used by subsequent patches.

Reviewed by: markj, imp, jrm (mentor)
Approved by: markj, jrm (mentor)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D48385