From: Paul Durrant <paul.durrant@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [PATCH v6 00/16] x86/hvm: I/O emulation cleanup and fix
Date: Fri, 3 Jul 2015 17:25:17 +0100 [thread overview]
Message-ID: <1435940733-20856-1-git-send-email-paul.durrant@citrix.com> (raw)
This patch series re-works much of the code involved in emulation of port
and memory mapped I/O for HVM guests.
The code has become very convoluted and, at least by inspection, certain
emulations will apparently malfunction.
The series is broken down into 16 patches (which are also available in
my xenbits repo: http://xenbits.xen.org/gitweb/?p=people/pauldu/xen.git
on the emulation33 branch).
Previous changelog
------------------
v4:
- Removed previous patch (make sure translated MMIO reads or
writes fall within a page) and rebased rest of series.
- Address Jan's comments on patch #1
v3:
- Addressed comments from Jan
- Re-ordered series to bring a couple of more trivial patches to the
front
- Backport to XenServer (4.5) now passing automated tests
- Tested on unstable with QEMU upstream and trad, with and without
HAP (to force shadow emulation)
v2:
- Removed bogus assertion from patch #15
- Re-worked patch #17 after basic testing of back-port onto XenServer
Changelog (now per-patch)
-------------------------
0001-x86-hvm-make-sure-emulation-is-retried-if-domain-is-.patch
v6: Added Andrew's reviewed-by
v5: New patch to fix an issue on staging reported by Don Slutz
0002-x86-hvm-remove-multiple-open-coded-chunking-loops.patch
v6: Addressed Andrew's comments
v5: Addressed further comments from Jan
0003-x86-hvm-change-hvm_mmio_read_t-and-hvm_mmio_write_t-.patch
v6: Added Andrew's reviewed-by
v5: New patch to tidy up types
0004-x86-hvm-restrict-port-numbers-to-uint16_t-and-sizes-.patch
v6: Added Andrew's reviewed-by
v5: New patch to tidy up more types
0005-x86-hvm-unify-internal-portio-and-mmio-intercepts.patch
v6: Added Andrew's reviewed-by and made the modification requested
by Roger
v5: Addressed further comments from Jan and simplified implementation
by passing ioreq_t to accept() function
0006-x86-hvm-add-length-to-mmio-check-op.patch
v6: Added Andrew's reviewed-by
v5: Simplified by leaving mmio_check() implementation alone and
calling to check last byte if first-byte check passes
0007-x86-hvm-unify-dpci-portio-intercept-with-standard-po.patch
v6: Added Andrew's reviewed-by
v5: Addressed further comments from Jan
0008-x86-hvm-unify-stdvga-mmio-intercept-with-standard-mm.patch
v6: Added Andrew's reviewed-by
v5: Fixed semantic problems pointed out by Jan
0009-x86-hvm-limit-reps-to-avoid-the-need-to-handle-retry.patch
v6: Added comment requested by Andrew
v5: Addressed further comments from Jan
0010-x86-hvm-only-call-hvm_io_assist-from-hvm_wait_for_io.patch
v6: Added Andrew's reviewed-by
v5: Added Jan's acked-by
0011-x86-hvm-split-I-O-completion-handling-from-state-mod.patch
v6: Added Andrew's reviewed-by
v5: Confirmed call to msix_write_completion() is in the correct place.
0012-x86-hvm-remove-HVMIO_dispatched-I-O-state.patch
v6: Added Andrew's reviewed-by
v5: Added some extra comments to the commit
0013-x86-hvm-remove-hvm_io_state-enumeration.patch
v6: Added Andrew's reviewed-by
v5: Added Jan's acked-by
0014-x86-hvm-use-ioreq_t-to-track-in-flight-state.patch
v6: Added Andrew's reviewed-by
v5: Added missing hunk with call to handle_pio()
0015-x86-hvm-always-re-emulate-I-O-from-a-buffer.patch
v6: Added Andrew's reviewed-by
v5: Added Jan's acked-by
0016-x86-hvm-track-large-memory-mapped-accesses-by-buffer.patch
v6: Added Andrew's reviewed-by
v5: Fixed to cache up three distict I/O emulations per instruction
Testing
-------
The series was been back-ported to staging-4.5 and then dropped onto the
XenServer (Dundee) patch queue. All automated branch-safety tests pass.
The series as-is has been manually tested with a Windows 7 (32-bit) VM
using upstream QEMU.
next reply other threads:[~2015-07-03 16:25 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-03 16:25 Paul Durrant [this message]
2015-07-03 16:25 ` [PATCH v6 01/16] x86/hvm: make sure emulation is retried if domain is shutting down Paul Durrant
2015-07-03 16:25 ` [PATCH v6 02/16] x86/hvm: remove multiple open coded 'chunking' loops Paul Durrant
2015-07-03 17:17 ` Andrew Cooper
2015-07-08 15:52 ` Jan Beulich
2015-07-08 15:57 ` Paul Durrant
2015-07-08 16:18 ` Jan Beulich
2015-07-08 16:43 ` Andrew Cooper
2015-07-09 6:53 ` Jan Beulich
2015-07-09 8:15 ` Paul Durrant
2015-07-09 9:19 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 03/16] x86/hvm: change hvm_mmio_read_t and hvm_mmio_write_t length argument Paul Durrant
2015-07-03 16:25 ` [PATCH v6 04/16] x86/hvm: restrict port numbers to uint16_t and sizes to unsigned int Paul Durrant
2015-07-08 15:57 ` Jan Beulich
2015-07-08 15:59 ` Paul Durrant
2015-07-03 16:25 ` [PATCH v6 05/16] x86/hvm: unify internal portio and mmio intercepts Paul Durrant
2015-07-08 16:11 ` Jan Beulich
2015-07-08 16:28 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 06/16] x86/hvm: add length to mmio check op Paul Durrant
2015-07-03 16:25 ` [PATCH v6 07/16] x86/hvm: unify dpci portio intercept with standard portio intercept Paul Durrant
2015-07-08 16:29 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 08/16] x86/hvm: unify stdvga mmio intercept with standard mmio intercept Paul Durrant
2015-07-08 16:17 ` Jan Beulich
2015-07-09 9:40 ` Paul Durrant
2015-07-09 8:53 ` Jan Beulich
2015-07-09 9:00 ` Paul Durrant
2015-07-09 9:21 ` Jan Beulich
2015-07-09 9:17 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 09/16] x86/hvm: limit reps to avoid the need to handle retry Paul Durrant
2015-07-03 17:18 ` Andrew Cooper
2015-07-09 10:05 ` Jan Beulich
2015-07-09 11:11 ` Paul Durrant
2015-07-09 12:04 ` Jan Beulich
2015-07-09 12:50 ` Paul Durrant
2015-07-09 13:38 ` Jan Beulich
2015-07-09 13:42 ` Paul Durrant
2015-07-09 14:00 ` Paul Durrant
2015-07-09 14:19 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 10/16] x86/hvm: only call hvm_io_assist() from hvm_wait_for_io() Paul Durrant
2015-07-03 16:25 ` [PATCH v6 11/16] x86/hvm: split I/O completion handling from state model Paul Durrant
2015-07-09 10:09 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 12/16] x86/hvm: remove HVMIO_dispatched I/O state Paul Durrant
2015-07-09 10:13 ` Jan Beulich
2015-07-03 16:25 ` [PATCH v6 13/16] x86/hvm: remove hvm_io_state enumeration Paul Durrant
2015-07-03 16:25 ` [PATCH v6 14/16] x86/hvm: use ioreq_t to track in-flight state Paul Durrant
2015-07-03 16:25 ` [PATCH v6 15/16] x86/hvm: always re-emulate I/O from a buffer Paul Durrant
2015-07-03 16:25 ` [PATCH v6 16/16] x86/hvm: track large memory mapped accesses by buffer offset Paul Durrant
2015-07-09 10:33 ` Jan Beulich
2015-07-09 10:36 ` Paul Durrant
2015-07-09 10:34 ` Jan Beulich
2015-07-08 15:44 ` [PATCH v6 00/16] x86/hvm: I/O emulation cleanup and fix Jan Beulich
2015-07-09 11:31 ` Paul Durrant
2015-07-09 11:43 ` David Vrabel
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=1435940733-20856-1-git-send-email-paul.durrant@citrix.com \
--to=paul.durrant@citrix.com \
--cc=xen-devel@lists.xenproject.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).