Re: [PATCH 2/2 v2] xen/acpi: upload PM state from init-domain to Xen

From: Ankur Arora
Date: Wed Mar 22 2017 - 13:56:20 EST


On 2017-03-22 02:05 AM, Stanislaw Gruszka wrote:
On Tue, Mar 21, 2017 at 03:43:38PM -0700, Ankur Arora wrote:
This was broken in commit cd979883b9ede90643e019f33cb317933eb867b4.
do_suspend (from xen/manage.c) and thus xen_resume_notifier never get
called on the initial-domain at resume (it is if running as guest.)

The rationale for the breaking change was that upload_pm_data()
potentially does blocking work in syscore_resume(). This patch
addresses the original issue by scheduling upload_pm_data() to
execute in workqueue context.

It is ok to do upload_pm_data() with delay i.e. after some other
resume actions are done and possibly xen-acpi-processor is in
running state ?
The state uploaded is ACPI P and C state from struct acpi_processor
which AFAICS is stable once inited so a delay would not lead to
invalid state.
The only concern would be the ACPI pCPU hotplug logic in
acpi_processor_add() which could add a new entry in
per_cpu(processors) but that also looks okay because either we
get a NULL or we get a pointer to an inited structure.

As for the hypervisor -- that falls back to more limited state after
resume (because some of this state is thrown away at suspend) and so
uses that until it gets the uploaded PM state from the initial-domain.

Ankur


Stanislaw