Skip to content

Commit

Permalink
x11/nvidia-driver: Fix bug that switching to the terminal wasn't poss…
Browse files Browse the repository at this point in the history
…ible

Tested with NVidia RTX 2060 on FreeBSD 13.1 STABLE.

PR:		213912
Approved by:	danfe@ (maintainer's timeout; 18 days)
  • Loading branch information
yurivict committed Jan 16, 2023
1 parent ecd13ca commit 010b191
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
2 changes: 1 addition & 1 deletion x11/nvidia-driver/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
PORTNAME?= nvidia-driver
DISTVERSION?= 510.60.02
# 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}
Expand Down
34 changes: 34 additions & 0 deletions x11/nvidia-driver/files/patch-src_nvidia_nvidia__os.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
- vbe framebuffer mode adjustment that enables switch back and forth to the black terminal
- from https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213912#c17

--- src/nvidia/nvidia_os.c.orig 2022-12-27 22:31:44 UTC
+++ src/nvidia/nvidia_os.c
@@ -789,6 +789,28 @@ void NV_API_CALL os_get_screen_info(
*pFbPitch = efifb->fb_stride * (bpp / NBBY);
return;
}
+
+ const struct vbe_fb *vbefb =
+ (const struct vbe_fb *)preload_search_info(kmdp, MODINFO_METADATA |
+ MODINFOMD_VBE_FB);
+
+ /* Make sure base address is mapped to GPU BAR */
+ if ((vbefb != NULL) &&
+ ((vbefb->fb_addr == consoleBar1Address) ||
+ (vbefb->fb_addr == consoleBar2Address)))
+ {
+ int depth = fls(vbefb->fb_mask_red | vbefb->fb_mask_green |
+ vbefb->fb_mask_blue | vbefb->fb_mask_reserved);
+ int bpp = roundup2(depth, NBBY);
+
+ *pPhysicalAddress = vbefb->fb_addr;
+ *pFbWidth = vbefb->fb_width;
+ *pFbHeight = vbefb->fb_height;
+ *pFbDepth = depth;
+ /* fb_stride is in pixels. Convert to bytes */
+ *pFbPitch = vbefb->fb_stride * (bpp / NBBY);
+ return;
+ }
}
{
const sc_softc_t *sc = sc_get_softc(0, SC_KERNEL_CONSOLE);
10 changes: 10 additions & 0 deletions x11/nvidia-driver/pkg-message
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[
{ type: install
message: <<EOM
Please add the line
vbe_max_resolution="720p"
to /boot/loader.conf to put vt into the vbe framebuffer mode that would
allow terminals to work simultaneously with graphics.
EOM
}
]

0 comments on commit 010b191

Please sign in to comment.