Commit graph

99 commits

Author SHA1 Message Date
Edward Tjörnhammar
903ebdc0a0 nixos/nvidia: don't assume x11 is used.. 2023-09-14 18:19:15 +02:00
Edward Tjörnhammar
9b95f21cdb nvidia,nixos/nvidia: add datacenter drivers compatible with default cudaPkgs
For NVLink topology systems we need fabricmanager. Fabricmanager itself is
dependent on the datacenter driver set and not the regular x11 ones, it is also
tightly tied to the driver version. Furhtermore the current cudaPackages
defaults to version 11.8, which corresponds to the 520 datacenter drivers.

Future improvement should be to switch the main nvidia datacenter driver version
on the `config.cudaVersion` since these are well known from:

> https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package

This adds nixos configuration options `hardware.nvidia.datacenter.enable` and
`hardware.nvidia.datacenter.settings` (the settings configure fabricmanager)

Other interesting external links related to this commit are:

* Fabricmanager download site:
    - https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/linux-x86_64/
* Data Center drivers:
    - https://www.nvidia.com/Download/driverResults.aspx/193711/en-us/

Implementation specific details:

* Fabricmanager is added as a passthru package, similar to settings and
  presistenced.
* Adds `use{Settings,Persistenced,Fabricmanager}` with defaults to preserve x11
  expressions.
* Utilizes mkMerge to split the `hardware.nvidia` module into three comment
  delimited sections:
    1. Common
    2. X11/xorg
    3. Data Center
* Uses asserts to make the configurations mutualy exclusive.

Notes:

* Data Center Drivers are `x86_64` only.
* Reuses the `nvidia_x11` attribute in nixpkgs on enable, e.g. doesn't change it
  to `nvidia_driver` and sets that to either `nvidia_x11` or `nvidia_dc`.
* Should have a helper function which is switched on `config.cudaVersion` like
  `selectHighestVersion` but rather `selectCudaCompatibleVersion`.
2023-09-12 07:17:33 +02:00
Gerg-L
4ca2a16390 nixos/nvidia: add Dynamic Boost support 2023-08-03 09:32:14 -04:00
Gerg-L
a5ccd2c5c8 nixos/nvidia: cleaned up reorganized and reformatted 2023-07-18 16:50:42 -04:00
seth
18aeed351a
nixos/nvidia: fix typo in PRIME/nvidiaBusID assertion 2023-06-21 17:51:59 -04:00
Kiskae
0491659cd0
nixos/nvidia: use correct attribute 2023-04-01 20:24:02 +02:00
Kiskae
ea126529eb nixos/nvidia: allow package to override IBT support 2023-04-01 14:44:43 +02:00
Kiskae
c3ce711249 nixos/nvidia: re-enable IBT for newer drivers 2023-03-24 11:37:35 +01:00
Kiskae
d120c53077 linuxPackages_6_2.nvidia_x11: disable ibt 2023-02-22 18:08:41 +01:00
Googlebot
458c1628ee fix logic 2023-02-07 00:51:39 -05:00
Googlebot
2a7130d13a nvidia: Reverse Prime Sync 2023-02-06 22:46:56 +00:00
Artturin
7e49471316 treewide: optional -> optionals where the argument is a list
the argument to optional should not be list
2022-10-10 15:40:21 +03:00
Nick Cao
81b615ea51
nixos/nvidia: replace IFD based assertion on power management support with version constraint 2022-09-03 19:38:23 +08:00
Max Schorradt
2461a62334 nvidia: remove deleted useGlamor option 2022-08-24 21:34:42 +02:00
pennae
2e751c0772 treewide: automatically md-convert option descriptions
the conversion procedure is simple:

 - find all things that look like options, ie calls to either `mkOption`
   or `lib.mkOption` that take an attrset. remember the attrset as the
   option
 - for all options, find a `description` attribute who's value is not a
   call to `mdDoc` or `lib.mdDoc`
 - textually convert the entire value of the attribute to MD with a few
   simple regexes (the set from mdize-module.sh)
 - if the change produced a change in the manual output, discard
 - if the change kept the manual unchanged, add some text to the
   description to make sure we've actually found an option. if the
   manual changes this time, keep the converted description

