lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20151201225420.GA11210@syeh-linux>
Date:	Tue, 1 Dec 2015 14:54:20 -0800
From:	"Sinclair Yeh" <syeh@...are.com>
To:	Dmitry Torokhov <dmitry.torokhov@...il.com>
Cc:	X86 ML <x86@...nel.org>,
	"pv-drivers@...are.com" <pv-drivers@...are.com>,
	"linux-graphics-maintainer@...are.com" 
	<linux-graphics-maintainer@...are.com>,
	Arnd Bergmann <arnd@...db.de>,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	lkml <linux-kernel@...r.kernel.org>,
	virtualization@...ts.linux-foundation.org,
	"linux-input@...r.kernel.org" <linux-input@...r.kernel.org>
Subject: Re: [PATCH 3/6] Input: Update vmmouse.c to use the common VMW_PORT
 macros

Hi,

On Tue, Dec 01, 2015 at 02:45:27PM -0800, Dmitry Torokhov wrote:
> On Tue, Dec 1, 2015 at 2:32 PM, Sinclair Yeh <syeh@...are.com> wrote:
> > Hi,
> >

<snip>

> >> >   */
> >> > -#define VMMOUSE_CMD(cmd, in1, out1, out2, out3, out4)      \
> >> > -({                                                 \
> >> > -   unsigned long __dummy1, __dummy2;               \
> >> > -   __asm__ __volatile__ ("inl %%dx" :              \
> >> > -           "=a"(out1),                             \
> >> > -           "=b"(out2),                             \
> >> > -           "=c"(out3),                             \
> >> > -           "=d"(out4),                             \
> >> > -           "=S"(__dummy1),                         \
> >> > -           "=D"(__dummy2) :                        \
> >> > -           "a"(VMMOUSE_PROTO_MAGIC),               \
> >> > -           "b"(in1),                               \
> >> > -           "c"(VMMOUSE_PROTO_CMD_##cmd),           \
> >> > -           "d"(VMMOUSE_PROTO_PORT) :               \
> >> > -           "memory");                              \
> >> > +#define VMMOUSE_CMD(cmd, in1, out1, out2, out3, out4)                 \
> >> > +({                                                            \
> >> > +   unsigned long __dummy1 = 0, __dummy2 = 0;                  \
> >>
> >> Why do we need to initialize dummies?
> >
> > Because for some commands those parameters to VMW_PORT() can be both
> > input and outout.
> 
> The vmmouse commands do not use them as input though, so it seems we
> are simply wasting CPU cycles setting them to 0 just because we are
> using the new VMW_PORT here. Why do we need to switch? What is the
> benefit of doing this?

There are two reasons.  One is to make the code more readable and
maintainable.  Rather than having mostly similar inline assembly
code sprinkled across multiple modules, we can just use the macros
and document that.

The second reason is this organization makes some on-going future
development easier.

Hope this helps.

Sinclair
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