Lines Matching refs:virtfn
115 static void pci_read_vf_config_common(struct pci_dev *virtfn) in pci_read_vf_config_common() argument
117 struct pci_dev *physfn = virtfn->physfn; in pci_read_vf_config_common()
128 pci_read_config_dword(virtfn, PCI_CLASS_REVISION, in pci_read_vf_config_common()
130 pci_read_config_byte(virtfn, PCI_HEADER_TYPE, in pci_read_vf_config_common()
132 pci_read_config_word(virtfn, PCI_SUBSYSTEM_VENDOR_ID, in pci_read_vf_config_common()
134 pci_read_config_word(virtfn, PCI_SUBSYSTEM_ID, in pci_read_vf_config_common()
144 struct pci_dev *virtfn; in pci_iov_add_virtfn() local
153 virtfn = pci_alloc_dev(bus); in pci_iov_add_virtfn()
154 if (!virtfn) in pci_iov_add_virtfn()
157 virtfn->devfn = pci_iov_virtfn_devfn(dev, id); in pci_iov_add_virtfn()
158 virtfn->vendor = dev->vendor; in pci_iov_add_virtfn()
159 virtfn->device = iov->vf_device; in pci_iov_add_virtfn()
160 virtfn->is_virtfn = 1; in pci_iov_add_virtfn()
161 virtfn->physfn = pci_dev_get(dev); in pci_iov_add_virtfn()
164 pci_read_vf_config_common(virtfn); in pci_iov_add_virtfn()
166 rc = pci_setup_device(virtfn); in pci_iov_add_virtfn()
170 virtfn->dev.parent = dev->dev.parent; in pci_iov_add_virtfn()
171 virtfn->multifunction = 0; in pci_iov_add_virtfn()
177 virtfn->resource[i].name = pci_name(virtfn); in pci_iov_add_virtfn()
178 virtfn->resource[i].flags = res->flags; in pci_iov_add_virtfn()
180 virtfn->resource[i].start = res->start + size * id; in pci_iov_add_virtfn()
181 virtfn->resource[i].end = virtfn->resource[i].start + size - 1; in pci_iov_add_virtfn()
182 rc = request_resource(res, &virtfn->resource[i]); in pci_iov_add_virtfn()
186 pci_device_add(virtfn, virtfn->bus); in pci_iov_add_virtfn()
189 rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf); in pci_iov_add_virtfn()
192 rc = sysfs_create_link(&virtfn->dev.kobj, &dev->dev.kobj, "physfn"); in pci_iov_add_virtfn()
196 kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE); in pci_iov_add_virtfn()
198 pci_bus_add_device(virtfn); in pci_iov_add_virtfn()
205 pci_stop_and_remove_bus_device(virtfn); in pci_iov_add_virtfn()
218 struct pci_dev *virtfn; in pci_iov_remove_virtfn() local
220 virtfn = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus), in pci_iov_remove_virtfn()
223 if (!virtfn) in pci_iov_remove_virtfn()
233 if (virtfn->dev.kobj.sd) in pci_iov_remove_virtfn()
234 sysfs_remove_link(&virtfn->dev.kobj, "physfn"); in pci_iov_remove_virtfn()
236 pci_stop_and_remove_bus_device(virtfn); in pci_iov_remove_virtfn()
237 virtfn_remove_bus(dev->bus, virtfn->bus); in pci_iov_remove_virtfn()
240 pci_dev_put(virtfn); in pci_iov_remove_virtfn()