On Thu, 2012-11-01 at 17:20 -0700, Jonathan Nieder wrote: > From: Ben Skeggs <[email protected]> > > Backport of fixes from upstream commit: > 9430738d80223a1cd791a2baa74fa170d3df1262 > > Signed-off-by: Ben Skeggs <[email protected]> > [[email protected]: backport to 3.2: make fbcon suspend/resume > handling conditional in a vague hope that this will approximate what > the original does for 3.3+] > Signed-off-by: Jonathan Nieder <[email protected]> > --- > Here's a blind backport to 3.2.
Thanks, but this looks quite different from the original and I need some
sort of confirmation from Ben or other nouveau developers that this is
likely to work. In particular it looks like your version doesn't touch
all the functions that need this check.
Ben.
> drivers/gpu/drm/nouveau/nouveau_drv.c | 32 ++++++++++++++++++++------------
> 1 file changed, 20 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c
> b/drivers/gpu/drm/nouveau/nouveau_drv.c
> index 9791d13c9e3b..4ab35b588664 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drv.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
> @@ -178,8 +178,10 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t
> pm_state)
> if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> - NV_INFO(dev, "Disabling fbcon acceleration...\n");
> - nouveau_fbcon_save_disable_accel(dev);
> + if (dev->mode_config.num_crtc) {
> + NV_INFO(dev, "Disabling fbcon acceleration...\n");
> + nouveau_fbcon_save_disable_accel(dev);
> + }
>
> NV_INFO(dev, "Unpinning framebuffer(s)...\n");
> list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
> @@ -246,10 +248,12 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t
> pm_state)
> pci_set_power_state(pdev, PCI_D3hot);
> }
>
> - console_lock();
> - nouveau_fbcon_set_suspend(dev, 1);
> - console_unlock();
> - nouveau_fbcon_restore_accel(dev);
> + if (dev->mode_config.num_crtc) {
> + console_lock();
> + nouveau_fbcon_set_suspend(dev, 1);
> + console_unlock();
> + nouveau_fbcon_restore_accel(dev);
> + }
> return 0;
>
> out_abort:
> @@ -275,7 +279,8 @@ nouveau_pci_resume(struct pci_dev *pdev)
> if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> - nouveau_fbcon_save_disable_accel(dev);
> + if (dev->mode_config.num_crtc)
> + nouveau_fbcon_save_disable_accel(dev);
>
> NV_INFO(dev, "We're back, enabling device...\n");
> pci_set_power_state(pdev, PCI_D0);
> @@ -376,15 +381,18 @@ nouveau_pci_resume(struct pci_dev *pdev)
> nv_crtc->lut.depth = 0;
> }
>
> - console_lock();
> - nouveau_fbcon_set_suspend(dev, 0);
> - console_unlock();
> + if (dev->mode_config.num_crtc) {
> + console_lock();
> + nouveau_fbcon_set_suspend(dev, 0);
> + console_unlock();
>
> - nouveau_fbcon_zfill_all(dev);
> + nouveau_fbcon_zfill_all(dev);
> + }
>
> drm_helper_resume_force_mode(dev);
>
> - nouveau_fbcon_restore_accel(dev);
> + if (dev->mode_config.num_crtc)
> + nouveau_fbcon_restore_accel(dev);
> return 0;
> }
>
--
Ben Hutchings
Design a system any fool can use, and only a fool will want to use it.
signature.asc
Description: This is a digitally signed message part
