Newer systems do not support ACPI S3, and s0ix is the replacement. S3 calls into firmware, but s0ix relies on the OS to idle the system instead.
We have an implementation that enters s0ix on AMD hardware with PVH dom0. It requires dom0 (hwdom) to run the native s0ix sequence, with an additional Hypercall.
Mainly the Hypercall stops Xen timers to prevent wakeups. Xen needs to put CPUs into C3, but hwdom must remain running to service the wake up interrupt.
We expose emulated AMD C-state IOPorts for hwdom to idle it’s vCPUs. Without this, Linux spins it’s vCPUs at 100%. This should probably be handled in Linux.
PV is untested. Intel is an unknown.