linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: andre.przywara@arm.com (Andre Przywara)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 11/15] PCI: inject PCI device ID on MSI injection
Date: Wed, 20 Jul 2016 18:04:31 +0100	[thread overview]
Message-ID: <20160720170435.28090-12-andre.przywara@arm.com> (raw)
In-Reply-To: <20160720170435.28090-1-andre.przywara@arm.com>

The ITS emulation requires a unique device ID to be passed along the
MSI payload when kvmtool wants to trigger an MSI in the guest.
According to the proposed changes to the interface add the PCI
bus/device/function triple to the structure passed with the ioctl.
Check the respective capability before actually adding the device ID
to the kvm_msi struct.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 virtio/pci.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/virtio/pci.c b/virtio/pci.c
index 604b9ec..e9f81f7 100644
--- a/virtio/pci.c
+++ b/virtio/pci.c
@@ -318,14 +318,28 @@ static void virtio_pci__msix_mmio_callback(struct kvm_cpu *vcpu,
 		update_msix_map(vpci, table, (addr - offset) / 16);
 }
 
-static void virtio_pci__signal_msi(struct kvm *kvm, struct virtio_pci *vpci, int vec)
+static void virtio_pci__signal_msi(struct kvm *kvm, struct virtio_pci *vpci,
+				   int vec)
 {
+	static int needs_devid = 0;
 	struct kvm_msi msi = {
 		.address_lo = vpci->msix_table[vec].msg.address_lo,
 		.address_hi = vpci->msix_table[vec].msg.address_hi,
 		.data = vpci->msix_table[vec].msg.data,
 	};
 
+	if (needs_devid == 0) {
+		if (kvm__supports_vm_extension(kvm, KVM_CAP_MSI_DEVID))
+			needs_devid = 1;
+		else
+			needs_devid = -1;
+	}
+
+	if (needs_devid > 0) {
+		msi.flags = KVM_MSI_VALID_DEVID;
+		msi.devid = vpci->dev_hdr.dev_num << 3;
+	}
+
 	ioctl(kvm->vm_fd, KVM_SIGNAL_MSI, &msi);
 }
 
-- 
2.9.0

  parent reply	other threads:[~2016-07-20 17:04 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-20 17:04 [PATCH v7 00/15] kvmtool: arm: ITS emulation and GSI routing support Andre Przywara
2016-07-20 17:04 ` [PATCH v7 01/15] FDT: introduce global phandle allocation Andre Przywara
2016-07-20 17:04 ` [PATCH v7 02/15] arm: use new phandle allocation functions Andre Przywara
2016-07-20 17:04 ` [PATCH v7 03/15] irq: move IRQ routing into irq.c Andre Przywara
2016-11-02 14:37   ` Jean-Philippe Brucker
2016-11-04 17:35     ` Andre Przywara
2016-07-20 17:04 ` [PATCH v7 04/15] MSI-X: update GSI routing after changed MSI-X configuration Andre Przywara
2016-07-20 17:04 ` [PATCH v7 05/15] virtio: fix endianness check for vhost support Andre Przywara
2016-07-20 17:04 ` [PATCH v7 06/15] PCI: Only allocate IRQ routing entry when available Andre Przywara
2016-07-20 17:04 ` [PATCH v7 07/15] TEMPORARY: update public headers for GICv3 ITS emulation Andre Przywara
2016-07-20 17:04 ` [PATCH v7 08/15] arm: allow creation of an MSI register frame region Andre Przywara
2016-07-20 17:04 ` [PATCH v7 09/15] arm: FDT: create MSI controller DT node Andre Przywara
2016-07-20 17:04 ` [PATCH v7 10/15] add kvm__check_vm_capability Andre Przywara
2016-07-20 17:04 ` Andre Przywara [this message]
2016-07-20 17:04 ` [PATCH v7 12/15] arm: setup SPI IRQ routing tables Andre Przywara
2016-07-20 17:04 ` [PATCH v7 13/15] extend GSI IRQ routing to take a device ID Andre Przywara
2016-07-20 17:04 ` [PATCH v7 14/15] arm64: enable GICv3-ITS emulation Andre Przywara
2016-07-20 17:04 ` [PATCH v7 15/15] arm: gic: allow 32-bit compilation Andre Przywara

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=20160720170435.28090-12-andre.przywara@arm.com \
    --to=andre.przywara@arm.com \
    --cc=linux-arm-kernel@lists.infradead.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).