this procedure converts 80% of nixos options to markdown. around 2000
options remain to be inspected, but most of those fail the "does not
change the manual output check": currently the MD conversion process
does not faithfully convert docbook tags like <code> and <package>, so
any option using such tags will not be converted at all.
2022-07-30 15:16:34 +02:00
Timothy DeHerrera
371db36e56
nvidia: improve robustness of udev rules
fixes 
2022-07-15 19:37:13 -07:00
yuu
ce2e4707b7
hardware/nvidia: add @ to constraint on busIDType
On some configurations, the only known syntax that works
requires the `@` character, such as `intelBusId = "0@0:2:0";`  and
`nvidiaBusId = "1@1:0:0";` [1].

[1]. https://discourse.nixos.org/t/struggling-with-nvidia-prime/13794/4
2022-07-10 02:48:40 -03:00
Nick Cao
e84828b973
nixos/nvidia: add option hardware.nvidia.open for selecting the opensource kernel driver 2022-06-03 10:50:33 +08:00
Nick Cao
94f5bd2051
nvidia_x11: init opensource kernel driver 2022-06-03 10:50:33 +08:00
Thiago Kenji Okada
679197e9ff
Merge pull request from jian-lin/fix-nvidia.powerManagement.finegrained-only-apply-workarounds-when-needed
nixos/nvidia: only apply workarounds for finegrained when needed
2022-06-02 17:55:23 +01:00
Thiago Kenji Okada
64870a0c57
Merge pull request from schuelermine/add-nixos-option/hardware.nvidia.forceFullCompositionPipeline
nixos/nvidia: add hardware.nvidia.forceFullCompositionPipeline
2022-06-02 17:50:50 +01:00
Anselm Schüler
446d2cb021 nixos/nvidia: add hardware.nvidia.forceFullCompositionPipeline 2022-05-24 11:46:50 +02:00
linj
d5a9c1dd08 nixos/nvidia: remove a useless option
According to the doc[1], NVreg_DynamicPowerManagement is a kernel
module parameter, which it is already set as. So it should not be set
as an xorg option.

[1]: https://download.nvidia.com/XFree86/Linux-x86_64/515.43.04/README/dynamicpowermanagement.html#DriverSettingsfe624
2022-05-23 05:11:26 +08:00
linj
97a855ca0e nixos/nvidia: only apply workarounds for finegrained when needed
Accoriding to the doc[1], these workarounds is no needed for kernel
5.5 and newer.

[1]: https://download.nvidia.com/XFree86/Linux-x86_64/515.43.04/README/dynamicpowermanagement.html#KnownIssuesAndW6426e
2022-05-23 05:01:40 +08:00
Artem Leshchev
4d7bc6ccc0 nixos/nvidia: fix /dev/nvidia-uvm-tools device minor 2022-04-28 13:55:53 +03:00
Artem Leshchev
73261bdc59 nixos/nvidia: make nvidia-frontend device major constant
It is assigned by https://www.kernel.org/doc/Documentation/admin-guide/devices.txt
and never changes, so we can skip grep.
2022-04-28 13:55:53 +03:00
Artem Leshchev
b01be47c87 nixos/nvidia: fix /dev/nvidia* devices minors
We can't assume that DRI card minor is the same as NVidia GPU device minor,
because some DRI minors could be taken by GPUs of other vendors.

Fixes , .
2022-04-28 01:18:58 +03:00
Guillaume Girol
5f95bff481 nixos/nvidia: fix type of bus ID option to accept empty string 2022-04-17 12:00:00 +00:00
polykernel
614b54d9b0 hardware/nvidia: stricter constraints on PCI bus-id.
The current type for the busId options are too relaxed, a stricter
constraint should be imposed to guard against typos which result
in Xorg unable to start.

This commit restricts the type to adhere to the B/D/F notation[1] for
addressing devices as expected by the module option.

