Group: Hardware/research/gpu/nvidia

From LibrePlanet
Jump to: navigation, search


Nvidia GPUs have several freedom issues that are referenced on the table below.

Nonfree software Effects without the nonfree software or workarounds Workaround Workaround consequences Fix Existing projects that could be leveraged to fix the problem
GPU firmwares/microcodes Free firwmare are generated in the Linux driver for many GPUs. However:
  • Some GPUs are probably still missing free firmware like for the Tegra K1
  • The NV110 family (Maxwell) and more recent require signed firmwares for the GPU power management processor.
Bytecode: This bytecode is part of the Video BIOS and is parsed and executed by the Linux driver
  • The nouveau driver probably doesn't load
  • The boot software (BIOS, UEFI) may not be able to initialize the display. Untested.
  • Replace the nonfree bytecode by a free one.
  • or use "via per-chip static tables" like for the tegra[1]
The Video BIOS Use Libreboot or Coreboot with SeaBIOS, put the Video BIOS in memory but don't execute it The display is initialized very late, when the nouveau driver loads, if the bytecode tables are in the right memory area. Implement a free Video BIOS replacement either as standalone replacement or in Coreboot and Libreboot.
  • There is a free Video BIOS replacement in Coreboot for many Intel GPUs. While its meant to support Intel GPUs, it may be a good idea to leverage some of the code and architecture. It may also be a good idea to instead implement it as a standalone Video BIOS replacement, as standalone Radeon GPUs do exist, whereas standalone Intel GPU don't at the time of writing.
  • TODO: List Radeon Video BIOS Replacement projects and their freedom issues (check if the compiler is free)
  • TODO: Look if there are some projects for Nvidia GPUs.


  1. See the FOSDEM_2015.pdf presentation for more details. The Tegra K1 has no bytecode (as it has no video BIOS).

How to help

Documenting all the freedom issues in depth is a lot of work for one person.

Hopefully it can be broken in many small tasks, so it's easy to help by making a tiny part of the work.

Here are some relatively small tasks that could help:

External links