Currently, when entering s2idle, we are parsing the _S255D object to get the shallowest D-state supported by device, as acpi_stype_to_sstate() returns -1 for s2idle.
Instead, we should be parsing _S3D (not sure if this is the ideal solution, but it seems reasonable). Asking the SPMC for the minimum D-state constraints and honouring that does not work at least on my machine, and I'm not sure either way if "minimum" means "proper". So I think parsing _S3D is the right approach here.
Relevant document: https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/07_Power_and_Performance_Mgmt/device-power-management-objects.html#s3d-s3-device-state
Sponsored by: The FreeBSD Foundation