Group: Hardware/Components/GPUs/radeon
(Add howto help section) |
|||
Line 46: | Line 46: | ||
* TODO: List Vide BIOS Replacement projects and their freedom issues (check if the compiler is free) | * TODO: List Vide BIOS Replacement projects and their freedom issues (check if the compiler is free) | ||
|} | |} | ||
+ | |||
+ | == How to help == | ||
+ | * Help completing the table in the linux-libre status section by helping to add information on the files/GPUs below: | ||
+ | ** ni_dpm.c | ||
+ | ** si.c | ||
+ | ** si_dpm.c | ||
+ | ** cik.c | ||
+ | ** radeon_uvd.c | ||
+ | ** radeon_vce.c | ||
+ | ** btc_dpm.c | ||
+ | ** ci_dpm.c | ||
+ | ** cik.c | ||
+ | ** cik_sdma.c | ||
+ | * Help completing the table in the introduction section | ||
+ | * Add support for a GPU you can test on by following [https://trisquel.info/en/forum/first-development-alpha-iso-images-trisquel-80-flidas#comment-106872 this HOWTO] | ||
== Status in linux-libre == | == Status in linux-libre == | ||
Line 152: | Line 167: | ||
| Patch sent to linux-libre, doesn't appear yet in mailman archives | | Patch sent to linux-libre, doesn't appear yet in mailman archives | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Status in the Xorg radeon driver == | == Status in the Xorg radeon driver == |
Revision as of 10:08, 20 October 2019
Contents
Introduction
The Radeon GPUs have many 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 |
---|---|---|---|---|---|
Radeon firmwares/microcodes |
The Radeon driver doesn't load and Linux falls back on another driver like VESA or efifb:
|
Patch the radeon driver in linux-libre to enable it to load and work without the nonfree firwares |
The radeon driver loads:
|
Write free replacement for the firmwares |
|
AtomBIOS bytecode: This bytecode is part of the Video BIOS and is parsed and executed by the Linux driver |
|
? | Replace the nonfree bytecode by a free one. |
|
|
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 Radeon driver loads, if the AtomBIOS tables are in the right memory area. | Implement a free Video BIOS replacement either as standalone replacement or in Coreboot and Libreboot. |
|
How to help
- Help completing the table in the linux-libre status section by helping to add information on the files/GPUs below:
- ni_dpm.c
- si.c
- si_dpm.c
- cik.c
- radeon_uvd.c
- radeon_vce.c
- btc_dpm.c
- ci_dpm.c
- cik.c
- cik_sdma.c
- Help completing the table in the introduction section
- Add support for a GPU you can test on by following this HOWTO
Status in linux-libre
The radeon driver has code like that for many GPU families:
if (!rdev->me_fw) { r = r100_cp_init_microcode(rdev); if (r) { DRM_ERROR("Failed to load firmware!\n"); return r; } }
The result of that is that without the nonfree firmware, the radeon driver doesn't load.
Being able to use that driver, even if the 3D acceleration doesn't work without the nonfree firmware is very interesting:
- it can enable native resolution
- It supports multi-displays
family | file | commit introducing the driver .remove() | code | linux-libre status |
---|---|---|---|---|
r100 | r100.c |
70967ab9c0c9 radeon: Use request_firmware() |
if (!rdev->me_fw) { r = r100_cp_init_microcode(rdev); if (r) { DRM_ERROR("Failed to load firmware!\n"); return r; } } |
Patch not enabled |
r600 (KMS) | r600.c | Always there:
3ce0a23d2d25 drm/radeon/kms: add r600 KMS support |
if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { r = r600_init_microcode(rdev); if (r) { DRM_ERROR("Failed to load firmware!\n"); return r; } } |
Working:
clean_sed ' /r = r600_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/, ' drivers/gpu/drm/radeon/r600.c 'enable blobless activation' |
r600 (UMS) | r600_cp.c |
70967ab9c0c9 radeon: Use request_firmware() |
UMS support has been removed in:
8333f607a631 drm/radeon: remove UMS support |
|
Evergreen | evergreen.c | Working:
clean_sed ' /r = r600_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/, ' drivers/gpu/drm/radeon/evergreen.c 'enable blobless activation' |
||
rv770 | rv770.c | Working:
clean_sed ' /r = r600_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/, ' drivers/gpu/drm/radeon/rv770.c 'enable blobless activation' |
||
Northern Islands | ni.c | Maybe this commit or before (not clear):
0af62b016804 drm/radeon/kms: add ucode loader for NI |
if (rdev->flags & RADEON_IS_IGP) { if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { r = ni_init_microcode(rdev); if (r) { DRM_ERROR("Failed to load firmware!\n"); return r; } } } else { if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { r = ni_init_microcode(rdev); if (r) { DRM_ERROR("Failed to load firmware!\n"); return r; } } } |
Patch sent to linux-libre, doesn't appear yet in mailman archives |
Status in the Xorg radeon driver
family | distribution and version information | configuration files | status |
---|---|---|---|
Northern Islands | Parabola, TODO | TODO | TODO |
External links
- Radeon Xorg driver: Has many information on the GPUs
- linux-libre website
- linux-libre mailing list archives