From owner-freebsd-arm@freebsd.org Fri Sep 11 13:30:23 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 6DF8BA02EBB for ; Fri, 11 Sep 2015 13:30:23 +0000 (UTC) (envelope-from ard.biesheuvel@linaro.org) Received: from mail-io0-f182.google.com (mail-io0-f182.google.com [209.85.223.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 326351497 for ; Fri, 11 Sep 2015 13:30:22 +0000 (UTC) (envelope-from ard.biesheuvel@linaro.org) Received: by iofh134 with SMTP id h134so97850722iof.0 for ; Fri, 11 Sep 2015 06:30:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=2vYRXGNrOCjJFk5o5k6beu+e0eToa1hskc8Fj2adrlA=; b=keBhYM6CjokNX1toQXOS8NGrA01ihgdZaLoVQJp0ZrblA86AlfwKFWFVto4kOmYlOc zydv32hLKxlaf9vnVdZ3OPy6JVuPXlCBZn42bKePIRXVS0BRNy6Vqw5wpzfoySTofnDF EuoGzvKoF8j3GqXclTyvKAFIL/UWjmS7G2xHwSWAokdL/3tgRNPTHGvrEHCRcPBN1K6q l9nooF1T6pl6TNW4TecXqN88+/WeZ9pTXP73YRR38zZvDnVfbPnlkMq1hT+TzhAo9Xwn ZSByCPe2PSz6zxUWnavFiMeIO9tDjKZvmMd6soI9ieXaZMACC8HlO8ZbqOwCRrlAyTXe D1Pw== X-Gm-Message-State: ALoCoQmeKrvf6wT4TzTCz1mHGF7OgkU2iNURIdwxmoSxAF1cC2SgYUUFxMMnUws3A1pnVHXLxKt5 MIME-Version: 1.0 X-Received: by 10.107.16.80 with SMTP id y77mr3593796ioi.183.1441978215921; Fri, 11 Sep 2015 06:30:15 -0700 (PDT) Received: by 10.36.138.69 with HTTP; Fri, 11 Sep 2015 06:30:15 -0700 (PDT) In-Reply-To: References: <1441874516-11364-1-git-send-email-zhaoshenglong@huawei.com> <20150910095208.GA29293@leverpostej> <20150910112418.GC29293@leverpostej> <20150910121514.GE29293@leverpostej> <20150910144938.GI29293@leverpostej> <20150910162302.GN29293@leverpostej> <20150911124643.GB4530@olila.local.net-space.pl> Date: Fri, 11 Sep 2015 15:30:15 +0200 Message-ID: Subject: Re: [PATCH] efi/libstub/fdt: Standardize the names of EFI stub parameters From: Ard Biesheuvel To: Stefano Stabellini Cc: Daniel Kiper , Mark Rutland , 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" , "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 Content-Type: text/plain; charset=UTF-8 X-Mailman-Approved-At: Fri, 11 Sep 2015 16:04:05 +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: Fri, 11 Sep 2015 13:30:23 -0000 On 11 September 2015 at 15:14, Stefano Stabellini wrote: > On Fri, 11 Sep 2015, Daniel Kiper wrote: >> On Thu, Sep 10, 2015 at 05:23:02PM +0100, Mark Rutland wrote: >> > > > C) When you could go: >> > > > >> > > > DT -> Discover Xen -> Xen-specific stuff -> Xen-specific EFI/ACPI discovery >> > > >> > > I take you mean discovering Xen with the usual Xen hypervisor node on >> > > device tree. I think that C) is a good option actually. I like it. Not >> > > sure why we didn't think about this earlier. Is there anything EFI or >> > > ACPI which is needed before Xen support is discovered by >> > > arch/arm64/kernel/setup.c:setup_arch -> xen_early_init()? >> > >> > Currently lots (including the memory map). With the stuff to support >> > SPCR, the ACPI discovery would be moved before xen_early_init(). >> > >> > > If not, we could just go for this. A lot of complexity would go away. >> > >> > I suspect this would still be fairly complex, but would at least prevent >> > the Xen-specific EFI handling from adversely affecting the native case. >> > >> > > > 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) >> > > >> > > I think that this is good in theory but could turn out to be a lot of >> > > work in practice. We could probably virtualize the RuntimeServices but >> > > the BootServices are troublesome. >> > >> > What's troublesome with the boot services? >> > >> > What can't be simulated? >> >> How do you want to access bare metal EFI boot services from dom0 if they >> were shutdown long time ago before loading dom0 image? What do you need >> from EFI boot services in dom0? > > That's right. Trying to emulate BootServices after the real > ExitBootServices has already been called seems like a very bad plan. > > I think that whatever interface we come up with, would need to be past > ExitBootServices. It feels like this discussion is going in circles. When we discussed this six months ago, we already concluded that, since UEFI is the only specified way that the presence of ACPI is advertised on an ARM system, we need to emulate UEFI to some extent. So we need the EFI system table to expose the UEFI configuration table that carries the ACPI root pointer. Since ACPI support also relies on the UEFI memory map (I think?), we need that as well. These two items are exactly what we pass via the UEFI DT properties, so we should indeed promote the current de-facto binding to a proper binding, and renaming the properties makes sense in that context. I agree that this should also include a description of the expected state of the firmware, i.e., that ExitBootServices() has been called, and that the memory map has been populated with virtual address, which have been installed using SetVirtualAddressMap() if they differ from the physical addresses. (The current implementation on the kernel side is perfectly capable of dealing with a 1:1 mapping). Beyond that, there is no point in pretending to be a full UEFI implementation, imo. Boot services are not required, nor are runtime services (only the current EFI init code on arm needs to be modified to deal with a NULL runtime services pointer) -- Ard.