Lines Matching refs:virtfn
117 struct pci_dev *virtfn; in virtfn_add() local
127 virtfn = pci_alloc_dev(bus); in virtfn_add()
128 if (!virtfn) in virtfn_add()
131 virtfn->devfn = pci_iov_virtfn_devfn(dev, id); in virtfn_add()
132 virtfn->vendor = dev->vendor; in virtfn_add()
133 pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device); in virtfn_add()
134 pci_setup_device(virtfn); in virtfn_add()
135 virtfn->dev.parent = dev->dev.parent; in virtfn_add()
136 virtfn->physfn = pci_dev_get(dev); in virtfn_add()
137 virtfn->is_virtfn = 1; in virtfn_add()
138 virtfn->multifunction = 0; in virtfn_add()
144 virtfn->resource[i].name = pci_name(virtfn); in virtfn_add()
145 virtfn->resource[i].flags = res->flags; in virtfn_add()
147 virtfn->resource[i].start = res->start + size * id; in virtfn_add()
148 virtfn->resource[i].end = virtfn->resource[i].start + size - 1; in virtfn_add()
149 rc = request_resource(res, &virtfn->resource[i]); in virtfn_add()
154 __pci_reset_function(virtfn); in virtfn_add()
156 pci_device_add(virtfn, virtfn->bus); in virtfn_add()
159 pci_bus_add_device(virtfn); in virtfn_add()
161 rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf); in virtfn_add()
164 rc = sysfs_create_link(&virtfn->dev.kobj, &dev->dev.kobj, "physfn"); in virtfn_add()
168 kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE); in virtfn_add()
177 pci_stop_and_remove_bus_device(virtfn); in virtfn_add()
189 struct pci_dev *virtfn; in virtfn_remove() local
192 virtfn = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus), in virtfn_remove()
195 if (!virtfn) in virtfn_remove()
199 device_release_driver(&virtfn->dev); in virtfn_remove()
200 __pci_reset_function(virtfn); in virtfn_remove()
210 if (virtfn->dev.kobj.sd) in virtfn_remove()
211 sysfs_remove_link(&virtfn->dev.kobj, "physfn"); in virtfn_remove()
214 pci_stop_and_remove_bus_device(virtfn); in virtfn_remove()
215 virtfn_remove_bus(dev->bus, virtfn->bus); in virtfn_remove()
219 pci_dev_put(virtfn); in virtfn_remove()