[1] - https://wiki.osdev.org/PCI#Configuration_Space_Access_Mechanism_.231
2022-04-16 15:25:37 -04:00
Googlebot
4007aa201b Merge remote-tracking branch 'upstream/master' 2022-03-21 11:32:36 -04:00
Jonathan Ringer
0326d67a58 nixos/nvidia: add vaapi support 2022-03-14 22:35:11 -07:00
googlebot
125a347ae1 nvidia: Fix AMD APU for Prime Sync 2022-02-04 17:35:41 -05:00
Jan Tojnar
e00317be13 nixos/nvidia: remove obsolete GDM on Wayland assertion
GDM enables Wayland on supported platforms automatically (see ${gnome.gdm}/lib/udev/rules.d/61-gdm.rules), so we removed the `gdm.nvidiaWayland` option.

You will still need `hardware.nvidia.modesetting.enable = true;` with `nvidia` driver, though.
2022-02-01 19:22:04 +01:00
Jan Tojnar
dad4fddd52 nixos/nvidia: check modesetting for gdm-wayland only when gdm is enabled
Reported in https://github.com/NixOS/nixpkgs/pull/147153#issuecomment-982695772
2021-11-30 16:06:21 +01:00
Bernardo Meurer
cf0e83f5c4
Merge pull request from rebeccaskinner/fix/nvidia-settings
nixos/modules/hardware/video/nvidia: Fix incorrect reference to 'nvid…
2021-11-16 10:18:16 -08:00
Cole Mickens
216dd5b740
nvidia: fix egl-wayland loading 2021-10-20 15:19:06 -07:00
Timothy DeHerrera
305ea3e9ed
nixos/nvidia: fix typo in PM assert 2021-10-13 09:39:35 -06:00
Naïm Favier
2ddc335e6f
nixos/doc: clean up defaults and examples 2021-10-04 12:47:20 +02:00
rebecca skinner
e7996ab6ce nixos/modules/hardware/video/nvidia: Fix incorrect reference to 'nvidiaSettings'
This patch fixes a bug caused by an incorrect reference to
'nvidiaSettings' rather than 'cfg.nvidiaSettings'. The bug caused
the system to not build when using the nvidia drivers.

Tested on my local machine.
2021-09-08 23:33:07 -05:00
Phillip Cloud
6aaccdcbc8
nixos/nvidia: remove extra space 2021-09-01 08:57:33 -04:00
Phillip Cloud
db0560c0f2
nixos/nvidia: fix missing variable reference 2021-09-01 08:54:32 -04:00
Bernardo Meurer
7b2709f6a4
nixos/nvidia: let user choose whether to install nvidia-settings 2021-08-30 17:06:07 -07:00
Edmund Wu
573aae39e2
nixos/modules: assertion for required PM files 2021-08-07 01:41:58 -04:00
Natan Lao
4d8569b173 nixos/nvidia: fix hardware.nvidia.package example 2021-06-08 19:40:27 -07:00
Dmitry Kalinkin
161b9b2436
Merge pull request from eadwu/nvidia/hardware.nvidia.package
nixos: hardware.nvidia.package option for selecting nvidia package
2021-01-30 22:08:37 -05:00
Svein Ove Aas
c9f8884592 nVidia: Support dynamic (fine-grained) power management 2021-01-29 12:55:51 -05:00
Svein Ove Aas
6021ab7820 nvidia: Add AMD APU option for Prime 2021-01-29 12:55:51 -05:00
Frederik Rietdijk
450cb04f16
nixos: hardware.nvidia.package option for selecting nvidia package
Make it possible to select a derivation to use. This also moves some
logic that belongs to the derivation back into it.
2021-01-11 13:01:48 -05:00
Jonathan Ringer
5e67d80a8b nixos/nvidia: fix optionals usage 2020-10-18 11:47:34 -07:00
Edmund Wu
2e67196d79 nixos/nvidia: decouple nvidia_x11.persistenced 2020-10-18 11:24:20 -07:00