Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Feb 2008 09:53:07 +0300 (MSK)
From:      Eygene Ryabinkin <rea-fbsd@codelabs.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        rik@FreeBSD.org, cristi@roedu.net, nork@FreeBSD.org
Subject:   ports/120783: [patch] Synaptics Xorg driver chooses wrong input device on amd64
Message-ID:  <20080218065307.BDAFE1AF41E@void.codelabs.ru>
Resent-Message-ID: <200802180710.m1I7A1kO007512@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         120783
>Category:       ports
>Synopsis:       [patch] Synaptics Xorg driver chooses wrong input device on amd64
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Feb 18 07:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Eygene Ryabinkin
>Release:        FreeBSD 7.0-PRERELEASE amd64
>Organization:
Code Labs
>Environment:

System: FreeBSD XXX 7.0-PRERELEASE FreeBSD 7.0-PRERELEASE #15: Wed Jan 30 19:24:48 MSK 2008 root@XXX:/usr/obj/usr/src/sys/XXX amd64

>Description:

When one tries to use Synaptics driver for Xorg (ports/x11-drivers/synaptics)
on amd64, he faces the problem that the driver tries to use /dev/input/event*
node to communicate with the touchpad, even when explicitely told to use
psm device.

This problem was discuissed in the following thread:
  http://lists.freebsd.org/pipermail/freebsd-hackers/2007-December/022536.html
  http://lists.freebsd.org/pipermail/freebsd-hackers/2008-January/022964.html
  http://lists.freebsd.org/pipermail/freebsd-hackers/2008-February/023263.html

>How-To-Repeat:

Find amd64 machine, compile Xorg and Synaptics driver, enable it in the
xorg.conf (as described in /usr/ports/x11-drivers/synaptics/pkg-message)
and try to start Xorg.  You'll see in your Xorg.log messages like this:
-----
(II) Synaptics touchpad driver version 0.14.6 (1406)
Synaptics_Touchpad no synaptics event device found (checked 10 nodes)
Synaptics_Touchpad The /dev/input/event* device nodes seem to be missing
(EE) xf86OpenSerial: No Device specified.
Synaptics driver unable to open device
(EE) PreInit failed for input device "Synaptics_Touchpad"
(II) UnloadModule: "synaptics"
-----
Xorg will refuse to start.  You don't need to have touchpad in your
system in order to verify the bug's existence.  But you'll need the
touchpad to verify that the patch below eliminates the problem.

>Fix:

The real problem is that port's make instance defines ARCH variable
to be 'amd64'.  Next, it is passed to the child GNU make via
MAKEOPTIONS, so GNU make refuses to modify the ARCH variable following
the Makefile statements, because they use plain 'ARCH = something'
assignments.  Thus, ARCH is not rewritten as 'x86_64' and port is
compiled with i386 architecture defaults.  And then the option
parsing goes mad and sees no 'Protocol' statements from xorg.conf.

The following patch to the 'files/patch-Makefile' fixes the Synaptics
startup: it uses the correct driver and device.  Please, note that
I have no hardware with amd64 and Synaptics touchpad at hand, so
can not verify that the driver works correctly.  But

  1) the driver initializes correctly for me;
  2) the mentioned problem should be fixed anyway;
  3) at least Cristian Klein and rik@ have the needed hardware
     and (I hope) will try to fully test the patch.

--- synaptics-amd64-ARCH.patch begins here ---
>From 083c1be4c91da739436f2b1e509a96512ac05867 Mon Sep 17 00:00:00 2001
From: Eygene Ryabinkin <rea-fbsd@codelabs.ru>
Date: Mon, 4 Feb 2008 19:17:43 +0300

FreeBSD make sets ARCH variable to 'amd64' [1] and invokes GNU
make.  It inherits the ARCH variable and refuses to set it via
ordinary '=' operator.  So we must force ARCH assignments.

[1] Try 'make -V ARCH' in the port directory.

Signed-off-by: Eygene Ryabinkin <rea-fbsd@codelabs.ru>
---
 files/patch-Makefile |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/files/patch-Makefile b/files/patch-Makefile
index 1ae3cbe..90870c5 100644
--- a/files/patch-Makefile
+++ b/files/patch-Makefile
@@ -1,5 +1,5 @@
---- Makefile.orig	Sun Jul 16 00:58:26 2006
-+++ Makefile	Sun Aug 13 10:47:35 2006
+--- Makefile.orig	2006-07-15 19:58:26.000000000 +0400
++++ Makefile	2008-02-04 19:11:33.000000000 +0300
 @@ -12,14 +12,14 @@
  MANDIR = $(DESTDIR)$(PREFIX)/man
  
@@ -8,7 +8,8 @@
 +  ARCH = $(shell uname -m)
  endif
  ifeq ($(ARCH),amd64)
-   ARCH = x86_64
+-  ARCH = x86_64
++  override ARCH = x86_64
  endif
  ifeq ($(ARCH),x86_64)
    ARCH_DEFINES = -D__x86_64__ -D_XSERVER64
-- 
1.5.3.8
--- synaptics-amd64-ARCH.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080218065307.BDAFE1AF41E>