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.web12.15124.1621445392077258272 for ; Wed, 19 May 2021 10:29:52 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@linux.microsoft.com header.s=default header.b=DMhhXEVd; 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 6FD9020B7178; Wed, 19 May 2021 10:29:51 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 6FD9020B7178 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1621445391; bh=yjoUNZf0sELizG8CsVCv0exWaYSWwGBhH0Zump9CbP0=; h=Subject:To:References:From:Date:In-Reply-To:From; b=DMhhXEVd4wsfADkr9CYB7SB72K+ENyZ25EvI9rM08WnyZVf4ILjV+aDt3TeKWVbYA OYpCARf4F1b7K0urUWeLjxJyYUnCMUSqAMcamYfJ7J5mg+3hU2dvD9IYYtdKZbEWZI rRaAW1/14hw14cbOA14N5jdPg+2YA4G2KhAN44EI= Subject: =?UTF-8?B?UmU6IOWbnuWkjTogW2VkazItZGV2ZWxdIEdTb0MgMjAyMSBRZW11IE9wZW5Cb2FyZFBrZyBQcm9qZWN0?= To: devel@edk2.groups.io, gaoliming@byosoft.com.cn, kaaira7319@gmail.com, 'Ray Ni' References: <20210518143156.GA24025@kaaira-HP-Pavilion-Notebook> <20210518144155.GA25679@kaaira-HP-Pavilion-Notebook> <000001d74c4b$1ae82a80$50b87f80$@byosoft.com.cn> From: "Michael Kubacki" Message-ID: <2162525c-4e35-0c09-4594-ecbfbc740dcc@linux.microsoft.com> Date: Wed, 19 May 2021 10:29:51 -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: <000001d74c4b$1ae82a80$50b87f80$@byosoft.com.cn> Content-Type: text/plain; charset=gbk; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Thanks Liming. Hi Kaaira, Welcome! You can contact me at mikuback@linux.microsoft.com. You will=20 sometimes see my email as michael.kubacki@microsoft.com and that is fine= =20 to use for communication though I tend to not use it on the mailing list= =20 due to way the mail server manipulates plaintext email. GENERIC RESOURCES I'm sharing some general resources in case you are not already familiar=20 with them: 1. https://github.com/tianocore-training/Tianocore_Training_Contents/wiki This one is good for topics like UEFI overview, EDK II concepts, and=20 Minimum Platform. In particular for your project, I recommend looking through the=20 MinPlatform training -=20 https://github.com/tianocore-training/Presentation_FW/blob/master/FW/Prese= ntations/_D_05_EDK_II_Open_Source_MinPlatform_pres_gp.pdf 2.=20 https://software.intel.com/content/www/us/en/develop/articles/unified-exte= nsible-firmware-interface.html 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. 3. https://uefi.org/learning_center/presentationsandvideos/ 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. 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 believe they are most useful as=20 references when you are solving specific problems. PROJECT-SPECIFIC RESOURCES Since your project involves creating QEMU board within the Minimum=20 Platform architecture, you can start looking into: 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 functionality. 3. Intel FSP - Try to understand the high-level goals and how FSP=20 interfaces with firmware. 1. QEMU - https://www.qemu.org/ 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. I suggest you start with the OvmfPkg README -=20 https://github.com/tianocore/edk2/blob/master/OvmfPkg/README 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. Any time you submit patches to edk2, you can check edk2/maintainers.txt=20 - https://github.com/tianocore/edk2/blob/master/Maintainers.txt for the=20 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 QEMU= =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. 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 edk2= =20 patches and your email service can send patches correctly. We can discuss the details about how to set up your environment and what= =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. 2. EDK II Minimum Platform Specification -=20 https://edk2-docs.gitbook.io/edk-ii-minimum-platform-specification/ 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. 3. Intel FSP -=20 https://www.intel.com/content/www/us/en/intelligent-systems/intel-firmware= -support-package/intel-fsp-overview.html 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. There is an open source QEMU FSP available here=20 https://github.com/universalpayload/fspsdk/tree/qemu_fsp_x64. You will=20 find the existing Minimum Platform boards use Intel FSP while OvmfPkg=20 does not use FSP. Firmware is really best learned hands on. Using the links and background= =20 info above, I suggest: 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 patch= =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 to= =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. 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. Regards, Michael On 5/18/2021 6:05 PM, gaoliming wrote: > Include Michael Kubacki. >=20 > Thanks > Liming >> -----=D3=CA=BC=FE=D4=AD=BC=FE----- >> =B7=A2=BC=FE=C8=CB: devel@edk2.groups.io =B4=FA= =B1=ED KAAIRA >> GUPTA >> =B7=A2=CB=CD=CA=B1=BC=E4: 2021=C4=EA5=D4=C218=C8=D5 22:42 >> =CA=D5=BC=FE=C8=CB: Ray Ni ; devel@edk2.groups.io >> =D6=F7=CC=E2: Re: [edk2-devel] GSoC 2021 Qemu OpenBoardPkg Project >> >> 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 MinPlatfor= m >>> Qemu OpenBoardPkg under the mentors Ray Ni and Michael Kubacki. >> Thankyou >>> for this opportunity. I have been over the major chapters of Beyond BI= OS >>> as recommended by Nate DeSimone. I want to get familiar with the code >>> 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 start >>> 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