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