Accepting request 1061900 from X11:Drivers:Video:Redesign
- introduce %hardcode_pci_list macro for hardcoding PCI ID modaliases for Supplements; make it default to *temporarily* workaround boo#1207520 * TW: enable only officially supported headless GPUs! * Leap/sle: enable all Turing and Ampere GPUs and set the appropriate modprobe.d option, so we can at least begin testing on sle15-sp5 ... - adds pci-table.patch, generati-pci-table.sh OBS-URL: https://build.opensuse.org/request/show/1061900 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/nvidia-open-driver-G06-signed?expand=0&rev=3
This commit is contained in:
commit
545e3fd16b
63
generati-pci-table.sh
Normal file
63
generati-pci-table.sh
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "$0 <input_file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
input=$1
|
||||||
|
|
||||||
|
cat > nvidia/nv_pci_table_list.h <<EOF
|
||||||
|
EOF
|
||||||
|
cat > nvidia/nv_module_pci_table_list.h <<EOF
|
||||||
|
EOF
|
||||||
|
for did in $(cat $input | cut -d " " -f1 ); do
|
||||||
|
echo $did
|
||||||
|
cat >> nvidia/nv_pci_table_list.h <<EOF
|
||||||
|
{
|
||||||
|
.vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
.device = $did,
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
.class = (PCI_CLASS_DISPLAY_VGA << 8),
|
||||||
|
.class_mask = ~0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
.device = $did,
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
.class = (PCI_CLASS_DISPLAY_3D << 8),
|
||||||
|
.class_mask = ~0
|
||||||
|
},
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >> nvidia/nv_module_pci_table_list.h <<EOF
|
||||||
|
{
|
||||||
|
.vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
.device = $did,
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
.class = (PCI_CLASS_DISPLAY_VGA << 8),
|
||||||
|
.class_mask = ~0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
.device = $did,
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
.class = (PCI_CLASS_DISPLAY_3D << 8),
|
||||||
|
.class_mask = ~0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
.device = $did,
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
.class = (PCI_CLASS_BRIDGE_OTHER << 8),
|
||||||
|
.class_mask = ~0
|
||||||
|
},
|
||||||
|
EOF
|
||||||
|
done
|
||||||
|
cp nvidia/nv_pci_table_list.h nvidia-drm/nv_pci_table_list.h
|
||||||
|
cp nvidia/nv_module_pci_table_list.h nvidia-drm/nv_module_pci_table_list.h
|
@ -1,3 +1,15 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Jan 29 16:16:33 UTC 2023 - Stefan Dirsch <sndirsch@suse.com>
|
||||||
|
|
||||||
|
- introduce %hardcode_pci_list macro for hardcoding PCI ID
|
||||||
|
modaliases for Supplements; make it default to *temporarily*
|
||||||
|
workaround boo#1207520
|
||||||
|
* TW: enable only officially supported headless GPUs!
|
||||||
|
* Leap/sle: enable all Turing and Ampere GPUs and set the
|
||||||
|
appropriate modprobe.d option, so we can at least begin
|
||||||
|
testing on sle15-sp5 ...
|
||||||
|
- adds pci-table.patch, generati-pci-table.sh
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jan 25 15:00:04 UTC 2023 - Stefan Dirsch <sndirsch@suse.com>
|
Wed Jan 25 15:00:04 UTC 2023 - Stefan Dirsch <sndirsch@suse.com>
|
||||||
|
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%define hardcode_pci_list 1
|
||||||
|
|
||||||
%if %{undefined kernel_module_directory}
|
%if %{undefined kernel_module_directory}
|
||||||
%if 0%{?usrmerged}
|
%if 0%{?usrmerged}
|
||||||
%define kernel_module_directory /usr/lib/modules
|
%define kernel_module_directory /usr/lib/modules
|
||||||
@ -49,8 +51,10 @@ Source9: pci_ids-unsupported-%{version}
|
|||||||
Source10: pci_ids-unsupported
|
Source10: pci_ids-unsupported
|
||||||
Source11: pesign-copy-sources
|
Source11: pesign-copy-sources
|
||||||
Source12: pesign-spec-macros
|
Source12: pesign-spec-macros
|
||||||
|
Source13: generati-pci-table.sh
|
||||||
Patch0: 0001-Don-t-override-INSTALL_MOD_DIR.patch
|
Patch0: 0001-Don-t-override-INSTALL_MOD_DIR.patch
|
||||||
Patch2: persistent-nvidia-id-string.patch
|
Patch2: persistent-nvidia-id-string.patch
|
||||||
|
Patch3: pci-table.patch
|
||||||
BuildRequires: %{kernel_module_package_buildreqs}
|
BuildRequires: %{kernel_module_package_buildreqs}
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: kernel-source
|
BuildRequires: kernel-source
|
||||||
@ -71,8 +75,10 @@ ExclusiveArch: x86_64 aarch64
|
|||||||
%(sed -e '/^%%post\>/ r %_sourcedir/kmp-post.sh' -e '/^%%postun\>/ r %_sourcedir/kmp-postun.sh' %kmp_template_name >%_builddir/nvidia-kmp-template)
|
%(sed -e '/^%%post\>/ r %_sourcedir/kmp-post.sh' -e '/^%%postun\>/ r %_sourcedir/kmp-postun.sh' %kmp_template_name >%_builddir/nvidia-kmp-template)
|
||||||
%kernel_module_package -n %{name} -t %_builddir/nvidia-kmp-template -f %_sourcedir/kmp-filelist -p %_sourcedir/preamble
|
%kernel_module_package -n %{name} -t %_builddir/nvidia-kmp-template -f %_sourcedir/kmp-filelist -p %_sourcedir/preamble
|
||||||
|
|
||||||
# create hardware supplements for manual builds
|
%if ! 0%{hardcode_pci_list}
|
||||||
|
## create hardware supplements for manual builds
|
||||||
%{load:%{SOURCE12}}
|
%{load:%{SOURCE12}}
|
||||||
|
%endif
|
||||||
|
|
||||||
# newer rpmbuilds attach the kernel version and the major part of release to %%pci_id_file of the __kmp_supplements script
|
# newer rpmbuilds attach the kernel version and the major part of release to %%pci_id_file of the __kmp_supplements script
|
||||||
# boo#1190210
|
# boo#1190210
|
||||||
@ -86,6 +92,16 @@ for GeForce RTX 2000 series and newer GPUs.
|
|||||||
%setup -q -n open-gpu-kernel-modules-%{version}
|
%setup -q -n open-gpu-kernel-modules-%{version}
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
|
%if 0%{hardcode_pci_list}
|
||||||
|
%patch3 -p0
|
||||||
|
pushd kernel-open
|
||||||
|
%if 0%{?suse_version} >= 1550
|
||||||
|
sh %{SOURCE13} %{SOURCE2}
|
||||||
|
%else
|
||||||
|
sh %{SOURCE13} %{SOURCE9}
|
||||||
|
%endif
|
||||||
|
popd
|
||||||
|
%endif
|
||||||
set -- *
|
set -- *
|
||||||
mkdir source
|
mkdir source
|
||||||
mv "$@" source/
|
mv "$@" source/
|
||||||
@ -148,7 +164,15 @@ for flavor in %flavors_to_build; do
|
|||||||
blacklist nouveau
|
blacklist nouveau
|
||||||
options nvidia-drm modeset=1
|
options nvidia-drm modeset=1
|
||||||
### Enable support on *all* Turing/Ampere GPUs: Alpha Quality!
|
### Enable support on *all* Turing/Ampere GPUs: Alpha Quality!
|
||||||
|
%if 0%{hardcode_pci_list}
|
||||||
|
%if 0%{?suse_version} >= 1550
|
||||||
#options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
|
#options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
|
||||||
|
%else
|
||||||
|
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
|
||||||
|
%endif
|
||||||
|
%else
|
||||||
|
#options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
|
||||||
|
%endif
|
||||||
EOF
|
EOF
|
||||||
echo -n "install nvidia " >> $MODPROBE_DIR/50-nvidia-$flavor.conf
|
echo -n "install nvidia " >> $MODPROBE_DIR/50-nvidia-$flavor.conf
|
||||||
tail -n +3 %_sourcedir/modprobe.nvidia.install | awk '{ printf "%s ", $0 }' >> $MODPROBE_DIR/50-nvidia-$flavor.conf
|
tail -n +3 %_sourcedir/modprobe.nvidia.install | awk '{ printf "%s ", $0 }' >> $MODPROBE_DIR/50-nvidia-$flavor.conf
|
||||||
|
114
pci-table.patch
Normal file
114
pci-table.patch
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
diff -u -r kernel-open.orig/nvidia/nv-pci-table.c kernel-open/nvidia/nv-pci-table.c
|
||||||
|
--- kernel-open.orig/nvidia/nv-pci-table.c 2023-01-29 14:48:55.126713000 +0100
|
||||||
|
+++ kernel-open/nvidia/nv-pci-table.c 2023-01-29 14:56:28.901959000 +0100
|
||||||
|
@@ -28,51 +28,13 @@
|
||||||
|
|
||||||
|
/* Devices supported by RM */
|
||||||
|
struct pci_device_id nv_pci_table[] = {
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_VGA << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_3D << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
+#include "nv_pci_table_list.h"
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Devices supported by all drivers in nvidia.ko */
|
||||||
|
struct pci_device_id nv_module_device_table[] = {
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_VGA << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_3D << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_BRIDGE_OTHER << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
+#include "nv_module_pci_table_list.h"
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
diff -u -r kernel-open.orig/nvidia-drm/nv-pci-table.c kernel-open/nvidia-drm/nv-pci-table.c
|
||||||
|
--- kernel-open.orig/nvidia-drm/nv-pci-table.c 2023-01-29 14:48:51.032916000 +0100
|
||||||
|
+++ kernel-open/nvidia-drm/nv-pci-table.c 2023-01-29 14:53:47.242620000 +0100
|
||||||
|
@@ -28,51 +28,13 @@
|
||||||
|
|
||||||
|
/* Devices supported by RM */
|
||||||
|
struct pci_device_id nv_pci_table[] = {
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_VGA << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_3D << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
+#include "nv_pci_table_list.h"
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Devices supported by all drivers in nvidia.ko */
|
||||||
|
struct pci_device_id nv_module_device_table[] = {
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_VGA << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_DISPLAY_3D << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
- .vendor = PCI_VENDOR_ID_NVIDIA,
|
||||||
|
- .device = PCI_ANY_ID,
|
||||||
|
- .subvendor = PCI_ANY_ID,
|
||||||
|
- .subdevice = PCI_ANY_ID,
|
||||||
|
- .class = (PCI_CLASS_BRIDGE_OTHER << 8),
|
||||||
|
- .class_mask = ~0
|
||||||
|
- },
|
||||||
|
+#include "nv_module_pci_table_list.h"
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user