[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160413100312.647eocdtbmak4btk@mac>
Date: Wed, 13 Apr 2016 12:03:12 +0200
From: Roger Pau Monné <roger.pau@...rix.com>
To: Matt Fleming <matt@...eblueprint.co.uk>
CC: George Dunlap <george.dunlap@...rix.com>,
Michael Chang <MChang@...e.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Julien Grall <julien.grall@....com>,
Jan Beulich <JBeulich@...e.com>,
"H. Peter Anvin" <hpa@...or.com>,
Daniel Kiper <daniel.kiper@...cle.com>,
"the arch/x86 maintainers" <x86@...nel.org>,
Vojtěch Pavlík <vojtech@...e.cz>,
Gary Lin <GLin@...e.com>,
xen-devel <xen-devel@...ts.xenproject.org>,
Jeffrey Cheung <JCheung@...e.com>,
"Charles Arndol" <carnold@...e.com>,
Stefano Stabellini <stefano.stabellini@...citrix.com>,
joeyli <jlee@...e.com>, Borislav Petkov <bp@...en8.de>,
Boris Ostrovsky <boris.ostrovsky@...cle.com>,
Juergen Gross <jgross@...e.com>,
Andrew Cooper <andrew.cooper3@...rix.com>,
Jim Fehlig <jfehlig@...e.com>,
Andy Lutomirski <luto@...capital.net>,
"Luis R. Rodriguez" <mcgrof@...nel.org>,
David Vrabel <david.vrabel@...rix.com>
Subject: Re: [Xen-devel] HVMLite / PVHv2 - using x86 EFI boot entry
On Wed, Apr 06, 2016 at 04:02:40PM +0100, Matt Fleming wrote:
[...]
> One place that struck me as suitable for this "hypercall in an EFI
> service stub" approach is the trouble with doing ACPI reboot as
> documented here,
>
> http://lists.xen.org/archives/html/xen-devel/2016-02/msg01609.html
>
> Performing the reset hypercall from within HVMlite's custom EfiReset()
> service would avoid having to touch ACPICA at all, and would be
> indistinguishable from bare metal.
I don't get this, the "reset/shutdown" hypercall requires the following
steps from Dom0 (it's not as simple as calling a hypercall):
The way to perform a full system power off from Dom0 is different than
what's done in a DomU guest. In order to perform a power off from Dom0 the
native ACPI path should be followed, but the guest should not write the
`SLP_EN` bit to the Pm1Control register. Instead the
`XENPF_enter_acpi_sleep` hypercall should be used, filling the following
data in the `xen_platform_op` struct:
cmd = XENPF_enter_acpi_sleep
interface_version = XENPF_INTERFACE_VERSION
u.enter_acpi_sleep.pm1a_cnt_val = Pm1aControlValue
u.enter_acpi_sleep.pm1b_cnt_val = Pm1bControlValue
At which point it means that we are either going to duplicate ACPICA code
into the HVMlite's custom EfiReset() service, or we are going to call into
ACPICA, which is what we already do now.
Roger.
Powered by blists - more mailing lists