public inbox for linux-firmware@kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] nvidia: add generic bootloader for GSP-enabled systems
@ 2025-10-17 18:54 Timur Tabi
  2025-10-20 12:15 ` Josh Boyer
  0 siblings, 1 reply; 3+ messages in thread
From: Timur Tabi @ 2025-10-17 18:54 UTC (permalink / raw)
  To: Mario.Limonciello, linux-firmware

Add the generic bootloader to the GSP directory so that Nouveau and
Nova can use it, instead of borrowing the booloader from the acr/
directory.

On Turing and GA100 systems that boot GSP-RM, the "generic bootloader"
is a small firmware image used to boot FWSEC firmware.  To date, this
image is the same as the "ACR bootloader" in the gp102/acr/ directory.
Nouveau simply grabs that image when it needs to boot FWSEC, even though
it is technically in the wrong directory and not generated from the
OpenRM source files like all of the other firmware files that Nouveau
uses.  All GSP-related firmware images should be in the gsp/ directory.

For the Nova GPU driver, this approach has two problems.

1. Although the generic bootloader hasn't changed since 2016, it is
packaged in OpenRM as a binhex array and could theoretically change
for any future version of GSP-RM.  The current approach that Nouveau
takes would not support this.

2. Borrowing images in other directories is problematic, as the firmware
loading code in Nova expects all images to be in the gsp/ directory.

To remedy both issues, a new build of the generic firmware is introduced
for the 570.144 firmware and placed in the gsp/ directory.  This image
is generated by the extract-firmware-nouveau.py script used to build all
the other linux-firmware images.  This new image, although slightly
different in composition, is interchangeable with the acr/bl.bin image.

A generic bootloader for r535 is not included, because Nova does not
support r535 and that firmware version is also deprecated for Nouveau.

Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
 WHENCE                                      |   3 +++
 nvidia/tu102/gsp/gen_bootloader-570.144.bin | Bin 0 -> 816 bytes
 2 files changed, 3 insertions(+)
 create mode 100644 nvidia/tu102/gsp/gen_bootloader-570.144.bin

diff --git a/WHENCE b/WHENCE
index 5da99f80..1aab9007 100644
--- a/WHENCE
+++ b/WHENCE
@@ -5785,12 +5785,15 @@ File: nvidia/ga102/gsp/gsp-535.113.01.bin
 Origin: gsp_ga10x.bin from NVIDIA-Linux-x86_64-535.113.01.run
 Link: nvidia/ad102/gsp/gsp-535.113.01.bin -> ../../ga102/gsp/gsp-535.113.01.bin
 
+File: nvidia/tu102/gsp/gen_bootloader-570.144.bin
 File: nvidia/tu102/gsp/bootloader-570.144.bin
 File: nvidia/tu102/gsp/booter_load-570.144.bin
 File: nvidia/tu102/gsp/booter_unload-570.144.bin
+Link: nvidia/tu116/gsp/gen_bootloader-570.144.bin -> ../../tu102/gsp/gen_bootloader-570.144.bin
 File: nvidia/tu116/gsp/booter_load-570.144.bin
 File: nvidia/tu116/gsp/booter_unload-570.144.bin
 Link: nvidia/tu116/gsp/bootloader-570.144.bin -> ../../tu102/gsp/bootloader-570.144.bin
+Link: nvidia/ga100/gsp/gen_bootloader-570.144.bin -> ../../tu102/gsp/gen_bootloader-570.144.bin
 File: nvidia/ga100/gsp/bootloader-570.144.bin
 File: nvidia/ga100/gsp/booter_load-570.144.bin
 File: nvidia/ga100/gsp/booter_unload-570.144.bin
diff --git a/nvidia/tu102/gsp/gen_bootloader-570.144.bin b/nvidia/tu102/gsp/gen_bootloader-570.144.bin
new file mode 100644
index 0000000000000000000000000000000000000000..d7269c05d06638c5c85fd9f0049d9e1c63895d17
GIT binary patch
literal 816
zcmeH@F;Bu!5Xb+N7GDLSR0k3#zk%$garGPM=67&+XVIF}_zKcG5I+DUm7yJ(b<k0C
zabN<Ir)f+2^eVXN?%*Zw{+G+$z2Du~016;efd<KT9v6Wu*KboO$R8EnVHc1pqTaEQ
zAy!(H=AO>GtBJ`wX7IwCrv|^QWm4nqb$+(N?W%l7@WA94U&TIi66VNC=4qL)$<8uc
z;chv)5B-^Slp*b^LzliAK9alk1$&KG2Ed`%QBHwUi=e4D5@}M3i!`+$+lw*YT7MEg
z&#arDXDk4!+|>hN1m`UDZ1OqAvi}!2gM0PhjX9G>UV8yrQ%(^HYfIvUfI?}fi8lPm
zY3G7X<D$-PUCbON%9})7*t3!Ps44n>E=*TR23M%`H<OWdAd!q{JySFd(X5N6894+L
O_2zZD?!Wz|3w#1w)}l55

literal 0
HcmV?d00001

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread
* [PATCH 1/2] WHENCE: nvidia: rearrange GSP-RM firmware lines
@ 2025-10-13 19:24 Timur Tabi
  2025-10-13 19:24 ` [PATCH 2/2] nvidia: add generic bootloader for GSP-enabled systems Timur Tabi
  0 siblings, 1 reply; 3+ messages in thread
