Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030753AbcDMKE1 (ORCPT ); Wed, 13 Apr 2016 06:04:27 -0400 Received: from smtp02.citrix.com ([66.165.176.63]:61183 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030660AbcDMKE0 (ORCPT ); Wed, 13 Apr 2016 06:04:26 -0400 X-IronPort-AV: E=Sophos;i="5.24,479,1454976000"; d="scan'208";a="353425666" Date: Wed, 13 Apr 2016 12:03:12 +0200 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= To: Matt Fleming CC: George Dunlap , Michael Chang , Linux Kernel Mailing List , Julien Grall , Jan Beulich , "H. Peter Anvin" , Daniel Kiper , "the arch/x86 maintainers" , =?utf-8?Q?Vojt=C4=9Bch_Pavl=C3=ADk?= , Gary Lin , xen-devel , Jeffrey Cheung , "Charles Arndol" , Stefano Stabellini , joeyli , Borislav Petkov , Boris Ostrovsky , Juergen Gross , Andrew Cooper , Jim Fehlig , Andy Lutomirski , "Luis R. Rodriguez" , David Vrabel Subject: Re: [Xen-devel] HVMLite / PVHv2 - using x86 EFI boot entry Message-ID: <20160413100312.647eocdtbmak4btk@mac> References: <20160406024027.GX1990@wotan.suse.de> <20160406150240.GO2701@codeblueprint.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20160406150240.GO2701@codeblueprint.co.uk> User-Agent: Mutt/1.6.0-neo (2016-04-07) X-DLP: MIA2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1391 Lines: 32 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.