aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2021-02-06 19:50:32 +0800
committerAlexey Dokuchaev <danfe@FreeBSD.org>2021-02-06 19:50:32 +0800
commit48c3156500077c687b8fd3e6477218c048e2c529 (patch)
tree00bc97ef2d67eb92fbc50ac189ec5f85ef21abb1
parentec112fba14458b0cf4e46ba084fea4e75a23e20a (diff)
downloadfreebsd-ports-gnome-48c3156500077c687b8fd3e6477218c048e2c529.tar.gz
freebsd-ports-gnome-48c3156500077c687b8fd3e6477218c048e2c529.tar.zst
freebsd-ports-gnome-48c3156500077c687b8fd3e6477218c048e2c529.zip
Forward-port ``extra-patch-src-nvidia_ctl.c'' patch to 460.xx branch,
I somehow missed it when rebasing other changes. While here, flatten and rename 460-* patches, they do not need %%NVSRC%% substitution. Pointy hat to: danfe
-rw-r--r--x11/nvidia-driver/Makefile7
-rw-r--r--x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_ctl.c72
-rw-r--r--x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_linux.c (renamed from x11/nvidia-driver/files/460-patch-src-nvidia_linux.c.in)4
3 files changed, 78 insertions, 5 deletions
diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile
index 57f9fbc2c1fa..2f8a05196b36 100644
--- a/x11/nvidia-driver/Makefile
+++ b/x11/nvidia-driver/Makefile
@@ -13,7 +13,7 @@
PORTNAME= nvidia-driver
DISTVERSION?= 460.39
# Always try to set PORTREVISION as it can be overridden by the slave ports
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= x11
MASTER_SITES= NVIDIA/XFree86/FreeBSD-${ARCH_SUFX}/${DISTVERSION}
DISTNAME= NVIDIA-FreeBSD-${ARCH_SUFX}-${DISTVERSION}
@@ -72,8 +72,9 @@ EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_nvidia-modeset_nvidia-modeset-freebs
SUB_PATCHES+= extra-patch-src-nvidia_ctl.c \
extra-patch-src-nvidia_linux.c
.else
-EXTRA_PATCHES+= ${FILESDIR}/460-patch-lib-libGLX_nvidia-Makefile
-SUB_PATCHES+= 460-patch-src-nvidia_linux.c
+EXTRA_PATCHES+= ${FILESDIR}/460-patch-lib-libGLX_nvidia-Makefile \
+ ${FILESDIR}/460-patch-src-nvidia-nvidia_ctl.c \
+ ${FILESDIR}/460-patch-src-nvidia-nvidia_linux.c
.endif
OPTIONS_DEFINE= ACPI_PM LINUX WBINVD DOCS
diff --git a/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_ctl.c b/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_ctl.c
new file mode 100644
index 000000000000..0c48a955d02e
--- /dev/null
+++ b/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_ctl.c
@@ -0,0 +1,72 @@
+--- src/nvidia/nvidia_ctl.c.orig 2021-01-21 21:50:34 UTC
++++ src/nvidia/nvidia_ctl.c
+@@ -13,6 +13,12 @@
+ #include "nv.h"
+ #include "nv-freebsd.h"
+
++#ifdef NV_SUPPORT_LINUX_COMPAT /* (COMPAT_LINUX || COMPAT_LINUX32) */
++#include <compat/linux/linux_util.h>
++
++const char nvidia_driver_name[] = "nvidia";
++#endif
++
+ static d_open_t nvidia_ctl_open;
+ static void nvidia_ctl_dtor(void *arg);
+ static d_ioctl_t nvidia_ctl_ioctl;
+@@ -138,6 +144,18 @@ static int nvidia_ctl_poll(
+
+ int nvidia_ctl_attach(void)
+ {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ struct linux_device_handler nvidia_ctl_linux_handler = {
++ .bsd_driver_name = __DECONST(char *, nvidia_driver_name),
++ .linux_driver_name = __DECONST(char *, nvidia_driver_name),
++ .bsd_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_major = NV_MAJOR_DEVICE_NUMBER,
++ .linux_minor = 255,
++ .linux_char_device = 1
++ };
++#endif
++
+ if (nvidia_count == 0) {
+ nvidia_ctl_cdev = make_dev(&nvidia_ctl_cdevsw,
+ CDEV_CTL_MINOR,
+@@ -145,6 +163,10 @@ int nvidia_ctl_attach(void)
+ "%s", nvidia_ctl_cdevsw.d_name);
+ if (nvidia_ctl_cdev == NULL)
+ return ENOMEM;
++
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ (void)linux_device_register_handler(&nvidia_ctl_linux_handler);
++#endif
+ }
+
+ nvidia_count++;
+@@ -153,10 +175,25 @@ int nvidia_ctl_attach(void)
+
+ int nvidia_ctl_detach(void)
+ {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ struct linux_device_handler nvidia_ctl_linux_handler = {
++ .bsd_driver_name = __DECONST(char *, nvidia_driver_name),
++ .linux_driver_name = __DECONST(char *, nvidia_driver_name),
++ .bsd_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_major = NV_MAJOR_DEVICE_NUMBER,
++ .linux_minor = 255,
++ .linux_char_device = 1
++ };
++#endif
+ nvidia_count--;
+
+- if (nvidia_count == 0)
++ if (nvidia_count == 0) {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ (void)linux_device_unregister_handler(&nvidia_ctl_linux_handler);
++#endif
+ destroy_dev(nvidia_ctl_cdev);
++ }
+
+ return 0;
+ }
diff --git a/x11/nvidia-driver/files/460-patch-src-nvidia_linux.c.in b/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_linux.c
index 083c7a1c1642..eedc3001c708 100644
--- a/x11/nvidia-driver/files/460-patch-src-nvidia_linux.c.in
+++ b/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_linux.c
@@ -1,5 +1,5 @@
---- src/%%NVSRC%%/nvidia_linux.c.orig 2017-09-14 20:46:30 UTC
-+++ src/%%NVSRC%%/nvidia_linux.c
+--- src/nvidia/nvidia_linux.c.orig 2021-01-21 21:50:34 UTC
++++ src/nvidia/nvidia_linux.c
@@ -35,21 +35,16 @@ int linux_ioctl_nvidia(
struct linux_ioctl_args *args
)