From patchwork Thu Feb 5 18:36:03 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "David S. Ahern" X-Patchwork-Id: 5696 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n15IaCle005882 for ; Thu, 5 Feb 2009 18:36:12 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752061AbZBESgJ (ORCPT ); Thu, 5 Feb 2009 13:36:09 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753522AbZBESgJ (ORCPT ); Thu, 5 Feb 2009 13:36:09 -0500 Received: from sj-iport-1.cisco.com ([171.71.176.70]:28202 "EHLO sj-iport-1.cisco.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752061AbZBESgI (ORCPT ); Thu, 5 Feb 2009 13:36:08 -0500 X-IronPort-AV: E=Sophos;i="4.37,386,1231113600"; d="scan'208";a="138387629" Received: from sj-dkim-2.cisco.com ([171.71.179.186]) by sj-iport-1.cisco.com with ESMTP; 05 Feb 2009 18:36:07 +0000 Received: from sj-core-1.cisco.com (sj-core-1.cisco.com [171.71.177.237]) by sj-dkim-2.cisco.com (8.12.11/8.12.11) with ESMTP id n15Ia7nX015224; Thu, 5 Feb 2009 10:36:07 -0800 Received: from xbh-sjc-221.amer.cisco.com (xbh-sjc-221.cisco.com [128.107.191.63]) by sj-core-1.cisco.com (8.13.8/8.13.8) with ESMTP id n15Ia7OR021732; Thu, 5 Feb 2009 18:36:07 GMT Received: from xfe-sjc-212.amer.cisco.com ([171.70.151.187]) by xbh-sjc-221.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 5 Feb 2009 10:36:06 -0800 Received: from [10.89.20.174] ([10.89.20.174]) by xfe-sjc-212.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 5 Feb 2009 10:36:06 -0800 Message-ID: <498B3193.106@cisco.com> Date: Thu, 05 Feb 2009 11:36:03 -0700 From: "David S. Ahern" User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: Stefano Stabellini , Michael Tokarev CC: Marcelo Tosatti , Mark Marshall , KVM list , qemu-devel@nongnu.org Subject: Re: more about serial ports: do they even work? References: <497E1B15.2090908@msgid.tls.msk.ru> <497E1F7D.90300@msgid.tls.msk.ru> <49876547.1080904@cisco.com> <49876678.4090808@msgid.tls.msk.ru> <4987674E.9050201@cisco.com> <4987FCBA.7020104@msgid.tls.msk.ru> <4988032A.5010905@ntlworld.com> <20090204080942.GA3640@amt.cnet> <498953BA.7060407@msgid.tls.msk.ru> <4989776E.1060504@eu.citrix.com> In-Reply-To: <4989776E.1060504@eu.citrix.com> X-OriginalArrivalTime: 05 Feb 2009 18:36:06.0400 (UTC) FILETIME=[9B323800:01C987C0] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; l=2962; t=1233858967; x=1234722967; c=relaxed/simple; s=sjdkim2002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=daahern@cisco.com; z=From:=20=22David=20S.=20Ahern=22=20 |Subject:=20Re=3A=20more=20about=20serial=20ports=3A=20do=2 0they=20even=20work? |Sender:=20; bh=Trrj565hRB8xSdb10Zfg5gGgJfRV8Dnckeouj67IYc8=; b=slHlQMJhjYxLjwl3Rz1OcyC0j20DEb6mdZ084TOis4/kQMRcP71BLYHkoL 6Z5rrxYieFQYmJUG/kkXTgIxWiUDOrZa0gMVAJVnOkfNc1KPre18aPFC+ofn MJurfgiNq4; Authentication-Results: sj-dkim-2; header.From=daahern@cisco.com; dkim=pass ( sig from cisco.com/sjdkim2002 verified; ); Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Stefano Stabellini wrote: > Michael Tokarev wrote: > >> Other than that, an.. excellent idea, I wanted to propose >> just that when I first saw all this stuff, but was somewhat >> afraid. And I *think* there's at least *some* sense. Qemu >> is a CPU emulator and may work on another arch where those >> bits are defined differently. Maybe that was the reason for >> all this converting - to be safe than sorry, so to say. No? >> > > Yes, this is exactly the reason why they were introduced in the first place. > Let's suppose that the guest defines those constants differently: we > need to parse them and covert them appropriately to the host format. > CHR_IOCTL_SERIAL_SET_TIOCM and CHR_TIOCM_DTR correspond to the guest > version of TIOCMSET and TIOCM_DTR and can be defined differently > depending on the particular guest arch. The following works for me. It fixes the existing checks in place for the GET and replicates that for the SET. The ioctl initialization is needed in the SET is needed. david Acked-by: stefano.stabellini@eu.citrix.com --- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: trunk/qemu-char.c =================================================================== --- trunk/qemu-char.c (revision 6519) +++ trunk/qemu-char.c (working copy) @@ -1067,17 +1067,17 @@ int *targ = (int *)arg; ioctl(s->fd_in, TIOCMGET, &sarg); *targ = 0; - if (sarg | TIOCM_CTS) + if (sarg & TIOCM_CTS) *targ |= CHR_TIOCM_CTS; - if (sarg | TIOCM_CAR) + if (sarg & TIOCM_CAR) *targ |= CHR_TIOCM_CAR; - if (sarg | TIOCM_DSR) + if (sarg & TIOCM_DSR) *targ |= CHR_TIOCM_DSR; - if (sarg | TIOCM_RI) + if (sarg & TIOCM_RI) *targ |= CHR_TIOCM_RI; - if (sarg | TIOCM_DTR) + if (sarg & TIOCM_DTR) *targ |= CHR_TIOCM_DTR; - if (sarg | TIOCM_RTS) + if (sarg & TIOCM_RTS) *targ |= CHR_TIOCM_RTS; } break; @@ -1085,9 +1085,20 @@ { int sarg = *(int *)arg; int targ = 0; - if (sarg | CHR_TIOCM_DTR) + ioctl(s->fd_in, TIOCMGET, &targ); + targ &= ~(CHR_TIOCM_CTS | CHR_TIOCM_CAR | CHR_TIOCM_DSR + | CHR_TIOCM_RI | CHR_TIOCM_DTR | CHR_TIOCM_RTS); + if (sarg & CHR_TIOCM_CTS) + targ |= TIOCM_CTS; + if (sarg & CHR_TIOCM_CAR) + targ |= TIOCM_CAR; + if (sarg & CHR_TIOCM_DSR) + targ |= TIOCM_DSR; + if (sarg & CHR_TIOCM_RI) + targ |= TIOCM_RI; + if (sarg & CHR_TIOCM_DTR) targ |= TIOCM_DTR; - if (sarg | CHR_TIOCM_RTS) + if (sarg & CHR_TIOCM_RTS) targ |= TIOCM_RTS; ioctl(s->fd_in, TIOCMSET, &targ); }