From: Anthony Liguori <aliguori@us.ibm.com>
To: Gerd Hoffmann <kraxel@redhat.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 10:09:02 -0500 [thread overview]
Message-ID: <87k3v1gfw1.fsf@codemonkey.ws> (raw)
In-Reply-To: <5072EA14.30809@redhat.com>
Gerd Hoffmann <kraxel@redhat.com> writes:
> 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
MSI-X capability is a standard PCI capability which is why lspci can
parse it.
>
> 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
This would be a vendor specific PCI capability so lspci wouldn't
automatically know how to parse it.
You could just as well teach lspci to parse BAR0 to figure out what
features are supported.
>> 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.
A latch feature bit would allow the format to change without impacting
compatibility at all.
>>> 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 ...
It wasn't that long ago that MSI-X wasn't supported.. I think we should
continue to keep ISR as PIO as it is a fast path.
Regards,
Anthony Liguori
>
> cheers,
> Gerd
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Anthony Liguori <aliguori@us.ibm.com>
To: Gerd Hoffmann <kraxel@redhat.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 10:09:02 -0500 [thread overview]
Message-ID: <87k3v1gfw1.fsf@codemonkey.ws> (raw)
In-Reply-To: <5072EA14.30809@redhat.com>
Gerd Hoffmann <kraxel@redhat.com> writes:
> 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
MSI-X capability is a standard PCI capability which is why lspci can
parse it.
>
> 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
This would be a vendor specific PCI capability so lspci wouldn't
automatically know how to parse it.
You could just as well teach lspci to parse BAR0 to figure out what
features are supported.
>> 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.
A latch feature bit would allow the format to change without impacting
compatibility at all.
>>> 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 ...
It wasn't that long ago that MSI-X wasn't supported.. I think we should
continue to keep ISR as PIO as it is a fast path.
Regards,
Anthony Liguori
>
> cheers,
> Gerd
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-10-08 15:09 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-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 13:58 ` Anthony Liguori
2012-10-08 14:58 ` Gerd Hoffmann
2012-10-08 14:58 ` Gerd Hoffmann
2012-10-08 15:09 ` Anthony Liguori [this message]
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-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 13:56 ` Anthony Liguori
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 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 ` Rusty Russell
2012-10-11 0:43 ` [Qemu-devel] " Rusty Russell
2012-10-10 2:54 ` Rusty Russell
2012-10-10 8:34 ` Michael S. Tsirkin
2012-10-10 8:34 ` Michael S. Tsirkin
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 ` [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 ` [Qemu-devel] " Rusty Russell
2012-10-16 13:52 ` Rusty Russell
2012-10-16 13:15 ` Rusty Russell
2012-10-08 2:21 ` Rusty Russell
2012-10-04 18:49 ` [Qemu-devel] Proposal for virtio standardization Anthony Liguori
2012-10-09 14:02 ` 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 ` [Qemu-devel] " Rusty Russell
2012-10-10 3:46 ` 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=87k3v1gfw1.fsf@codemonkey.ws \
--to=aliguori@us.ibm.com \
--cc=kraxel@redhat.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.