📈 GH Trending Explorer 🎲 Surprise me

← all repos

Zagitta / gpu-unlock

git clone https://github.com/Zagitta/gpu-unlock.git

—

—
stars, 24h
+45
stars, 7 days · #994
+45
stars, 30 days · #6,558
45
★ total · +45% this week
11
forks · 3 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageC
License—
Created2026-10-18 (2d ago)
Last push2d ago
Watchers0
OwnerUser

Links

README excerpt
# GPU unlock 1.0.0 packaging candidate
This Linux kernel module combines the CMP unlocker's V67/PLM technique with the
pre-driver timing of the UEFI approach. It runs the unlock, writes
the speed selectors (SS0 `0x88888888`, which selects the full BF16 rate, and
the 4-bit SS1 `0x8`, whose effect is untested) and performs FLR before the unmodified
NVIDIA driver binds the card.
It is neither a UEFI application nor a patched NVIDIA driver.
The observed result is GPU1, an RTX 3090 at `0000:21:00.0`, on the main
CachyOS `7.2.8-1-cachyos` kernel with NVIDIA `615.71.09`. GPU0 at
`0000:01:00.0` was an unmodified control. Other RTX 3090 boards and
environments have not been verified. Other GA102 PCI device IDs are rejected.
## Local build
Every build downloads the pinned NVIDIA/CachyOS inputs over HTTPS, checks
their SHA-256, and generates firmware only in the build directory and the
binary package. All three formats install through the same `make install-*`
targets. Packages are built from the committed `HEAD`.
Build, install build dependencies, and install the packages in one step
(asks for your sudo password):
 [code] 
`make arch`, `make deb` and `make rpm` only build. Debian and RPM packages go
to `build/deb` and `build/rpm`. The NVIDIA inputs are cached in
`~/.cache/gpu-unlock/inputs` (`make inputs`; override with `INPUTS=`).
`dpkg-buildpackage` itself never uses the network, so a clean-chroot build (sbuild or
pbuilder) needs `GPU_UNLOCK_INPUTS` pointing at that cache.
The `make dist` archive, the Debian source package and the `.nosrc.rpm`
contain no NVIDIA archives or generated firmware.
## Boot flow and opt-in
The packages put `gpu_unlock` and its firmware in the initramfs and load it
there, before `nvidia` can bind a card:
- **mkinitcpio:** `/etc/mkinitcpio.conf.d/zz-gpu-unlock.conf` inserts
 `gpu_unlock` right before `nvidia` in `MODULES`, so a display card is blank
 for as short a time as possible. Without `nvidia` in the image, it goes
 last and still runs before an `nvidia` loaded from the root filesystem.
 Images are rebuilt on install. mkinitcpio ignores drop-ins for an image
 built with `-c ` or a preset `_config`; put `gpu_unlock` right
 before `nvidia` in that config's `MODULES` yourself.
- **initramfs-tools:** `/usr/share/initramfs-tools/modules.d/gpu-unlock.conf`.
- **dracut:** `/usr/lib/dracut/dracut.conf.d/gpu-unlock.conf`.
There is no `softdep nvidia pre:` rule: kmod honours only the first
`softdep nvidia` line it reads, so other packages' rules (`nvidia-utils`,
`gddr6_hwmon`) would silently override it, or it would override theirs.
The module does nothing unless the kernel command line opts in:
 [code] 
Addresses are full PCI names as `lspci -D` prints them (hex digits in either
case), independent of GPU numbering and display role. An entry that is not
an RTX 3090, including `all` mixed with addresses, is logged and ignored.
The cards are unlocked concurrently, about a second in all however many
there are, and each on its own: a car