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
next prev parent 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 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.