From: Juergen Gross <juergen.gross@ts.fujitsu.com>
To: Keir Fraser <keir.xen@gmail.com>
Cc: xen-devel@lists.xensource.com
Subject: Re: [PATCH] Allow ACPI state change with active cpupools
Date: Wed, 21 Mar 2012 14:46:30 +0100 [thread overview]
Message-ID: <4F69DBB6.2020400@ts.fujitsu.com> (raw)
In-Reply-To: <CB8E4AF9.2ECDC%keir.xen@gmail.com>
On 03/20/2012 03:55 PM, Keir Fraser wrote:
> On 20/03/2012 14:46, "Juergen Gross"<juergen.gross@ts.fujitsu.com> wrote:
>
>>> Is it better to have cpupools know about offlining/suspend, or have
>>> offlining/suspend know about cpupools? I would have thought the latter makes
>>> more sense since it is offlining/suspend which calls into the cpupool
>>> subsystem.
>> I thought of a more relaxed solution in the cpupool coding:
>>
>> Instead of allowing to offline a cpu only if it is in Pool-0, I would allow it
>> if:
>> - the cpu is not the last one in the cpupool
>> - or no domain is active in the cpupool (this would include the suspend case,
>> where all domains are paused)
>>
>> Together with your proposal to remember the cpupool for an offlined cpu to add
>> it again when it is onlined the handling should be rather simple and local.
> Ah, I see. Yes, a more flexible policy like this in the cpupool subsystem is
> best solution of all, imo.
I have a problem with that solution. I had to change cpu_disable_scheduler() to
do a vcpu_migrate() only if the vcpu is runnable. When the ACPI state change
isn't permanent like in poweroff case I don't want to change vcpu affinities.
This action might be necessary in vcpu_wake() if v->processor isn't usable for
the vcpu any more.
Unfortunately vcpu_migrate() is calling evtchn_move_pirqs(), which taking the
domain event channel lock. And vcpu_wake() is called at least by send_evtchn()
with that lock already hold...
Is it possible to use spin_lock_recursive() for the domain event channel lock?
Another solution would be to omit the vcpu_migrate() in cpu_disable_scheduler()
for paused vcpus only and to do it when unpausing the vcpu, but this would
leak scheduler internals...
Juergen
--
Juergen Gross Principal Developer Operating Systems
PDG ES&S SWE OS6 Telephone: +49 (0) 89 3222 2967
Fujitsu Technology Solutions e-mail: juergen.gross@ts.fujitsu.com
Domagkstr. 28 Internet: ts.fujitsu.com
D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html
prev parent reply other threads:[~2012-03-21 13:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-20 12:15 [PATCH] Allow ACPI state change with active cpupools Juergen Gross
2012-03-20 12:52 ` Keir Fraser
2012-03-20 13:35 ` Juergen Gross
2012-03-20 14:30 ` Keir Fraser
2012-03-20 14:46 ` Juergen Gross
2012-03-20 14:55 ` Keir Fraser
2012-03-21 13:46 ` Juergen Gross [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F69DBB6.2020400@ts.fujitsu.com \
--to=juergen.gross@ts.fujitsu.com \
--cc=keir.xen@gmail.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.