From owner-freebsd-arm@freebsd.org Thu Sep 10 14:49:54 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7B64EA013CC for ; Thu, 10 Sep 2015 14:49:54 +0000 (UTC) (envelope-from mark.rutland@arm.com) Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by mx1.freebsd.org (Postfix) with ESMTP id 5B9F71092 for ; Thu, 10 Sep 2015 14:49:53 +0000 (UTC) (envelope-from mark.rutland@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 58DC775; Thu, 10 Sep 2015 07:50:03 -0700 (PDT) Received: from leverpostej (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 45CEB3F318; Thu, 10 Sep 2015 07:49:49 -0700 (PDT) Date: Thu, 10 Sep 2015 15:49:38 +0100 From: Mark Rutland To: Stefano Stabellini Cc: Shannon Zhao , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-efi@vger.kernel.org" , "Ian.Campbell@citrix.com" , "linux-doc@vger.kernel.org" , "ard.biesheuvel@linaro.org" , "linux-kernel@vger.kernel.org" , "leif.lindholm@linaro.org" , "xen-devel@lists.xen.org" , "julien.grall@citrix.com" , "freebsd-arm@freebsd.org" , "matt.fleming@intel.com" , "christoffer.dall@linaro.org" , "jbeulich@suse.com" , "peter.huangpeng@huawei.com" , "shannon.zhao@linaro.org" , Konrad Rzeszutek Wilk , "daniel.kiper@oracle.com" Subject: Re: [PATCH] efi/libstub/fdt: Standardize the names of EFI stub parameters Message-ID: <20150910144938.GI29293@leverpostej> References: <1441874516-11364-1-git-send-email-zhaoshenglong@huawei.com> <20150910095208.GA29293@leverpostej> <20150910112418.GC29293@leverpostej> <20150910121514.GE29293@leverpostej> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Mailman-Approved-At: Thu, 10 Sep 2015 17:20:47 +0000 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Sep 2015 14:49:54 -0000 On Thu, Sep 10, 2015 at 02:52:25PM +0100, Stefano Stabellini wrote: > On Thu, 10 Sep 2015, Mark Rutland wrote: > > On Thu, Sep 10, 2015 at 12:37:57PM +0100, Stefano Stabellini wrote: > > > On Thu, 10 Sep 2015, Mark Rutland wrote: > > > > > > Does Xen not talk to EFI itself and/or give the kernel a virtual EFI > > > > > > interface? > > > > > > > > > > Xen talks to EFI itself but the interface provided to dom0 is somewhat > > > > > different: there are no BootServices (Xen calls ExitBootServices before > > > > > running the kernel), and the RuntimeServices go via hypercalls (see > > > > > drivers/xen/efi.c). > > > > > > > > That's somewhat hideous; a non Xen-aware OS wouild presumably die if > > > > trying to use any runtime services the normal way? I'm not keen on > > > > describing things that the OS cannot use. > > > > > > I agree that is somewhat hideous, but a non-Xen aware OS traditionally > > > has never been able to even boot as Dom0. On ARM it can, but it still > > > wouldn't be very useful (one couldn't use it to start other guests). > > > > Sure, but it feels odd to provide the usual information in this manner > > if it cannot be used. If you require Xen-specific code to make things > > work, I would imagine this information could be dciscovered in a > > Xen-specific manner. > > We need ACPI (or Device Tree) to find that Xen is available on the > platform, so we cannot use Xen-specific code to get the ACPI tables. I don't understand. The proposition already involves passing a custom DT to the OS, implying that Xen knows how to boot that OS, and how to pass it a DTB. Consider: A) In the DT-only case, we go: DT -> Discover Xen -> Xen-specific stuff B) The proposition is that un the ACPI case we go: DT -> EFI tables -> ACPI tables -> Discover Xen -> Xen-specific stuff -> override EFI/ACPI stuff \-----------------------/ (be really cautious here) C) When you could go: DT -> Discover Xen -> Xen-specific stuff -> Xen-specific EFI/ACPI discovery D) If you want to be generic: EFI -> EFI application -> EFI tables -> ACPI tables -> Xen-specific stuff \------------------------------------------/ (virtualize these, provide shims to Dom0, but handle everything in Xen itself) E) Partially-generic option: EFI -> EFI application -> Xen detected by registered GUID -> Xen-specific EFI bootloader stuff -> OS in Xen-specific configuration > > > In any case this should be separate from the shim ABI discussion. > > > > I disagree; I think this is very much relevant to the ABI discussion. > > That's not to say that I insist on a particular approach, but I think > > that they need to be considered together. > > Let's suppose Xen didn't expose any RuntimeServices at all, would that > make it easier to discuss about the EFI stub parameters? It would simply the protocol specific to Xen, certainly. > In the grant scheme of things, they are not that important, as Ian > wrote what is important is how to pass the RSDP. Unfortunately we're still going to have to care about this eventually, even if for something like kexec. So we still need to spec out the state of things if this is going to be truly generic. Thanks, Mark.