[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 24/25] s390x/pci: replace fid with idx in msg data of
From: |
Cornelia Huck |
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 |
From: Yi Min Zhao <address@hidden>
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 <address@hidden>
Reviewed-by: Pierre Morel <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
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
- [Qemu-devel] [PULL 03/25] s390x/ipl: Support IPL from selected SCSI device, (continued)
- [Qemu-devel] [PULL 03/25] s390x/ipl: Support IPL from selected SCSI device, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 02/25] pc-bios/s390-ccw.img: rebuild image, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 15/25] s390x/pci: introduce S390PCIBus, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 23/25] s390x/pci: fix stpcifc_service_call, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 20/25] s390x/pci: add checkings in CLP_SET_PCI_FN, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 18/25] s390x/pci: enable uid-checking, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 11/25] s390x/pci: write fid in CLP_QUERY_PCI_FN, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 16/25] s390x/pci: introduce S390PCIIOMMU, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 21/25] s390x/pci: refactor s390_pci_find_dev_by_idx, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 10/25] s390x/pci: acceleration for getting S390pciState, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 24/25] s390x/pci: replace fid with idx in msg data of msix,
Cornelia Huck <=
- [Qemu-devel] [PULL 07/25] s390x/css: Factor out virtual css bridge and bus, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 22/25] s390x/pci: refactor list_pci, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 25/25] s390x/pci: make hot-unplug handler smoother, Cornelia Huck, 2016/07/11
- [Qemu-devel] [PULL 13/25] s390x/pci: refactor s390_pci_find_dev_by_fh, Cornelia Huck, 2016/07/11
- Re: [Qemu-devel] [PULL 00/25] s390x patches for 2.7, Peter Maydell, 2016/07/12