From what I can see, you get the following callchain:
start_kernel |-> setup_arch |-> x86_init.oem.arch_setup = xen_arch_setup .... |-> check_bugs |-> identify_boot_cpu |-> identify_cpu |-> select_idle_routine
so xen_arch_setup will set pm_idle and select_idle_routine will honour it. I'm being told this is run either in the dom0 or the paravirt guest and if so, I don't see any issue with this for baremetal. So you can have my ACK provided this is tested on baremetal too.
Tested on baremetal and there were no abnormalities. Thanks!