From ab9746570ab375f3f2a3d5ec0c95d2621aca5493 Mon Sep 17 00:00:00 2001 From: Yi Min Zhao Date: Fri, 3 Jun 2016 14:17:59 +0800 Subject: [PATCH] s390x/pci: refactor s390_pci_find_dev_by_idx s390_find_dev_by_idx() only indexes usable zpci devices. It implies that the index value of each zpci device is dynamic and may change if a new zpci device is plugged. So we have to use a constant index to look up the device. Signed-off-by: Yi Min Zhao Reviewed-by: Pierre Morel Signed-off-by: Cornelia Huck --- hw/s390x/s390-pci-bus.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 57d5d14318..9e24268fd1 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -223,28 +223,9 @@ static S390PCIBusDevice *s390_pci_find_dev_by_target(const char *target) S390PCIBusDevice *s390_pci_find_dev_by_idx(uint32_t idx) { - S390PCIBusDevice *pbdev; - int i; - int j = 0; S390pciState *s = s390_get_phb(); - for (i = 0; i < PCI_SLOT_MAX; i++) { - pbdev = s->pbdev[i]; - if (!pbdev) { - continue; - } - - if (pbdev->state == ZPCI_FS_RESERVED) { - continue; - } - - if (j == idx) { - return pbdev; - } - j++; - } - - return NULL; + return s->pbdev[idx & FH_MASK_INDEX]; } S390PCIBusDevice *s390_pci_find_dev_by_fh(uint32_t fh) -- 2.34.1