From owner-freebsd-x11@FreeBSD.ORG Thu Feb 13 16:28:25 2014 Return-Path: Delivered-To: freebsd-x11@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9940F93C; Thu, 13 Feb 2014 16:28:25 +0000 (UTC) Received: from ravenloft.kiev.ua (ravenloft.kiev.ua [94.244.131.95]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 290FA1692; Thu, 13 Feb 2014 16:28:24 +0000 (UTC) Date: Thu, 13 Feb 2014 18:28:22 +0200 From: Alex Kozlov To: Robert Millan Subject: Re: [PATCH] do not feed keyboard device path in X devd backend Message-ID: <20140213162822.GA5118@ravenloft.kiev.ua> References: <52EFA9A9.2040901@freebsd.org> <52F61969.2060503@freebsd.org> <20140208135404.GA75736@ravenloft.kiev.ua> <52F63866.80505@freebsd.org> <20140209102615.GA11713@ravenloft.kiev.ua> <52FCEC09.8080409@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FCEC09.8080409@freebsd.org> Cc: freebsd-x11@freebsd.org X-BeenThere: freebsd-x11@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: X11 on FreeBSD -- maintaining and support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Feb 2014 16:28:25 -0000 On Thu, Feb 13, 2014 at 04:00:09PM +0000, Robert Millan wrote: > On 09/02/2014 10:26, Alex Kozlov wrote: > > On Sat, Feb 08, 2014 at 02:00:06PM +0000, Robert Millan wrote: > >> On 08/02/2014 13:54, Alex Kozlov wrote: > >>>> Here's a patch that implements the same behaviour with devd. I've verified > >>>> that attaching/detaching a second keyboard no longer causes this ill effect. > >>> Can you please check if devd patch from xorg-dev work for you? > >>> http://trillian.chruetertee.ch/ports/browser/trunk/x11-servers/xorg-server/files/extra-devd > >> > >> My patches are precisely against this file (devd.c). The pristine code doesn't work, but > >> with the collection of fixes I just sent everything is working fine here (been using that > >> for one week or so). > > Can you please provide Xorg.x.log before and after applying this patch? > Here. > > Note that both versions are patched (the double-free fixes are a must). Their only difference > is that "devd+full" includes this patch, and "devd+half" doesn't. > > The logs correspond each to the following sequence of events: > > - USB keyboard and mouse are connected. > - X starts. > - USB keyboard is detached. > - USB keyboard is attached. > - X stops. > > In this sequence, with "devd+half" keyboard didn't work at all (at any point) because of the > failed open() attempts, whereas with "devd+full" it worked every time (as long as it was attached, > of course). > > I'm also attaching a diff obtained with a bit of sed magic to discard the irrelevant timestamp > differences. This should make them easier to compare. I think you're using old / mismerged devd patch. > [ 1001.996] (WW) Hotplugging requested but the server was compiled without a config backend. No input devices were configured, the server will start without any input devices. This line should be like: [ 11.681] (II) The server relies on devd to provide the list of input devices. If no devices become available, reconfigure devd or disable AutoAddDevices. > [ 1002.547] (EE) Keyboard: cannot open "/dev/ukbd0" > [ 1002.547] (EE) PreInit returned 8 for "Keyboard" > [ 1002.547] (II) UnloadModule: "kbd" This should be worked around by the next code: 269 + if (attrs.flags & ATTR_KEYBOARD) { 270 + /* 271 + * Don't pass device option if keyboard is attached to console (open fails), 272 + * thus activating special logic in xf86-input-keyboard. 273 + */ 274 + fd = open(path, O_RDONLY | O_NONBLOCK | O_EXCL); 275 + if (fd > 0) { 276 + close(fd); 277 + options = input_option_new(options, "device", path); 278 + } 279 + } else { 280 + options = input_option_new(options, "device", path); 281 + } > [ 1002.547] (II) config/devd: Adding input device Keyboard (/dev/atkbd0) > [ 1002.547] (**) Keyboard: Applying InputClass "kbd catchall" > [ 1002.547] (II) Using input driver 'kbd' for 'Keyboard' > [ 1002.547] (**) Keyboard: always reports core events > [ 1002.547] (**) Keyboard: always reports core events > [ 1002.547] (**) Option "Protocol" "standard" > [ 1002.547] (**) Option "Device" "/dev/atkbd0" > [ 1002.547] (EE) Keyboard: cannot open "/dev/atkbd0" > [ 1002.547] (EE) PreInit returned 8 for "Keyboard" > [ 1002.547] (II) UnloadModule: "kbd" Btw, why both your keyboards are attached to console? -- Alex