From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mx.groups.io with SMTP id smtpd.web08.10972.1621528360358710109 for ; Thu, 20 May 2021 09:32:40 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@linux.microsoft.com header.s=default header.b=UhlBlKLg; spf=pass (domain: linux.microsoft.com, ip: 13.77.154.182, mailfrom: mikuback@linux.microsoft.com) Received: from [10.124.238.202] (unknown [167.220.2.74]) by linux.microsoft.com (Postfix) with ESMTPSA id A19D620B7178; Thu, 20 May 2021 09:32:39 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com A19D620B7178 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1621528359; bh=gxXFZmLnBeafbeVDVv7f90ZMum2eY3fpT5bkNnHibCc=; h=Subject:To:References:From:Date:In-Reply-To:From; b=UhlBlKLgm2OiO7wduDJwsAKhxtbQ4eoKTR3vQw6igL+uPx4n5nxOHTwe5z87+c2eq 5xfu/UaK6D954Z/H1hDipVE2rQKnpupQQnrcL21vLHmgEmGIFz8K/6Tse13Q7rv1Lb FUIRJGc9AR4pXw3jJz0JTglnZUjyOVrYGLIzBf2E= Subject: =?UTF-8?B?UmU6IOWbnuWkjTogW2VkazItZGV2ZWxdIEdTb0MgMjAyMSBRZW11IE9wZW5Cb2FyZFBrZyBQcm9qZWN0?= To: "Oram, Isaac W" , "devel@edk2.groups.io" , "daniel.schaefer@hpe.com" , "gaoliming@byosoft.com.cn" , "kaaira7319@gmail.com" , "Ni, Ray" References: <20210518143156.GA24025@kaaira-HP-Pavilion-Notebook> <20210518144155.GA25679@kaaira-HP-Pavilion-Notebook> <000001d74c4b$1ae82a80$50b87f80$@byosoft.com.cn> <2162525c-4e35-0c09-4594-ecbfbc740dcc@linux.microsoft.com> <276316c8-9355-2a6d-3786-ca743e1e772d@linux.microsoft.com> From: "Michael Kubacki" Message-ID: <6b42f62c-9f91-7310-4156-530da5c49012@linux.microsoft.com> Date: Thu, 20 May 2021 09:32:40 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Daniel, You will specifically find attempts to consolidate common libraries and=20 modules in DSC and FDF files that can be included into a board package=20 here -=20 https://github.com/tianocore/edk2-platforms/tree/master/Platform/Intel/Min= PlatformPkg/Include.=20 Files are split such that they can be included in the corresponding=20 section in the board package DSC/FDF file. Note there are some mixed=20 opinions I've encountered in the industry on the complexity trade off=20 associated with includes in DSC and FDF files. But as Isaac mentioned, while MinPlatform is designed to support=20 multiple architectures, it has only be enabled on Intel platforms,=20 therefore, you should expect to encounter some problems enabling a=20 different architecture but identifying and/or resolving those would be=20 very valuable. As you are exploring how to port a platform to MinPlatform I also=20 recommend familiarizing yourself the concept of advanced features=20 described here -=20 https://github.com/tianocore/edk2-platforms/blob/master/Features/Intel/Rea= dme.md.=20 You might find your board package is relatively simpler than the=20 original platform package after accounting for advanced features being=20 separated out. Thanks, Michael On 5/20/2021 8:05 AM, Oram, Isaac W wrote: > Daniel, >=20 > The MinPlatform spec was intended to be architecture and product=20 > independent for a =E2=80=9Cmainstream=E2=80=9D set of products.=C2=A0 It= is intended to=20 > constrain some of the nearly unlimited extensibility and flexibility of= =20 > UEFI specs and edk2 codebase.=C2=A0 We took an 80/20 kind of approach.= =C2=A0 Base=20 > design should work for 80% of designs, but some will need to leverage=20 > full edk2 and UEFI specification flexibility.=C2=A0 I think that a basic= QEMU=20 > kind of port would fit in 80% target.=C2=A0 I would ultimately like to s= ee a=20 > progression of edk2 use that starts with QEMU then moves more seamlessly= = =20 > to open designs and then proprietary product designs.=C2=A0 MinPlatform= =20 > consistency is hoped to help that developer ramp into system firmware=20 > productivity. >=20 > We have only seen MinPlatform applied to Intel based products so far. > Which is why we are not rushing to move the spec from a 0.7 =E2=80=9Cbro= ad=20 > feedback=E2=80=9D state to a 1.0 =E2=80=9Cinitially complete=E2=80=9D st= ate.=C2=A0 Like edk2,=20 > MinPlatformPkg and BoardModulePkg content is intended to support=20 > multiple silicon and product architectures and we will happily promote= =20 > content out of =E2=80=9CIntel=E2=80=9D scope when that is an accurate re= flection of use=20 > and not just wishful thinking.=C2=A0 While 100% of uses are Intel scope,= it=20 > makes sense to land in the Intel part of edk2-platforms repo.=C2=A0 Simi= lar=20 > logic applies to Features/Intel content, though more there may have ties= = =20 > to Intel specific product features. >=20 > The Minimum Platform Arch spec details base requirements for FV layout= =20 > (thus enabling more common code to publish FV details), base silicon=20 > policy configuration flow (thus more common PEIM/drivers to gather=20 > config information and reduce board porting to relatively simple=20 > libraries), and such things.=C2=A0 By enabling more common PEIM and driv= ers,=20 > we hope to see benefits to ease of use and consistent quality. Similar= =20 > approaches for the other elements of the spec should help to improve=20 > code sharing. >=20 > Anyway, yes, it should be able to help you reduce the copies of =E2=80= =9Cmostly=20 > common=E2=80=9D code that you encountered and the code and spec are open= to=20 > welcome the additional use and feedback from additional applications. >=20 > Regards, > Isaac >=20 > *From:*devel@edk2.groups.io *On Behalf Of *Daniel= = =20 > Schaefer > *Sent:* Wednesday, May 19, 2021 8:40 PM > *To:* devel@edk2.groups.io; gaoliming@byosoft.com.cn;=20 > kaaira7319@gmail.com; Ni, Ray ;=20 > mikuback@linux.microsoft.com > *Subject:* Re: =E5=9B=9E=E5=A4=8D: [edk2-devel] GSoC 2021 Qemu OpenBoard= Pkg Project >=20 > Hi, >=20 > that sounds like a great project! >=20 > I'm currently trying to create an equivalent of OvmfPkg for the RISCV64= =20 > generic QEMU virt machine. >=20 > I don't like how much of my DSC and FDF file has modules that pretty=20 > much all platforms should have. >=20 > MinPlatform would help reduce that, right? >=20 > Is MinPlatform flexible enough to account for non-X64 platforms? >=20 > If so, then I think Kaaira and I could collaborate. >=20 > Cheers, > Daniel >=20 > ------------------------------------------------------------------------ >=20 > *From:*devel@edk2.groups.io=20 > > on behalf of Michael Kubacki=20 > > > *Sent:* Thursday, May 20, 2021 02:57 > *To:* devel@edk2.groups.io=20 > >; gaoliming@byosoft.com.cn=20 > >; kaaira7319@gmail.com=20 > >; 'Ray Ni' > > *Subject:* Re: =E5=9B=9E=E5=A4=8D: [edk2-devel] GSoC 2021 Qemu OpenBoard= Pkg Project >=20 > I also wanted to add that I will be setting up weekly video calls > including Ray that we can use to supplement mailing list communication. >=20 > I suggest the primary communication mechanism be the mailing list and we > use those calls for clarification, detailed project planning, and topics > not directly relevant to the list. >=20 > Regards, > Michael >=20 > On 5/19/2021 10:29 AM, Michael Kubacki wrote: >> Thanks Liming. >>=20 >> Hi Kaaira, >>=20 >> Welcome! You can contact me at mikuback@linux.microsoft.com . You=20 > will >> sometimes see my email as michael.kubacki@microsoft.com and=20 > that is fine >> to use for communication though I tend to not use it on the mailing lis= t=20 >> due to way the mail server manipulates plaintext email. >>=20 >> GENERIC RESOURCES >>=20 >> I'm sharing some general resources in case you are not already familiar= = =20 >> with them: >>=20 >> 1. https://github.com/tianocore-training/Tianocore_Training_Contents/wi= ki=20 > >>=20 >> This one is good for topics like UEFI overview, EDK II concepts, and=20 >> Minimum Platform. >>=20 >> In particular for your project, I recommend looking through the=20 >> MinPlatform training -=20 >> https://github.com/tianocore-training/Presentation_FW/blob/master/FW/Pr= esentations/_D_05_EDK_II_Open_Source_MinPlatform_pres_gp.pdf=20 > >>=20 >>=20 >> 2.=20 >> https://software.intel.com/content/www/us/en/develop/articles/unified-e= xtensible-firmware-interface.html=20 > >>=20 >>=20 >> These whitepapers are useful when you need more in depth detail about a= = =20 >> particular area (like capsule update or work related to the memory map)= .=20 >> I recommend bookmarking it and keeping it in mind as a reference. >>=20 >> 3. https://uefi.org/learning_center/presentationsandvideos/=20 > >>=20 >> Scroll through here if you have some time and see if there's anything= =20 >> interesting. To help keep on your project schedule I don't think these= =20 >> are as important but there is a lot of interesting material there. >>=20 >> Reading through some of the key concepts in Beyond BIOS can be helpful= =20 >> and like the UEFI, ACPI, and PI (Platform Initialization) specs at=20 >> https://uefi.org/specifications , I=20 > believe they are most useful as >> references when you are solving specific problems. >>=20 >> PROJECT-SPECIFIC RESOURCES >>=20 >> Since your project involves creating QEMU board within the Minimum=20 >> Platform architecture, you can start looking into: >>=20 >> 1. QEMU - An open source machine emulator >> 2. Minimum Platform Architecture - A software architecture to create=20 >> basic platform firmware that can be extended with advanced functionalit= y. >> 3. Intel FSP - Try to understand the high-level goals and how FSP=20 >> interfaces with firmware. >>=20 >> 1. QEMU - https://www.qemu.org/ >>=20 >> Please set up the QEMU environment. Your QemuOpenBoardPkg will need to= =20 >> run on qemu-system-x86_64 at a minimum with a 32-bit PEI and a 64-bit= =20 >> DXE phase. Most real hardware firmwares also use a 32-bit PEI and a=20 >> 64-bit DXE. >>=20 >> I suggest you start with the OvmfPkg README -=20 >> https://github.com/tianocore/edk2/blob/master/OvmfPkg/README=20 > >>=20 >> As an initial step you can try to build an OVMF FW with a 32-bit PEI=20 >> (IA32) and 64-bit DXE (X64) and boot to the EFI shell.=20 >> OvmfPkg/OvmfPkgIa32X64.dsc can be used to build a firmware for these=20 >> target architectures. >>=20 >> Any time you submit patches to edk2, you can check edk2/maintainers.txt= = =20 >> - https://github.com/tianocore/edk2/blob/master/Maintainers.txt=20 > for the >> appropriate maintainers and reviewers to CC on the patch. As you can=20 >> see, Laszlo and Ard are the maintainers for OvmfPkg and Jordan is a=20 >> reviewer. If there are any questions that require deep expertise in QEM= U=20 >> or OVMF, we will reach out to them. The Minimum Platform code is=20 >> maintained in the edk2-platforms repository and it has a similar=20 >> maintainers.txt file for its packages -=20 >> https://github.com/tianocore/edk2-platforms/blob/master/Maintainers.txt= = =20 > . >>=20 >> I suggest you try sending a very trivial patch for a change in the=20 >> edk2-platforms repository - https://github.com/tianocore/edk2-platforms= = =20 > >> to make sure that your git environment is set up properly to format edk= 2=20 >> patches and your email service can send patches correctly. >>=20 >> We can discuss the details about how to set up your environment and wha= t=20 >> to change when you are ready. You can use this page to get started -=20 >> https://github.com/tianocore/tianocore.github.io/wiki/How-To-Contribute= = =20 > . >>=20 >> 2. EDK II Minimum Platform Specification -=20 >> https://edk2-docs.gitbook.io/edk-ii-minimum-platform-specification/=20 > >>=20 >> For your project, this spec will be very useful. It describes why=20 >> Minimum Platform was created and how it works at a high-level. Like the= = =20 >> code, this document is open and available to the community. You might= =20 >> contribute content here in addition to your code. You can fix any bugs= =20 >> or update content in the spec using git patches and the mailing list=20 >> similar to code. >>=20 >> 3. Intel FSP -=20 >> https://www.intel.com/content/www/us/en/intelligent-systems/intel-firmw= are-support-package/intel-fsp-overview.html=20 > >>=20 >>=20 >> For more information about Intel FSP check out the Intel FSP External= =20 >> Architecture Specification in the link above. v2.2 is currently the=20 >> latest version. >>=20 >> There is an open source QEMU FSP available here=20 >> https://github.com/universalpayload/fspsdk/tree/qemu_fsp_x64=20 > . You will >> find the existing Minimum Platform boards use Intel FSP while OvmfPkg= =20 >> does not use FSP. >>=20 >> Firmware is really best learned hands on. Using the links and backgroun= d=20 >> info above, I suggest: >>=20 >> 1. Read the OvmfPkg readme. >> 2. Build a 32-bit PEI and 64-bit DXE OVMF FW and boot it to EFI shell= =20 >> using QEMU. >> 3. Reading through the EDK II Minimum Platform Specification to gain a= =20 >> high level understanding of Minimum Platform. >> 4. Connect what you read to the code in=20 >> https://github.com/tianocore/edk2-platforms/tree/master/Platform/Intel= =20 > = . >> Focus on higher level pieces like the board initialization library. >> 5. Note what each board package is doing. You will find common patterns= = =20 >> for what a board package needs to implement to make the system boot. >> 6. As you read through the code, reference the general resources listed= = =20 >> above to understand anything not Minimum Platform specific. Part of the= = =20 >> learning process is knowing which spec to use for different interfaces.= = =20 >> If you're unsure which spec something is in, feel free to reach out. >> 7. While looking through the code in edk2-platforms, think about a patc= h=20 >> you can send to edk2-platforms for something very trivial such as a bug= = =20 >> fix or documentation update. >> 8. Send the patch and get it reviewed-by the appropriate=20 >> maintainers/reviewers and merged into the master branch. >> 9. Read through the code in OvmfPkg. Try to map the work it is doing to= = =20 >> the board code you reviewed in edk2-platforms. >> 10. At this point, you could start outlining major pieces of=20 >> initialization in OVMF and how they might map to a board package. Try t= o=20 >> identify where the initialization pieces would reside in the board=20 >> package and try to identify challenges that might arise. We will likely= = =20 >> spend quite a bit of time here before jumping into too much code. >>=20 >> I know this is a lot of info. Please don't hesitate to reach out if you= = =20 >> have any questions and I look forward to working with you. >>=20 >> Regards, >> Michael >>=20 >> On 5/18/2021 6:05 PM, gaoliming wrote: >>> Include Michael Kubacki. >>> >>> Thanks >>> Liming >>>> -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- >>>> =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io=20 > > =E4=BB=A3=E8=A1=A8 KAAIRA >>>> GUPTA >>>> =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2021=E5=B9=B45=E6=9C=8818=E6=97= = =A5 22:42 >>>> =E6=94=B6=E4=BB=B6=E4=BA=BA: Ray Ni >;=20 > devel@edk2.groups.io >>>> =E4=B8=BB=E9=A2=98: Re: [edk2-devel] GSoC 2021 Qemu OpenBoardPkg Proj= ect >>>> >>>> On Tue, May 18, 2021 at 08:01:57PM +0530, Kaaira Gupta wrote: >>>>> Hey everyone, >>>>> >>>>> I have been selected as a student developer for the project MinPlatf= orm >>>>> Qemu OpenBoardPkg under the mentors Ray Ni and Michael Kubacki. >>>> Thankyou >>>>> for this opportunity. I have been over the major chapters of Beyond= =20 >>>>> BIOS >>>>> as recommended by Nate DeSimone. I want to get familiar with the cod= e >>>>> now to help me undersatnd the community practices and get my hands >>>>> dirty. Where should I start? What development environment do I need? >>>>> How can I use this community bonding period to give me a better star= t >>>>> for the coding phase? >>>>> >>>>> How do the mentors want me to connect with them? Can we have a meet >>>> to >>>>> discuss this project's plan to add more details? This would be very >>>>> helpful for me considering I don't have prior experience with EDK2. >>>> >>>> I noticed that the mail-id that I have used of Michael Kubacki doesn'= t >>>> exist anymore. Please let me know how I can contact him. >>>> >>>>> >>>>> Thank you, >>>>> Kaaira >>>> >>>> Thanks, >>>> Kaaira >>>> >>>> >>>> >>>> >>> >>> >>> >>> >>> >>>=20 >>> >=20 >=20 >=20 >=20 >=20 >=20