From: Timur Tabi @ 2025-10-13 19:24 UTC (permalink / raw)
  To: linux-firmware

Group the lines for each version set of GSP-RM firmware files together,
so that they can be more easily removed or updated.

This commit makes no functional changes: the same files are placed in the
same locations, and the same links are created.

Nouveau/Nova use the GSP-RM firmware file, along with several auxilliary
firmware files, to support Nvidia Turing and later GPUs.  As new GPUs are
supported, newer versions of all files must be add to the repository.
Currently, two versions are present: 535.113.01 and 570.144.

To make it easier to add new versions, for distros to stop including older
versions, we regroup all of the relevant lines in the WHENCE file by
version, instead of by GPU.

Two things should be noted:

1. Some distros are apparently unable to handle changes to WHENCE where a
file is replaced with a symlink, or vice versa.

2. Most GPUs are just minor variants, and so these GPUs are represented
only by symlinks.

This means that care must be taken if a future firmware version includes
a new file for a GPU variant that was previously represented by a link.
Conversely, if a new version of file happens to be identical to another
file, it should not be replaced with a symlink.

Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
 WHENCE | 84 ++++++++++++++++++++++++++++------------------------------
 1 file changed, 40 insertions(+), 44 deletions(-)

diff --git a/WHENCE b/WHENCE
index 8b0d17b5..5da99f80 100644
--- a/WHENCE
+++ b/WHENCE
@@ -5763,72 +5763,50 @@ Firmware images needed for GSP-RM:
 File: nvidia/tu102/gsp/bootloader-535.113.01.bin
 File: nvidia/tu102/gsp/booter_load-535.113.01.bin
 File: nvidia/tu102/gsp/booter_unload-535.113.01.bin
-File: nvidia/tu102/gsp/bootloader-570.144.bin
-File: nvidia/tu102/gsp/booter_load-570.144.bin
-File: nvidia/tu102/gsp/booter_unload-570.144.bin
-Link: nvidia/tu104/gsp -> ../tu102/gsp
-Link: nvidia/tu106/gsp -> ../tu102/gsp
-
 File: nvidia/tu116/gsp/booter_load-535.113.01.bin
 File: nvidia/tu116/gsp/booter_unload-535.113.01.bin
 Link: nvidia/tu116/gsp/bootloader-535.113.01.bin -> ../../tu102/gsp/bootloader-535.113.01.bin
