Lines Matching refs:iov
68 struct pci_sriov *iov = dev->sriov; in virtfn_add() local
71 mutex_lock(&iov->dev->sriov->lock); in virtfn_add()
82 pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device); in virtfn_add()
96 do_div(size, iov->total_VFs); in virtfn_add()
107 mutex_unlock(&iov->dev->sriov->lock); in virtfn_add()
127 mutex_lock(&iov->dev->sriov->lock); in virtfn_add()
132 mutex_unlock(&iov->dev->sriov->lock); in virtfn_add()
141 struct pci_sriov *iov = dev->sriov; in virtfn_remove() local
164 mutex_lock(&iov->dev->sriov->lock); in virtfn_remove()
167 mutex_unlock(&iov->dev->sriov->lock); in virtfn_remove()
182 struct pci_sriov *iov = dev->sriov; in sriov_enable() local
188 if (iov->num_VFs) in sriov_enable()
191 pci_read_config_word(dev, iov->pos + PCI_SRIOV_INITIAL_VF, &initial); in sriov_enable()
192 if (initial > iov->total_VFs || in sriov_enable()
193 (!(iov->cap & PCI_SRIOV_CAP_VFM) && (initial != iov->total_VFs))) in sriov_enable()
196 if (nr_virtfn < 0 || nr_virtfn > iov->total_VFs || in sriov_enable()
197 (!(iov->cap & PCI_SRIOV_CAP_VFM) && (nr_virtfn > initial))) in sriov_enable()
200 pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_OFFSET, &offset); in sriov_enable()
201 pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_STRIDE, &stride); in sriov_enable()
212 if (nres != iov->nres) { in sriov_enable()
217 iov->offset = offset; in sriov_enable()
218 iov->stride = stride; in sriov_enable()
230 if (iov->link != dev->devfn) { in sriov_enable()
231 pdev = pci_get_slot(dev->bus, iov->link); in sriov_enable()
247 pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, nr_virtfn); in sriov_enable()
248 iov->ctrl |= PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE; in sriov_enable()
250 pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); in sriov_enable()
254 iov->initial_VFs = initial; in sriov_enable()
265 iov->num_VFs = nr_virtfn; in sriov_enable()
273 iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); in sriov_enable()
275 pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); in sriov_enable()
276 pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, 0); in sriov_enable()
280 if (iov->link != dev->devfn) in sriov_enable()
289 struct pci_sriov *iov = dev->sriov; in sriov_disable() local
291 if (!iov->num_VFs) in sriov_disable()
294 for (i = 0; i < iov->num_VFs; i++) in sriov_disable()
297 iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); in sriov_disable()
299 pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); in sriov_disable()
303 if (iov->link != dev->devfn) in sriov_disable()
306 iov->num_VFs = 0; in sriov_disable()
307 pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, 0); in sriov_disable()
317 struct pci_sriov *iov; in sriov_init() local
376 iov = kzalloc(sizeof(*iov), GFP_KERNEL); in sriov_init()
377 if (!iov) { in sriov_init()
382 iov->pos = pos; in sriov_init()
383 iov->nres = nres; in sriov_init()
384 iov->ctrl = ctrl; in sriov_init()
385 iov->total_VFs = total; in sriov_init()
386 iov->offset = offset; in sriov_init()
387 iov->stride = stride; in sriov_init()
388 iov->pgsz = pgsz; in sriov_init()
389 iov->self = dev; in sriov_init()
390 pci_read_config_dword(dev, pos + PCI_SRIOV_CAP, &iov->cap); in sriov_init()
391 pci_read_config_byte(dev, pos + PCI_SRIOV_FUNC_LINK, &iov->link); in sriov_init()
393 iov->link = PCI_DEVFN(PCI_SLOT(dev->devfn), iov->link); in sriov_init()
396 iov->dev = pci_dev_get(pdev); in sriov_init()
398 iov->dev = dev; in sriov_init()
400 mutex_init(&iov->lock); in sriov_init()
402 dev->sriov = iov; in sriov_init()
433 struct pci_sriov *iov = dev->sriov; in sriov_restore_state() local
435 pci_read_config_word(dev, iov->pos + PCI_SRIOV_CTRL, &ctrl); in sriov_restore_state()
442 pci_write_config_dword(dev, iov->pos + PCI_SRIOV_SYS_PGSIZE, iov->pgsz); in sriov_restore_state()
443 pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, iov->num_VFs); in sriov_restore_state()
444 pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); in sriov_restore_state()
445 if (iov->ctrl & PCI_SRIOV_CTRL_VFE) in sriov_restore_state()