From: "Chen, Tiejun" <tiejun.chen@intel.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: pbonzini@redhat.com, rth@twiddle.net, allen.m.kay@intel.com,
qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [v7][PATCH 03/10] piix: create host bridge to passthrough
Date: Thu, 19 Mar 2015 09:01:27 +0800 [thread overview]
Message-ID: <550A1FE7.2050602@intel.com> (raw)
In-Reply-To: <1426674083.32192.44.camel@nilsson.home.kraxel.org>
On 2015/3/18 18:21, Gerd Hoffmann wrote:
> On Mi, 2015-03-18 at 17:06 +0800, Tiejun Chen wrote:
>> Implement a pci host bridge specific to passthrough. Actually
>> this just inherits the standard one. And we also just expose
>> a minimal real host bridge pci configuration subset.
>
>> +/* Here we just expose minimal host bridge offset subset. */
>> +static const IGDHostInfo igd_host_bridge_infos[] = {
>> + {0x08, 2}, /* revision id */
>> + {0x2c, 2}, /* sybsystem vendor id */
>> + {0x2e, 2}, /* sybsystem id */
>> + {0x50, 2}, /* SNB: processor graphics control register */
>> + {0x52, 2}, /* processor graphics control register */
>> + {0xa4, 4}, /* SNB: graphics base of stolen memory */
>> + {0xa8, 4}, /* SNB: base of GTT stolen memory */
>> +};
>
> Hmm, no vendor/device id here? Will the idg guest drivers happily read
These two emulated values are already fine.
And this is a long story. At the beginning, we were initially trying to
expose more,
+ case 0x00: /* vendor id */
+ case 0x02: /* device id */
+ case 0x08: /* revision id */
+ case 0x2c: /* sybsystem vendor id */
+ case 0x2e: /* sybsystem id */
+ case 0x50: /* SNB: processor graphics control register */
+ case 0x52: /* processor graphics control register */
+ case 0xa0: /* top of memory */
+ case 0xb0: /* ILK: BSM: should read from dev 2 offset 0x5c */
+ case 0x58: /* SNB: PAVPC Offset */
+ case 0xa4: /* SNB: graphics base of stolen memory */
+ case 0xa8: /* SNB: base of GTT stolen memory */
But this brought some discussions with Paolo and Michael, and then plus
our further experiment, now as everyone expect, this is a minimal real
host bridge pci configuration subset which we need to expose.
> graphics control registers from i440fx even though this chipset never
> existed in a igd variant?
>
> [ just wondering, if it works that way fine, it certainly makes things
Yes, it works fine.
> easier for the firmware which uses host bridge pci id to figure
> whenever it is running @ i440fx or q35 ].
>
>> +static int igd_pt_i440fx_initfn(struct PCIDevice *pci_dev)
>> +{
>> + uint32_t val = 0;
>> + int rc, i, num;
>> + int pos, len;
>> +
>> + num = ARRAY_SIZE(igd_host_bridge_infos);
>> + for (i = 0; i < num; i++) {
>> + pos = igd_host_bridge_infos[i].offset;
>> + len = igd_host_bridge_infos[i].len;
>> + rc = host_pci_config_read(pos, len, val);
>> + if (rc) {
>> + return -ENODEV;
>> + }
>> + pci_default_write_config(pci_dev, pos, val, len);
>> + }
>> +
>> + return 0;
>> +}
>
> Nothing i440fx specific in here, just copying some host bridge pci
> config space bits. I guess we can sub-class the q35 host bridge the
> same way and even reuse the init function?
This is our another discussion long time ago :)
Currently Xen don't run with q35. If I remember those discussions
correctly, something is still restricted to Windows.
>
>> +#define TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE "xen-igd-passthrough-i440FX"
>
> One xen leftover slipped through here.
Fixed.
Thanks
Tiejun
next prev parent reply other threads:[~2015-03-19 1:01 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-18 9:06 [Qemu-devel] [v7][PATCH 00/10] xen: add Intel IGD passthrough support Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 01/10] i440fx: make types configurable at run-time Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 02/10] pc_init1: pass parameters just with types Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 03/10] piix: create host bridge to passthrough Tiejun Chen
2015-03-18 10:21 ` Gerd Hoffmann
2015-03-19 1:01 ` Chen, Tiejun [this message]
2015-03-26 7:57 ` Chen, Tiejun
2015-03-26 8:15 ` Michael S. Tsirkin
2015-03-26 8:36 ` Chen, Tiejun
2015-05-20 8:17 ` Chen, Tiejun
2015-05-31 18:11 ` Michael S. Tsirkin
2015-06-02 0:50 ` Chen, Tiejun
2015-06-02 9:17 ` Michael S. Tsirkin
2015-06-05 8:36 ` Chen, Tiejun
2015-04-15 9:17 ` eraul_cn
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 04/10] hw/pci-assign: split pci-assign.c Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 05/10] xen, gfx passthrough: basic graphics passthrough support Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 06/10] xen, gfx passthrough: retrieve VGA BIOS to work Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 07/10] igd gfx passthrough: create a isa bridge Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 08/10] xen, gfx passthrough: register " Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 09/10] xen, gfx passthrough: register host bridge specific to passthrough Tiejun Chen
2015-03-18 9:06 ` [Qemu-devel] [v7][PATCH 10/10] xen, gfx passthrough: add opregion mapping Tiejun Chen
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=550A1FE7.2050602@intel.com \
--to=tiejun.chen@intel.com \
--cc=allen.m.kay@intel.com \
--cc=kraxel@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.