From: Zachary Amsden <zach@vmware.com>
To: Alok Kataria <akataria@vmware.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
Alok kataria <alokkataria1@gmail.com>,
Ingo Molnar <mingo@elte.hu>, Yan Li <elliot.li.tech@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"joerg.roedel@amd.com" <joerg.roedel@amd.com>,
"rjmaomao@gmail.com" <rjmaomao@gmail.com>,
Yinghai Lu <yhlu.kernel@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Daniel Hecht <dhecht@vmware.com>
Subject: Re: [PATCH 1/2] VMware detection support for x86 and x86-64
Date: Thu, 25 Sep 2008 13:48:14 -0700 [thread overview]
Message-ID: <1222375694.27056.179.camel@bodhitayantram.eng.vmware.com> (raw)
In-Reply-To: <1222320201.23524.135.camel@alok-dev1>
On Wed, 2008-09-24 at 22:23 -0700, Alok Kataria wrote:
> On Wed, 2008-09-24 at 22:04 -0700, H. Peter Anvin wrote:
> > Alok Kataria wrote:
> > >>>
> > >> You accessed a bloody I/O port!
> > >>
> > >> If you think it's harmless because it was an IN, you're sorely mistaken.
> > >
> > > Hi Peter,
> > >
> > > It would be really helpful if you could explain me when can this go
> > > wrong or what kinds of problems can this cause on native hardware.
> > >
> >
> > You accessed an unknown I/O port.
> >
> > This means you caused an unknown action in an unknown peripheral device.
> >
> > This could cause ANYTHING to happen.
Peter's right. The hardware device simply sees an I/O request to a port
and a read / write. The actual internal implementation may not even see
whether it is a R/W, and may do anything. Some of our virtual hardware
is activated in strange ways, reads where you would expect writes, etc.
For example, a device made by Exploder Technologies has two ports, 3686,
and 3687. Read access to port 3686 returns the status register and any
access at all to port 3687 moves the robot arm, activating the
thermonuclear self destruct device and destroying the earth. I have
such a device in my basement, but I have to be careful not to issue any
I/O to port 3687 on it, whether it is writes OR reads.
A less contrived example is a LFSR that returns a new cryptographically
random value on every read. Reading a register would cause a state
change in the hardware, and this could be fatal to something that
requires exact synchronization of tokens, perhaps securID type
applications.
All that said, we've never encountered an I/O device that uses this ISA
port for anything at all. However, some old broken hardware might
misdecode bus addresses and try to service the I/O request anyway. So
while it might be an acceptible way for us to use in VMware tools where
it only ever makes sense to install in a VM anyway, it could be
considered non-appropriate for general kernel application.
The whole backdoor thing is also broken because it requires
non-architectural side effects to operate (IN instructions can not
arbitrarily change all GPRs). This can confuse applications which are
very smart and try to single step over the instruction by emulating it,
logging the port I/O, then restoring GPRs to the state before execution
and writing the 1 register affected by the IN. Such clever debuggers
and profiling tools have been written.
Zach
next prev parent reply other threads:[~2008-09-25 20:50 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-21 11:32 [PATCH] X86: remove WARN_ON if MTRRs are all blank Joerg Roedel
2008-02-21 11:54 ` Ingo Molnar
2008-02-21 12:47 ` Joerg Roedel
2008-02-21 13:03 ` Ingo Molnar
2008-02-21 13:27 ` Joerg Roedel
2008-09-07 23:45 ` [PATCH 1/2] VMware detection support for x86 and x86-64 Yan Li
2008-09-08 0:36 ` David Dillow
2008-09-08 1:49 ` Yan Li
2008-09-08 14:04 ` Ingo Molnar
2008-09-09 0:20 ` Yan Li
2008-09-09 0:34 ` H. Peter Anvin
2008-09-09 12:28 ` Yan Li
2008-09-09 20:12 ` H. Peter Anvin
2008-09-16 13:32 ` Yan Li
2008-09-17 10:52 ` Ingo Molnar
2008-09-17 14:03 ` Yan Li
2008-09-17 14:10 ` Ingo Molnar
2008-09-17 15:38 ` H. Peter Anvin
2008-09-24 12:22 ` [PATCH 1/2] VMware guest detection " Yan Li
2008-09-24 14:10 ` Cristi Magherusan
2008-09-24 14:23 ` Yan Li
2008-09-24 16:19 ` Alok kataria
2008-09-24 16:21 ` H. Peter Anvin
2008-09-25 0:19 ` Yan Li
2008-09-25 0:15 ` Yan Li
2008-09-25 0:26 ` H. Peter Anvin
2008-09-25 2:34 ` Yan Li
2008-09-24 18:13 ` Cristi Magherusan
2008-09-24 18:16 ` H. Peter Anvin
2008-09-25 0:23 ` Yan Li
2008-09-25 1:28 ` Bernd Eckenfels
2008-09-24 16:19 ` H. Peter Anvin
2008-09-25 0:32 ` Yan Li
2008-09-25 0:37 ` H. Peter Anvin
2008-09-25 2:48 ` Yan Li
2008-09-25 9:56 ` David Sanders
2008-09-25 10:23 ` Yan Li
2008-09-25 2:23 ` Greg KH
2008-09-25 2:47 ` Yan Li
2008-09-25 2:55 ` Greg KH
2008-09-25 3:29 ` Yan Li
2008-09-25 4:54 ` H. Peter Anvin
2008-09-25 12:56 ` Greg KH
2008-09-25 14:38 ` Yan Li
2008-09-25 2:28 ` [PATCH 1/2] VMware detection support " Alok kataria
2008-09-25 4:38 ` H. Peter Anvin
2008-09-25 4:46 ` Alok Kataria
2008-09-25 4:54 ` H. Peter Anvin
2008-09-25 5:02 ` Alok Kataria
2008-09-25 5:04 ` H. Peter Anvin
2008-09-25 5:23 ` Alok Kataria
2008-09-25 5:30 ` H. Peter Anvin
2008-09-25 8:45 ` Alan Cox
2008-09-25 20:48 ` Zachary Amsden [this message]
2008-09-25 21:59 ` H. Peter Anvin
2008-09-25 22:20 ` Zachary Amsden
2008-09-25 22:27 ` H. Peter Anvin
2008-09-26 12:27 ` Valdis.Kletnieks
2008-09-26 12:47 ` Gerd Hoffmann
2008-09-26 13:22 ` Valdis.Kletnieks
2008-09-26 17:37 ` H. Peter Anvin
2008-10-03 14:12 ` Pavel Machek
2008-09-26 20:35 ` Zachary Amsden
2008-09-25 22:17 ` David Sanders
2008-09-07 23:47 ` [PATCH 2/2] avoid mtrr warning message when running as VMware guest Yan Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1222375694.27056.179.camel@bodhitayantram.eng.vmware.com \
--to=zach@vmware.com \
--cc=akataria@vmware.com \
--cc=alokkataria1@gmail.com \
--cc=dhecht@vmware.com \
--cc=elliot.li.tech@gmail.com \
--cc=hpa@zytor.com \
--cc=joerg.roedel@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rjmaomao@gmail.com \
--cc=tglx@linutronix.de \
--cc=yhlu.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®