Merge branch 'remotes/lorenzo/pci/keembay'
[linux-2.6-microblaze.git] / drivers / pci / iov.c
index afc06e6..dafdc65 100644 (file)
@@ -346,7 +346,7 @@ static ssize_t sriov_totalvfs_show(struct device *dev,
 {
        struct pci_dev *pdev = to_pci_dev(dev);
 
-       return sprintf(buf, "%u\n", pci_sriov_get_totalvfs(pdev));
+       return sysfs_emit(buf, "%u\n", pci_sriov_get_totalvfs(pdev));
 }
 
 static ssize_t sriov_numvfs_show(struct device *dev,
@@ -361,7 +361,7 @@ static ssize_t sriov_numvfs_show(struct device *dev,
        num_vfs = pdev->sriov->num_VFs;
        device_unlock(&pdev->dev);
 
-       return sprintf(buf, "%u\n", num_vfs);
+       return sysfs_emit(buf, "%u\n", num_vfs);
 }
 
 /*
@@ -391,9 +391,16 @@ static ssize_t sriov_numvfs_store(struct device *dev,
        if (num_vfs == pdev->sriov->num_VFs)
                goto exit;
 
+       /* is PF driver loaded */
+       if (!pdev->driver) {
+               pci_info(pdev, "no driver bound to device; cannot configure SR-IOV\n");
+               ret = -ENOENT;
+               goto exit;
+       }
+
        /* is PF driver loaded w/callback */
-       if (!pdev->driver || !pdev->driver->sriov_configure) {
-               pci_info(pdev, "Driver does not support SRIOV configuration via sysfs\n");
+       if (!pdev->driver->sriov_configure) {
+               pci_info(pdev, "driver does not support SR-IOV configuration via sysfs\n");
                ret = -ENOENT;
                goto exit;
        }
@@ -435,7 +442,7 @@ static ssize_t sriov_offset_show(struct device *dev,
 {
        struct pci_dev *pdev = to_pci_dev(dev);
 
-       return sprintf(buf, "%u\n", pdev->sriov->offset);
+       return sysfs_emit(buf, "%u\n", pdev->sriov->offset);
 }
 
 static ssize_t sriov_stride_show(struct device *dev,
@@ -444,7 +451,7 @@ static ssize_t sriov_stride_show(struct device *dev,
 {
        struct pci_dev *pdev = to_pci_dev(dev);
 
-       return sprintf(buf, "%u\n", pdev->sriov->stride);
+       return sysfs_emit(buf, "%u\n", pdev->sriov->stride);
 }
 
 static ssize_t sriov_vf_device_show(struct device *dev,
@@ -453,7 +460,7 @@ static ssize_t sriov_vf_device_show(struct device *dev,
 {
        struct pci_dev *pdev = to_pci_dev(dev);
 
-       return sprintf(buf, "%x\n", pdev->sriov->vf_device);
+       return sysfs_emit(buf, "%x\n", pdev->sriov->vf_device);
 }
 
 static ssize_t sriov_drivers_autoprobe_show(struct device *dev,
@@ -462,7 +469,7 @@ static ssize_t sriov_drivers_autoprobe_show(struct device *dev,
 {
        struct pci_dev *pdev = to_pci_dev(dev);
 
-       return sprintf(buf, "%u\n", pdev->sriov->drivers_autoprobe);
+       return sysfs_emit(buf, "%u\n", pdev->sriov->drivers_autoprobe);
 }
 
 static ssize_t sriov_drivers_autoprobe_store(struct device *dev,