Commit 06a96dae authored by Yi Min Zhao's avatar Yi Min Zhao Committed by Cornelia Huck
Browse files

s390x/pci: refactor s390_pci_find_dev_by_fh



Because this function is called very frequently, we should use a more
effective way to find the zpci device. So we use the FH's index to get
the device directly.

Signed-off-by: default avatarYi Min Zhao <zyimin@linux.vnet.ibm.com>
Reviewed-by: default avatarPierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
parent c188e303
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -198,20 +198,13 @@ S390PCIBusDevice *s390_pci_find_dev_by_idx(uint32_t idx)

S390PCIBusDevice *s390_pci_find_dev_by_fh(uint32_t fh)
{
    S390PCIBusDevice *pbdev;
    int i;
    S390pciState *s = s390_get_phb();
    S390PCIBusDevice *pbdev;

    if (!fh) {
        return NULL;
    }

    for (i = 0; i < PCI_SLOT_MAX; i++) {
        pbdev = &s->pbdev[i];
        if (pbdev->fh == fh) {
    pbdev = &s->pbdev[fh & FH_MASK_INDEX];
    if (pbdev->fh != 0 && pbdev->fh == fh) {
        return pbdev;
    }
    }

    return NULL;
}