From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753872AbbIJOxr (ORCPT ); Thu, 10 Sep 2015 10:53:47 -0400 Received: from foss.arm.com ([217.140.101.70]:34253 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751323AbbIJOxp (ORCPT ); Thu, 10 Sep 2015 10:53:45 -0400 Date: Thu, 10 Sep 2015 15:53:31 +0100 From: Mark Rutland To: Jan Beulich Cc: Stefano Stabellini , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "matt.fleming@intel.com" , "Ian.Campbell@citrix.com" , "ard.biesheuvel@linaro.org" , "linux-kernel@vger.kernel.org" , "daniel.kiper@oracle.com" , Konrad Rzeszutek Wilk , "linux-doc@vger.kernel.org" , "peter.huangpeng@huawei.com" , "leif.lindholm@linaro.org" , "xen-devel@lists.xen.org" , "julien.grall@citrix.com" , "freebsd-arm@freebsd.org" , "linux-efi@vger.kernel.org" , "shannon.zhao@linaro.org" , Shannon Zhao , "christoffer.dall@linaro.org" Subject: Re: [PATCH] efi/libstub/fdt: Standardize the names of EFI stub parameters Message-ID: <20150910145331.GJ29293@leverpostej> References: <1441874516-11364-1-git-send-email-zhaoshenglong@huawei.com> <20150910095208.GA29293@leverpostej> <20150910112418.GC29293@leverpostej> <55F199DD02000078000A1B1E@prv-mh.provo.novell.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <55F199DD02000078000A1B1E@prv-mh.provo.novell.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 10, 2015 at 01:55:25PM +0100, Jan Beulich wrote: > >>> On 10.09.15 at 13:37, wrote: > > On Thu, 10 Sep 2015, Mark Rutland wrote: > >> Why can't Xen give a virtual EFI interface to Dom0 / guests? e.g. > >> create pages of RuntimeServicesCode that are trivial assembly shims > >> doing hypercalls, and plumb these into the virtual EFI memory map and > >> tables? > >> > >> That would keep things sane for any guest, allow for easy addition of > >> EFI features, and you could even enter the usual EFI entry point, > >> simulate ExitBootServices(), SetVirtualAddressMap(), and allow the guest > >> to make things sane for itself... > > > > That's the way it was done on x86 and now we have common code both in > > Linux (drivers/xen/efi.c) and Xen (xen/common/efi) which implement this > > scheme. Switching to a different solution for ARM, would mean diverging > > with x86, which is not nice, or reimplementing the x86 solution too, > > which is expensive. > > > > BTW I think that the idea you proposed was actually considered at the > > time and deemed hard to implement, if I recall correctly. > > Considering that the EFI support is just for Dom0, and Dom0 (at > the time) had to be PV anyway, it was the more natural solution to > expose the interface via hypercalls, the more that this allows better > control over what is and primarily what is not being exposed to > Dom0. With the wrapper approach we'd be back to the same > problem (discussed elsewhere) of which EFI version to surface: The > host one would impose potentially missing extensions, while the > most recent hypervisor known one might imply hiding valuable > information from Dom0. Plus there are incompatible changes like > the altered meaning of EFI_MEMORY_WP in 2.5. I'm not sure I follow how hypercalls solve any impedance mismatch here; you're still expecting Dom0 to call up to Xen in order to perform calls, and all I suggested was a different location for those hypercalls. If Xen is happy to make such calls blindly, why does it matter if the hypercall was in the kernel binary or an external shim? Incompatible changes are a spec problem regardless of how this is handled. Thanks, Mark. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Rutland Subject: Re: [PATCH] efi/libstub/fdt: Standardize the names of EFI stub parameters Date: Thu, 10 Sep 2015 15:53:31 +0100 Message-ID: <20150910145331.GJ29293@leverpostej> References: <1441874516-11364-1-git-send-email-zhaoshenglong@huawei.com> <20150910095208.GA29293@leverpostej> <20150910112418.GC29293@leverpostej> <55F199DD02000078000A1B1E@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <55F199DD02000078000A1B1E@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: "devicetree@vger.kernel.org" , "matt.fleming@intel.com" , "Ian.Campbell@citrix.com" , "ard.biesheuvel@linaro.org" , "christoffer.dall@linaro.org" , "daniel.kiper@oracle.com" , Stefano Stabellini , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "leif.lindholm@linaro.org" , "peter.huangpeng@huawei.com" , "julien.grall@citrix.com" , "freebsd-arm@freebsd.org" , "linux-efi@vger.kernel.org" , "shannon.zhao@linaro.org" , Shannon Zhao List-Id: linux-efi@vger.kernel.org On Thu, Sep 10, 2015 at 01:55:25PM +0100, Jan Beulich wrote: > >>> On 10.09.15 at 13:37, wrote: > > On Thu, 10 Sep 2015, Mark Rutland wrote: > >> Why can't Xen give a virtual EFI interface to Dom0 / guests? e.g. > >> create pages of RuntimeServicesCode that are trivial assembly shims > >> doing hypercalls, and plumb these into the virtual EFI memory map and > >> tables? > >> > >> That would keep things sane for any guest, allow for easy addition of > >> EFI features, and you could even enter the usual EFI entry point, > >> simulate ExitBootServices(), SetVirtualAddressMap(), and allow the guest > >> to make things sane for itself... > > > > That's the way it was done on x86 and now we have common code both in > > Linux (drivers/xen/efi.c) and Xen (xen/common/efi) which implement this > > scheme. Switching to a different solution for ARM, would mean diverging > > with x86, which is not nice, or reimplementing the x86 solution too, > > which is expensive. > > > > BTW I think that the idea you proposed was actually considered at the > > time and deemed hard to implement, if I recall correctly. > > Considering that the EFI support is just for Dom0, and Dom0 (at > the time) had to be PV anyway, it was the more natural solution to > expose the interface via hypercalls, the more that this allows better > control over what is and primarily what is not being exposed to > Dom0. With the wrapper approach we'd be back to the same > problem (discussed elsewhere) of which EFI version to surface: The > host one would impose potentially missing extensions, while the > most recent hypervisor known one might imply hiding valuable > information from Dom0. Plus there are incompatible changes like > the altered meaning of EFI_MEMORY_WP in 2.5. I'm not sure I follow how hypercalls solve any impedance mismatch here; you're still expecting Dom0 to call up to Xen in order to perform calls, and all I suggested was a different location for those hypercalls. If Xen is happy to make such calls blindly, why does it matter if the hypercall was in the kernel binary or an external shim? Incompatible changes are a spec problem regardless of how this is handled. Thanks, Mark. From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.rutland@arm.com (Mark Rutland) Date: Thu, 10 Sep 2015 15:53:31 +0100 Subject: [PATCH] efi/libstub/fdt: Standardize the names of EFI stub parameters In-Reply-To: <55F199DD02000078000A1B1E@prv-mh.provo.novell.com> References: <1441874516-11364-1-git-send-email-zhaoshenglong@huawei.com> <20150910095208.GA29293@leverpostej> <20150910112418.GC29293@leverpostej> <55F199DD02000078000A1B1E@prv-mh.provo.novell.com> Message-ID: <20150910145331.GJ29293@leverpostej> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Sep 10, 2015 at 01:55:25PM +0100, Jan Beulich wrote: > >>> On 10.09.15 at 13:37, wrote: > > On Thu, 10 Sep 2015, Mark Rutland wrote: > >> Why can't Xen give a virtual EFI interface to Dom0 / guests? e.g. > >> create pages of RuntimeServicesCode that are trivial assembly shims > >> doing hypercalls, and plumb these into the virtual EFI memory map and > >> tables? > >> > >> That would keep things sane for any guest, allow for easy addition of > >> EFI features, and you could even enter the usual EFI entry point, > >> simulate ExitBootServices(), SetVirtualAddressMap(), and allow the guest > >> to make things sane for itself... > > > > That's the way it was done on x86 and now we have common code both in > > Linux (drivers/xen/efi.c) and Xen (xen/common/efi) which implement this > > scheme. Switching to a different solution for ARM, would mean diverging > > with x86, which is not nice, or reimplementing the x86 solution too, > > which is expensive. > > > > BTW I think that the idea you proposed was actually considered at the > > time and deemed hard to implement, if I recall correctly. > > Considering that the EFI support is just for Dom0, and Dom0 (at > the time) had to be PV anyway, it was the more natural solution to > expose the interface via hypercalls, the more that this allows better > control over what is and primarily what is not being exposed to > Dom0. With the wrapper approach we'd be back to the same > problem (discussed elsewhere) of which EFI version to surface: The > host one would impose potentially missing extensions, while the > most recent hypervisor known one might imply hiding valuable > information from Dom0. Plus there are incompatible changes like > the altered meaning of EFI_MEMORY_WP in 2.5. I'm not sure I follow how hypercalls solve any impedance mismatch here; you're still expecting Dom0 to call up to Xen in order to perform calls, and all I suggested was a different location for those hypercalls. If Xen is happy to make such calls blindly, why does it matter if the hypercall was in the kernel binary or an external shim? Incompatible changes are a spec problem regardless of how this is handled. Thanks, Mark.