UEFI Porting Update for ARM Platforms

UEFI Porting Update for ARM Platforms

<p><strong>UEFI Porting </strong></p><p><strong>Update for ARM </strong></p><p><strong>Platforms </strong></p><p><em>What did we do since July? </em></p><p><em>presented by </em></p><p>Leif Lindholm </p><p>UEFI tech lead </p><p>Linaro Enterprise Group </p><p><strong>UEFI Plugfest – May 2014 </strong></p><p><strong>Agenda </strong></p><p>Introduction Linux Support EDK2 Development SCT Platforms Tree </p><p>Future Work </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">2</li></ul><p></p><p><strong>Introduction </strong></p><p>Last year, Grant Likely <a href="/goto?url=http://www.uefi.org/sites/default/files/resources/UEFI_Summerfest_Linaro-take3.pdf" target="_blank">presented </a>an overview of the types of things we were planning to do. </p><p>Since then, we have done various things... </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">3</li></ul><p></p><p><strong>Linux Support </strong></p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">4</li></ul><p></p><p><strong>Linux Support </strong></p><p>The big topic since the last Linaro Connect event has been Linux support: </p><p>Runtime Services </p><p>UEFI stub loader </p><p>Co-existence of ACPI/FDT </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">5</li></ul><p></p><p><strong>Runtime Services </strong></p><p>Runtime services support for both 32-bit and 64-bit ARM </p><p>Not yet upstream, but aiming for Linux kernel v3.16 This included reworking of common code, since some functionality was already duplicated between x86/ia64 </p><p>Main purpose is enabling GetVariable()/SetVariable() </p><p>Enables bootloader installer to add boot entries, and update bootorder, from within Linux </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">6</li></ul><p></p><p><strong>Linux UEFI stub loader </strong></p><p>The “stub loader” is the mechanism by which the Linux kernel </p><p>can be loaded directly from UEFI, as a UEFI application </p><p>Becoming the default mechanism on x86(/x64) platforms. </p><p>Enables the use of more light-weight bootloaders, like gummiboot or rEFInd Not yet upstream, but aiming for 3.16 </p><p>Majority of code shared between arm/arm64, and a fair bit shared with x86 </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">7</li></ul><p></p><p><strong>ACPI vs. FDT </strong></p><p>A slightly contentious issue with existing ARM Linux developers </p><p>… who just spent a couple of years converting everything to FDT </p><p>Very much a non-issue for UEFI </p><p>We picked a GUID to use for FDT, and just treat it as any other configuration table While simultaneously re-using FDT for the loader/kernel interface Regardless of other hardware description, we use the UEFI memory map to discover available RAM </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">8</li></ul><p></p><p><strong>We had help! </strong></p><p>Many thanks to Mark Salter (Red Hat) and Matt Fleming (Intel) </p><p>Mark helped parallelize our effort by doing 64-bit port while we worked on 32-bit, and also did some reworking on core memory-management code to have less architecture-specific code in the UEFI subsystem. </p><p>Matt has been a friendly upstream, holding back invasive changes to core code waiting for our bits to go in. And keeping us involved and informed. </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">9</li></ul><p></p><p><strong>EDK2 Development </strong></p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">10 </li></ul><p></p><p><strong>EDK2 development </strong></p><p>The EDK2 development done in Linaro so far has mainly been </p><p>platform support </p><p>Keeping platforms in tree up-to-date with upstream changes </p><p>“plumbing” for Linux support </p><p>SMBIOS, FDT configuration table support </p><p>bugfixes (and reporting) for issues found while developing other code </p><p>Linux, GRUB </p><p>But… </p><p>We also have a port to a dynamic QEMU/AArch64 platform (EL1) underway. </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">11 </li></ul><p></p><p>Google Summer of Code </p><p>This year, Linaro has been accepted as a mentoring organization for GSoC </p><p>One of the three projects we have had approved is “Porting </p><p>UEFI to a low-cost embedded platform” </p><p>We have opted for Texas Instruments’ BeagleBone Black, </p><p>which is a $45 Cortex-A8 based board. </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">12 </li></ul><p></p><p><strong>SCT </strong></p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">13 </li></ul><p></p><p><strong>SCT </strong></p><p>To be honest, we have just brought the github SCT into our </p><p>non-public tree… </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">14 </li></ul><p></p><p><strong>The Platforms Tree </strong></p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">15 </li></ul><p></p><p><strong>Linaro EDK2 builds </strong></p><p>Linaro produces monthly builds of EDK2 </p><p>Augmented with platform support and not yet upstream patches </p><p>Initially this was done in a fairly monolithic fashion </p><p>Single git repository, with a bunch of topic branches </p><p>We have now set up a new platforms tree </p><p>To facilitate distributed development with multiple contributors and multiple maintainers </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">16 </li></ul><p></p><p><strong>Linaro EDK2 tree </strong></p><p>A clone of the github mirror </p><p>We pick a commit as our starting point for that month’s release </p><p>Then we add platform and feature topic branches and create a tagged release, as well as upload pre-built images to releases.linaro.org </p><p>Hosted on git.linaro.org </p><p><a href="/goto?url=https://git.linaro.org/uefi/linaro-edk2.git" target="_blank">https://git.linaro.org/uefi/linaro-edk2.git </a></p><p>We would love to have more (maintained) platform ports </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">17 </li></ul><p></p><p><strong>Future Work </strong></p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">18 </li></ul><p></p><p><strong>Future Work </strong></p><p>Several new UEFI-based ARM platforms coming this year </p><p>Need to integrate member (and other) platforms into our tree </p><p>Look into platform requirements for secure key management on </p><p>ARM </p><p>Get rid of the ARM built-in Linux loader </p><p>Plumbing to simplify integrating FDT in firmware Port to AArch64/Xen </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">19 </li></ul><p></p><p><strong>Wish List </strong></p><p>The resurrection of a common Bds under MdeModulePkg </p><p>CSM is dead, long live UEFI? </p><p>More common drivers </p><p>This is where we are currently losing platforms to U-Boot </p><p>More common helper protocols </p><p>libfdt, SMBIOS, IPMI, …? </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">20 </li></ul><p></p><p>For more information on the </p><p>Unified EFI Forum and UEFI </p><p>Specifications, visit </p><p><a href="/goto?url=http://www.uefi.org/" target="_blank">http://www.uefi.org </a></p><p><em>presented by </em></p><p>Leif Lindholm </p><p>UEFI Tech Lead </p><p>Linaro Enterprise Group </p><p></p><ul style="display: flex;"><li style="flex:1">The UEFI Forum </li><li style="flex:1"><a href="/goto?url=http://www.uefi.org" target="_blank">www.uefi.org </a></li><li style="flex:1">21 </li></ul><p></p>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    21 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us