From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: peter.maydell@linaro.org
Cc: borntraeger@de.ibm.com, agraf@suse.de, jfrei@linux.vnet.ibm.com,
qemu-devel@nongnu.org, Yi Min Zhao <zyimin@linux.vnet.ibm.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>
Subject: [Qemu-devel] [PULL 24/25] s390x/pci: replace fid with idx in msg data of msix
Date: Mon, 11 Jul 2016 10:09:11 +0200 [thread overview]
Message-ID: <20160711080912.13947-25-cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <20160711080912.13947-1-cornelia.huck@de.ibm.com>
From: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Present code uses fid as the part of message data of msix for looking
up the specific zpci device. However it limits the usable range of fid,
and the code looking up the zpci device may fail due to truncation of
the fid.
In addition, fh is composed of enabled bit, FH_VIRT and the array index.
So we can use the array index as the identifier to store in msg data.
Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
---
hw/s390x/s390-pci-bus.c | 8 ++++----
hw/s390x/s390-pci-inst.c | 3 ++-
target-s390x/kvm.c | 4 ++--
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index f930b04..630a826 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -474,18 +474,18 @@ static void s390_msi_ctrl_write(void *opaque, hwaddr addr, uint64_t data,
{
S390PCIBusDevice *pbdev;
uint32_t io_int_word;
- uint32_t fid = data >> ZPCI_MSI_VEC_BITS;
+ uint32_t idx = data >> ZPCI_MSI_VEC_BITS;
uint32_t vec = data & ZPCI_MSI_VEC_MASK;
uint64_t ind_bit;
uint32_t sum_bit;
uint32_t e = 0;
- DPRINTF("write_msix data 0x%" PRIx64 " fid %d vec 0x%x\n", data, fid, vec);
+ DPRINTF("write_msix data 0x%" PRIx64 " idx %d vec 0x%x\n", data, idx, vec);
- pbdev = s390_pci_find_dev_by_fid(fid);
+ pbdev = s390_pci_find_dev_by_idx(idx);
if (!pbdev) {
e |= (vec << ERR_EVENT_MVN_OFFSET);
- s390_pci_generate_error_event(ERR_EVENT_NOMSI, 0, fid, addr, e);
+ s390_pci_generate_error_event(ERR_EVENT_NOMSI, idx, 0, addr, e);
return;
}
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index 37572df..331bc4c 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -419,7 +419,8 @@ static void update_msix_table_msg_data(S390PCIBusDevice *pbdev, uint64_t offset,
msg_data = (uint8_t *)data - offset % PCI_MSIX_ENTRY_SIZE +
PCI_MSIX_ENTRY_VECTOR_CTRL;
- val = pci_get_long(msg_data) | (pbdev->fid << ZPCI_MSI_VEC_BITS);
+ val = pci_get_long(msg_data) |
+ ((pbdev->fh & FH_MASK_INDEX) << ZPCI_MSI_VEC_BITS);
pci_set_long(msg_data, val);
DPRINTF("update msix msg_data to 0x%" PRIx64 "\n", *data);
}
diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index 45e94ca..2991bff 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -2246,10 +2246,10 @@ int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route,
uint64_t address, uint32_t data, PCIDevice *dev)
{
S390PCIBusDevice *pbdev;
- uint32_t fid = data >> ZPCI_MSI_VEC_BITS;
+ uint32_t idx = data >> ZPCI_MSI_VEC_BITS;
uint32_t vec = data & ZPCI_MSI_VEC_MASK;
- pbdev = s390_pci_find_dev_by_fid(fid);
+ pbdev = s390_pci_find_dev_by_idx(idx);
if (!pbdev) {
DPRINTF("add_msi_route no dev\n");
return -ENODEV;
--
2.9.0
next prev parent reply other threads:[~2016-07-11 8:11 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-11 8:08 [Qemu-devel] [PULL 00/25] s390x patches for 2.7 Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 01/25] pc-bios/s390-ccw: Pass selected SCSI device to IPL Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 02/25] pc-bios/s390-ccw.img: rebuild image Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 03/25] s390x/ipl: Support IPL from selected SCSI device Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 04/25] s390x/ipl: fix reboots for migration from different bios Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 05/25] s390x/css: factor out some generic code from virtio_ccw_device_realize() Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 06/25] s390x/css: use define for "virtual-css-bridge" literal Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 07/25] s390x/css: Factor out virtual css bridge and bus Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 08/25] s390x/css: Unplug handler of virtual css bridge Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 09/25] s390x/pci: fix failures of dma map/unmap Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 10/25] s390x/pci: acceleration for getting S390pciState Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 11/25] s390x/pci: write fid in CLP_QUERY_PCI_FN Cornelia Huck
2016-07-11 8:08 ` [Qemu-devel] [PULL 12/25] s390x/pci: unify FH_ macros Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 13/25] s390x/pci: refactor s390_pci_find_dev_by_fh Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 14/25] s390x/pci: enforce zPCI state checking Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 15/25] s390x/pci: introduce S390PCIBus Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 16/25] s390x/pci: introduce S390PCIIOMMU Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 17/25] s390x/pci: introduce S390PCIBusDevice qdev Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 18/25] s390x/pci: enable uid-checking Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 19/25] s390x/pci: enable zpci hot-plug/hot-unplug Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 20/25] s390x/pci: add checkings in CLP_SET_PCI_FN Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 21/25] s390x/pci: refactor s390_pci_find_dev_by_idx Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 22/25] s390x/pci: refactor list_pci Cornelia Huck
2016-07-11 8:09 ` [Qemu-devel] [PULL 23/25] s390x/pci: fix stpcifc_service_call Cornelia Huck
2016-07-11 8:09 ` Cornelia Huck [this message]
2016-07-11 8:09 ` [Qemu-devel] [PULL 25/25] s390x/pci: make hot-unplug handler smoother Cornelia Huck
2016-07-12 8:48 ` [Qemu-devel] [PULL 00/25] s390x patches for 2.7 Peter Maydell
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=20160711080912.13947-25-cornelia.huck@de.ibm.com \
--to=cornelia.huck@de.ibm.com \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=jfrei@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=zyimin@linux.vnet.ibm.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 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).