struct pci_dn *pdn;             /* Associated PCI device node   */
        struct pci_dev *pdev;           /* Associated PCI device        */
        bool in_error;                  /* Error flag for edev          */
+
+       /* VF specific properties */
        struct pci_dev *physfn;         /* Associated SRIOV PF          */
+       int vf_index;                   /* Index of this VF             */
 };
 
 /* "fmt" must be a simple literal string */
 
 #define IODA_INVALID_PE                0xFFFFFFFF
        unsigned int pe_number;
 #ifdef CONFIG_PCI_IOV
-       int     vf_index;               /* VF index in the PF */
        u16     vfs_expanded;           /* number of VFs IOV BAR expanded */
        u16     num_vfs;                /* number of VFs enabled*/
        unsigned int *pe_num_map;       /* PE# for the first VF PE or array */
 
        }
 
 #ifdef CONFIG_PCI_IOV
-       pci_iov_add_virtfn(edev->physfn, eeh_dev_to_pdn(edev)->vf_index);
+       pci_iov_add_virtfn(edev->physfn, edev->vf_index);
 #endif
        return NULL;
 }
 
        if (edev->physfn) {
 #ifdef CONFIG_PCI_IOV
-               struct pci_dn *pdn = eeh_dev_to_pdn(edev);
-
-               pci_iov_remove_virtfn(edev->physfn, pdn->vf_index);
+               pci_iov_remove_virtfn(edev->physfn, edev->vf_index);
                edev->pdev = NULL;
 #endif
                if (rmv_data)
 
 
 #ifdef CONFIG_PCI_IOV
 static struct pci_dn *add_one_sriov_vf_pdn(struct pci_dn *parent,
-                                          int vf_index,
                                           int busno, int devfn)
 {
        struct pci_dn *pdn;
        pdn->parent = parent;
        pdn->busno = busno;
        pdn->devfn = devfn;
-       pdn->vf_index = vf_index;
        pdn->pe_number = IODA_INVALID_PE;
        INIT_LIST_HEAD(&pdn->child_list);
        INIT_LIST_HEAD(&pdn->list);
        for (i = 0; i < pci_sriov_get_totalvfs(pdev); i++) {
                struct eeh_dev *edev __maybe_unused;
 
-               pdn = add_one_sriov_vf_pdn(parent, i,
+               pdn = add_one_sriov_vf_pdn(parent,
                                           pci_iov_virtfn_bus(pdev, i),
                                           pci_iov_virtfn_devfn(pdev, i));
                if (!pdn) {
                /* Create the EEH device for the VF */
                edev = eeh_dev_init(pdn);
                BUG_ON(!edev);
+
+               /* FIXME: these should probably be populated by the EEH probe */
                edev->physfn = pdev;
+               edev->vf_index = i;
 #endif /* CONFIG_EEH */
        }
        return pci_get_pdn(pdev);