xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/6] Support for running secondary emulators
@ 2014-03-05 14:47 Paul Durrant
  2014-03-05 14:47 ` [PATCH v3 1/6] ioreq-server: centralize access to ioreq structures Paul Durrant
                   ` (7 more replies)
  0 siblings, 8 replies; 48+ messages in thread
From: Paul Durrant @ 2014-03-05 14:47 UTC (permalink / raw)
  To: xen-devel

This patch series adds the ioreq server interface which I mentioned in
my talk at the Xen developer summit in Edinburgh at the end of last year.
The code is based on work originally done by Julien Grall but has been
re-written to allow existing versions of QEMU to work unmodified.

The code is available in my xen.git [1] repo on xenbits, under the 'savannah3'
branch, and I have also written a demo emulator to test the code, which can
be found in my demu.git [2] repo.


The modifications are broken down as follows:

Patch #1 basically just moves some code around to make subsequent patches
more obvious. 

Patch #2 tidies up some uses of ioreq_t as suggested by Andrew Cooper.

Patch #3 again is largely code movement, from various places into a new
hvm_ioreq_server structure. There should be no functional change at this
stage as the ioreq server is still created at domain initialisation time (as
were its contents prior to this patch).

Patch #4 is the first functional change. The ioreq server struct
initialisation is now deferred until something actually tries to play with
the HVM parameters which reference it. In practice this is QEMU, which
needs to read the ioreq pfns so it can map them.

Patch #5 is the big one. This moves from a single ioreq server per domain
to a list. The server that is created when the HVM parameters are reference
is given id 0 and is considered to be the 'catch all' server which is, after
all, how QEMU is used. Any secondary emulator, created using the new API
in xenctrl.h, will have id 1 or above and only gets ioreqs when I/O hits one
of its registered IO ranges or PCI devices.

Patch #6 pulls the PCI hotplug controller emulation into Xen. This is
necessary to allow a secondary emulator to hotplug a PCI device into the VM.
The code implements the controller in the same way as upstream QEMU and thus
the variant of the DSDT ASL used for upstream QEMU is retained.


There are no modifications to libxl to actually invoke a secondary emulator
at this stage. The only changes made are simply to increase the number of
special pages reserved for a VM to allow the use of more than one emulator
and call the new PCI hotplug API when attaching or detaching PCI devices.
The demo emulator can simply be invoked from a shell and will hotplug its
device onto the PCI bus (and remove it again when it's killed). The emulated
device is not an awful lot of use at this stage - it appears as a SCSI
controller with one IO BAR and one MEM BAR and has no intrinsic
functionality... but then it is only supposed to be demo :-)

  Paul

[1] http://xenbits.xen.org/gitweb/?p=people/pauldu/xen.git
[2] http://xenbits.xen.org/gitweb/?p=people/pauldu/demu.git

v2:
 - First non-RFC posting

v3:
 - Addressed comments from Jan Beulich

^ permalink raw reply	[flat|nested] 48+ messages in thread

end of thread, other threads:[~2014-03-20 12:10 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-05 14:47 [PATCH v3 0/6] Support for running secondary emulators Paul Durrant
2014-03-05 14:47 ` [PATCH v3 1/6] ioreq-server: centralize access to ioreq structures Paul Durrant
2014-03-05 14:47 ` [PATCH v3 2/6] ioreq-server: tidy up use of ioreq_t Paul Durrant
2014-03-10 15:43   ` George Dunlap
2014-03-10 15:46     ` Paul Durrant
2014-03-10 15:53       ` George Dunlap
2014-03-10 16:04         ` Paul Durrant
2014-03-10 16:56           ` George Dunlap
2014-03-11 10:06             ` Paul Durrant
2014-03-05 14:47 ` [PATCH v3 3/6] ioreq-server: create basic ioreq server abstraction Paul Durrant
2014-03-05 14:47 ` [PATCH v3 4/6] ioreq-server: on-demand creation of ioreq server Paul Durrant
2014-03-10 17:46   ` George Dunlap
2014-03-11 10:54     ` Paul Durrant
2014-03-14 11:04       ` Ian Campbell
2014-03-14 13:28         ` Paul Durrant
2014-03-14 11:18   ` Ian Campbell
2014-03-14 13:30     ` Paul Durrant
2014-03-05 14:48 ` [PATCH v3 5/6] ioreq-server: add support for multiple servers Paul Durrant
2014-03-14 11:52   ` Ian Campbell
2014-03-17 11:45     ` George Dunlap
2014-03-17 12:25     ` Paul Durrant
2014-03-17 12:35       ` Ian Campbell
2014-03-17 12:51         ` Paul Durrant
2014-03-17 12:53           ` Ian Campbell
2014-03-17 13:56             ` Paul Durrant
2014-03-17 14:44               ` Ian Campbell
2014-03-17 14:52                 ` Paul Durrant
2014-03-17 14:55                   ` Ian Campbell
2014-03-18 11:33                     ` Paul Durrant
2014-03-18 13:24                       ` George Dunlap
2014-03-18 13:38                         ` Paul Durrant
2014-03-18 13:45                         ` Paul Durrant
2014-03-20 11:11                   ` Tim Deegan
2014-03-20 11:22                     ` Paul Durrant
2014-03-20 12:10                       ` Paul Durrant
2014-03-05 14:48 ` [PATCH v3 6/6] ioreq-server: bring the PCI hotplug controller implementation into Xen Paul Durrant
2014-03-14 11:57   ` Ian Campbell
2014-03-14 13:25     ` Paul Durrant
2014-03-14 14:08       ` Ian Campbell
2014-03-14 14:31         ` Paul Durrant
2014-03-14 15:01           ` Ian Campbell
2014-03-14 15:18             ` Paul Durrant
2014-03-14 18:06               ` Konrad Rzeszutek Wilk
2014-03-17 11:13                 ` Paul Durrant
2014-03-10 18:57 ` [PATCH v3 0/6] Support for running secondary emulators George Dunlap
2014-03-11 10:48   ` Paul Durrant
2014-03-14 11:02 ` Ian Campbell
2014-03-14 13:26   ` Paul Durrant

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).