All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: cornelia.huck@de.ibm.com, Keith Busch <keith.busch@intel.com>,
	Kevin Wolf <kwolf@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH V5 17/18] pci: remove hard-coded bar size in msix_init_exclusive_bar()
Date: Wed, 1 Apr 2015 12:20:02 +0200	[thread overview]
Message-ID: <20150401121819-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <1427883138.20573.0@smtp.corp.redhat.com>

On Wed, Apr 01, 2015 at 06:12:18PM +0800, Jason Wang wrote:
> >> diff --git a/hw/pci/msix.c b/hw/pci/msix.c
> >> index 24de260..8c6d8f3 100644
> >> --- a/hw/pci/msix.c
> >> +++ b/hw/pci/msix.c
> >> @@ -291,33 +291,44 @@ int msix_init(struct PCIDevice *dev, unsigned
> >>short nentries,
> >>  }
> >>     int msix_init_exclusive_bar(PCIDevice *dev, unsigned short
> >>nentries,
> >> -                            uint8_t bar_nr)
> >> +                            uint8_t bar_nr, bool legacy_layout)
> >>  {
> >>      int ret;
> >>      char *name;
> >> -
> >> -    /*
> >> -     * Migration compatibility dictates that this remains a 4k
> >> -     * BAR with the vector table in the lower half and PBA in
> >> -     * the upper half.  Do not use these elsewhere!
> >> -     */
> >> -#define MSIX_EXCLUSIVE_BAR_SIZE 4096
> >> -#define MSIX_EXCLUSIVE_BAR_TABLE_OFFSET 0
> >> -#define MSIX_EXCLUSIVE_BAR_PBA_OFFSET (MSIX_EXCLUSIVE_BAR_SIZE / 2)
> >> -#define MSIX_EXCLUSIVE_CAP_OFFSET 0
> >> -
> >> -    if (nentries * PCI_MSIX_ENTRY_SIZE >
> >>MSIX_EXCLUSIVE_BAR_PBA_OFFSET) {
> >> -        return -EINVAL;
> >> +    uint32_t bar_size;
> >> +    uint32_t bar_pba_offset;
> >> +
> >> +    if (legacy_layout) {
> >> +        /*
> >> +         * Migration compatibility dictates that this remains a 4k
> >> +         * BAR with the vector table in the lower half and PBA in
> >> +         * the upper half.  Do not use these elsewhere!
> >> +         */
> >> +        bar_size = 4096;
> >> +        bar_pba_offset = bar_size / 2;
> >> +
> >> +        if (nentries * PCI_MSIX_ENTRY_SIZE > bar_pba_offset) {
> >> +            return -EINVAL;
> >> +        }
> >
> >So this takes pains to behave in a compatible
> >way when more than 128 vectors are requested.
> >But since we only had up to 64 VQs, why does
> >some a configuration make sense?
> 
> This question could also be asked for the code even without this patch. Spec
> does not clarify this and if we think vectors>=128 is not a valid
> configuration with only 64 VQs, qemu should fail and quit instead of a
> warning. Unfortunately we don't do this and leave a chance for user to use
> it.

I agree with this as a general design principle.
And it's typically even better to just support what
the user requested, even if it doesn't make sense.

-- 
MST

  reply	other threads:[~2015-04-01 10:20 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-01  8:14 [Qemu-devel] [PATCH V5 00/18] Support more virtio queues Jason Wang
2015-04-01  8:14 ` [Qemu-devel] [PATCH V5 01/18] virtio-net: fix the upper bound when trying to delete queues Jason Wang
2015-04-01  8:14 ` [Qemu-devel] [PATCH V5 02/18] pc: add 2.4 machine types Jason Wang
2015-04-01  8:14 ` [Qemu-devel] [PATCH V5 03/18] spapr: add machine type specific instance init function Jason Wang
2015-04-01  8:14 ` [Qemu-devel] [PATCH V5 04/18] ppc: spapr: add 2.4 machine type Jason Wang
2015-04-01  8:14 ` [Qemu-devel] [PATCH V5 05/18] monitor: replace the magic number 255 with MAX_QUEUE_NUM Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 06/18] monitor: check return value of qemu_find_net_clients_except() Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 07/18] virtio-ccw: using VIRTIO_NO_VECTOR instead of 0 for invalid virtqueue Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 08/18] virtio: introduce bus specific queue limit Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 09/18] virtio-ccw: introduce ccw " Jason Wang
2015-04-02 13:47   ` Cornelia Huck
2015-04-03  8:53     ` Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 10/18] virtio-s390: switch to bus " Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 11/18] virtio-mmio: " Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 12/18] virtio-pci: switch to use " Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 13/18] virtio: introduce vector to virtqueues mapping Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 14/18] virtio: introduce virtio_queue_get_index() Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 15/18] virtio-pci: speedup MSI-X masking and unmasking Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 16/18] virtio-pci: increase the maximum number of virtqueues to 513 Jason Wang
2015-04-07 16:54   ` Alexander Graf
2015-04-07 18:06     ` Luigi Rizzo
2015-04-07 18:33       ` Alexander Graf
2015-04-08  8:29         ` Jason Wang
2015-04-08  8:41           ` Alexander Graf
2015-04-08  9:04             ` Jason Wang
2015-04-08  8:27       ` Jason Wang
2015-04-08 13:23       ` Michael S. Tsirkin
2015-04-08  8:10     ` Jason Wang
2015-04-08  8:13       ` Alexander Graf
2015-04-08  8:30         ` Jason Wang
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 17/18] pci: remove hard-coded bar size in msix_init_exclusive_bar() Jason Wang
2015-04-01  9:18   ` Michael S. Tsirkin
2015-04-01 10:12     ` Jason Wang
2015-04-01 10:20       ` Michael S. Tsirkin [this message]
2015-04-01  8:15 ` [Qemu-devel] [PATCH V5 18/18] virtio-pci: introduce auto_msix_bar_size property Jason Wang
2015-04-01  9:20   ` Michael S. Tsirkin
2015-04-01 10:14     ` Jason Wang
2015-04-02 13:43 ` [Qemu-devel] [PATCH V5 00/18] Support more virtio queues Cornelia Huck
2015-04-03  8:52   ` Jason Wang

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=20150401121819-mutt-send-email-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=jasowang@redhat.com \
    --cc=keith.busch@intel.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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 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.