linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze
@ 2021-12-13 16:00 Mikhail Golubev
  2021-12-13 18:46 ` kernel test robot
  2021-12-13 23:55 ` Michael S. Tsirkin
  0 siblings, 2 replies; 4+ messages in thread
From: Mikhail Golubev @ 2021-12-13 16:00 UTC (permalink / raw)
  To: virtualization, linux-kernel
  Cc: Michael S. Tsirkin, Jason Wang, Mikhail Golubev

From: Yurii Danilovskyi <glyd@opensynergy.com>

Handle restore and freeze notifications from the PM core. Expose
these to individual virtio drivers that can quiesce and resume vq
operations.

Signed-off-by: Yurii Danilovskyi <glyd@opensynergy.com>
Signed-off-by: Mikhail Golubev <Mikhail.Golubev@opensynergy.com>
---
 drivers/virtio/virtio_mmio.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 56128b9c46eb..af79f8c2a2f2 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -762,6 +762,24 @@ static void vm_unregister_cmdline_devices(void)
 
 #endif
 
+static int __maybe_unused virtio_mmio_freeze(struct device *dev)
+{
+	struct platform_device *pdev = to_platform_device(dev);
+	struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
+
+	return virtio_device_freeze(&vm_dev->vdev);
+}
+
+static int __maybe_unused virtio_mmio_restore(struct device *dev)
+{
+	struct platform_device *pdev = to_platform_device(dev);
+	struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
+
+	return virtio_device_restore(&vm_dev->vdev);
+}
+
+static SIMPLE_DEV_PM_OPS(virtio_mmio_pm_ops, virtio_mmio_freeze, virtio_mmio_restore);
+
 /* Platform driver */
 
 static const struct of_device_id virtio_mmio_match[] = {
@@ -785,6 +803,7 @@ static struct platform_driver virtio_mmio_driver = {
 		.name	= "virtio-mmio",
 		.of_match_table	= virtio_mmio_match,
 		.acpi_match_table = ACPI_PTR(virtio_mmio_acpi_match),
+		.pm = &virtio_mmio_pm_ops,
 	},
 };
 
-- 
2.34.1


