Date: Wed, 2 Apr 2008 19:46:41 -0400 From: Jung-uk Kim <jkim@FreeBSD.org> To: Warren Block <wblock@wonkity.com> Cc: freebsd-ports-bugs@freebsd.org, freebsd-x11@FreeBSD.org Subject: Re: ports/122363: x11-servers/xorg-server 1.4_7, 1 locks up on mouse detection Message-ID: <200804021946.43074.jkim@FreeBSD.org> In-Reply-To: <200804021717.52043.jkim@FreeBSD.org> References: <200804020055.m320tEKh075558@freefall.freebsd.org> <alpine.BSF.1.10.0804021412300.79814@wonkity.com> <200804021717.52043.jkim@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--Boundary-00=_jrB9Hk4xV9N2vHd Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wednesday 02 April 2008 05:17 pm, Jung-uk Kim wrote: > On Wednesday 02 April 2008 04:29 pm, Warren Block wrote: > > On Wed, 2 Apr 2008, Jung-uk Kim wrote: > > > Nothing seems obviously wrong to me. :-( In fact, I was not > > > able to replicate the problem, i.e., hal, xorg-server, USB > > > mouse, PS/2 mouse, and moused on /dev/ums0. Is moused running > > > on /dev/ums0 and/or /dev/psm0? > > > > > > ps -p `pgrep -x moused` > > > > > > If not, please add the following line in /etc/rc.conf and > > > reboot: > > > > > > moused_enable="YES" > > > > moused_enable was "NO", and enabling it fixes the problem, > > allowing xorg-server to continue startup. > > > > The new requirement for moused should be mentioned in > > /usr/ports/UPDATING. > > > > The combination of moused disabled, hald, and xorg-server 1.4_7 > > stops/locks on mouse detection and prevents keyboard console > > switching. That seems like a bug. > > > > New xorg log XINPUT section: > > > > (II) evaluating device (Keyboard0) > > (II) XINPUT: Adding extended input device "Keyboard0" (type: > > KEYBOARD) (II) evaluating device (Mouse0) > > (II) XINPUT: Adding extended input device "Mouse0" (type: MOUSE) > > (II) Mouse0: SetupAuto: hw.iftype is 4, hw.model is 0 > > (II) Mouse0: SetupAuto: protocol is SysMouse, level is 1 > > ...and continues on, unlike the earlier log. > > Good. If you still want to turn off moused on /dev/psm0, you may > try to specify mouse protocol in /etc/xorg.conf because your mouse > does not work with PS/2 protocol and auto-detection does not work > for you. Can you test the attached patch without moused? Thanks, Jung-uk Kim --Boundary-00=_jrB9Hk4xV9N2vHd Content-Type: text/x-diff; charset="iso-8859-1"; name="xorg-server.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xorg-server.diff" --- xorg-server/files/patch-Xserver-hw-xfree86-os-support-bsd-bsd_mouse.c 2008-03-28 13:49:26.000000000 -0400 +++ xorg-server/files/patch-Xserver-hw-xfree86-os-support-bsd-bsd_mouse.c 2008-04-02 19:27:08.000000000 -0400 @@ -1,5 +1,5 @@ --- hw/xfree86/os-support/bsd/bsd_mouse.c.orig 2007-08-23 15:05:48.000000000 -0400 -+++ hw/xfree86/os-support/bsd/bsd_mouse.c 2008-03-28 13:49:17.000000000 -0400 ++++ hw/xfree86/os-support/bsd/bsd_mouse.c 2008-04-02 19:27:04.000000000 -0400 @@ -1,4 +1,3 @@ - /* @@ -21,7 +21,40 @@ NULL }; #elif defined(__OpenBSD__) && defined(WSCONS_SUPPORT) -@@ -184,6 +187,7 @@ +@@ -101,7 +104,7 @@ + #if defined(__NetBSD__) + return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO; + #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO | MSE_MISC; ++ return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO | MSE_MISC; + #else + return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO; + #endif +@@ -180,10 +183,30 @@ + { MOUSE_PROTO_THINK, "ThinkingMouse" }, + { MOUSE_PROTO_SYSMOUSE, "SysMouse" } + }; +- ++ ++static struct { ++ int dmodel; ++ char *name; ++} ps2proto[] = { ++ { MOUSE_MODEL_NETSCROLL, "NetScrollPS/2" }, ++ { MOUSE_MODEL_NET, "NetMousePS/2" }, ++ { MOUSE_MODEL_GLIDEPOINT, "GlidePointPS/2" }, ++ { MOUSE_MODEL_THINK, "ThinkingMousePS/2" }, ++ { MOUSE_MODEL_INTELLI, "IMPS/2" }, ++ { MOUSE_MODEL_MOUSEMANPLUS, "MouseManPlusPS/2" }, ++ { MOUSE_MODEL_VERSAPAD, "PS/2" }, ++ { MOUSE_MODEL_EXPLORER, "ExplorerPS/2" }, ++ { MOUSE_MODEL_4D, "IMPS/2" }, ++ { MOUSE_MODEL_4DPLUS, "IMPS/2" }, ++ { MOUSE_MODEL_SYNAPTICS, "PS/2" }, ++ { MOUSE_MODEL_GENERIC, "PS/2" }, ++ { MOUSE_MODEL_UNKNOWN, "PS/2" }, ++}; ++ static const char * SetupAuto(InputInfoPtr pInfo, int *protoPara) { @@ -29,7 +62,7 @@ int i; mousehw_t hw; mousemode_t mode; -@@ -192,9 +196,12 @@ +@@ -192,17 +215,20 @@ return NULL; /* set the driver operation level, if applicable */ @@ -45,18 +78,46 @@ /* interrogate the driver and get some intelligence on the device. */ hw.iftype = MOUSE_IF_UNKNOWN; hw.model = MOUSE_MODEL_GENERIC; -@@ -210,8 +217,8 @@ + ioctl(pInfo->fd, MOUSE_GETHWINFO, &hw); + xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: hw.iftype is %d, hw.model is %d\n", + pInfo->name, hw.iftype, hw.model); +- if (ioctl(pInfo->fd, MOUSE_GETMODE, &mode) == 0) { +- for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); ++i) { ++ if (ioctl(pInfo->fd, MOUSE_GETMODE, &mode) == 0) ++ for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); ++i) + if (mode.protocol == devproto[i].dproto) { + /* override some parameters */ + if (protoPara) { +@@ -210,11 +236,25 @@ protoPara[0] = mode.syncmask[0]; protoPara[1] = mode.syncmask[1]; } -- xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n", ++ if (mode.protocol != MOUSE_PROTO_PS2) { ++ xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n", ++ pInfo->name, devproto[i].name); ++ return devproto[i].name; ++ } ++ break; ++ } ++ ++ /* set extended PS/2 protocol */ ++ if (mode.protocol == MOUSE_PROTO_PS2) { ++ i = 2; ++ ioctl(pInfo->fd, MOUSE_SETLEVEL, &i); ++ ioctl(pInfo->fd, MOUSE_GETHWINFO, &hw); ++ for (i = 0; i < sizeof(ps2proto)/sizeof(ps2proto[0]); ++i) ++ if (hw.model == ps2proto[i].dmodel) { + xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n", - pInfo->name, devproto[i].name); -+ xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s, level is %d\n", -+ pInfo->name, devproto[i].name, mode.level); - return devproto[i].name; +- return devproto[i].name; ++ pInfo->name, ps2proto[i].name); ++ return ps2proto[i].name; } - } -@@ -222,6 +229,7 @@ +- } + } + return NULL; + } +@@ -222,6 +262,7 @@ static void SetSysMouseRes(InputInfoPtr pInfo, const char *protocol, int rate, int res) { @@ -64,7 +125,7 @@ mousemode_t mode; MouseDevPtr pMse; -@@ -231,11 +239,11 @@ +@@ -231,11 +272,11 @@ mode.resolution = res > 0 ? res : -1; mode.accelfactor = -1; #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) @@ -79,7 +140,7 @@ * this point. */ mode.level = 1; -@@ -249,27 +257,29 @@ +@@ -249,27 +290,29 @@ #endif #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) @@ -122,7 +183,7 @@ } return FALSE; } -@@ -309,15 +319,12 @@ +@@ -309,15 +352,12 @@ devMouse = FALSE; } close(fd); --Boundary-00=_jrB9Hk4xV9N2vHd--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804021946.43074.jkim>