diff --git a/.gitignore b/.gitignore index 4fd75a1..9e93499 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/xf86-input-vmmouse-13.0.0.tar.bz2 +SOURCES/xf86-input-vmmouse-13.1.0.tar.bz2 diff --git a/.xorg-x11-drv-vmmouse.metadata b/.xorg-x11-drv-vmmouse.metadata index c3b9ab9..fa8d1ef 100644 --- a/.xorg-x11-drv-vmmouse.metadata +++ b/.xorg-x11-drv-vmmouse.metadata @@ -1 +1 @@ -0fa67d2ca9b2b26d32b93cc030fc3ea28964fe81 SOURCES/xf86-input-vmmouse-13.0.0.tar.bz2 +c00fbf985b22a86901fa905a8037005bca96d805 SOURCES/xf86-input-vmmouse-13.1.0.tar.bz2 diff --git a/SOURCES/0001-Back-off-if-we-detect-a-vmmouse-kernel-driver-v3.patch b/SOURCES/0001-Back-off-if-we-detect-a-vmmouse-kernel-driver-v3.patch deleted file mode 100644 index 838e26f..0000000 --- a/SOURCES/0001-Back-off-if-we-detect-a-vmmouse-kernel-driver-v3.patch +++ /dev/null @@ -1,204 +0,0 @@ -From 3648411c356d6ee35d82759b7b1c01e75c8a3e6b Mon Sep 17 00:00:00 2001 -From: Thomas Hellstrom -Date: Wed, 1 Oct 2014 21:04:30 +0200 -Subject: [PATCH vmmouse] Back off if we detect a vmmouse kernel driver v3 - -If a vmmouse kernel driver is active, vmmouse input is handled by the Xorg -evdev driver and not by the vmmouse driver, so make sure the vmmouse_detect -utility doesn't detect a vmmouse if a kernel driver is active. - -v2: Change the vmmouse kernel device name, fix comment. -v3: Fix up libudev error handling. - -Signed-off-by: Thomas Hellstrom -Reviewed-by: Sinclair Yeh -(cherry picked from commit 576e8123d9f9f01ef6041cdfb96ca811197d05d2) ---- - configure.ac | 14 +++++++ - tools/Makefile.am | 7 +++- - tools/vmmouse_detect.c | 7 ++-- - tools/vmmouse_udev.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 127 insertions(+), 5 deletions(-) - create mode 100644 tools/vmmouse_udev.c - -diff --git a/configure.ac b/configure.ac -index 1ffc219..fd5d3f1 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -111,6 +111,20 @@ XORG_DRIVER_CHECK_EXT(RANDR, randrproto) - XORG_DRIVER_CHECK_EXT(XINPUT, inputproto) - - # Checks for pkg-config packages -+libudev_check=yes -+AC_ARG_WITH([libudev], -+ [AS_HELP_STRING([--without-libudev], -+ [Use to build without libudev on linux])], -+ [if test x$withval = xno; then libudev_check=no; fi] -+ []) -+ -+if test x`uname` = xLinux -a $libudev_check = yes; then -+ PKG_CHECK_MODULES(LIBUDEV, [libudev], -+ [AC_DEFINE([HAVE_LIBUDEV], 1, -+ [Has libudev installed])], -+ []); -+fi -+ - PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.1] xproto $REQUIRED_MODULES) - - PKG_CHECK_EXISTS([xorg-server >= 1.1.0], -diff --git a/tools/Makefile.am b/tools/Makefile.am -index ea7ba66..ecc73f7 100644 ---- a/tools/Makefile.am -+++ b/tools/Makefile.am -@@ -22,8 +22,11 @@ bin_PROGRAMS = @DRIVER_NAME@_detect - - AM_CPPFLAGS = -I$(top_srcdir)/shared $(XORG_CFLAGS) - --@DRIVER_NAME@_detect_SOURCES = vmmouse_detect.c --@DRIVER_NAME@_detect_LDADD = $(top_builddir)/shared/lib@DRIVER_NAME@.la -+@DRIVER_NAME@_detect_SOURCES = vmmouse_detect.c vmmouse_udev.c -+@DRIVER_NAME@_detect_LDADD = $(top_builddir)/shared/lib@DRIVER_NAME@.la \ -+ @LIBUDEV_LIBS@ -+@DRIVER_NAME@_detect_CFLAGS = @LIBUDEV_CFLAGS@ -+ - - calloutsdir=$(HAL_CALLOUTS_DIR) - callouts_SCRIPTS = hal-probe-vmmouse -diff --git a/tools/vmmouse_detect.c b/tools/vmmouse_detect.c -index cfb92e1..6402b16 100644 ---- a/tools/vmmouse_detect.c -+++ b/tools/vmmouse_detect.c -@@ -30,9 +30,7 @@ - #include - #include "vmmouse_client.h" - --#ifdef HAVE_CONFIG_H --#include "config.h" --#endif -+extern int vmmouse_uses_kernel_driver(void); - - void - segvCB(int sig) -@@ -46,6 +44,9 @@ segvCB(int sig) - int - main(void) - { -+ if (vmmouse_uses_kernel_driver()) -+ return 1; -+ - /* - * If the vmmouse test is not run in a VMware virtual machine, it - * will segfault instead of successfully accessing the port. -diff --git a/tools/vmmouse_udev.c b/tools/vmmouse_udev.c -new file mode 100644 -index 0000000..dc100ae ---- /dev/null -+++ b/tools/vmmouse_udev.c -@@ -0,0 +1,104 @@ -+/* -+ * Copyright 2014 by VMware, Inc. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * Except as contained in this notice, the name of the copyright holder(s) -+ * and author(s) shall not be used in advertising or otherwise to promote -+ * the sale, use or other dealings in this Software without prior written -+ * authorization from the copyright holder(s) and author(s). -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif -+ -+#ifdef HAVE_LIBUDEV -+#include -+#include -+#include -+ -+#define KERNEL_DEVNAME "VirtualPS/2 VMware VMMouse" -+ -+/** -+ * vmmouse_uses_kernel_driver - Check whether there's an active -+ * vmmouse driver in the kernel. -+ * -+ * Returns 0 if there was no kernel driver found. -+ * Returns non-zero on error or if there was an active driver found. -+ * -+ * Scans the input subsystem for devices matching KERNEL_DEVNAME. These -+ * devices are assumed to be active vmmouse drivers. -+ */ -+int vmmouse_uses_kernel_driver(void) -+{ -+ struct udev *udev; -+ struct udev_enumerate *enumerate; -+ struct udev_list_entry *devices, *dev_list_entry; -+ struct udev_device *dev; -+ -+ udev = udev_new(); -+ if (!udev) -+ return 1; -+ -+ /* -+ * Udev error return codes that are not caught immediately are -+ * typically caught in the input argument check in the udev -+ * function calls following the failing call! -+ */ -+ enumerate = udev_enumerate_new(udev); -+ if (udev_enumerate_add_match_subsystem(enumerate, "input")) -+ goto out_err; -+ if (udev_enumerate_scan_devices(enumerate)) -+ goto out_err; -+ -+ devices = udev_enumerate_get_list_entry(enumerate); -+ udev_list_entry_foreach(dev_list_entry, devices) { -+ const char *path, *name; -+ -+ path = udev_list_entry_get_name(dev_list_entry); -+ dev = udev_device_new_from_syspath(udev, path); -+ if (!dev) -+ goto out_err; -+ name = udev_device_get_sysattr_value(dev, "name"); -+ if (name && !strcasecmp(name, KERNEL_DEVNAME)) -+ goto out_found; -+ -+ udev_device_unref(dev); -+ } -+ -+ udev_enumerate_unref(enumerate); -+ udev_unref(udev); -+ -+ return 0; -+ -+ out_found: -+ udev_device_unref(dev); -+ out_err: -+ udev_enumerate_unref(enumerate); -+ udev_unref(udev); -+ -+ return 1; -+} -+#else -+int vmmouse_uses_kernel_driver(void) -+{ -+ return 0; -+} -+#endif --- -2.7.4 - diff --git a/SOURCES/vmmouse-12.6.9-iopl-revert.patch b/SOURCES/vmmouse-12.6.9-iopl-revert.patch deleted file mode 100644 index 4a3b801..0000000 --- a/SOURCES/vmmouse-12.6.9-iopl-revert.patch +++ /dev/null @@ -1,34 +0,0 @@ -From e9ef63e19d8f9993950f1f06299aee1eb18ded9f Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Thu, 1 Jul 2010 08:45:53 +1000 -Subject: [PATCH] Revert "Remove call to iopl(). It's not portable and isn't necessary." - -https://bugzilla.redhat.com/show_bug.cgi?id=604660 - -For details, see: -https://bugzilla.novell.com/show_bug.cgi?id=604966 - -This reverts commit bcdec3d0cd4434770cd841c33c030e0d7203881f. ---- - tools/vmmouse_detect.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -diff --git a/tools/vmmouse_detect.c b/tools/vmmouse_detect.c -index ac238b4..cfb92e1 100644 ---- a/tools/vmmouse_detect.c -+++ b/tools/vmmouse_detect.c -@@ -53,6 +53,11 @@ main(void) - signal(SIGSEGV, segvCB); - - #if defined __i386__ || defined __x86_64__ -+ /* -+ * To access i/o ports above 0x3ff, we need to be in iopl(3). -+ */ -+ -+ iopl(3); - if (VMMouseClient_Enable()) { - VMMouseClient_Disable(); - return 0; --- -1.7.1 - diff --git a/SPECS/xorg-x11-drv-vmmouse.spec b/SPECS/xorg-x11-drv-vmmouse.spec index 2711bd8..b9698b4 100644 --- a/SPECS/xorg-x11-drv-vmmouse.spec +++ b/SPECS/xorg-x11-drv-vmmouse.spec @@ -7,8 +7,8 @@ Summary: Xorg X11 vmmouse input driver Name: xorg-x11-drv-vmmouse -Version: 13.0.0 -Release: 12%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} +Version: 13.1.0 +Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X Hardware Support @@ -21,12 +21,6 @@ Source2: commitid Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2 %endif -# 604660 - vmmouse_detect unexpected exit with status 0x000b -Patch2: vmmouse-12.6.9-iopl-revert.patch - -# https://bugzilla.redhat.com/show_bug.cgi?id=1354636 -Patch3: 0001-Back-off-if-we-detect-a-vmmouse-kernel-driver-v3.patch - # Yes, this is not the same as vmware. Yes, this is intentional. ExclusiveArch: %{ix86} x86_64 @@ -42,12 +36,13 @@ X.Org X11 vmmouse input driver. %prep %setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}} -%patch2 -p1 -%patch3 -p1 %build autoreconf -v --install --force || exit 1 -%configure --disable-static --disable-silent-rules --with-xorg-conf-dir='%{_datadir}/X11/xorg.conf.d' +%configure --disable-static \ + --disable-silent-rules \ + --with-xorg-conf-dir='%{_datadir}/X11/xorg.conf.d' \ + --with-udev-rules-dir='%{_prefix}/lib/udev/rules.d' make %{?_smp_mflags} %install @@ -75,6 +70,9 @@ rm -rf $RPM_BUILD_ROOT %{_prefix}/lib/udev/rules.d/*.rules %changelog +* Thu Jan 26 2017 Peter Hutterer 13.1.0-1 +- Rebase to 13.1.0 (#1401645) + * Wed Sep 07 2016 Peter Hutterer 13.0.0-12 - Don't use vmmouse if the vmmouse kernel driver is detected (#1354636)