From: "Philippe Mathieu-Daudé" <1693050@bugs.launchpad.net>
To: qemu-devel@nongnu.org
Subject: [Bug 1693050] Re: xhci HCIVERSION register read emulation incorrectly handled
Date: Thu, 26 Mar 2020 18:54:26 -0000 [thread overview]
Message-ID: <158524886678.11449.17935218369956127168.malone@soybean.canonical.com> (raw)
In-Reply-To: 149558234717.18218.15801621819682136328.malonedeb@chaenomeles.canonical.com
Odd, this should be fixed by commit 6ee021d41 and
36960b4d66..98f52cdbb5c.
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1693050
Title:
xhci HCIVERSION register read emulation incorrectly handled
Status in QEMU:
New
Bug description:
We had an illumos user trying to run illumos in QEMU 2.9.0 with the
qemu-xhci device enabled. Note, that while this was discovered against
QEMU 2.9.0, from my current read of the HEAD, it is still present. The
illumos bug at https://www.illumos.org/issues/8173 has additional
information on how the user invoked qemu. While investigating the
problem we found that the illumos driver was reading a version of
0x0000 when reading the HCIVERSION register from qemu.
In the illumos driver we're performing a 16-bit read of the version
register at offset 0x2. From looking around at other OSes, while Linux
performs a 4 byte read at offset 0x0 and masks out the version, others
that care about the version are doing a two byte read, though not all
actually act on the version and some just discard the information.
The user who hit this was able to enable tracing (note the tracing
file is attached to the illumos bug linked previously) and we hit the
unimplemented register read with offset 0x2 at
http://git.qemu.org/?p=qemu.git;a=blob;f=hw/usb/hcd-
xhci.c;hb=HEAD#l2960. The xhci register specifies today that its
allowed for users to do 1-4 byte reads; however, that it implements
only four byte reads in its implementation
(http://git.qemu.org/?p=qemu.git;a=blob;f=hw/usb/hcd-
xhci.c;hb=HEAD#l3333). Hence why when we read the HCIVERSION register
at offset 0x2, it isn't handled in xhci_cap_read() which then returns
zeros.
From digging into this, I think that we're coming into
memory_region_dispatch_read() and then memory_region_dispatch_read1().
However, I don't see anything in either the general memory region
logic or in the xhci_cap_read() function that would deal with
adjusting the offset that we're reading at and then masking it off
again. While the access_with_adjusted_size() attempts to deal with
this, it never adjusts the hardware address that's passed in to be a
multiple of the implementation defined offset that I can see. I
suspect that the FIXME at line 582
(http://git.qemu.org/?p=qemu.git;a=blob;f=memory.c;hb=HEAD#l582) and
the implementation in the xhci code is the crux of the problem.
For the time being we're working around this in the illumos driver,
but I wanted to point this out such that it might be helpful for other
systems which are assuming that they can do the two byte read like on
hardware.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1693050/+subscriptions
next prev parent reply other threads:[~2020-03-26 19:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-23 23:32 [Qemu-devel] [Bug 1693050] [NEW] xhci HCIVERSION register read emulation incorrectly handled Robert Mustacchi
2020-03-25 20:50 ` [Bug 1693050] " Paul Menzel
2020-03-26 18:54 ` Philippe Mathieu-Daudé [this message]
2020-03-26 21:16 ` Paul Menzel
2021-05-05 8:17 ` Thomas Huth
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=158524886678.11449.17935218369956127168.malone@soybean.canonical.com \
--to=1693050@bugs.launchpad.net \
--cc=qemu-devel@nongnu.org \
/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;
as well as URLs for NNTP newsgroup(s).