qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Pavel Fedin <p.fedin@samsung.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v4 2/3] hw/pci: Introduce pci_requester_id()
Date: Wed, 14 Oct 2015 19:09:51 +0300	[thread overview]
Message-ID: <20151014190920-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <8ab953090af58ac19d240feb48180b7b6f1f39bb.1444835138.git.p.fedin@samsung.com>

On Wed, Oct 14, 2015 at 06:06:37PM +0300, Pavel Fedin wrote:
> For GICv3 ITS implementation we are going to use requester IDs in KVM IRQ
> routing code. This patch introduces reusable convenient way to obtain this
> ID from the device pointer.
> 
> Since requester ID is an architecture-specific thing, the function can be
> overridden on per-architecture basis. Default stub just returns 0.
> 
> MemTxAttrs.stream_id also renamed to requester_id in order to better
> reflect semantics of the field.
> 
> Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
> ---
>  hw/pci/msi.c             |  2 +-
>  include/exec/memattrs.h  |  4 ++--
>  include/hw/pci/pci.h     |  1 +
>  stubs/Makefile.objs      |  1 +
>  stubs/pci.c              | 16 ++++++++++++++++
>  target-arm/Makefile.objs |  1 +
>  target-arm/pci.c         | 16 ++++++++++++++++
>  7 files changed, 38 insertions(+), 3 deletions(-)
>  create mode 100644 stubs/pci.c
>  create mode 100644 target-arm/pci.c
> 
> diff --git a/hw/pci/msi.c b/hw/pci/msi.c
> index f9c0484..c1dd531 100644
> --- a/hw/pci/msi.c
> +++ b/hw/pci/msi.c
> @@ -294,7 +294,7 @@ void msi_send_message(PCIDevice *dev, MSIMessage msg)
>  {
>      MemTxAttrs attrs = {};
>  
> -    attrs.stream_id = (pci_bus_num(dev->bus) << 8) | dev->devfn;
> +    attrs.requester_id = pci_requester_id(dev);
>      address_space_stl_le(&dev->bus_master_as, msg.address, msg.data,
>                           attrs, NULL);
>  }
> diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
> index f8537a8..e601061 100644
> --- a/include/exec/memattrs.h
> +++ b/include/exec/memattrs.h
> @@ -35,8 +35,8 @@ typedef struct MemTxAttrs {
>      unsigned int secure:1;
>      /* Memory access is usermode (unprivileged) */
>      unsigned int user:1;
> -    /* Stream ID (for MSI for example) */
> -    unsigned int stream_id:16;
> +    /* Requester ID (for MSI for example) */
> +    unsigned int requester_id:16;
>  } MemTxAttrs;
>  
>  /* Bus masters which don't specify any attributes will get this,
> diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
> index 551cb3d..708dc3a 100644
> --- a/include/hw/pci/pci.h
> +++ b/include/hw/pci/pci.h
> @@ -381,6 +381,7 @@ void pci_bus_fire_intx_routing_notifier(PCIBus *bus);
>  void pci_device_set_intx_routing_notifier(PCIDevice *dev,
>                                            PCIINTxRoutingNotifier notifier);
>  void pci_device_reset(PCIDevice *dev);
> +uint16_t pci_requester_id(PCIDevice *dev);
>  
>  PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
>                                 const char *default_model,
> diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> index 85e4e81..dbd69a9 100644
> --- a/stubs/Makefile.objs
> +++ b/stubs/Makefile.objs
> @@ -22,6 +22,7 @@ stub-obj-y += migr-blocker.o
>  stub-obj-y += mon-is-qmp.o
>  stub-obj-y += mon-printf.o
>  stub-obj-y += monitor-init.o
> +stub-obj-$(CONFIG_PCI) += pci.o
>  stub-obj-y += notify-event.o
>  stub-obj-$(CONFIG_SPICE) += qemu-chr-open-spice.o
>  stub-obj-y += qtest.o
> diff --git a/stubs/pci.c b/stubs/pci.c
> new file mode 100644
> index 0000000..3b13000
> --- /dev/null
> +++ b/stubs/pci.c
> @@ -0,0 +1,16 @@
> +/*
> + * QEMU architecture-specific PCI functions
> + *
> + * Copyright (c) 2015 Samsung Electronics Co., Ltd.
> + * Written by Pavel Fedin
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + *
> + */
> +#include "hw/pci/pci.h"
> +
> +uint16_t pci_requester_id(PCIDevice *dev)
> +{
> +    return 0;
> +}

OK this is now wrong. You should move the logic back here
from target-arm.

> diff --git a/target-arm/Makefile.objs b/target-arm/Makefile.objs
> index 9460b40..7b47434 100644
> --- a/target-arm/Makefile.objs
> +++ b/target-arm/Makefile.objs
> @@ -1,5 +1,6 @@
>  obj-y += arm-semi.o
>  obj-$(CONFIG_SOFTMMU) += machine.o
> +obj-$(CONFIG_PCI) += pci.o
>  obj-$(CONFIG_KVM) += kvm.o
>  obj-$(call land,$(CONFIG_KVM),$(call lnot,$(TARGET_AARCH64))) += kvm32.o
>  obj-$(call land,$(CONFIG_KVM),$(TARGET_AARCH64)) += kvm64.o
> diff --git a/target-arm/pci.c b/target-arm/pci.c
> new file mode 100644
> index 0000000..9bd5964
> --- /dev/null
> +++ b/target-arm/pci.c
> @@ -0,0 +1,16 @@
> +/*
> + * QEMU ARM specific PCI functions
> + *
> + * Copyright (c) 2015 Samsung Electronics Co., Ltd.
> + * Written by Pavel Fedin
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + *
> + */
> +#include "hw/pci/pci.h"
> +
> +uint16_t pci_requester_id(PCIDevice *dev)
> +{
> +    return (pci_bus_num(dev->bus) << 8) | dev->devfn;
> +}
> -- 
> 2.4.4

  reply	other threads:[~2015-10-14 16:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14 15:06 [Qemu-devel] [PATCH v4 0/3] Make KVM/MSI code device-ID-aware Pavel Fedin
2015-10-14 15:06 ` [Qemu-devel] [PATCH v4 1/3] kvm: Make KVM_CAP_SIGNAL_MSI globally available Pavel Fedin
2015-10-14 15:06 ` [Qemu-devel] [PATCH v4 2/3] hw/pci: Introduce pci_requester_id() Pavel Fedin
2015-10-14 16:09   ` Michael S. Tsirkin [this message]
2015-10-15  8:54     ` Pavel Fedin
2015-10-15  9:36       ` Michael S. Tsirkin
2015-10-15  9:42         ` Pavel Fedin
2015-10-15  9:58           ` Michael S. Tsirkin
2015-10-14 15:06 ` [Qemu-devel] [PATCH v4 3/3] kvm: Pass PCI device pointer to MSI routing functions Pavel Fedin

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=20151014190920-mutt-send-email-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=p.fedin@samsung.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.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).