All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Arthur Chunqi Li <yzt356@gmail.com>
Cc: kvm <kvm@vger.kernel.org>, Paolo Bonzini <pbonzini@redhat.com>,
	Jan Kiszka <jan.kiszka@web.de>
Subject: Re: Corner cases of I/O bitmap
Date: Tue, 3 Sep 2013 15:03:51 +0300	[thread overview]
Message-ID: <20130903120351.GA17487@redhat.com> (raw)
In-Reply-To: <CABpY8M+J2oBef-VsjZxqOu_mq6y9uq02MBpVQNX756pkGJT7Dg@mail.gmail.com>

On Tue, Sep 03, 2013 at 07:59:19PM +0800, Arthur Chunqi Li wrote:
> On Tue, Sep 3, 2013 at 7:48 PM, Gleb Natapov <gleb@redhat.com> wrote:
> > On Tue, Sep 03, 2013 at 07:45:47PM +0800, Arthur Chunqi Li wrote:
> >> On Tue, Sep 3, 2013 at 7:19 PM, Gleb Natapov <gleb@redhat.com> wrote:
> >> > On Mon, Aug 12, 2013 at 08:35:57PM +0800, Arthur Chunqi Li wrote:
> >> >> Hi Gleb and Paolo,
> >> >> There are some corner cases when testing I/O bitmaps, and I don't know
> >> >> the exact action of HW.
> >> >>
> >> > A little bit late but...
> >> A little earlier mail, but you are warming up quickly, maybe it's a
> >> tough time in the past week ;)
> >> >
> >> >> 1. If we set bit of 0x4000 in bitmap and call inl(0x3FFFF) or
> >> >> inl(0x4000) in guest, what will get of exit information?
> >> >>
> >> > Spec says;
> >> > execution of an I/O instruction causes a VM exit if any bit in the I/O
> >> > bitmaps corresponding to a port it accesses is 1. Note "any" here. The
> >> > exit will have address that instruction used, otherwise how can we be
> >> > able to emulate it properly.
> >> >
> >> >> 2. What will we get when calling inl(0xFFFF) in guest with/without
> >> >> “unconditional I/O exiting” VM-execution control and “use I/O bitmaps”
> >> >> VM-execution control?
> >> > In other words are you asking what happens if you do inl(0xFFFF) on real
> >> > HW?
> >> >
> >> > "The result of an attempt to address beyond the I/O address space limit of
> >> > FFFFH is implementation-specific"
> >> >
> >> >>
> >> >> I test the two cases in nested env. For the first one, I got normal
> >> >> exit if any of the port accessed is masked in bitmap. For the second,
> >> >> it will acts the same as other ports. And the SDM says "If an I/O
> >> >> operation “wraps around” the 16-bit I/O-port space (accesses ports
> >> >> FFFFH and 0000H), the I/O instruction causes a VM exit." I cannot find
> >> >> the exact reaction of this case.
> >> > What do you mean by "exact reaction"?
> >> As to my understanding, any "wrap around" access to 0xFFFF will cause
> >> VM exit even though mask of 0xFFFF is not set, but this is only my
> >> guess. I cannot get what inl(0xFFFF) will result described in SDM. But
> >> as what you said above, we do not need to test inl(0xFFFF) because we
> >> are not expected to get a determined result.
> >>
> > Implementation-specific behaviour is only for what happens on real HW.
> > In non root operation spec says VM exit should happen and we should test
> > for that.
> I have read the patch I have committed, and found that I have tested
> inl(0xFFFF).
> Does access to 0x0 also cause VM exit in any cases of non-root operation?
> 
Only if vmcs is configured accordingly. What causes unconditional exit
in 0xFFFF case is wrap around, not address itself. inb(0xFFFF) should
not exit unconditionally.

--
			Gleb.

      reply	other threads:[~2013-09-03 12:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-12 12:35 Corner cases of I/O bitmap Arthur Chunqi Li
2013-09-03 11:19 ` Gleb Natapov
2013-09-03 11:45   ` Arthur Chunqi Li
2013-09-03 11:48     ` Gleb Natapov
2013-09-03 11:59       ` Arthur Chunqi Li
2013-09-03 12:03         ` Gleb Natapov [this message]

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=20130903120351.GA17487@redhat.com \
    --to=gleb@redhat.com \
    --cc=jan.kiszka@web.de \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=yzt356@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.