From: "Michael S. Tsirkin" <mst@redhat.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 16/22] virtio_pci: use separate notification offsets for each vq.
Date: Wed, 3 Apr 2013 20:02:46 +0300 [thread overview]
Message-ID: <20130403170246.GA25697@redhat.com> (raw)
In-Reply-To: <fed0356e-3b76-4f79-b6b5-85f0d045be29@email.android.com>
On Wed, Apr 03, 2013 at 07:35:31AM -0700, H. Peter Anvin wrote:
> I mean no offset.
I see. Fine with me.
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> >> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>
> >> >On Wed, Apr 03, 2013 at 04:40:29PM +1030, Rusty Russell wrote:
> >> >> "H. Peter Anvin" <hpa@zytor.com> writes:
> >> >> > On 03/29/2013 08:19 PM, Rusty Russell wrote:
> >> >> >>>
> >> >> >>> Shift count?
> >> >> >>
> >> >> >> You can only have 2^16 vqs per device. Is it verboten to write
> >> >16-bit
> >> >> >> values to odd offsets? If so, we've just dropped it to 2^15
> >> >before you
> >> >> >> have to do some decoding to do. Hard to care...
> >> >> >>
> >> >> >> I dislike saying "multiply offset by 2" because implementations
> >> >will get
> >> >> >> it wrong. That's because 0 will work either way, and that's
> >going
> >> >to be
> >> >> >> the common case.
> >> >> >>
> >> >> >
> >> >> > The main reason to use a shift count is that it lets the guest
> >> >driver
> >> >> > assume that the spacing is a power of two, requiring only shift,
> >as
> >> >> > opposed to an arbitrary number, requiring a multiply. It seems
> >> >unlikely
> >> >> > that there would be a legitimate reason for a non-power-of-two
> >> >spacing
> >> >> > between the VQ notifiers.
> >> >> >
> >> >> > The other reason is that if a particular host implementation
> >needs
> >> >> > separate pages for each notifier, that can be a pretty large
> >> >number.
> >> >>
> >> >> Ah, sorry, we're talking across each other a bit.
> >> >>
> >> >> Current proposal is a 16 bit 'offset' field in the queue data for
> >> >each
> >> >> queue, ie.
> >> >> addr = dev->notify_base + vq->notify_off;
> >> >>
> >> >> You propose a per-device 'shift' field:
> >> >> addr = dev->notify_base + (vq->index <<
> >dev->notify_shift);
> >> >>
> >> >> Which allows greater offsets, but insists on a unique offset per
> >> >queue.
> >> >> Might be a fair trade-off...
> >> >>
> >> >> Cheers,
> >> >> Rusty.
> >> >
> >> >Or even
> >> > addr = dev->notify_base + (vq->notify_off <<
> >dev->notify_shift);
> >> >
> >> >since notify_base is per capability, shift can be per capability
> >too.
> >> >And for IO we can allow it to be 32 to mean "always use base".
> >> >
> >> >This is a bit more elegant than just saying "no offsets for IO".
> >>
> >
> >On Wed, Apr 03, 2013 at 07:10:42AM -0700, H. Peter Anvin wrote:
> >> 0 should probably mean no shift;
> >
> >Sure. Note no shift is not same as "no offset".
> >
> >> that way we explicitly prohibit odd offsets, which is a good thing,
> >too.
> >
> >Odd offsets?
> >
> >> --
> >> Sent from my mobile phone. Please excuse brevity and lack of
> >formatting.
>
> --
> Sent from my mobile phone. Please excuse brevity and lack of formatting.
next prev parent reply other threads:[~2013-04-03 17:02 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-21 8:29 [PATCH 00/22] New virtio PCI layout Rusty Russell
2013-03-21 8:29 ` [PATCH 01/22] virtio_config: introduce size-based accessors Rusty Russell
2013-03-21 8:29 ` [PATCH 02/22] virtio_config: use " Rusty Russell
2013-03-21 8:29 ` [PATCH 03/22] virtio_config: make transports implement accessors Rusty Russell
2013-03-21 9:09 ` Cornelia Huck
2013-03-22 0:31 ` Rusty Russell
2013-03-22 9:13 ` Cornelia Huck
2013-03-22 14:43 ` Sjur Brændeland
2013-03-24 4:24 ` Rusty Russell
2013-04-03 15:58 ` Sjur Brændeland
2013-04-02 17:16 ` Pawel Moll
2013-03-21 8:29 ` [PATCH 04/22] virtio: use u32, not bitmap for struct virtio_device's features Rusty Russell
2013-03-21 10:00 ` Cornelia Huck
2013-03-22 0:48 ` Rusty Russell
2013-03-21 8:29 ` [PATCH 05/22] virtio: add support for 64 bit features Rusty Russell
2013-03-21 10:06 ` Cornelia Huck
2013-03-22 0:50 ` Rusty Russell
2013-03-22 9:15 ` Cornelia Huck
2013-03-22 14:50 ` Sjur Brændeland
2013-03-22 20:12 ` Ohad Ben-Cohen
2013-03-25 8:30 ` Rusty Russell
2013-04-02 17:09 ` Pawel Moll
2013-03-21 8:29 ` [PATCH 06/22] virtio: move vring structure into struct virtqueue Rusty Russell
2013-03-21 8:29 ` [PATCH 07/22] pci: add pci_iomap_range Rusty Russell
2013-03-21 8:29 ` [PATCH 08/22] virtio-pci: define layout for virtio vendor-specific capabilities Rusty Russell
2013-03-21 8:29 ` [PATCH 09/22] virtio_pci: move old defines to legacy, introduce new structure Rusty Russell
2013-03-21 8:29 ` [PATCH 10/22] virtio_pci: use _LEGACY_ defines in virtio_pci_legacy.c Rusty Russell
2013-03-21 8:29 ` [PATCH 11/22] virtio_pci: don't use the legacy driver if we find the new PCI capabilities Rusty Russell
2013-03-21 8:29 ` [PATCH 12/22] virtio_pci: allow duplicate capabilities Rusty Russell
2013-03-21 10:28 ` Michael S. Tsirkin
2013-03-21 14:26 ` H. Peter Anvin
2013-03-21 14:43 ` Michael S. Tsirkin
2013-03-21 14:45 ` H. Peter Anvin
2013-03-21 15:19 ` Michael S. Tsirkin
2013-03-21 15:26 ` H. Peter Anvin
2013-03-21 15:58 ` Michael S. Tsirkin
2013-03-21 16:04 ` H. Peter Anvin
2013-03-21 16:11 ` Michael S. Tsirkin
2013-03-21 16:15 ` H. Peter Anvin
2013-03-21 16:26 ` Michael S. Tsirkin
2013-03-21 16:32 ` H. Peter Anvin
2013-03-21 17:07 ` Michael S. Tsirkin
2013-03-21 17:09 ` H. Peter Anvin
2013-03-21 17:13 ` Michael S. Tsirkin
2013-03-21 17:49 ` Michael S. Tsirkin
2013-03-21 17:54 ` H. Peter Anvin
2013-03-21 18:01 ` Michael S. Tsirkin
2013-03-22 0:57 ` Rusty Russell
2013-03-22 3:17 ` H. Peter Anvin
2013-03-24 13:14 ` Michael S. Tsirkin
2013-03-24 23:23 ` H. Peter Anvin
2013-03-25 6:53 ` Michael S. Tsirkin
2013-03-25 6:54 ` H. Peter Anvin
2013-03-25 10:03 ` Rusty Russell
2013-03-21 8:29 ` [PATCH 13/22] virtio_pci: new, capability-aware driver Rusty Russell
2013-03-21 10:24 ` Michael S. Tsirkin
2013-03-22 1:02 ` Rusty Russell
2013-03-24 13:08 ` Michael S. Tsirkin
2013-03-21 8:29 ` [PATCH 14/22] virtio_pci: layout changes as per hpa's suggestions Rusty Russell
2013-03-21 8:29 ` [PATCH 15/22] virtio_pci: use little endian for config space Rusty Russell
2013-03-21 8:29 ` [PATCH 16/22] virtio_pci: use separate notification offsets for each vq Rusty Russell
2013-03-21 10:13 ` Michael S. Tsirkin
2013-03-21 10:35 ` Michael S. Tsirkin
2013-03-22 2:52 ` Rusty Russell
2013-03-24 14:38 ` Michael S. Tsirkin
2013-03-24 20:19 ` Michael S. Tsirkin
2013-03-24 23:27 ` H. Peter Anvin
2013-03-25 7:05 ` Michael S. Tsirkin
2013-03-25 10:00 ` Rusty Russell
2013-03-26 19:39 ` Michael S. Tsirkin
2013-03-27 0:07 ` Rusty Russell
2013-03-27 0:22 ` H. Peter Anvin
2013-03-27 2:31 ` H. Peter Anvin
2013-03-27 11:26 ` Michael S. Tsirkin
2013-03-27 14:21 ` H. Peter Anvin
2013-03-27 11:25 ` Michael S. Tsirkin
2013-03-28 4:50 ` H. Peter Anvin
2013-03-30 3:19 ` Rusty Russell
2013-04-02 22:51 ` H. Peter Anvin
2013-04-03 6:10 ` Rusty Russell
2013-04-03 11:22 ` Michael S. Tsirkin
2013-04-03 14:10 ` H. Peter Anvin
2013-04-03 14:35 ` Michael S. Tsirkin
2013-04-03 14:35 ` H. Peter Anvin
2013-04-03 17:02 ` Michael S. Tsirkin [this message]
2013-04-04 5:48 ` Rusty Russell
2013-04-04 8:25 ` Michael S. Tsirkin
2013-04-05 1:25 ` Rusty Russell
2013-03-21 8:29 ` [PATCH 17/22] virtio_pci_legacy: cleanup struct virtio_pci_vq_info Rusty Russell
2013-03-21 8:29 ` [PATCH 18/22] virtio_pci: share structure between legacy and modern Rusty Russell
2013-03-21 8:29 ` [PATCH 19/22] virtio_pci: share interrupt/notify handlers " Rusty Russell
2013-03-21 8:29 ` [PATCH 20/22] virtio_pci: share virtqueue setup/teardown between modern and legacy driver Rusty Russell
2013-03-21 8:29 ` [PATCH 21/22] virtio_pci: simplify common helpers Rusty Russell
2013-03-21 8:29 ` [PATCH 22/22] virtio_pci: fix finalize_features in modern driver 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=20130403170246.GA25697@redhat.com \
--to=mst@redhat.com \
--cc=hpa@zytor.com \
--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 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).