Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/drm2/nouveau disable drm2 on modern nouveau...



details:   https://anonhg.NetBSD.org/src/rev/dba9c209de8e
branches:  trunk
changeset: 322872:dba9c209de8e
user:      mrg <mrg%NetBSD.org@localhost>
date:      Mon May 21 08:58:47 2018 +0000

description:
disable drm2 on modern nouveau cards (Pascal-based).

our older drm doesn't have any support for modern Pascal or
the second version of Maxwell (but not disabled here yet)
but the driver tries to attach on any nvidia gpu.

this should workaround PR#53258, and other issues reported
with modern nvidia chipsets.

XXX: pullup-7, pullup-8.

diffstat:

 sys/external/bsd/drm2/nouveau/nouveau_pci.c |  28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diffs (49 lines):

diff -r f6849284288b -r dba9c209de8e sys/external/bsd/drm2/nouveau/nouveau_pci.c
--- a/sys/external/bsd/drm2/nouveau/nouveau_pci.c       Mon May 21 08:49:03 2018 +0000
+++ b/sys/external/bsd/drm2/nouveau/nouveau_pci.c       Mon May 21 08:58:47 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nouveau_pci.c,v 1.8 2016/04/19 06:57:37 mrg Exp $      */
+/*     $NetBSD: nouveau_pci.c,v 1.9 2018/05/21 08:58:47 mrg Exp $      */
 
 /*-
  * Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_pci.c,v 1.8 2016/04/19 06:57:37 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_pci.c,v 1.9 2018/05/21 08:58:47 mrg Exp $");
 
 #include <sys/types.h>
 #include <sys/device.h>
@@ -91,6 +91,30 @@
        if (PCI_CLASS(pa->pa_class) != PCI_CLASS_DISPLAY)
                return 0;
 
+#define IS_BETWEEN(x,y) \
+       (PCI_PRODUCT(pa->pa_id) >= (x) && PCI_PRODUCT(pa->pa_id) <= (y))
+
+       /*
+        * NetBSD drm2 doesn't support Pascal-based cards:
+        *   0x1580-0x15ff      GP100
+        *   0x1b00-0x1b7f      GP102
+        *   0x1b80-0x1bff      GP104
+        *   0x1c00-0x1c7f      GP106
+        *   0x1c80-0x1cff      GP107
+        *   0x1d00-0x1d7f      GP108
+        *   0x1d80-0x1dff      GV100
+        */
+       
+       if (IS_BETWEEN(0x1580, 0x15ff) ||
+           IS_BETWEEN(0x1b00, 0x1b7f) ||
+           IS_BETWEEN(0x1b80, 0x1bff) ||
+           IS_BETWEEN(0x1c00, 0x1c7f) ||
+           IS_BETWEEN(0x1c80, 0x1cff) ||
+           IS_BETWEEN(0x1d00, 0x1d7f) ||
+           IS_BETWEEN(0x1d80, 0x1dff))
+               return 0;
+#undef IS_BETWEEN
+
        return 6;               /* XXX Beat genfb_pci...  */
 }
 



Home | Main Index | Thread Index | Old Index