Tasks - tianocorecn/tianocorecn.github.io GitHub Wiki

These tasks have been identified by our community. They are currently open for development by community members, and would be a great way to get involved and start contributing.

Please let us know on edk2-devel if you plan to work on one of these tasks to prevent duplicated effort. Also, please provide status updates on edk2-devel so the community will know the project is still being actively developed.

Table of Contents

Open Projects

Multiprocessor support in UefiCpuPkg/CpuDxe

Enable multiprocessor support for IA32 & X64 within UefiCpuPkg/CpuDxe. (Implement )

  • Difficulty: Medium
  • Language: Assembly, C
  • Mentor:
  • Suggested by:
More information: Tasks-UefiCpuPkg-CpuDxe MP support

Read-only ext2 driver

Develop a read-only ext2 filesystem driver.

  • Difficulty: Medium ... Hard
  • Language: C
  • Mentor:
  • Suggested by:
  • Status: Significant progress made during GSOC2011 (external repo)
More information: Tasks-ext2 file-system driver

Compatibility Support Module

A CSM allows a UEFI system to boot legacy operating systems on IA32 & X64 systems. In other words, most current production OS's. Strong preference is for a BSD licensed solution, as this is license used by nearly all of our code. A SeaBIOS based solution could be considered, but would not be as widely usable.

  • Difficulty: Medium ... Hard
  • Language: Assembly, C
  • Mentor:
  • Suggested by:

Enable Link-time Code Optimization for Linux builds

Enable Link-time Code Optimization on Linux for either GCC 4.6 or LLVM/CLANG.

This feature hopefully would significantly reduce code generation size for Linux based builds.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by: ,

Port EmulatorPkg to Windows

Create a windows based host environment for EmulatorPkg. (Could also be developed using mingw-gcc & wine under Linux.)

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:
More information: Tasks-EmulatorPkg for Windows

Port EmulatorPkg to ARM

Create a ARM based host environment for EmulatorPkg.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:

Port ACPI-CA to a shell application

Port portions of ACPI-CA to a shell application to enable dumping and disassembly of ACPI tables.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by: ,

EmulatorPkg network support for Linux

Port EmulatorPkg/EmuSnpDxe to support Linux.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:

Network Block Device (NBD) client

http://nbd.sourceforge.net/

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by: ,
More information: Tasks-Network Block Device

SMB network share support

Enable accessing content on an SMB network share

  • Difficulty: Hard
  • Language: C
  • Mentor:
  • Suggested by: , ,

DNS Proxy Support

Implement DNS proxy on EDK II

  • Difficulty:
  • Language: C
  • Mentor:
  • Suggested by:

MP safe Print, DEBUG, and ASSERT

Allow APs to safely print and use DEBUG trace messages.

  • Note: This project depends on an open-source MP implementation, which is currently not available.
  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:

SourceLevelDebugPkg & GDB

A fully functional gdb stub for x86/x64, attaching to SourceLevelDebugPkg's remote protocol.

  • Difficulty: Medium ... Hard
  • Language: Python, C
  • Mentor:
  • Suggested by:

Terminal driver improvements

Optimize cursor motion sequences; support Linux/UNIX standard (xterm/konsole/gnome-terminal/etc.) key codes and line-drawing characters

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:

HII command-line browser

A command-line based HII browser, suitable for automation. Either a shell command or set of commands for locating, dumping, and modifying configuration values, or commands for dumping and loading HII data to/from a file in an easily-edited format.

  • Difficulty: Medium ... Hard
  • Language: C
  • Mentor:
  • Suggested by:

DataHub & GCD scalability

The DataHub and GCD layers don't scale well as the number of data items gets large, since they are based on simple linked lists. Find better data structures.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:

Utilize return address information

  • Make use of __builtin_return_address(n) & _ReturnAddress to add debug & data gathering capabilities. Some ideas:
    • Produce a protocol with info on the image handle so a shell command can dump out the information
    • Track, on a per call basis, where resources are being consumed
    • Detect memory leaks
    • Log information about stall and timer usage
    • Collect statistics on BootServices and RuntimeServices calls.
    • Performance profile library calls EFI boot and runtime services calls.
      1. gBS is set up by a library so it could point to a debug wrapper for the functions.
    • Post process raw output (PDB name + offset in PE/COFF) to include function names via parsing .map files.
  • Difficulty: Medium ... Hard
  • Language: C
  • Mentor:
  • Suggested by:

Various Debug Improvements

Note: There are many ideas here. GSoC students should feel free to gather together any interesting & resonable subset for a project proposal.

  1. Debug version of libraries, and tools to analyze the data:
    1. UefiBootServicesTableLib.h & UefiRuntimeServicesLib.h that can profile EFI services usage.
    2. Debug version of MemoryAllocationLib.h that can detect memory leaks, buffer overruns, etc.
    3. Add a library class for logging the data
      1. Log data directly to image handle, per driver.
      2. Log data to centralized data service.
    4. Add a library class for a module to access/initiate leak checking.
  2. Add sample based profiling to EmulatorPkg/Nt32Pkg. On a Mac this would be figuring out how to use Instruments to profile the emulator.
  3. Add a sampling based profiling tool to a real EFI system. Note this requires the ability to capture a stack trace and then post process it (likely on the build system).
  • Difficulty: Medium ... Hard
  • Language: C
  • Mentor:
  • Suggested by:

Optimize OVMF for Xen HVM domains

Add Xen specific support in OVMF to improve boot & runtime performance.

  • Difficulty: Easy ... Hard
  • Language: C
  • Mentor:
  • Suggested by: , Bei Guan

Port OpenSSH as a shell application

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:

Previously Complete Projects

Read-only FFS file-system driver

Develop a read-only filesystem driver which allows the contents of each PI 1.2 FFS in the system to appear as a pseudo-file system.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:
  • Status: Ready for integration into main edk2 tree (external repo)
More information: Tasks-Read-only FFS file-system driver

Shell editor improvements

Various improvements for the Shell editor

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by: , ,
  • Status: Available in main edk2 tree
More information: Tasks-Text Editor

Enable Xen Support in OVMF

Get Xen to boot UEFI with the OVMF platform.

  • Difficulty: Easy ... Hard - (depending on tasks taken on)
  • Language: C
  • Mentor: ,
  • Suggested by:
  • Status: Available in main edk2 tree

USB-to-serial driver

Develop a USB driver for a common USB-to-serial adapter.

  • Difficulty: Medium
  • Language: C
  • Mentor:
  • Suggested by:
More information: Tasks-USB Serial Adapter driver

See Also

⚠️ **GitHub.com Fallback** ⚠️