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

xserver-xorg-video-nouveau: Changes to 'upstream-experimental'



 configure.ac          |    2 +-
 src/drmmode_display.c |   17 ++++++++++++++++-
 src/nouveau_copy.c    |    2 ++
 src/nouveau_exa.c     |    1 +
 src/nv_accel_common.c |    1 +
 src/nv_driver.c       |    4 ++++
 src/nv_type.h         |    1 +
 src/nvc0_accel.c      |    6 ++++++
 8 files changed, 32 insertions(+), 2 deletions(-)

New commits:
commit a7c190e0c230ed2d5e047ed6aba12d71a4866950
Author: Lyude <lyude@redhat.com>
Date:   Fri Apr 21 14:41:17 2017 -0400

    Bump version to 1.0.15
    
    Signed-off-by: Lyude <lyude@redhat.com>

diff --git a/configure.ac b/configure.ac
index e494300..0b01d3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-nouveau],
-        [1.0.14],
+        [1.0.15],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-nouveau])
 

commit 3047e99a641d2b8720371aae292750206f5e91fc
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Thu Apr 20 15:57:33 2017 +1000

    fix null pointer deref when building against >=libdrm 2.4.78
    
    A new pointer got added to drmEventContext.
    
    As a result of us both:
    - Setting drmEventContext.version to "latest" AND
    - Not zeroing the struct
    
    We end up thwarting libdrm's compatibility checks, resulting in
    libdrm choosing to call through an invalid pointer.
    
    Fix this by zeroing the struct.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index ae29d9a..2b71c9c 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1433,7 +1433,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
 	unsigned int crtcs_needed = 0;
 	int crtcshift;
 
-	drmmode = xnfalloc(sizeof *drmmode);
+	drmmode = xnfcalloc(sizeof(*drmmode), 1);
 	drmmode->fd = fd;
 	drmmode->fb_id = 0;
 

commit e9418e434311336e905b70553a5ed740838d90ad
Author: Mariusz Bialonczyk <manio@skyboo.net>
Date:   Wed Mar 29 22:07:50 2017 +0200

    Do not register hotplug without RandR
    
    When using Xinerama, RandR is automatically disabled, and calling RR
    routines will trigger an assert() because the RR keys/resources are
    not set, leading to an Xserver abort.
    
    Hotplug makes little sense without RandR, so no need to install a
    udev monitor if RandR is not available.
    
    Ported from xf86-video-intel commit
    1a489142c8e6a4828348cc9afbd0f430d3b1e2d8, original work by:
    Chris Wilson <chris@chris-wilson.co.uk>
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98383
    Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
    Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index dd9fa27..ae29d9a 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1556,6 +1556,15 @@ drmmode_udev_notify(int fd, int notify, void *data)
 }
 #endif
 
+static bool has_randr(void)
+{
+#if HAS_DIXREGISTERPRIVATEKEY
+	return dixPrivateKeyRegistered(rrPrivKey);
+#else
+	return *rrPrivKey;
+#endif
+}
+
 static void
 drmmode_uevent_init(ScrnInfoPtr scrn)
 {
@@ -1564,6 +1573,12 @@ drmmode_uevent_init(ScrnInfoPtr scrn)
 	struct udev *u;
 	struct udev_monitor *mon;
 
+	/* RandR will be disabled if Xinerama is active, and so generating
+	 * RR hotplug events is then forbidden.
+	 */
+	if (!has_randr())
+		return;
+
 	u = udev_new();
 	if (!u)
 		return;

commit e472b47d15634a864c8c981ed588d882aceaf26b
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Tue Mar 21 21:25:33 2017 -0400

    Add Pascal family support, identical to Maxwell
    
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Tested-by: Lyude <lyude@redhat.com>

diff --git a/src/nouveau_copy.c b/src/nouveau_copy.c
index 7118a7a..7fbcc87 100644
--- a/src/nouveau_copy.c
+++ b/src/nouveau_copy.c
@@ -42,6 +42,7 @@ nouveau_copy_init(ScreenPtr pScreen)
 		int engine;
 		Bool (*init)(NVPtr);
 	} methods[] = {
+		{ 0xc1b5, 0, nouveau_copya0b5_init },
 		{ 0xc0b5, 0, nouveau_copya0b5_init },
 		{ 0xb0b5, 0, nouveau_copya0b5_init },
 		{ 0xa0b5, 0, nouveau_copya0b5_init },
@@ -84,6 +85,7 @@ nouveau_copy_init(ScreenPtr pScreen)
 		break;
 	case NV_KEPLER:
 	case NV_MAXWELL:
+	case NV_PASCAL:
 		ret = nouveau_object_new(&pNv->dev->object, 0,
 					 NOUVEAU_FIFO_CHANNEL_CLASS,
 					 &(struct nve0_fifo) {
diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c
index 0f02b99..55df6f8 100644
--- a/src/nouveau_exa.c
+++ b/src/nouveau_exa.c
@@ -515,6 +515,7 @@ nouveau_exa_init(ScreenPtr pScreen)
 	case NV_FERMI:
 	case NV_KEPLER:
 	case NV_MAXWELL:
+	case NV_PASCAL:
 		exa->CheckComposite   = NVC0EXACheckComposite;
 		exa->PrepareComposite = NVC0EXAPrepareComposite;
 		exa->Composite        = NVC0EXAComposite;
diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c
index 5d12dd8..5561708 100644
--- a/src/nv_accel_common.c
+++ b/src/nv_accel_common.c
@@ -723,6 +723,7 @@ NVAccelCommonInit(ScrnInfoPtr pScrn)
 	case NV_FERMI:
 	case NV_KEPLER:
 	case NV_MAXWELL:
+	case NV_PASCAL:
 		INIT_CONTEXT_OBJECT(3D_NVC0);
 		break;
 	case NV_TESLA:
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 61940a8..32062eb 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -391,6 +391,7 @@ NVHasKMS(struct pci_device *pci_dev, struct xf86_platform_device *platform_dev)
 	case 0x100:
 	case 0x110:
 	case 0x120:
+	case 0x130:
 		break;
 	default:
 		xf86DrvMsg(-1, X_ERROR, "Unknown chipset: NV%02X\n", chipset);
@@ -945,6 +946,9 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
 	case 0x120:
 		pNv->Architecture = NV_MAXWELL;
 		break;
+	case 0x130:
+		pNv->Architecture = NV_PASCAL;
+		break;
 	default:
 		return FALSE;
 	}
diff --git a/src/nv_type.h b/src/nv_type.h
index d7bb4f4..6dc5793 100644
--- a/src/nv_type.h
+++ b/src/nv_type.h
@@ -23,6 +23,7 @@
 #define NV_FERMI    0xc0
 #define NV_KEPLER   0xe0
 #define NV_MAXWELL  0x110
+#define NV_PASCAL   0x130
 
 struct xf86_platform_device;
 
diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c
index 6c2bae8..1047d36 100644
--- a/src/nvc0_accel.c
+++ b/src/nvc0_accel.c
@@ -250,6 +250,12 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
 	} else if (pNv->dev->chipset < 0x130) {
 		class  = 0xb197;
 		handle = 0x0000906e;
+	} else if (pNv->dev->chipset == 0x130) {
+		class  = 0xc097;
+		handle = 0x0000906e;
+	} else if (pNv->dev->chipset < 0x140) {
+		class  = 0xc197;
+		handle = 0x0000906e;
 	} else {
 		xf86DrvMsg(pScrn->scrnIndex, X_INFO,
 			   "No 3D acceleration support for NV%X\n",


Reply to: