xf86-video-nv: 4 commits - configure.ac src/Makefile.am src/nv_driver.c

Aaron Plattner aplattner at kemper.freedesktop.org
Tue Jun 15 14:59:28 PDT 2010


 configure.ac    |   13 +------------
 src/Makefile.am |    2 +-
 src/nv_driver.c |   42 +++++++++---------------------------------
 3 files changed, 11 insertions(+), 46 deletions(-)

New commits:
commit 0f220eb6934edc9a1d2d7d8c11573cdc8a9280e3
Author: Aaron Plattner <aplattner at nvidia.com>
Date:   Wed Jun 2 16:06:40 2010 -0700

    Fix the kernel driver error reporting to be a little more verbose.
    
    Commit 3e9f7704122e0685ce83f7d3d3630e8a07293671 added printouts when the driver
    detects that a kernel module is attached to the given PCI device.  However, it
    uses ErrorF and doesn't print any identifying information about *which* device
    has the problem or even which driver is complaining.  Fix it to use xf86DrvMsg
    and print the driver name and PCI device and bus IDs.
    
    Signed-off-by: Aaron Plattner <aplattner at nvidia.com>

diff --git a/src/nv_driver.c b/src/nv_driver.c
index d77ea2e..f370134 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -841,9 +841,12 @@ NVPciProbe(DriverPtr drv, int entity, struct pci_device *dev, intptr_t data)
     const char *name = xf86TokenToString(NVKnownChipsets, id);
 
     if (pci_device_has_kernel_driver(dev)) {
-	ErrorF("The PCI device has a kernel module claiming it.\n");
-	ErrorF("This driver cannot operate until it has been unloaded\n");
-	return FALSE;
+        xf86DrvMsg(0, X_ERROR,
+                   NV_NAME ": The PCI device 0x%x (%s) at %2.2x@%2.2x:%2.2x:%1.1x has a kernel module claiming it.\n",
+                   id, name, dev->bus, dev->domain, dev->dev, dev->func);
+        xf86DrvMsg(0, X_ERROR,
+                   NV_NAME ": This driver cannot operate until it has been unloaded.\n");
+        return FALSE;
     }
 
     if(dev->vendor_id == PCI_VENDOR_NVIDIA && !name &&
commit 4e1efd5222ffb8328b12f63e4d8083298b44dd17
Author: Aaron Plattner <aplattner at nvidia.com>
Date:   Wed Jun 2 15:39:35 2010 -0700

    Depend on libpciaccess >= 0.10.7.
    
    This is the first version to contain pci_device_has_kernel_driver.
    
    Signed-off-by: Aaron Plattner <aplattner at nvidia.com>

diff --git a/configure.ac b/configure.ac
index d717805..02f8ab3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -89,7 +89,7 @@ AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
               [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no],
               [#include "xorg-server.h"])
 if test "x$XSERVER_LIBPCIACCESS" = "xyes"; then
-    PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.8.0])
+    PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10.7])
 fi
 
 CFLAGS="$save_CFLAGS"
commit 78ffecce368868f7b363e7f520d163e2e4330adc
Author: Aaron Plattner <aplattner at nvidia.com>
Date:   Wed Jun 2 15:29:57 2010 -0700

    Revert "Refuse to bind to a device which has kernel modesetting active."
    
    It was superseded by 3e9f7704122e0685ce83f7d3d3630e8a07293671, which depends on
    libpciaccess and not libdrm.  This is better, because the server already depends
    on the former, while the latter is optional.
    
    This reverts commit 17ab5dbea69e690cbf78c25040db518471e0887f.
    
    Conflicts:
    
    	src/nv_driver.c

diff --git a/configure.ac b/configure.ac
index c51ab4a..d717805 100644
--- a/configure.ac
+++ b/configure.ac
@@ -134,17 +134,6 @@ AC_SUBST([modes_dir])
 AC_SUBST([XORG_CFLAGS])
 AC_SUBST([moduledir])
 
-if test "x$XSERVER_LIBPCIACCESS" = xyes; then
-    PKG_CHECK_MODULES(LIBDRM, [libdrm > 2.4.3 xf86driproto], HAVE_KMS="yes", HAVE_KMS="no")
-    if test "x$HAVE_KMS" = xyes; then
-        AC_DEFINE(HAVE_KMS, 1, [Have kernel modesetting])
-    else
-        AC_MSG_WARN(Support for detecting kernel modesetting drivers is not available.)
-        AC_MSG_WARN(This driver can cause display problems in the presence of kernel modesetting.)
-        AC_MSG_WARN(Please install libdrm > 2.4.3 and xf86driproto to enable KMS detection.)
-    fi
-fi
-
 DRIVER_NAME=nv
 AC_SUBST([DRIVER_NAME])
 
diff --git a/src/Makefile.am b/src/Makefile.am
index 5d57010..2677d9c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -23,7 +23,7 @@
 # -avoid-version prevents gratuitous .0.0.0 version numbers on the end
 # _ladir passes a dummy rpath to libtool so the thing will actually link
 # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
-AM_CFLAGS = @XMODES_CFLAGS@ @XORG_CFLAGS@ $(LIBDRM_CFLAGS)
+AM_CFLAGS = @XMODES_CFLAGS@ @XORG_CFLAGS@
 nv_drv_la_LTLIBRARIES = nv_drv.la
 nv_drv_la_LDFLAGS = -module -avoid-version
 nv_drv_ladir = @moduledir@/drivers
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 9fe70b2..d77ea2e 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -33,11 +33,6 @@
 #include "xf86int10.h"
 #include "vbeModes.h"
 
-#ifdef HAVE_KMS
-#include <xf86drmMode.h>
-#include <dri.h>
-#endif
-
 const   OptionInfoRec * RivaAvailableOptions(int chipid, int busid);
 Bool    RivaGetScrnInfoRec(PciChipsets *chips, int chip);
 Bool    G80GetScrnInfoRec(PciChipsets *chips, int chip);
@@ -835,26 +830,6 @@ NVIsSupported(CARD32 id)
     return FALSE;
 }
 
-#ifdef HAVE_KMS
-static Bool NVKernelModesettingEnabled(struct pci_device *device)
-{
-    char *busIdString;
-    int ret;
-
-    if (!xf86LoaderCheckSymbol("DRICreatePCIBusID"))
-        return FALSE;
-
-    busIdString = DRICreatePCIBusID(device);
-
-    ret = drmCheckModesettingSupported(busIdString);
-    free(busIdString);
-
-    return (ret == 0);
-}
-#else
-static inline Bool NVKernelModesettingEnabled(struct pci_device *device) { return FALSE; }
-#endif //HAVE_KMS
-
 /* Mandatory */
 #if XSERVER_LIBPCIACCESS
 static Bool
@@ -895,14 +870,6 @@ NVPciProbe(DriverPtr drv, int entity, struct pci_device *dev, intptr_t data)
                NV_NAME ": Found NVIDIA %s at %2.2x@%2.2x:%2.2x:%1.1x\n",
                name, dev->bus, dev->domain, dev->dev, dev->func);
 
-    /* Trying to bring up a NV mode while kernel modesetting is enabled
-       results in badness */
-    if (NVKernelModesettingEnabled(dev)) {
-        xf86Msg(X_ERROR,
-                NV_NAME ": Kernel modesetting driver in use, refusing to load\n");
-        return FALSE;
-    }
-
     if(NVIsG80(id))
         return G80GetScrnInfoRec(NULL, entity);
     else if(dev->vendor_id == PCI_VENDOR_NVIDIA_SGS)
commit 133f7c4d51b3c7d7e1e7af80056947d3a7ec2097
Author: Ben Skeggs <bskeggs at redhat.com>
Date:   Fri Aug 28 09:43:16 2009 +1000

    nv: refuse to load if there's a kernel driver bound to the device already
    
    Signed-off-by: Aaron Plattner <aplattner at nvidia.com>

diff --git a/src/nv_driver.c b/src/nv_driver.c
index 3063633..9fe70b2 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -865,6 +865,12 @@ NVPciProbe(DriverPtr drv, int entity, struct pci_device *dev, intptr_t data)
                       NVGetPCIXpressChip(dev) : dev->vendor_id << 16 | dev->device_id;
     const char *name = xf86TokenToString(NVKnownChipsets, id);
 
+    if (pci_device_has_kernel_driver(dev)) {
+	ErrorF("The PCI device has a kernel module claiming it.\n");
+	ErrorF("This driver cannot operate until it has been unloaded\n");
+	return FALSE;
+    }
+
     if(dev->vendor_id == PCI_VENDOR_NVIDIA && !name &&
        !NVIsSupported(id) && !NVIsG80(id)) {
         /* See if pci.ids knows what the heck this thing is */


More information about the xorg-commit mailing list