Lines Matching refs:virtfn
114 static void pci_read_vf_config_common(struct pci_dev *virtfn) in pci_read_vf_config_common() argument
116 struct pci_dev *physfn = virtfn->physfn; in pci_read_vf_config_common()
127 pci_read_config_dword(virtfn, PCI_CLASS_REVISION, in pci_read_vf_config_common()
129 pci_read_config_byte(virtfn, PCI_HEADER_TYPE, in pci_read_vf_config_common()
131 pci_read_config_word(virtfn, PCI_SUBSYSTEM_VENDOR_ID, in pci_read_vf_config_common()
133 pci_read_config_word(virtfn, PCI_SUBSYSTEM_ID, in pci_read_vf_config_common()
138 struct pci_dev *virtfn, int id) in pci_iov_sysfs_link() argument
144 rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf); in pci_iov_sysfs_link()
147 rc = sysfs_create_link(&virtfn->dev.kobj, &dev->dev.kobj, "physfn"); in pci_iov_sysfs_link()
151 kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE); in pci_iov_sysfs_link()
251 struct pci_dev *virtfn; in pci_iov_add_virtfn() local
260 virtfn = pci_alloc_dev(bus); in pci_iov_add_virtfn()
261 if (!virtfn) in pci_iov_add_virtfn()
264 virtfn->devfn = pci_iov_virtfn_devfn(dev, id); in pci_iov_add_virtfn()
265 virtfn->vendor = dev->vendor; in pci_iov_add_virtfn()
266 virtfn->device = iov->vf_device; in pci_iov_add_virtfn()
267 virtfn->is_virtfn = 1; in pci_iov_add_virtfn()
268 virtfn->physfn = pci_dev_get(dev); in pci_iov_add_virtfn()
269 virtfn->no_command_memory = 1; in pci_iov_add_virtfn()
272 pci_read_vf_config_common(virtfn); in pci_iov_add_virtfn()
274 rc = pci_setup_device(virtfn); in pci_iov_add_virtfn()
278 virtfn->dev.parent = dev->dev.parent; in pci_iov_add_virtfn()
279 virtfn->multifunction = 0; in pci_iov_add_virtfn()
285 virtfn->resource[i].name = pci_name(virtfn); in pci_iov_add_virtfn()
286 virtfn->resource[i].flags = res->flags; in pci_iov_add_virtfn()
288 virtfn->resource[i].start = res->start + size * id; in pci_iov_add_virtfn()
289 virtfn->resource[i].end = virtfn->resource[i].start + size - 1; in pci_iov_add_virtfn()
290 rc = request_resource(res, &virtfn->resource[i]); in pci_iov_add_virtfn()
294 pci_device_add(virtfn, virtfn->bus); in pci_iov_add_virtfn()
295 rc = pci_iov_sysfs_link(dev, virtfn, id); in pci_iov_add_virtfn()
299 pci_bus_add_device(virtfn); in pci_iov_add_virtfn()
304 pci_stop_and_remove_bus_device(virtfn); in pci_iov_add_virtfn()
316 struct pci_dev *virtfn; in pci_iov_remove_virtfn() local
318 virtfn = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus), in pci_iov_remove_virtfn()
321 if (!virtfn) in pci_iov_remove_virtfn()
331 if (virtfn->dev.kobj.sd) in pci_iov_remove_virtfn()
332 sysfs_remove_link(&virtfn->dev.kobj, "physfn"); in pci_iov_remove_virtfn()
334 pci_stop_and_remove_bus_device(virtfn); in pci_iov_remove_virtfn()
335 virtfn_remove_bus(dev->bus, virtfn->bus); in pci_iov_remove_virtfn()
338 pci_dev_put(virtfn); in pci_iov_remove_virtfn()