-File: nvidia/tu116/gsp/booter_load-570.144.bin
-File: nvidia/tu116/gsp/booter_unload-570.144.bin
-Link: nvidia/tu116/gsp/bootloader-570.144.bin -> ../../tu102/gsp/bootloader-570.144.bin
-Link: nvidia/tu117/gsp -> ../tu116/gsp
-
 File: nvidia/ga100/gsp/bootloader-535.113.01.bin
 File: nvidia/ga100/gsp/booter_load-535.113.01.bin
 File: nvidia/ga100/gsp/booter_unload-535.113.01.bin
-File: nvidia/ga100/gsp/bootloader-570.144.bin
-File: nvidia/ga100/gsp/booter_load-570.144.bin
-File: nvidia/ga100/gsp/booter_unload-570.144.bin
-
 File: nvidia/ga102/gsp/bootloader-535.113.01.bin
 File: nvidia/ga102/gsp/booter_load-535.113.01.bin
 File: nvidia/ga102/gsp/booter_unload-535.113.01.bin
-File: nvidia/ga102/gsp/bootloader-570.144.bin
-File: nvidia/ga102/gsp/booter_load-570.144.bin
-File: nvidia/ga102/gsp/booter_unload-570.144.bin
-Link: nvidia/ga103/gsp -> ../ga102/gsp
-Link: nvidia/ga104/gsp -> ../ga102/gsp
-Link: nvidia/ga106/gsp -> ../ga102/gsp
-Link: nvidia/ga107/gsp -> ../ga102/gsp
-
 File: nvidia/ad102/gsp/bootloader-535.113.01.bin
 File: nvidia/ad102/gsp/booter_load-535.113.01.bin
 File: nvidia/ad102/gsp/booter_unload-535.113.01.bin
+
+File: nvidia/tu102/gsp/gsp-535.113.01.bin
+Origin: gsp_tu10x.bin from NVIDIA-Linux-x86_64-535.113.01.run
+Link: nvidia/tu116/gsp/gsp-535.113.01.bin -> ../../tu102/gsp/gsp-535.113.01.bin
+Link: nvidia/ga100/gsp/gsp-535.113.01.bin -> ../../tu102/gsp/gsp-535.113.01.bin
+
+File: nvidia/ga102/gsp/gsp-535.113.01.bin
+Origin: gsp_ga10x.bin from NVIDIA-Linux-x86_64-535.113.01.run
+Link: nvidia/ad102/gsp/gsp-535.113.01.bin -> ../../ga102/gsp/gsp-535.113.01.bin
+
+File: nvidia/tu102/gsp/bootloader-570.144.bin
+File: nvidia/tu102/gsp/booter_load-570.144.bin
+File: nvidia/tu102/gsp/booter_unload-570.144.bin
+File: nvidia/tu116/gsp/booter_load-570.144.bin
+File: nvidia/tu116/gsp/booter_unload-570.144.bin
+Link: nvidia/tu116/gsp/bootloader-570.144.bin -> ../../tu102/gsp/bootloader-570.144.bin
+File: nvidia/ga100/gsp/bootloader-570.144.bin
+File: nvidia/ga100/gsp/booter_load-570.144.bin
+File: nvidia/ga100/gsp/booter_unload-570.144.bin
+File: nvidia/ga102/gsp/bootloader-570.144.bin
+File: nvidia/ga102/gsp/booter_load-570.144.bin
+File: nvidia/ga102/gsp/booter_unload-570.144.bin
 File: nvidia/ad102/gsp/bootloader-570.144.bin
 File: nvidia/ad102/gsp/booter_load-570.144.bin
 File: nvidia/ad102/gsp/booter_unload-570.144.bin
 File: nvidia/ad102/gsp/scrubber-570.144.bin
-Link: nvidia/ad103 -> ad102
-Link: nvidia/ad104 -> ad102
-Link: nvidia/ad106 -> ad102
-Link: nvidia/ad107 -> ad102
-
 File: nvidia/gh100/gsp/bootloader-570.144.bin
 File: nvidia/gh100/gsp/fmc-570.144.bin
-
 File: nvidia/gb100/gsp/bootloader-570.144.bin
 File: nvidia/gb100/gsp/fmc-570.144.bin
-Link: nvidia/gb102 -> gb100
-
 File: nvidia/gb202/gsp/bootloader-570.144.bin
 File: nvidia/gb202/gsp/fmc-570.144.bin
-Link: nvidia/gb203 -> gb202
-Link: nvidia/gb205 -> gb202
-Link: nvidia/gb206 -> gb202
-Link: nvidia/gb207 -> gb202
-
-File: nvidia/tu102/gsp/gsp-535.113.01.bin
-Origin: gsp_tu10x.bin from NVIDIA-Linux-x86_64-535.113.01.run
-Link: nvidia/tu116/gsp/gsp-535.113.01.bin -> ../../tu102/gsp/gsp-535.113.01.bin
-Link: nvidia/ga100/gsp/gsp-535.113.01.bin -> ../../tu102/gsp/gsp-535.113.01.bin
-
-File: nvidia/ga102/gsp/gsp-535.113.01.bin
-Origin: gsp_ga10x.bin from NVIDIA-Linux-x86_64-535.113.01.run
-Link: nvidia/ad102/gsp/gsp-535.113.01.bin -> ../../ga102/gsp/gsp-535.113.01.bin
 
 File: nvidia/tu102/gsp/gsp-570.144.bin
 Origin: gsp_tu10x.bin from NVIDIA-Linux-x86_64-570.144.run
@@ -5841,6 +5819,24 @@ Link: nvidia/ad102/gsp/gsp-570.144.bin -> ../../ga102/gsp/gsp-570.144.bin
 Link: nvidia/gh100/gsp/gsp-570.144.bin -> ../../ga102/gsp/gsp-570.144.bin
 Link: nvidia/gb100/gsp/gsp-570.144.bin -> ../../ga102/gsp/gsp-570.144.bin
 Link: nvidia/gb202/gsp/gsp-570.144.bin -> ../../ga102/gsp/gsp-570.144.bin
+
+Link: nvidia/tu104/gsp -> ../tu102/gsp
+Link: nvidia/tu106/gsp -> ../tu102/gsp
+Link: nvidia/tu117/gsp -> ../tu116/gsp
+Link: nvidia/ga103/gsp -> ../ga102/gsp
+Link: nvidia/ga104/gsp -> ../ga102/gsp
+Link: nvidia/ga106/gsp -> ../ga102/gsp
+Link: nvidia/ga107/gsp -> ../ga102/gsp
+Link: nvidia/ad103 -> ad102
+Link: nvidia/ad104 -> ad102
+Link: nvidia/ad106 -> ad102
+Link: nvidia/ad107 -> ad102
+Link: nvidia/gb102 -> gb100
+Link: nvidia/gb203 -> gb202
+Link: nvidia/gb205 -> gb202
+Link: nvidia/gb206 -> gb202
+Link: nvidia/gb207 -> gb202
+
 Licence: Redistributable. See LICENCE.nvidia for details
 
 --------------------------------------------------------------------------

base-commit: 46a6999a2d14a5f2239e7e712e5bbcf543f59034
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-10-20 12:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-17 18:54 [PATCH 2/2] nvidia: add generic bootloader for GSP-enabled systems Timur Tabi
2025-10-20 12:15 ` Josh Boyer
  -- strict thread matches above, loose matches on Subject: below --
2025-10-13 19:24 [PATCH 1/2] WHENCE: nvidia: rearrange GSP-RM firmware lines Timur Tabi
2025-10-13 19:24 ` [PATCH 2/2] nvidia: add generic bootloader for GSP-enabled systems Timur Tabi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox