From: Gerd Hoffmann <kraxel@redhat.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: virtualization@lists.linux-foundation.org,
qemu-devel <qemu-devel@nongnu.org>,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] Using PCI config space to indicate config location
Date: Mon, 08 Oct 2012 16:58:28 +0200 [thread overview]
Message-ID: <5072EA14.30809@redhat.com> (raw)
In-Reply-To: <87bogddq0l.fsf@codemonkey.ws>
Hi,
> But I think we could solve this in a different way. I think we could
> just move the virtio configuration space to BAR1 by using a transport
> feature bit.
Why hard-code stuff?
I think it makes alot of sense to have a capability simliar to msi-x
which simply specifies bar and offset of the register sets:
[root@fedora ~]# lspci -vvs4
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
[ ... ]
Region 0: I/O ports at c000 [size=64]
Region 1: Memory at fc029000 (32-bit) [size=4K]
Capabilities: [40] MSI-X: Enable+ Count=2 Masked-
Vector table: BAR=1 offset=00000000
PBA: BAR=1 offset=00000800
So we could have for virtio something like this:
Capabilities: [??] virtio-regs:
legacy: BAR=0 offset=0
virtio-pci: BAR=1 offset=1000
virtio-cfg: BAR=1 offset=1800
> That then frees up the entire BAR0 for use as virtio-pci registers. We
> can then always include the virtio-pci MSI-X register space and
> introduce all new virtio-pci registers as simply being appended.
BAR0 needs to stay as-is for compatibility reasons. New devices which
don't have to care about old guests don't need to provide a 'legacy'
register region.
Most devices have mmio at BAR1 for msi-x support anyway, we can place
the virtio-pci and virtio configuration registers there too by default.
I wouldn't hardcode that though.
> This new feature bit then becomes essentially a virtio configuration
> latch. When unacked, virtio configuration hides new registers, when
> acked, those new registers are exposed.
I'd just expose them all all the time.
>> 2) ISTR an argument about mapping the ISR register separately, for
>> performance, but I can't find a reference to it.
>
> I think the rationale is that ISR really needs to be PIO but everything
> else doesn't. PIO is much faster on x86 because it doesn't require
> walking page tables or instruction emulation to handle the exit.
Is this still a pressing issue? With MSI-X enabled ISR isn't needed,
correct? Which would imply that pretty much only old guests without
MSI-X support need this, and we don't need to worry that much when
designing something new ...
cheers,
Gerd
WARNING: multiple messages have this Message-ID (diff)
From: Gerd Hoffmann <kraxel@redhat.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
virtualization@lists.linux-foundation.org,
qemu-devel <qemu-devel@nongnu.org>,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] Using PCI config space to indicate config location
Date: Mon, 08 Oct 2012 16:58:28 +0200 [thread overview]
Message-ID: <5072EA14.30809@redhat.com> (raw)
In-Reply-To: <87bogddq0l.fsf@codemonkey.ws>
Hi,
> But I think we could solve this in a different way. I think we could
> just move the virtio configuration space to BAR1 by using a transport
> feature bit.
Why hard-code stuff?
I think it makes alot of sense to have a capability simliar to msi-x
which simply specifies bar and offset of the register sets:
[root@fedora ~]# lspci -vvs4
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
[ ... ]
Region 0: I/O ports at c000 [size=64]
Region 1: Memory at fc029000 (32-bit) [size=4K]
Capabilities: [40] MSI-X: Enable+ Count=2 Masked-
Vector table: BAR=1 offset=00000000
PBA: BAR=1 offset=00000800
So we could have for virtio something like this:
Capabilities: [??] virtio-regs:
legacy: BAR=0 offset=0
virtio-pci: BAR=1 offset=1000
virtio-cfg: BAR=1 offset=1800
> That then frees up the entire BAR0 for use as virtio-pci registers. We
> can then always include the virtio-pci MSI-X register space and
> introduce all new virtio-pci registers as simply being appended.
BAR0 needs to stay as-is for compatibility reasons. New devices which
don't have to care about old guests don't need to provide a 'legacy'
register region.
Most devices have mmio at BAR1 for msi-x support anyway, we can place
the virtio-pci and virtio configuration registers there too by default.
I wouldn't hardcode that though.
> This new feature bit then becomes essentially a virtio configuration
> latch. When unacked, virtio configuration hides new registers, when
> acked, those new registers are exposed.
I'd just expose them all all the time.
>> 2) ISTR an argument about mapping the ISR register separately, for
>> performance, but I can't find a reference to it.
>
> I think the rationale is that ISR really needs to be PIO but everything
> else doesn't. PIO is much faster on x86 because it doesn't require
> walking page tables or instruction emulation to handle the exit.
Is this still a pressing issue? With MSI-X enabled ISR isn't needed,
correct? Which would imply that pretty much only old guests without
MSI-X support need this, and we don't need to worry that much when
designing something new ...
cheers,
Gerd
next prev parent reply other threads:[~2012-10-08 14:58 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-27 0:29 Proposal for virtio standardization Rusty Russell
2012-09-27 0:29 ` [Qemu-devel] " Rusty Russell
2012-09-27 0:29 ` Rusty Russell
2012-10-04 18:49 ` [Qemu-devel] " Anthony Liguori
2012-10-04 18:49 ` Anthony Liguori
2012-10-04 18:49 ` Anthony Liguori
2012-10-08 2:21 ` Using PCI config space to indicate config location Rusty Russell
2012-10-08 2:21 ` [Qemu-devel] " Rusty Russell
2012-10-08 13:58 ` Anthony Liguori
2012-10-08 13:58 ` Anthony Liguori
2012-10-08 14:58 ` Gerd Hoffmann [this message]
2012-10-08 14:58 ` Gerd Hoffmann
2012-10-08 15:09 ` Anthony Liguori
2012-10-08 15:09 ` Anthony Liguori
2012-10-08 20:13 ` Gerd Hoffmann
2012-10-08 20:13 ` Gerd Hoffmann
2012-10-08 20:55 ` Anthony Liguori
2012-10-08 20:55 ` Anthony Liguori
2012-10-08 23:56 ` Rusty Russell
2012-10-09 1:51 ` Anthony Liguori
2012-10-09 3:16 ` Rusty Russell
2012-10-09 3:16 ` Rusty Russell
2012-10-09 10:17 ` Avi Kivity
2012-10-09 10:17 ` Avi Kivity
2012-10-09 14:03 ` Anthony Liguori
2012-10-09 14:03 ` Anthony Liguori
2012-10-09 13:56 ` Anthony Liguori
2012-10-09 13:56 ` Anthony Liguori
2012-10-09 13:56 ` Anthony Liguori
2012-10-10 3:44 ` Rusty Russell
2012-10-10 3:44 ` Rusty Russell
2012-10-10 11:37 ` Michael S. Tsirkin
2012-10-10 11:37 ` Michael S. Tsirkin
2012-10-09 21:09 ` Jamie Lokier
2012-10-09 21:09 ` Jamie Lokier
2012-10-09 21:09 ` [Qemu-devel] " Jamie Lokier
2012-10-10 3:44 ` Rusty Russell
2012-10-10 3:44 ` Rusty Russell
2012-10-11 0:08 ` Rusty Russell
2012-10-11 0:08 ` Rusty Russell
2012-10-11 0:08 ` Rusty Russell
2012-10-09 3:16 ` Rusty Russell
2012-10-09 6:33 ` Gerd Hoffmann
2012-10-09 6:33 ` Gerd Hoffmann
2012-10-09 15:26 ` Anthony Liguori
2012-10-09 15:26 ` Anthony Liguori
2012-10-09 20:24 ` Gerd Hoffmann
2012-10-09 20:24 ` Gerd Hoffmann
2012-10-10 2:54 ` Rusty Russell
2012-10-10 2:54 ` Rusty Russell
2012-10-10 13:36 ` Anthony Liguori
2012-10-10 13:41 ` Michael S. Tsirkin
2012-10-10 13:41 ` Michael S. Tsirkin
2012-10-11 0:43 ` Rusty Russell
2012-10-11 0:43 ` [Qemu-devel] " Rusty Russell
2012-10-11 0:43 ` Rusty Russell
2012-10-10 2:54 ` Rusty Russell
2012-10-09 15:26 ` Anthony Liguori
2012-10-10 8:34 ` Michael S. Tsirkin
2012-10-10 8:34 ` Michael S. Tsirkin
2012-10-08 13:58 ` Anthony Liguori
2012-10-10 8:30 ` Michael S. Tsirkin
2012-10-10 8:30 ` [Qemu-devel] " Michael S. Tsirkin
2012-10-11 1:18 ` Rusty Russell
2012-10-11 1:18 ` [Qemu-devel] " Rusty Russell
2012-10-11 10:23 ` Michael S. Tsirkin
2012-10-11 10:23 ` [Qemu-devel] " Michael S. Tsirkin
2012-10-11 22:29 ` Rusty Russell
2012-10-11 22:29 ` Rusty Russell
2012-10-11 22:29 ` [Qemu-devel] " Rusty Russell
2012-10-12 9:33 ` Michael S. Tsirkin
2012-10-12 9:33 ` [Qemu-devel] " Michael S. Tsirkin
2012-10-12 9:51 ` Rusty Russell
2012-10-12 9:51 ` [Qemu-devel] " Rusty Russell
2012-10-12 10:02 ` Michael S. Tsirkin
2012-10-12 10:02 ` [Qemu-devel] " Michael S. Tsirkin
2012-10-16 13:15 ` Rusty Russell
2012-10-16 13:15 ` Rusty Russell
2012-10-16 13:15 ` [Qemu-devel] " Rusty Russell
2012-10-16 13:30 ` Michael S. Tsirkin
2012-10-16 13:30 ` [Qemu-devel] " Michael S. Tsirkin
2012-10-16 13:52 ` Rusty Russell
2012-10-16 13:52 ` Rusty Russell
2012-10-16 13:52 ` [Qemu-devel] " Rusty Russell
2012-10-08 2:21 ` Rusty Russell
2012-10-09 14:02 ` Proposal for virtio standardization Cornelia Huck
2012-10-09 14:02 ` Cornelia Huck
2012-10-09 14:02 ` [Qemu-devel] " Cornelia Huck
2012-10-10 3:46 ` Rusty Russell
2012-10-10 3:46 ` Rusty Russell
2012-10-10 3:46 ` [Qemu-devel] " Rusty Russell
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=5072EA14.30809@redhat.com \
--to=kraxel@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=virtualization@lists.linux-foundation.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 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.