Discussion:
[PATCH] virtio: pci: Use SIMPLE_DEV_PM_OPS macro
Jingoo Han
2014-09-05 03:52:00 UTC
Permalink
Use SIMPLE_DEV_PM_OPS macro in order to make the code simpler.

Signed-off-by: Jingoo Han <jg1.han at samsung.com>
---
drivers/virtio/virtio_pci.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 3d1463c6b120..c5fbdb4023d1 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -810,20 +810,17 @@ static int virtio_pci_restore(struct device *dev)

return ret;
}
-
-static const struct dev_pm_ops virtio_pci_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(virtio_pci_freeze, virtio_pci_restore)
-};
#endif

+static SIMPLE_DEV_PM_OPS(virtio_pci_pm_ops, virtio_pci_freeze,
+ virtio_pci_restore);
+
static struct pci_driver virtio_pci_driver = {
.name = "virtio-pci",
.id_table = virtio_pci_id_table,
.probe = virtio_pci_probe,
.remove = virtio_pci_remove,
-#ifdef CONFIG_PM_SLEEP
.driver.pm = &virtio_pci_pm_ops,
-#endif
};

module_pci_driver(virtio_pci_driver);
--
2.0.0
Rusty Russell
2014-09-09 00:13:42 UTC
Permalink
Post by Jingoo Han
Use SIMPLE_DEV_PM_OPS macro in order to make the code simpler.
Signed-off-by: Jingoo Han <jg1.han at samsung.com>
This patch is obviously wrong. It won't compile without
CONFIG_PM_SLEEP.

Cheers,
Rusty.
Post by Jingoo Han
---
drivers/virtio/virtio_pci.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 3d1463c6b120..c5fbdb4023d1 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -810,20 +810,17 @@ static int virtio_pci_restore(struct device *dev)
return ret;
}
-
-static const struct dev_pm_ops virtio_pci_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(virtio_pci_freeze, virtio_pci_restore)
-};
#endif
+static SIMPLE_DEV_PM_OPS(virtio_pci_pm_ops, virtio_pci_freeze,
+ virtio_pci_restore);
+
static struct pci_driver virtio_pci_driver = {
.name = "virtio-pci",
.id_table = virtio_pci_id_table,
.probe = virtio_pci_probe,
.remove = virtio_pci_remove,
-#ifdef CONFIG_PM_SLEEP
.driver.pm = &virtio_pci_pm_ops,
-#endif
};
module_pci_driver(virtio_pci_driver);
--
2.0.0
Jingoo Han
2014-09-17 09:52:07 UTC
Permalink
Post by Rusty Russell
Post by Jingoo Han
Use SIMPLE_DEV_PM_OPS macro in order to make the code simpler.
Signed-off-by: Jingoo Han <jg1.han at samsung.com>
This patch is obviously wrong. It won't compile without
CONFIG_PM_SLEEP.
No, there is no compile issue.
When, CONFIG_PM_SLEEP=n, there is no build error.

'SIMPLE_DEV_PM_OPS' macro is defined as follows.

#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
const struct dev_pm_ops name = { \
SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
}

In addition, 'SET_SYSTEM_SLEEP_PM_OPS' is defined as follows.

#ifdef CONFIG_PM_SLEEP
#define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
.suspend = suspend_fn, \
.resume = resume_fn, \
.freeze = suspend_fn, \
.thaw = resume_fn, \
.poweroff = suspend_fn, \
.restore = resume_fn,
#else
#define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
#endif

So, when CONFIG_PM_SLEEP is NOT enabled, SIMPLE_DEV_PM_OPS can be
changed as below. The members of virtio_pci_pm_ops can be NULL.
Thus, there is no build error, when CONFIG_PM_SLEEP=n.

However, if you want, I will just change SET_SYSTEM_SLEEP_PM_OPS
into SIMPLE_DEV_PM_OPS macro, without any change about
'#ifdef CONFIG_PM_SLEEP' guards.

const struct dev_pm_ops virtio_pci_pm_ops = {
};

static struct pci_driver virtio_pci_driver = {
.name = "virtio-pci",
.id_table = virtio_pci_id_table,
.probe = virtio_pci_probe,
.remove = virtio_pci_remove,
.driver.pm = &virtio_pci_pm_ops,
};

Best regards,
Jingoo Han
Post by Rusty Russell
Cheers,
Rusty.
Post by Jingoo Han
---
drivers/virtio/virtio_pci.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 3d1463c6b120..c5fbdb4023d1 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -810,20 +810,17 @@ static int virtio_pci_restore(struct device *dev)
return ret;
}
-
-static const struct dev_pm_ops virtio_pci_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(virtio_pci_freeze, virtio_pci_restore)
-};
#endif
+static SIMPLE_DEV_PM_OPS(virtio_pci_pm_ops, virtio_pci_freeze,
+ virtio_pci_restore);
+
static struct pci_driver virtio_pci_driver = {
.name = "virtio-pci",
.id_table = virtio_pci_id_table,
.probe = virtio_pci_probe,
.remove = virtio_pci_remove,
-#ifdef CONFIG_PM_SLEEP
.driver.pm = &virtio_pci_pm_ops,
-#endif
};
module_pci_driver(virtio_pci_driver);
--
2.0.0
Rusty Russell
2014-09-18 05:23:10 UTC
Permalink
Post by Jingoo Han
Post by Rusty Russell
Post by Jingoo Han
Use SIMPLE_DEV_PM_OPS macro in order to make the code simpler.
Signed-off-by: Jingoo Han <jg1.han at samsung.com>
This patch is obviously wrong. It won't compile without
CONFIG_PM_SLEEP.
No, there is no compile issue.
When, CONFIG_PM_SLEEP=n, there is no build error.
My mistake. Thanks, I've applied it. It probably won't go in until the
next merge window, however, since I'm travelling for this one.

Cheers,
Rusty.
Michael S. Tsirkin
2014-10-05 15:49:00 UTC
Permalink
Post by Rusty Russell
Post by Jingoo Han
Post by Rusty Russell
Post by Jingoo Han
Use SIMPLE_DEV_PM_OPS macro in order to make the code simpler.
Signed-off-by: Jingoo Han <jg1.han at samsung.com>
This patch is obviously wrong. It won't compile without
CONFIG_PM_SLEEP.
No, there is no compile issue.
When, CONFIG_PM_SLEEP=n, there is no build error.
My mistake. Thanks, I've applied it. It probably won't go in until the
next merge window, however, since I'm travelling for this one.
Cheers,
Rusty.
I have some bugfixes that are I think worth merging, so maybe
I'll do a pull request.
If so, this cleanup could go in, on top.

Rusty, what do you say?
--
MST
Loading...