From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 81ACA223FCF24 for ; Thu, 15 Mar 2018 15:30:02 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Mar 2018 15:36:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,313,1517904000"; d="scan'208";a="39312959" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by orsmga001.jf.intel.com with ESMTP; 15 Mar 2018 15:36:25 -0700 Received: from orsmsx114.amr.corp.intel.com (10.22.240.10) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 15 Mar 2018 15:36:25 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.121]) by ORSMSX114.amr.corp.intel.com ([169.254.8.245]) with mapi id 14.03.0319.002; Thu, 15 Mar 2018 15:36:25 -0700 From: "Kinney, Michael D" To: Leif Lindholm , Sami Mujawar , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "evan.lloyd@arm.com" , "Matteo.Carlini@arm.com" , "Stephanie.Hughes-Fitt@arm.com" , "nd@arm.com" , Andrew Fish Thread-Topic: [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework Thread-Index: AQHTvJQ9XrulvCS1SEanVcvEYGolp6PR4nwg Date: Thu, 15 Mar 2018 22:36:24 +0000 Message-ID: References: <20180315190916.19956-1-sami.mujawar@arm.com> <20180315193128.eghtaqava7rssq3f@bivouac.eciton.net> In-Reply-To: <20180315193128.eghtaqava7rssq3f@bivouac.eciton.net> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.22.254.139] MIME-Version: 1.0 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 22:30:02 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Leif, Please create the branch in edk2-staging. Reviewed-by: Michael D Kinney Mike > -----Original Message----- > From: Leif Lindholm [mailto:leif.lindholm@linaro.org] > Sent: Thursday, March 15, 2018 12:31 PM > 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; Andrew Fish ; Kinney, > Michael D > Subject: Re: [staging/dynamictables PATCH] Branch to > implement Dynamic Tables Framework >=20 > On Thu, Mar 15, 2018 at 07:09:16PM +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 >=20 > Reviewed-by: Leif Lindholm >=20 > But, adding Andrew and Mike to cc. > If they have no comments, I can create this branch > tomorrow. >=20 > / > Leif >=20 > > --- > > > > Apologies for sending the patch again. I had missed > the staging tag in the subject line. > > > > Readme.md | 150 ++++++++++++++++++++ > > 1 file changed, 150 insertions(+) > > > > diff --git a/Readme.md b/Readme.md > > new file mode 100644 > > index > 0000000000000000000000000000000000000000..652b0e3060f75 > a2afe9506817d1745cd903b0cb2 > > --- /dev/null > > +++ b/Readme.md > > @@ -0,0 +1,150 @@ > > +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 > > + > > +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=3D%CD%\edk2;%CD%\edk2- > platforms;%CD%\edk2-non-osi > > + > > + or > > + > > +> export PACKAGES_PATH=3D$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 ***'Modify hex AML C header file > generation'***, to enable > > +this support has been submitted to the ACPICA source > repository. > > + March/001755.html> > > + > > +Documentation > > +------------- > > +A description document is in preparation, and should > be available in the > > +near future. > > + > > +Miscellaneous > > +------------- > > + > > -- > > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' > > > >