-- 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze
  2021-12-13 16:00 [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze Mikhail Golubev
@ 2021-12-13 18:46 ` kernel test robot
  2021-12-13 23:55 ` Michael S. Tsirkin
  1 sibling, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-12-13 18:46 UTC (permalink / raw)
  To: Mikhail Golubev, virtualization, linux-kernel
  Cc: kbuild-all, Michael S. Tsirkin, Jason Wang, Mikhail Golubev

Hi Mikhail,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linux/master]
[also build test ERROR on linus/master v5.16-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Mikhail-Golubev/virtio_mmio-pm-Add-notification-handlers-for-restore-and-freeze/20211214-001636
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 136057256686de39cc3a07c2e39ef6bc43003ff6
config: m68k-randconfig-r033-20211213 (https://download.01.org/0day-ci/archive/20211214/202112140201.xeCfVzym-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/86cd610f19003c4d848c13e5e00e38e9bc41f54e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Mikhail-Golubev/virtio_mmio-pm-Add-notification-handlers-for-restore-and-freeze/20211214-001636
        git checkout 86cd610f19003c4d848c13e5e00e38e9bc41f54e
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=m68k SHELL=/bin/bash drivers/virtio/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/virtio/virtio_mmio.c: In function 'virtio_mmio_freeze':
>> drivers/virtio/virtio_mmio.c:770:16: error: implicit declaration of function 'virtio_device_freeze'; did you mean 'virtio_device_ready'? [-Werror=implicit-function-declaration]
     770 |         return virtio_device_freeze(&vm_dev->vdev);
         |                ^~~~~~~~~~~~~~~~~~~~
         |                virtio_device_ready
   drivers/virtio/virtio_mmio.c: In function 'virtio_mmio_restore':
>> drivers/virtio/virtio_mmio.c:778:16: error: implicit declaration of function 'virtio_device_restore'; did you mean 'virtio_mmio_restore'? [-Werror=implicit-function-declaration]
     778 |         return virtio_device_restore(&vm_dev->vdev);
         |                ^~~~~~~~~~~~~~~~~~~~~
         |                virtio_mmio_restore
   cc1: some warnings being treated as errors


vim +770 drivers/virtio/virtio_mmio.c

   764	
   765	static int __maybe_unused virtio_mmio_freeze(struct device *dev)
   766	{
   767		struct platform_device *pdev = to_platform_device(dev);
   768		struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
   769	
 > 770		return virtio_device_freeze(&vm_dev->vdev);
   771	}
   772	
   773	static int __maybe_unused virtio_mmio_restore(struct device *dev)
   774	{
   775		struct platform_device *pdev = to_platform_device(dev);
   776		struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
   777	
 > 778		return virtio_device_restore(&vm_dev->vdev);
   779	}
   780	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze
  2021-12-13 16:00 [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze Mikhail Golubev
  2021-12-13 18:46 ` kernel test robot
@ 2021-12-13 23:55 ` Michael S. Tsirkin
  2021-12-14 16:21   ` Mikhail Golubev
  1 sibling, 1 reply; 4+ messages in thread
From: Michael S. Tsirkin @ 2021-12-13 23:55 UTC (permalink / raw)
  To: Mikhail Golubev; +Cc: virtualization, linux-kernel, Jason Wang

On Mon, Dec 13, 2021 at 05:00:08PM +0100, Mikhail Golubev wrote:
> From: Yurii Danilovskyi <glyd@opensynergy.com>
> 
> Handle restore and freeze notifications from the PM core. Expose
> these to individual virtio drivers that can quiesce and resume vq
> operations.
> 
> Signed-off-by: Yurii Danilovskyi <glyd@opensynergy.com>
> Signed-off-by: Mikhail Golubev <Mikhail.Golubev@opensynergy.com>
> ---
>  drivers/virtio/virtio_mmio.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> index 56128b9c46eb..af79f8c2a2f2 100644
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -762,6 +762,24 @@ static void vm_unregister_cmdline_devices(void)
>  
>  #endif
>  
> +static int __maybe_unused virtio_mmio_freeze(struct device *dev)
> +{
> +	struct platform_device *pdev = to_platform_device(dev);
> +	struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
> +
> +	return virtio_device_freeze(&vm_dev->vdev);
> +}
> +
> +static int __maybe_unused virtio_mmio_restore(struct device *dev)
> +{
> +	struct platform_device *pdev = to_platform_device(dev);
> +	struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
> +
> +	return virtio_device_restore(&vm_dev->vdev);
> +}
> +
> +static SIMPLE_DEV_PM_OPS(virtio_mmio_pm_ops, virtio_mmio_freeze, virtio_mmio_restore);
> +
>  /* Platform driver */
>  
>  static const struct of_device_id virtio_mmio_match[] = {
> @@ -785,6 +803,7 @@ static struct platform_driver virtio_mmio_driver = {
>  		.name	= "virtio-mmio",
>  		.of_match_table	= virtio_mmio_match,
>  		.acpi_match_table = ACPI_PTR(virtio_mmio_acpi_match),
> +		.pm = &virtio_mmio_pm_ops,
>  	},
>  };

All this code needs to be within ifdef CONFIG_PM_SLEEP.  Alternatively,
tweak virtio.h to expose virtio_device_freeze/virtio_device_restore
unconditionally.


>  
> -- 
> 2.34.1
> 
> 
> -- 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze
  2021-12-13 23:55 ` Michael S. Tsirkin
@ 2021-12-14 16:21   ` Mikhail Golubev
  0 siblings, 0 replies; 4+ messages in thread
From: Mikhail Golubev @ 2021-12-14 16:21 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: virtualization, linux-kernel, Jason Wang

The 12/13/2021 18:55, Michael S. Tsirkin wrote:
> On Mon, Dec 13, 2021 at 05:00:08PM +0100, Mikhail Golubev wrote:
> > From: Yurii Danilovskyi <glyd@opensynergy.com>
> > 
> > Handle restore and freeze notifications from the PM core. Expose
> > these to individual virtio drivers that can quiesce and resume vq
> > operations.
> > 
> > Signed-off-by: Yurii Danilovskyi <glyd@opensynergy.com>
> > Signed-off-by: Mikhail Golubev <Mikhail.Golubev@opensynergy.com>
> > ---
> >  drivers/virtio/virtio_mmio.c | 19 +++++++++++++++++++
> >  1 file changed, 19 insertions(+)
> > 
> > diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> > index 56128b9c46eb..af79f8c2a2f2 100644
> > --- a/drivers/virtio/virtio_mmio.c
> > +++ b/drivers/virtio/virtio_mmio.c
> > @@ -762,6 +762,24 @@ static void vm_unregister_cmdline_devices(void)
> >  
> >  #endif
> >  
> > +static int __maybe_unused virtio_mmio_freeze(struct device *dev)
> > +{
> > +	struct platform_device *pdev = to_platform_device(dev);
> > +	struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
> > +
> > +	return virtio_device_freeze(&vm_dev->vdev);
> > +}
> > +
> > +static int __maybe_unused virtio_mmio_restore(struct device *dev)
> > +{
> > +	struct platform_device *pdev = to_platform_device(dev);
> > +	struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
> > +
> > +	return virtio_device_restore(&vm_dev->vdev);
> > +}
> > +
> > +static SIMPLE_DEV_PM_OPS(virtio_mmio_pm_ops, virtio_mmio_freeze, virtio_mmio_restore);
> > +
> >  /* Platform driver */
> >  
> >  static const struct of_device_id virtio_mmio_match[] = {
> > @@ -785,6 +803,7 @@ static struct platform_driver virtio_mmio_driver = {
> >  		.name	= "virtio-mmio",
> >  		.of_match_table	= virtio_mmio_match,
> >  		.acpi_match_table = ACPI_PTR(virtio_mmio_acpi_match),
> > +		.pm = &virtio_mmio_pm_ops,
> >  	},
> >  };
> 
> All this code needs to be within ifdef CONFIG_PM_SLEEP.  Alternatively,
> tweak virtio.h to expose virtio_device_freeze/virtio_device_restore
> unconditionally.

Added ifdef CONFIG_PM_SLEEP in the patch v2 for simplicity and to be more
aligned with other PM code in drivers/virtio.

> 
> 
> >  
> > -- 
> > 2.34.1
> > 
> > 
> > -- 
> 

-- 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-12-14 16:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-13 16:00 [PATCH] virtio_mmio: pm: Add notification handlers for restore and freeze Mikhail Golubev
2021-12-13 18:46 ` kernel test robot
2021-12-13 23:55 ` Michael S. Tsirkin
2021-12-14 16:21   ` Mikhail Golubev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).