Announcement

Collapse
No announcement yet.

Nouveau Using The NVIDIA GSP Will Lead To More Firmware Bloat

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nouveau Using The NVIDIA GSP Will Lead To More Firmware Bloat

    Phoronix: Nouveau Using The NVIDIA GSP Will Lead To More Firmware Bloat

    The upstream, open-source Nouveau DRM kernel driver working to make use of the NVIDIA GPU System Processor "GSP" will ideally lead to more punctual new hardware support, hopefully overcome the power management / re-clocking challenges that have plagued the driver for years with very low performance, and other current limitations. But it will also lead to more NVIDIA GPU firmware files in the linux-firmware tree and increased bloat...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    I wonder if using something like vcdiff can be used to only contain changes in the firmware and reduce the total file size

    Comment


    • #3
      Unavoidable bloat is unavoidable. For users external firmware is necessary to use nouveau with modern Nvidia video cards just like with AMD. The developers will figure out what to do around initramfs size when necessary. Embedded people should already be trimming their kernel down to fit on available storage. The few libre kernel zealots will remove it again. Everyone will be happy/miserable and the world turns but with more usable out of the box Nvidia hardware.
      Last edited by stormcrow; 19 April 2023, 09:10 AM. Reason: clarity

      Comment


      • #4
        Why not splitting GPU firmware into different packages? We already have separate amd and intel microcode packages, should be possible to split bloated amd-gpu-firmware and nvidia-gpu-firmware leaving linux-firmware for other stuff.

        Comment


        • #5
          Nvidia doesn't release firmware - boo! open-source unfriendly...
          Nvidia releases firmware - boo! more bloat

          Nice going.

          Comment


          • #6
            here will be increased float.
            typo.

            Comment


            • #7
              Originally posted by stormcrow View Post
              Unavoidable bloat is unavoidable. For users external firmware is necessary to use nouveau with modern Nvidia video cards just like with AMD. The developers will figure out what to do around initramfs size when necessary. Embedded people should already be trimming their kernel down to fit on available storage. The few libre kernel zealots will remove it again. Everyone will be happy/miserable and the world turns but with more usable out of the box Nvidia hardware.
              100% accurate... Firmware is always going to be here to stay...

              Personally I hold the view that closed source firmware is not really a bad thing. It is necessary to bring up hardware that is "trade secret" and holds tons of information about said hardware that a company cant afford to let out (Nvidia, AMD, Intel, etc... doesn't matter they all have this). But it does provide an abstraction that allows higher level drivers to be open sourced.

              The only place where this is ugly is the embedded realm, though as said above if you are working with embedded/IoT type systems you better be planning to roll your own highly tuned setups... and if you need an Nvidia 2000 or up GPU for this system... welp you just accepted that you need enough space for the firmware... and if you have something that can feed that class of GPU... you pretty much are guaranteed to have that storage space anyway.

              Actually ran into this issue myself yesterday... have a project that I have to re-engineer because a sensor requires an external firmware blob to be loaded at run time and the controller doesn't have the space to store it. So I agree it is a thing... but such an edge case to this discussion about Linux.

              Comment


              • #8
                Originally posted by V1tol View Post
                Why not splitting GPU firmware into different packages? We already have separate amd and intel microcode packages, should be possible to split bloated amd-gpu-firmware and nvidia-gpu-firmware leaving linux-firmware for other stuff.
                I think this is generally how it is packaged today by the distros. Here's what a Tumbleweed install defaults to including...


                Code:
                foo@Z840:~> zypper se -si firmware
                Loading repository data...
                Reading installed packages...
                
                S  | Name                        | Type    | Version      | Arch   | Repository
                ---+-----------------------------+---------+--------------+--------+----------------------
                i+ | kernel-firmware-all         | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-amdgpu      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-ath10k      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-ath11k      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-atheros     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-bluetooth   | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-bnx2        | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-brcm        | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-chelsio     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-dpaa2       | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-i915        | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-intel       | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-iwlwifi     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-liquidio    | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-marvell     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-media       | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-mediatek    | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-mellanox    | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-mwifiex     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-network     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-nfp         | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-nvidia      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-platform    | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-prestera    | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-qcom        | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-qlogic      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-radeon      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-realtek     | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-serial      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-sound       | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-ti          | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-ueagle      | package | 20230320-1.1 | noarch | Main Repository (OSS)
                i+ | kernel-firmware-usb-network | package | 20230320-1.1 | noarch | Main Repository (OSS)

                Comment


                • #9
                  Originally posted by pWe00Iri3e7Z9lHOX2Qx View Post

                  I think this is generally how it is packaged today by the distros. Here's what a Tumbleweed install defaults to including...


                  Code:
                  foo@Z840:~> zypper se -si firmware
                  Loading repository data...
                  Reading installed packages...
                  
                  S | Name | Type | Version | Arch | Repository
                  ---+-----------------------------+---------+--------------+--------+----------------------
                  i+ | kernel-firmware-all | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-amdgpu | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-ath10k | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-ath11k | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-atheros | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-bluetooth | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-bnx2 | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-brcm | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-chelsio | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-dpaa2 | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-i915 | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-intel | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-iwlwifi | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-liquidio | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-marvell | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-media | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-mediatek | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-mellanox | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-mwifiex | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-network | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-nfp | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-nvidia | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-platform | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-prestera | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-qcom | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-qlogic | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-radeon | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-realtek | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-serial | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-sound | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-ti | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-ueagle | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  i+ | kernel-firmware-usb-network | package | 20230320-1.1 | noarch | Main Repository (OSS)
                  Yeah, but these are all actually built from the same linux-firmware "source" repository. I think the suggestion was to split that one too, which might actually not be a bad idea.

                  Comment


                  • #10
                    Why don't the GPU manufacturers include the firmware in the cards? Having a few hundred MBs of flash on board can't be that expensive!
                    Last edited by direc85; 19 April 2023, 12:20 PM. Reason: Gramar.

                    Comment

                    Working...
                    X