From: "Michael S. Tsirkin" <mst@redhat.com>
To: Pavel Fedin <p.fedin@samsung.com>
Cc: 'Peter Maydell' <peter.maydell@linaro.org>,
'QEMU Developers' <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] Add stream ID to MSI write
Date: Wed, 27 May 2015 13:28:15 +0200 [thread overview]
Message-ID: <20150527132750-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <012901d0986d$3574ab00$a05e0100$@samsung.com>
On Wed, May 27, 2015 at 02:06:40PM +0300, Pavel Fedin wrote:
> GICv3 ITS distinguishes between devices by using hardwired device IDs passed on the bus.
> This patch implements passing these IDs in qemu.
> SMMU is also known to use stream IDs, therefore this addition can also be useful for
> implementing platforms with SMMU.
> Unfortunately currently qemu does not seem to have such thing as bus number, therefore we
> use only devfn. This is OK for platforms with only one PCI bus instance. Perhaps
> additional property should be implemented when we emulate some GICv3-based machine with
> more than one bus.
>
> Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
There's pci_bus_num.
> ---
> hw/pci/msix.c | 4 +++-
> include/exec/memattrs.h | 2 ++
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/hw/pci/msix.c b/hw/pci/msix.c
> index 9935f98..e85ce10 100644
> --- a/hw/pci/msix.c
> +++ b/hw/pci/msix.c
> @@ -433,6 +433,7 @@ int msix_enabled(PCIDevice *dev)
> void msix_notify(PCIDevice *dev, unsigned vector)
> {
> MSIMessage msg;
> + MemTxAttrs attrs = {};
>
> if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector])
> return;
> @@ -442,9 +443,10 @@ void msix_notify(PCIDevice *dev, unsigned vector)
> }
>
> msg = msix_get_message(dev, vector);
> + attrs.stream_id = dev->devfn; /* TODO: Add bus number here */
>
> address_space_stl_le(&dev->bus_master_as, msg.address, msg.data,
> - MEMTXATTRS_UNSPECIFIED, NULL);
> + attrs, NULL);
> }
>
> void msix_reset(PCIDevice *dev)
> diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
> index 1389b4b..96dc440 100644
> --- a/include/exec/memattrs.h
> +++ b/include/exec/memattrs.h
> @@ -33,6 +33,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;
> } MemTxAttrs;
>
> /* Bus masters which don't specify any attributes will get this,
> --
> 1.9.5.msysgit.0
>
prev parent reply other threads:[~2015-05-27 11:28 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-27 11:06 [Qemu-devel] [PATCH] Add stream ID to MSI write Pavel Fedin
2015-05-27 11:28 ` Michael S. Tsirkin [this message]
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=20150527132750-mutt-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=p.fedin@samsung.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.