diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile index ba87e2a0088d9..d8bc306c032ef 100644 --- a/x11/nvidia-driver/Makefile +++ b/x11/nvidia-driver/Makefile @@ -103,7 +103,8 @@ SUB_PATCHES += extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c .endif .if ${NVVERSION} < 460.039 . if ${NVVERSION} >= 358.009 -EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c +EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c \ + ${FILESDIR}/extra-patch-src_nvidia_nvidia_os.c . endif SUB_PATCHES+= extra-patch-src-nvidia_ctl.c \ extra-patch-src-nvidia_linux.c diff --git a/x11/nvidia-driver/files/extra-patch-src-Makefile.in b/x11/nvidia-driver/files/extra-patch-src-Makefile.in index 8fd6ad2db3719..dde7bbfee66aa 100644 --- a/x11/nvidia-driver/files/extra-patch-src-Makefile.in +++ b/x11/nvidia-driver/files/extra-patch-src-Makefile.in @@ -1,18 +1,29 @@ --- src/%%NVSRC%%/Makefile.orig 2017-09-14 20:46:30 UTC +++ src/%%NVSRC%%/Makefile -@@ -30,6 +30,15 @@ NOOBJ= true +@@ -26,9 +26,25 @@ stdarg.h: @ln -s machine/stdarg.h stdarg.h -+SRCS+= opt_global.h -+.if ${MACHINE_ARCH} == "i386" && !defined(KERNBUILDDIR) ++SRCS+= opt_global.h opt_syscons.h ++.if defined(KERNBUILDDIR) ++MKDEP= -include ${KERNBUILDDIR}/opt_global.h -include ${KERNBUILDDIR}/opt_syscons.h ++.else ++CFLAGS+= -include opt_global.h -include opt_syscons.h ++MKDEP= -include opt_global.h -include opt_syscons.h ++ ++.if ${MACHINE_ARCH} == "i386" +PAE!= sed -n '/define NV_SUPPORT_PAE/p' nv-freebsd.h +.if !empty(PAE) +opt_global.h: + echo "#define PAE 1" > ${.TARGET} +.endif +.endif ++.endif + *.c: stdarg.h - beforeinstall: ${KMOD}.ko +-beforeinstall: ${KMOD}.ko ++beforeinstall_dontexecute_dontexecute: ${KMOD}.ko + + all: ${OSOBJ} + diff --git a/x11/nvidia-driver/files/extra-patch-src_nvidia_nvidia_os.c b/x11/nvidia-driver/files/extra-patch-src_nvidia_nvidia_os.c new file mode 100644 index 0000000000000..cc243476d1282 --- /dev/null +++ b/x11/nvidia-driver/files/extra-patch-src_nvidia_nvidia_os.c @@ -0,0 +1,67 @@ +--- src/nvidia/nvidia_os.c.orig 2017-05-01 21:17:21 UTC ++++ src/nvidia/nvidia_os.c +@@ -8,6 +8,7 @@ + * _NVRM_COPYRIGHT_END_ + */ + ++#include "opt_syscons.h" + #include "nv-misc.h" + #include "os-interface.h" + #include "nv.h" +@@ -17,7 +18,9 @@ + #include + #include + #include ++#ifdef DEV_SC + #include ++#endif + + // This bootloader metadata interface was added to metadata.h in FreeBSD 10.1 + // with commit 3a7cd99956b1 and FreeBSD 11 with commit d2c99117cd3b. +@@ -800,29 +803,32 @@ + } + } + #endif ++ ++#ifdef DEV_VT ++ /* TODO */ ++#endif ++ ++#ifdef DEV_SC + { + const sc_softc_t *sc = sc_get_softc(0, SC_KERNEL_CONSOLE); ++ const struct video_info *vi; + +- if (sc) ++ if (sc && sc->adp) + { +- const video_adapter_t *adp = sc->adp; ++ vi = &sc->adp->va_info; + +- if (adp) ++ if (vi && (vi->vi_flags & V_INFO_LINEAR)) + { +- const struct video_info *vi = &adp->va_info; +- +- if (vi && (vi->vi_flags & V_INFO_LINEAR)) +- { +- *pPhysicalAddress = vi->vi_buffer; +- *pFbWidth = vi->vi_width; +- *pFbHeight = vi->vi_height; +- *pFbDepth = vi->vi_depth; +- *pFbPitch = adp->va_line_width; +- return; +- } ++ *pPhysicalAddress = vi->vi_buffer; ++ *pFbWidth = vi->vi_width; ++ *pFbHeight = vi->vi_height; ++ *pFbDepth = vi->vi_depth; ++ *pFbPitch = sc->adp->va_line_width; ++ return; + } + } + } ++#endif + + *pPhysicalAddress = 0; + *pFbWidth = *pFbHeight = *pFbDepth = *pFbPitch = 0;