From: Paolo Bonzini <pbonzini@redhat.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: "peter.maydell@linaro.org" <peter.maydell@linaro.org>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
"anthony@codemonkey.ws" <anthony@codemonkey.ws>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Allen M. Kay" <allen.m.kay@intel.com>,
"Kelly.Zytaruk@amd.com" <Kelly.Zytaruk@amd.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"yang.z.zhang@intel.com" <yang.z.zhang@intel.com>,
Stefano Stabellini <Stefano.Stabellini@citrix.com>,
Ross Philipson <ross.philipson@citrix.com>,
Anthony Perard <anthony.perard@citrix.com>,
"Chen, Tiejun" <tiejun.chen@intel.com>
Subject: [Qemu-devel] ResettRe: [Xen-devel] [v5][PATCH 0/5] xen: add Intel IGD passthrough support
Date: Wed, 02 Jul 2014 16:50:15 +0200 [thread overview]
Message-ID: <53B41C27.4030706@redhat.com> (raw)
In-Reply-To: <20140702140033.GG19068@laptop.dumpdata.com>
Il 02/07/2014 16:00, Konrad Rzeszutek Wilk ha scritto:
> With this long thread I lost a bit context about the challenges
> that exists. But let me try summarizing it here - which will hopefully
> get some consensus.
>
> 1). Fix IGD hardware to not use Southbridge magic addresses.
> We can moan and moan but I doubt it is going to change.
There are two problems:
- Northbridge (i.e. MCH i.e. PCI host bridge) configuration space addresses
- Southbridge (i.e. PCH i.e. ISA bridge) vendor/device ID; some versions
of the driver identify it by class, some versions identify it by slot
(1f.0).
To solve the first, make a new machine type, PIIX4-based, and pass
through the registers you need. The patch must document _exactly_ why
the registers are safe to pass. If they are not reserved on PIIX4, the
patch must document what the same offsets mean on PIIX4, and why it's
sensible to assume that firmware for virtual machine will not read/write
them. Bonus point for also documenting the same for Q35.
Regarding the second, fixing IGD hardware to not rely on chipset magic
is a no-go, I agree. I disagree that it's a no-go to define a
"backdoor" that lets a hypervisor pass the right information to the
driver without hacking the chipset device model.
The hardware folks would have to give us a place for a pair of registers
(something like data/address), and a bit somewhere else that would be
always 0 on hardware and always 1 if the hypervisor is implementing the
pair of registers. This is similar to CPUID, which has the HYPERVISOR
bit + hypervisor-defined leaves at 0x40000000.
The data/address pair could be in a BAR, in configuration space, in the
low VGA ports at 0x3c0-0x3df, wherever. The hypervisor bit can be in
the same place or somewhere else---again, whatever is convenient for the
hardware folks. We just need *one bit* that is known-zero on all
hardware, and 8 bytes in a reserved area. I don't think it's too hard
to find this space, and I really, really would like Intel to follow up
on a paravirtualized backdoor.
That said, we have the problem of existing guests, so I agree something
else is needed.
> a) Two bridges - one 'passthrough' and the legacy ISA bridge
> that QEMU emulates. Both Linux and Windows are OK with
> two bridges (even thought it is pretty weird).
This is pretty much the only solution for existing Linux guests that
look up the southbridge by class.
The proposed solution here is to define a new "pci stub" device in QEMU
that lets you define a do-nothing device with your desired vendor ID,
device ID, class and optionally subsystem IDs.
The new machine type (the one that instantiates the special
IGD-passthrough-enabled northbridge) can then instantiate this stub
device at 1f.0 with the desired vendor ID, device ID and class ID.
If we cannot get the paravirtualized backdoor, it would also make sense to:
- have drivers standardize on a single way to probe the southbridge
- make this be neither by class (because the firmware wants to
distinguish the actual ISA bridge from the stub, and it can do so by
looking up the class), nor by slot (because this conflicts with the Q35
chipset model that has the southbridge at 1f.0).
mst's proposal was to probe by subsystem id. I'm not sure I understood
the details exactly, but I trust him. :) However, in case it wasn't
clear I think a paravirtualized backdoor would still be better.
> b) One bridge - the one that QEMU emulates - and lets emulate
> more of the registers (by emulate - I mean for some get the
> data from the real hardware).
>
> b1). We can't use the legacy because the registers are
> above 256 (is that correct? Did I miss something?)
As I understand it, mst brought up Q35 because the northbridge
configuration space layout might be more similar to what the driver
expects than for PIIX4. But I don't think anyone really said whether
this is true or false.
I think Q35 is absolutely not a requirement for IGD passthrough,
especially until this statement is either proved or disproved.
> 4). Code does a bit of sysfs that could use some refacturing with
> the KVM code.
> Problem: More time needed to do the code restructing.
FWIW, I don't really care about code sharing with KVM. That's a
separate problem and it's not necessary to bring it up and make waters
even more muddy.
Paolo
next prev parent reply other threads:[~2014-07-02 14:50 UTC|newest]
Thread overview: 169+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-25 2:17 [Qemu-devel] [v5][PATCH 0/5] xen: add Intel IGD passthrough support Tiejun Chen
2014-06-25 2:17 ` [Qemu-devel] [v5][PATCH 1/5] xen, gfx passthrough: basic graphics " Tiejun Chen
2014-06-25 6:21 ` Paolo Bonzini
2014-06-25 7:48 ` Chen, Tiejun
2014-06-25 6:35 ` Michael S. Tsirkin
2014-06-25 9:06 ` Chen, Tiejun
2014-06-25 9:16 ` Michael S. Tsirkin
2014-06-25 2:17 ` [Qemu-devel] [v5][PATCH 2/5] xen, gfx passthrough: create pseudo intel isa bridge Tiejun Chen
2014-06-25 6:22 ` Paolo Bonzini
2014-06-25 7:51 ` Chen, Tiejun
2014-06-25 6:45 ` Michael S. Tsirkin
2014-06-25 8:10 ` Chen, Tiejun
2014-06-25 8:28 ` Michael S. Tsirkin
2014-06-25 8:39 ` Chen, Tiejun
2014-06-25 8:43 ` Michael S. Tsirkin
2014-06-25 8:48 ` Chen, Tiejun
2014-06-25 9:04 ` Michael S. Tsirkin
2014-06-25 9:14 ` Chen, Tiejun
2014-06-25 9:21 ` Michael S. Tsirkin
2014-06-25 9:28 ` Chen, Tiejun
2014-06-25 9:44 ` Michael S. Tsirkin
2014-06-25 9:58 ` Chen, Tiejun
2014-06-27 7:22 ` Chen, Tiejun
2014-06-30 19:34 ` Stefano Stabellini
2014-07-01 2:21 ` Chen, Tiejun
2014-07-01 5:47 ` Michael S. Tsirkin
2014-07-01 9:50 ` Chen, Tiejun
2014-07-01 12:34 ` Michael S. Tsirkin
2014-07-01 16:51 ` Stefano Stabellini
2014-06-25 2:17 ` [Qemu-devel] [v5][PATCH 3/5] xen, gfx passthrough: support Intel IGD passthrough with VT-D Tiejun Chen
2014-06-25 6:25 ` Paolo Bonzini
2014-06-25 7:54 ` Chen, Tiejun
2014-06-25 7:04 ` Michael S. Tsirkin
2014-06-27 9:16 ` Chen, Tiejun
2014-06-25 14:05 ` Michael S. Tsirkin
2014-06-26 5:34 ` Chen, Tiejun
2014-06-26 6:04 ` Michael S. Tsirkin
2014-06-26 8:26 ` Chen, Tiejun
2014-06-25 2:17 ` [Qemu-devel] [v5][PATCH 4/5] xen, gfx passthrough: create host bridge to passthrough Tiejun Chen
2014-06-25 6:24 ` Paolo Bonzini
2014-06-27 8:34 ` Chen, Tiejun
2014-06-27 11:26 ` Paolo Bonzini
2014-06-29 7:56 ` Chen, Tiejun
2014-06-29 12:14 ` Michael S. Tsirkin
2014-06-30 2:52 ` Chen, Tiejun
2014-06-30 19:42 ` Stefano Stabellini
2014-07-01 2:19 ` Chen, Tiejun
2014-07-01 16:49 ` Stefano Stabellini
2014-07-01 18:34 ` Michael S. Tsirkin
2014-07-01 18:45 ` Michael S. Tsirkin
2014-06-25 2:17 ` [Qemu-devel] [v5][PATCH 5/5] xen, gfx passthrough: add opregion mapping Tiejun Chen
2014-06-25 7:13 ` Michael S. Tsirkin
2014-06-27 9:22 ` Chen, Tiejun
2014-06-29 11:43 ` Michael S. Tsirkin
2014-06-30 0:57 ` Chen, Tiejun
2014-06-25 6:19 ` [Qemu-devel] [v5][PATCH 0/5] xen: add Intel IGD passthrough support Paolo Bonzini
2014-06-25 7:15 ` Michael S. Tsirkin
2014-06-25 7:56 ` Paolo Bonzini
2014-06-25 7:35 ` Chen, Tiejun
2014-06-25 7:40 ` Michael S. Tsirkin
2014-06-25 7:44 ` Paolo Bonzini
2014-06-25 8:31 ` Michael S. Tsirkin
2014-06-25 8:39 ` Paolo Bonzini
2014-06-25 8:48 ` Michael S. Tsirkin
2014-06-25 8:55 ` Chen, Tiejun
2014-06-25 9:09 ` Michael S. Tsirkin
2014-06-25 9:21 ` Chen, Tiejun
2014-06-25 9:31 ` Paolo Bonzini
2014-06-25 9:50 ` Chen, Tiejun
2014-06-25 9:54 ` Paolo Bonzini
2014-06-25 10:00 ` Michael S. Tsirkin
2014-06-26 9:18 ` Chen, Tiejun
2014-06-26 10:03 ` Paolo Bonzini
2014-06-26 11:26 ` Michael S. Tsirkin
2014-06-26 11:30 ` Paolo Bonzini
2014-06-26 11:36 ` Michael S. Tsirkin
2014-06-26 13:30 ` Paolo Bonzini
2014-06-26 15:40 ` Michael S. Tsirkin
2014-06-30 2:51 ` Chen, Tiejun
2014-06-30 6:48 ` Michael S. Tsirkin
2014-06-30 7:24 ` Chen, Tiejun
2014-06-30 9:05 ` Michael S. Tsirkin
2014-06-30 9:38 ` Chen, Tiejun
2014-06-30 9:55 ` Michael S. Tsirkin
2014-06-30 10:20 ` [Qemu-devel] [Xen-devel] " Chen, Tiejun
2014-06-30 11:18 ` Paolo Bonzini
2014-06-30 11:31 ` Michael S. Tsirkin
2014-06-30 11:28 ` Michael S. Tsirkin
2014-07-01 2:40 ` Chen, Tiejun
2014-07-01 9:12 ` Michael S. Tsirkin
2014-07-01 9:46 ` Chen, Tiejun
2014-07-01 12:33 ` Michael S. Tsirkin
2014-07-02 0:59 ` Chen, Tiejun
2014-07-02 6:22 ` Michael S. Tsirkin
2014-07-02 8:45 ` Chen, Tiejun
2014-06-30 19:22 ` [Qemu-devel] " Stefano Stabellini
2014-06-30 19:31 ` [Qemu-devel] [Xen-devel] " Ross Philipson
2014-07-01 2:24 ` Chen, Tiejun
2014-07-01 5:39 ` Michael S. Tsirkin
2014-07-01 16:47 ` Stefano Stabellini
2014-07-01 17:02 ` Michael S. Tsirkin
2014-07-01 17:39 ` Ross Philipson
2014-07-01 18:06 ` Michael S. Tsirkin
2014-07-01 19:29 ` Ross Philipson
2014-07-02 6:11 ` Michael S. Tsirkin
2014-07-02 7:56 ` Chen, Tiejun
2014-07-02 11:33 ` Paolo Bonzini
2014-07-02 14:00 ` Konrad Rzeszutek Wilk
2014-07-02 14:07 ` Stefano Stabellini
2014-07-03 3:00 ` Chen, Tiejun
2014-07-03 18:25 ` Konrad Rzeszutek Wilk
2014-07-02 14:08 ` Michael S. Tsirkin
2014-07-02 16:05 ` Konrad Rzeszutek Wilk
2014-07-02 17:58 ` Michael S. Tsirkin
2014-07-02 14:50 ` Paolo Bonzini [this message]
2014-07-02 15:12 ` [Qemu-devel] ResettRe: " Michael S. Tsirkin
2014-07-02 19:33 ` Alex Williamson
2014-07-02 16:23 ` Konrad Rzeszutek Wilk
2014-07-02 16:27 ` Paolo Bonzini
2014-07-02 16:53 ` Michael S. Tsirkin
2014-07-03 7:32 ` Michael S. Tsirkin
2014-07-03 18:26 ` Konrad Rzeszutek Wilk
2014-07-03 19:09 ` [Qemu-devel] [Intel-gfx] " Jesse Barnes
2014-07-03 20:27 ` Michael S. Tsirkin
2014-07-16 14:20 ` Konrad Rzeszutek Wilk
2014-07-17 9:42 ` Chen, Tiejun
2014-07-17 17:37 ` Kay, Allen M
2014-07-18 13:44 ` Konrad Rzeszutek Wilk
2014-07-19 0:27 ` Kay, Allen M
2014-07-23 20:54 ` Konrad Rzeszutek Wilk
2014-07-24 1:44 ` Chen, Tiejun
2014-07-25 17:01 ` Konrad Rzeszutek Wilk
2014-07-29 6:59 ` Chen, Tiejun
2014-07-29 8:32 ` Paolo Bonzini
2014-07-29 9:14 ` Chen, Tiejun
2014-07-04 6:28 ` [Qemu-devel] " Paolo Bonzini
2014-07-06 6:08 ` Michael S. Tsirkin
2014-07-02 15:15 ` [Qemu-devel] " Ross Philipson
2014-07-02 15:27 ` Michael S. Tsirkin
2014-07-02 16:29 ` Paolo Bonzini
2014-07-02 16:45 ` Konrad Rzeszutek Wilk
2014-07-02 18:00 ` Michael S. Tsirkin
2014-07-03 5:57 ` Chen, Tiejun
2014-07-03 6:40 ` Michael S. Tsirkin
2014-07-01 18:20 ` Stefano Stabellini
2014-07-01 18:38 ` Michael S. Tsirkin
2014-07-02 1:37 ` Chen, Tiejun
2014-07-02 6:09 ` Michael S. Tsirkin
2014-07-02 7:51 ` Chen, Tiejun
2014-06-25 9:55 ` [Qemu-devel] " Michael S. Tsirkin
2014-06-25 9:59 ` Paolo Bonzini
2014-06-25 10:06 ` Chen, Tiejun
2014-06-25 10:21 ` Michael S. Tsirkin
2014-06-25 10:28 ` Chen, Tiejun
2014-06-25 10:32 ` Michael S. Tsirkin
2014-06-25 10:37 ` Chen, Tiejun
2014-06-25 10:55 ` Michael S. Tsirkin
2014-06-25 12:11 ` Paolo Bonzini
2014-06-25 13:47 ` Michael S. Tsirkin
2014-06-25 13:53 ` Paolo Bonzini
2014-06-25 14:10 ` Michael S. Tsirkin
2014-06-25 14:16 ` Paolo Bonzini
2014-06-25 14:26 ` Michael S. Tsirkin
2014-06-25 10:09 ` Michael S. Tsirkin
2014-06-25 10:14 ` Paolo Bonzini
2014-06-25 10:15 ` Chen, Tiejun
2014-06-25 10:28 ` Michael S. Tsirkin
2014-06-25 9:43 ` Michael S. Tsirkin
2014-07-08 10:45 ` [Qemu-devel] [Xen-devel] " Andrew Barnes
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=53B41C27.4030706@redhat.com \
--to=pbonzini@redhat.com \
--cc=Kelly.Zytaruk@amd.com \
--cc=Stefano.Stabellini@citrix.com \
--cc=allen.m.kay@intel.com \
--cc=anthony.perard@citrix.com \
--cc=anthony@codemonkey.ws \
--cc=konrad.wilk@oracle.com \
--cc=mst@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=ross.philipson@citrix.com \
--cc=tiejun.chen@intel.com \
--cc=xen-devel@lists.xensource.com \
--cc=yang.z.zhang@intel.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;
as well as URLs for NNTP newsgroup(s).