Commit 6b136724 authored by Bjorn Helgaas's avatar Bjorn Helgaas

PCI: Use spec names for SR-IOV capability fields

Use the same names (almost) as the spec for TotalVFs, InitialVFs, NumVFs.
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent bff73156
...@@ -106,7 +106,7 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset) ...@@ -106,7 +106,7 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset)
virtfn->resource[i].name = pci_name(virtfn); virtfn->resource[i].name = pci_name(virtfn);
virtfn->resource[i].flags = res->flags; virtfn->resource[i].flags = res->flags;
size = resource_size(res); size = resource_size(res);
do_div(size, iov->total); do_div(size, iov->total_VFs);
virtfn->resource[i].start = res->start + size * id; virtfn->resource[i].start = res->start + size * id;
virtfn->resource[i].end = virtfn->resource[i].start + size - 1; virtfn->resource[i].end = virtfn->resource[i].start + size - 1;
rc = request_resource(res, &virtfn->resource[i]); rc = request_resource(res, &virtfn->resource[i]);
...@@ -194,7 +194,7 @@ static int sriov_migration(struct pci_dev *dev) ...@@ -194,7 +194,7 @@ static int sriov_migration(struct pci_dev *dev)
u16 status; u16 status;
struct pci_sriov *iov = dev->sriov; struct pci_sriov *iov = dev->sriov;
if (!iov->nr_virtfn) if (!iov->num_VFs)
return 0; return 0;
if (!(iov->cap & PCI_SRIOV_CAP_VFM)) if (!(iov->cap & PCI_SRIOV_CAP_VFM))
...@@ -216,7 +216,7 @@ static void sriov_migration_task(struct work_struct *work) ...@@ -216,7 +216,7 @@ static void sriov_migration_task(struct work_struct *work)
u16 status; u16 status;
struct pci_sriov *iov = container_of(work, struct pci_sriov, mtask); struct pci_sriov *iov = container_of(work, struct pci_sriov, mtask);
for (i = iov->initial; i < iov->nr_virtfn; i++) { for (i = iov->initial_VFs; i < iov->num_VFs; i++) {
state = readb(iov->mstate + i); state = readb(iov->mstate + i);
if (state == PCI_SRIOV_VFM_MI) { if (state == PCI_SRIOV_VFM_MI) {
writeb(PCI_SRIOV_VFM_AV, iov->mstate + i); writeb(PCI_SRIOV_VFM_AV, iov->mstate + i);
...@@ -244,7 +244,7 @@ static int sriov_enable_migration(struct pci_dev *dev, int nr_virtfn) ...@@ -244,7 +244,7 @@ static int sriov_enable_migration(struct pci_dev *dev, int nr_virtfn)
resource_size_t pa; resource_size_t pa;
struct pci_sriov *iov = dev->sriov; struct pci_sriov *iov = dev->sriov;
if (nr_virtfn <= iov->initial) if (nr_virtfn <= iov->initial_VFs)
return 0; return 0;
pci_read_config_dword(dev, iov->pos + PCI_SRIOV_VFM, &table); pci_read_config_dword(dev, iov->pos + PCI_SRIOV_VFM, &table);
...@@ -294,15 +294,15 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) ...@@ -294,15 +294,15 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
if (!nr_virtfn) if (!nr_virtfn)
return 0; return 0;
if (iov->nr_virtfn) if (iov->num_VFs)
return -EINVAL; return -EINVAL;
pci_read_config_word(dev, iov->pos + PCI_SRIOV_INITIAL_VF, &initial); pci_read_config_word(dev, iov->pos + PCI_SRIOV_INITIAL_VF, &initial);
if (initial > iov->total || if (initial > iov->total_VFs ||
(!(iov->cap & PCI_SRIOV_CAP_VFM) && (initial != iov->total))) (!(iov->cap & PCI_SRIOV_CAP_VFM) && (initial != iov->total_VFs)))
return -EIO; return -EIO;
if (nr_virtfn < 0 || nr_virtfn > iov->total || if (nr_virtfn < 0 || nr_virtfn > iov->total_VFs ||
(!(iov->cap & PCI_SRIOV_CAP_VFM) && (nr_virtfn > initial))) (!(iov->cap & PCI_SRIOV_CAP_VFM) && (nr_virtfn > initial)))
return -EINVAL; return -EINVAL;
...@@ -359,7 +359,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) ...@@ -359,7 +359,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
msleep(100); msleep(100);
pci_cfg_access_unlock(dev); pci_cfg_access_unlock(dev);
iov->initial = initial; iov->initial_VFs = initial;
if (nr_virtfn < initial) if (nr_virtfn < initial)
initial = nr_virtfn; initial = nr_virtfn;
...@@ -376,7 +376,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) ...@@ -376,7 +376,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
} }
kobject_uevent(&dev->dev.kobj, KOBJ_CHANGE); kobject_uevent(&dev->dev.kobj, KOBJ_CHANGE);
iov->nr_virtfn = nr_virtfn; iov->num_VFs = nr_virtfn;
return 0; return 0;
...@@ -401,13 +401,13 @@ static void sriov_disable(struct pci_dev *dev) ...@@ -401,13 +401,13 @@ static void sriov_disable(struct pci_dev *dev)
int i; int i;
struct pci_sriov *iov = dev->sriov; struct pci_sriov *iov = dev->sriov;
if (!iov->nr_virtfn) if (!iov->num_VFs)
return; return;
if (iov->cap & PCI_SRIOV_CAP_VFM) if (iov->cap & PCI_SRIOV_CAP_VFM)
sriov_disable_migration(dev); sriov_disable_migration(dev);
for (i = 0; i < iov->nr_virtfn; i++) for (i = 0; i < iov->num_VFs; i++)
virtfn_remove(dev, i, 0); virtfn_remove(dev, i, 0);
iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE);
...@@ -419,7 +419,7 @@ static void sriov_disable(struct pci_dev *dev) ...@@ -419,7 +419,7 @@ static void sriov_disable(struct pci_dev *dev)
if (iov->link != dev->devfn) if (iov->link != dev->devfn)
sysfs_remove_link(&dev->dev.kobj, "dep_link"); sysfs_remove_link(&dev->dev.kobj, "dep_link");
iov->nr_virtfn = 0; iov->num_VFs = 0;
} }
static int sriov_init(struct pci_dev *dev, int pos) static int sriov_init(struct pci_dev *dev, int pos)
...@@ -496,7 +496,7 @@ static int sriov_init(struct pci_dev *dev, int pos) ...@@ -496,7 +496,7 @@ static int sriov_init(struct pci_dev *dev, int pos)
iov->pos = pos; iov->pos = pos;
iov->nres = nres; iov->nres = nres;
iov->ctrl = ctrl; iov->ctrl = ctrl;
iov->total = total; iov->total_VFs = total;
iov->offset = offset; iov->offset = offset;
iov->stride = stride; iov->stride = stride;
iov->pgsz = pgsz; iov->pgsz = pgsz;
...@@ -529,7 +529,7 @@ static int sriov_init(struct pci_dev *dev, int pos) ...@@ -529,7 +529,7 @@ static int sriov_init(struct pci_dev *dev, int pos)
static void sriov_release(struct pci_dev *dev) static void sriov_release(struct pci_dev *dev)
{ {
BUG_ON(dev->sriov->nr_virtfn); BUG_ON(dev->sriov->num_VFs);
if (dev != dev->sriov->dev) if (dev != dev->sriov->dev)
pci_dev_put(dev->sriov->dev); pci_dev_put(dev->sriov->dev);
...@@ -554,7 +554,7 @@ static void sriov_restore_state(struct pci_dev *dev) ...@@ -554,7 +554,7 @@ static void sriov_restore_state(struct pci_dev *dev)
pci_update_resource(dev, i); pci_update_resource(dev, i);
pci_write_config_dword(dev, iov->pos + PCI_SRIOV_SYS_PGSIZE, iov->pgsz); pci_write_config_dword(dev, iov->pos + PCI_SRIOV_SYS_PGSIZE, iov->pgsz);
pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, iov->nr_virtfn); pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, iov->num_VFs);
pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl);
if (iov->ctrl & PCI_SRIOV_CTRL_VFE) if (iov->ctrl & PCI_SRIOV_CTRL_VFE)
msleep(100); msleep(100);
...@@ -661,7 +661,7 @@ int pci_iov_bus_range(struct pci_bus *bus) ...@@ -661,7 +661,7 @@ int pci_iov_bus_range(struct pci_bus *bus)
list_for_each_entry(dev, &bus->devices, bus_list) { list_for_each_entry(dev, &bus->devices, bus_list) {
if (!dev->is_physfn) if (!dev->is_physfn)
continue; continue;
busnr = virtfn_bus(dev, dev->sriov->total - 1); busnr = virtfn_bus(dev, dev->sriov->total_VFs - 1);
if (busnr > max) if (busnr > max)
max = busnr; max = busnr;
} }
...@@ -732,7 +732,7 @@ int pci_num_vf(struct pci_dev *dev) ...@@ -732,7 +732,7 @@ int pci_num_vf(struct pci_dev *dev)
if (!dev || !dev->is_physfn) if (!dev || !dev->is_physfn)
return 0; return 0;
else else
return dev->sriov->nr_virtfn; return dev->sriov->num_VFs;
} }
EXPORT_SYMBOL_GPL(pci_num_vf); EXPORT_SYMBOL_GPL(pci_num_vf);
...@@ -750,14 +750,14 @@ EXPORT_SYMBOL_GPL(pci_num_vf); ...@@ -750,14 +750,14 @@ EXPORT_SYMBOL_GPL(pci_num_vf);
*/ */
int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs) int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)
{ {
if (!dev || !dev->is_physfn || (numvfs > dev->sriov->total)) if (!dev || !dev->is_physfn || (numvfs > dev->sriov->total_VFs))
return -EINVAL; return -EINVAL;
/* Shouldn't change if VFs already enabled */ /* Shouldn't change if VFs already enabled */
if (dev->sriov->ctrl & PCI_SRIOV_CTRL_VFE) if (dev->sriov->ctrl & PCI_SRIOV_CTRL_VFE)
return -EBUSY; return -EBUSY;
else else
dev->sriov->drvttl = numvfs; dev->sriov->driver_max_VFs = numvfs;
return 0; return 0;
} }
...@@ -768,7 +768,7 @@ EXPORT_SYMBOL_GPL(pci_sriov_set_totalvfs); ...@@ -768,7 +768,7 @@ EXPORT_SYMBOL_GPL(pci_sriov_set_totalvfs);
* @dev: the PCI PF device * @dev: the PCI PF device
* *
* For a PCIe device with SRIOV support, return the PCIe * For a PCIe device with SRIOV support, return the PCIe
* SRIOV capability value of TotalVFs or the value of drvttl * SRIOV capability value of TotalVFs or the value of driver_max_VFs
* if the driver reduced it. Otherwise, -EINVAL. * if the driver reduced it. Otherwise, -EINVAL.
*/ */
int pci_sriov_get_totalvfs(struct pci_dev *dev) int pci_sriov_get_totalvfs(struct pci_dev *dev)
...@@ -776,9 +776,9 @@ int pci_sriov_get_totalvfs(struct pci_dev *dev) ...@@ -776,9 +776,9 @@ int pci_sriov_get_totalvfs(struct pci_dev *dev)
if (!dev || !dev->is_physfn) if (!dev || !dev->is_physfn)
return -EINVAL; return -EINVAL;
if (dev->sriov->drvttl) if (dev->sriov->driver_max_VFs)
return dev->sriov->drvttl; return dev->sriov->driver_max_VFs;
else else
return dev->sriov->total; return dev->sriov->total_VFs;
} }
EXPORT_SYMBOL_GPL(pci_sriov_get_totalvfs); EXPORT_SYMBOL_GPL(pci_sriov_get_totalvfs);
...@@ -421,7 +421,7 @@ static ssize_t sriov_numvfs_show(struct device *dev, ...@@ -421,7 +421,7 @@ static ssize_t sriov_numvfs_show(struct device *dev,
{ {
struct pci_dev *pdev = to_pci_dev(dev); struct pci_dev *pdev = to_pci_dev(dev);
return sprintf(buf, "%u\n", pdev->sriov->nr_virtfn); return sprintf(buf, "%u\n", pdev->sriov->num_VFs);
} }
/* /*
...@@ -455,7 +455,7 @@ static ssize_t sriov_numvfs_store(struct device *dev, ...@@ -455,7 +455,7 @@ static ssize_t sriov_numvfs_store(struct device *dev,
total = pci_sriov_get_totalvfs(pdev); total = pci_sriov_get_totalvfs(pdev);
/* Requested VFs to enable < totalvfs and none enabled already */ /* Requested VFs to enable < totalvfs and none enabled already */
if ((num_vfs > 0) && (num_vfs <= total)) { if ((num_vfs > 0) && (num_vfs <= total)) {
if (pdev->sriov->nr_virtfn == 0) { if (pdev->sriov->num_VFs == 0) {
num_vfs_enabled = num_vfs_enabled =
pdev->driver->sriov_configure(pdev, num_vfs); pdev->driver->sriov_configure(pdev, num_vfs);
if ((num_vfs_enabled >= 0) && if ((num_vfs_enabled >= 0) &&
...@@ -467,7 +467,7 @@ static ssize_t sriov_numvfs_store(struct device *dev, ...@@ -467,7 +467,7 @@ static ssize_t sriov_numvfs_store(struct device *dev,
} else if (num_vfs_enabled < 0) } else if (num_vfs_enabled < 0)
/* error code from driver callback */ /* error code from driver callback */
return num_vfs_enabled; return num_vfs_enabled;
} else if (num_vfs == pdev->sriov->nr_virtfn) { } else if (num_vfs == pdev->sriov->num_VFs) {
dev_warn(&pdev->dev, dev_warn(&pdev->dev,
"%d VFs already enabled; no enable action taken\n", "%d VFs already enabled; no enable action taken\n",
num_vfs); num_vfs);
...@@ -475,14 +475,14 @@ static ssize_t sriov_numvfs_store(struct device *dev, ...@@ -475,14 +475,14 @@ static ssize_t sriov_numvfs_store(struct device *dev,
} else { } else {
dev_warn(&pdev->dev, dev_warn(&pdev->dev,
"%d VFs already enabled. Disable before enabling %d VFs\n", "%d VFs already enabled. Disable before enabling %d VFs\n",
pdev->sriov->nr_virtfn, num_vfs); pdev->sriov->num_VFs, num_vfs);
return -EINVAL; return -EINVAL;
} }
} }
/* disable vfs */ /* disable vfs */
if (num_vfs == 0) { if (num_vfs == 0) {
if (pdev->sriov->nr_virtfn != 0) { if (pdev->sriov->num_VFs != 0) {
ret = pdev->driver->sriov_configure(pdev, 0); ret = pdev->driver->sriov_configure(pdev, 0);
return ret ? ret : count; return ret ? ret : count;
} else { } else {
......
...@@ -233,14 +233,14 @@ struct pci_sriov { ...@@ -233,14 +233,14 @@ struct pci_sriov {
int nres; /* number of resources */ int nres; /* number of resources */
u32 cap; /* SR-IOV Capabilities */ u32 cap; /* SR-IOV Capabilities */
u16 ctrl; /* SR-IOV Control */ u16 ctrl; /* SR-IOV Control */
u16 total; /* total VFs associated with the PF */ u16 total_VFs; /* total VFs associated with the PF */
u16 initial; /* initial VFs associated with the PF */ u16 initial_VFs; /* initial VFs associated with the PF */
u16 nr_virtfn; /* number of VFs available */ u16 num_VFs; /* number of VFs available */
u16 offset; /* first VF Routing ID offset */ u16 offset; /* first VF Routing ID offset */
u16 stride; /* following VF stride */ u16 stride; /* following VF stride */
u32 pgsz; /* page size for BAR alignment */ u32 pgsz; /* page size for BAR alignment */
u8 link; /* Function Dependency Link */ u8 link; /* Function Dependency Link */
u16 drvttl; /* max num VFs driver supports */ u16 driver_max_VFs; /* max num VFs driver supports */
struct pci_dev *dev; /* lowest numbered PF */ struct pci_dev *dev; /* lowest numbered PF */
struct pci_dev *self; /* this PF */ struct pci_dev *self; /* this PF */
struct mutex lock; /* lock for VF bus */ struct mutex lock; /* lock for VF bus */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment