-
-
Notifications
You must be signed in to change notification settings - Fork 13k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
amdgpu: cannot set modified EDID binaries. "Requesting EDID firmware ... failed (err=-2)" #279739
Comments
This issue has been mentioned on NixOS Discourse. There might be relevant details there: |
Not sure it is the same issue, but I had to resort to some ugly hacks that I had no time to straigthen out: I'm on full-amd (CPU & GPU) myself and at the end got it to work just fine eventually. As far as I remember I had 2 issues:
I think this is the critical part to fix point 2
# TODO: remove this "fix" at some point?
# see https://github.com/NixOS/nixpkgs/blob/5e4c2ada4fcd54b99d56d7bd62f384511a7e2593/nixos/modules/system/boot/systemd/initrd.nix#L383-L385
boot.initrd.systemd.contents."/lib/firmware".source =
let
# "/lib/modules".source = "${modulesClosure}/lib/modules";
modulesClosure = lib.strings.removeSuffix "/lib/modules" config.boot.initrd.systemd.contents."/lib/modules".source;
joined = pkgs.symlinkJoin {
name = "kdn-initrd-firmware";
paths = [ modulesClosure generated ];
};
in
lib.mkForce "${joined}/lib/firmware"; |
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
thanks for motivating me to finally dig into the issue and upstream changes :) |
note (for now?) you will need to add |
this allows us not to pass `compressFirmware = false;` inside EDID derivations as this mechanic very tricky to discover. related to NixOS#279789 related to NixOS#279739
Applied https://github.com/NixOS/nixpkgs/commit/11e9e9bb70f8d09494ccbfbc7a6192bf733356ec.patch to my nixpkgs. It did not help. Also doing The Running |
indeed, i must have tested it the wrong way |
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
@nazarewk I found something interesting! While the boot fails:
Disconnecting and reconnecting the display after boot has finished does apply the custom EDID file without logging to journalctl. |
https://github.com/nazarewk/nixpkgs/commit/44b70ebd07798d94130e87cc3edd948fd1f8aebe.patch Does function correctly for me and allows it to apply without reconnecting my monitor after boot. Thank you for figuring it out! ❤️ |
I am quite sure it "just works" because on a live system it's available at |
there is also second PR removing need to pass |
Here's my commit with a functional EDID loaded from initrd 🎉 |
I can review PRs but I cannot help much here, apologies. |
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
modules-closure.sh seems to consider everything under /lib/firmware to be a kernel module, this change adds a special handling of `edid` directory, which does not contain kernel modules fixes NixOS#279739
Describe the bug
When using
drm.edid_firmware
on NixOS, amdgpu fails to find the relevant firmware file specified, even if it exists. Loading the EDID manually from/run/current-system/firmware
works correctly.Steps To Reproduce
NixOS configuration should have the following set somewhere:
My EDID file looks like this for comparison:
journalctl -b0
.Expected behavior
Applies the EDID file correctly on boot.
Applying it manually, for example as
sudo bash -c "unxz -dc /run/current-system/firmware/edid/custom.bin.xz > /sys/kernel/debug/dri/0/DP-2/edid_override"
to apply it to DP-2 works correctly. This can work as a pseudo workaround, but requires you to disconnect and reconnect your monitor to apply the modified edid file.Additional context
Open Discourse about the issue: https://discourse.nixos.org/t/copying-custom-edid/31593
Attempted to look for upstream issues in amdgpu, but nothing seemed relevant. Google only shows other NixOS users having this issue that i can find.
Notify maintainers
Unsure, @RaitoBezarius as latest editor of
stage-1.nix
.@flokli @nazarewk may have insight as maintainers of
edid-generator.nix
.Metadata
Please run
nix-shell -p nix-info --run "nix-info -m"
and paste the result.Add a 👍 reaction to issues you find important.
The text was updated successfully, but these errors were encountered: