From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::234; helo=mail-wr0-x234.google.com; envelope-from=leif.lindholm@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x234.google.com (mail-wr0-x234.google.com [IPv6:2a00:1450:400c:c0c::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 570BC20954B84 for ; Thu, 15 Mar 2018 11:41:33 -0700 (PDT) Received: by mail-wr0-x234.google.com with SMTP id n12so9381617wra.2 for ; Thu, 15 Mar 2018 11:47:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=pX2Ew71Acv6auj1dNYgwKPirFKIx3TmmDund9QNjfCU=; b=ZAMG/NnQTX5Tm/NPJHZdTZSY/3Fyc4kMXxe88g2dhbGCrFn+m8a8TXv4pKMc04kyuE e7pnhGbwztgAssyB+H1p2EpzGI5MpLBLwvik+JxT9BvJ3GVLUNj49l8vpU0bKFVK1vcz Rg0oAH5PPOKlqWCgqorotIKra9vvoV56nmxUQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=pX2Ew71Acv6auj1dNYgwKPirFKIx3TmmDund9QNjfCU=; b=PgZFZnxNW9kglkP6wCv1Rd537RVsY4oGnDYdjT1nhO+IjauPvsmUSiijvEUczfFN2M mVTVfIZy2APW604gxIuqP1HDo7vV6yhXf3RXpNu1qLyXy+vd7u0TYYQVtyo5zw/kz2Fj a2QvL2w1WIg5zHYrMKYUKfaCafAD8DL3/lM8H5K5sG2IlEmm2KIm1w2gqnXZiXj1fuL/ lQbcLyZMbjHC+KEs6HrloM+zYoiOpSwzXU4D3ZYxRprYqhTwO4Dmaum3nKVsBI2FrNZx L8YhvuBNKTY/+IbYCscBOEwtJCAek1h82aHanRI/1e1wU1oxwIs/HU+gd2hhhhNDztyz Xh2Q== X-Gm-Message-State: AElRT7H/Auzy/YDgczSLLfnS3zDL8/q3q7+J1+f1LCE3yly5saT9iK/0 xQsZ5dZwPFcOfYxQPS2k93OpXT5sv80= X-Google-Smtp-Source: AG47ELtqa2/lovL4ZjDRnrQnP9tGHKbGfRldzwkcdlUV9oQLpGhOTT5kofsX2lctVU1s4opLJvmaFQ== X-Received: by 10.223.151.1 with SMTP id r1mr8099233wrb.126.1521139676139; Thu, 15 Mar 2018 11:47:56 -0700 (PDT) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id b66sm3943475wmg.28.2018.03.15.11.47.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 15 Mar 2018 11:47:55 -0700 (PDT) Date: Thu, 15 Mar 2018 18:47:53 +0000 From: Leif Lindholm To: Sami Mujawar Cc: edk2-devel@lists.01.org, evan.lloyd@arm.com, Matteo.Carlini@arm.com, Stephanie.Hughes-Fitt@arm.com, nd@arm.com Message-ID: <20180315184753.f7ci4j46eiwgmwtb@bivouac.eciton.net> References: <20180314183509.16224-1-sami.mujawar@arm.com> MIME-Version: 1.0 In-Reply-To: <20180314183509.16224-1-sami.mujawar@arm.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Mar 2018 18:41:34 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Mar 14, 2018 at 06:35:09PM +0000, Sami Mujawar wrote: > This patch introduces a branch for implementing Dynamic Tables > Framework. The description is in the Readme.md file. > > Please create a branch called 'dynamictables' in edk2-staging. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Sami Mujawar > Signed-off-by: Evan Lloyd > --- > Readme.md | 149 ++++++++++++++++++++ > 1 file changed, 149 insertions(+) > > diff --git a/Readme.md b/Readme.md > new file mode 100644 > index 0000000000000000000000000000000000000000..9779dae812aff7cc05cdfe1d4acd5b5c2d197483 > --- /dev/null > +++ b/Readme.md > @@ -0,0 +1,149 @@ > +This branch will be used to develop the Dynamic Tables Framework. > + > +Dynamic Tables Framework > +------------------------ > + > +To reduce the amount of effort required in porting firmware to new > +platforms, we propose this "Dynamic Tables" framework. The aim is > +to provide an example implementation capable of generating the > +firmware tables from an external source. This is potentially a > +management node, either local or remote, or, where suitable, a file > +that might be generated from the system construction. This initial > +"proof of concept" release does not fully implement that - the > +configuration is held in local UEFI modules. > + > +Branch Owners > +------------- > + Evan Lloyd \ > + Sami Mujawar Proper email addresses please. > + > +Feature Summary > +--------------- > +The dynamic tables framework is designed to generate standardised > +firmware tables that describe the hardware information at > +run-time. A goal of standardised firmware is to have a common > +firmware for a platform capable of booting both Windows and Linux > +operating systems. > + > +Traditionally the firmware tables are handcrafted using ACPI > +Source Language (ASL), Table Definition Language (TDL) and > +C-code. This approach can be error prone and involves time > +consuming debugging. In addition, it may be desirable to configure > +platform hardware at runtime such as: configuring the number of > +cores available for use by the OS, or turning SoC features ON or > +OFF. > + > +The dynamic tables framework simplifies this by providing a set > +of standard table generators, that are implemented as libraries. > +These generators query a platform specific component, the > +'Configuration Manager', to collate the information required > +for generating the tables at run-time. > + > +The framework also provides the ability to implement custom/OEM > +generators; thereby facilitating support for custom tables. The > +custom generators can also utilize the existing standard generators > +and override any functionality if needed. > + > +The framework currently implements a set of standard ACPI table > +generators for ARM architecture, that can generate Server Base Boot > +Requirement (SBBR) compliant tables. Although, the set of standard > +generators implement the functionality required for ARM architecture; > +the framework is extensible, and support for other architectures can > +be added easily. > + > +The framework currently supports the following table generators for ARM: > +* DBG2 - Debug Port Table 2 > +* DSDT - Differentiated system description table. This is essentially > + a RAW table generator. > +* FADT - Fixed ACPI Description Table > +* GTDT - Generic Timer Description Table > +* IORT - IO Remapping Table > +* MADT - Multiple APIC Description Table > +* MCFG - PCI Express memory mapped configuration space base address > + Description Table > +* SPCR - Serial Port Console Redirection Table > +* SSDT - Secondary System Description Table. This is essentially > + a RAW table generator. > + > +Roadmap > +------- > +The current implementation of the Configuration Manager populates the > +platform information statically as a C structure. Further enhancements > +to introduce runtime loading of platform information from a platform > +information file is planned. > + > +Also support for generating SMBIOS tables is planned and will be added > +subsequently. > + > +Related Modules > +--------------- > + > +### edk2-platforms > +The *devel-dynamictables* branch in the **edk2-platform** repository contains > +the Configuration Manager implementation (the platform specific component) > +for Juno and Fixed Virtual Platform models. > + > +### ACPICA iASL compiler > +The RAW table generator, used to process the DSDT/SSDT files depends on > +the iASL compiler to convert the DSDT/SSDT ASL files to a C array containing > +the hex AML code. The current implementation of the iASL compiler does not > +support generation of a C header file suitable for including from a C source > +file. > + > +Related Links > +-------------- > + > + > + > + > + > +Supported Platforms > +------------------- > +1. Juno > +2. FVP Models > + > +Build Instructions > +------------------ > +1. Set path for the iASL compiler with support for generating a C header > + file as output. > + > +2. Set PACKAGES_PATH to point to the locations of the following repositories: > + > +Example: > + > +> set PACKAGES_PATH=%CD%\edk2;%CD%\edk2-platforms;%CD%\edk2-non-osi > + > + or > + > +> export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi > + > +3. To enable Dynamic tables framework the *'DYNAMIC_TABLES_FRAMEWORK'* > +option must be defined. This can be passed as a command line > +parameter to the edk2 build system. > + > +Example: > + > +>build -a AARCH64 -p Platform\ARM\JunoPkg\ArmJuno.dsc > + -t GCC5 **-D DYNAMIC_TABLES_FRAMEWORK** > + > +or > + > +>build -a AARCH64 -p Platform\ARM\VExpressPkg\ArmVExpress-FVP-AArch64.dsc > + -t GCC5 **-D DYNAMIC_TABLES_FRAMEWORK** > + > + > +Prerequisites > +------------- > +ACPICA iASL compiler with support for generating a C header file. > + > +A patch ***'Add support for hex AML C header file generation'***, to enable > +this support has been submitted to the ACPICA source repository. Nitpick: well, it's been submitted to the mailing list. Could you add a link to the latest version of the patch please? https://lists.acpica.org/pipermail/devel/2018-March/001755.html If you fix those two things, I'm happy to do the mechanics of creating this branch and adding patches to it as and when. / Leif > + > +Documentation > +------------- > +A description document is in preparation, and should be available in the > +near future. > + > +Miscellaneous > +------------- > + > -- > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' > >