public inbox for linux-next@vger.kernel.org 
 help / color / mirror / Atom feed
From: Stephen Rothwell <sfr@canb•auug.org.au>
To: Dave Airlie <airlied@linux•ie>
Cc: linux-next@vger•kernel.org, linux-kernel@vger•kernel.org,
	Ben Skeggs <bskeggs@redhat•com>
Subject: linux-next: manual merge of the drm tree with Linus' tree
Date: Fri, 5 Dec 2014 15:39:21 +1100	[thread overview]
Message-ID: <20141205153921.342a0790@canb.auug.org.au> (raw)

[-- Attachment #1: Type: text/plain, Size: 4773 bytes --]

Hi Dave,

Today's linux-next merge of the drm tree got a conflict in
drivers/gpu/drm/nouveau/nouveau_drm.c between commit 8b62c8c6df08
("nouveau: move the hotplug ignore to correct place") from Linus' tree
and commit 7bb6d4428d3d ("drm/nouveau: move the (far too many...)
different s/r paths to the same place") from the drm tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@canb•auug.org.au

diff --cc drivers/gpu/drm/nouveau/nouveau_drm.c
index 62b97c4eef8d,afb93bb72f97..000000000000
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@@ -667,7 -647,30 +647,29 @@@ nouveau_do_resume(struct drm_device *de
  	return 0;
  }
  
- int nouveau_pmops_resume(struct device *dev)
+ int
+ nouveau_pmops_suspend(struct device *dev)
+ {
+ 	struct pci_dev *pdev = to_pci_dev(dev);
+ 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
+ 	int ret;
+ 
+ 	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
+ 	    drm_dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF)
+ 		return 0;
+ 
+ 	ret = nouveau_do_suspend(drm_dev, false);
+ 	if (ret)
+ 		return ret;
+ 
+ 	pci_save_state(pdev);
+ 	pci_disable_device(pdev);
 -	pci_ignore_hotplug(pdev);
+ 	pci_set_power_state(pdev, PCI_D3hot);
+ 	return 0;
+ }
+ 
+ int
+ nouveau_pmops_resume(struct device *dev)
  {
  	struct pci_dev *pdev = to_pci_dev(dev);
  	struct drm_device *drm_dev = pci_get_drvdata(pdev);
@@@ -701,6 -706,105 +705,106 @@@ nouveau_pmops_thaw(struct device *dev
  	return nouveau_do_resume(drm_dev, false);
  }
  
+ static int
+ nouveau_pmops_runtime_suspend(struct device *dev)
+ {
+ 	struct pci_dev *pdev = to_pci_dev(dev);
+ 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
+ 	int ret;
+ 
+ 	if (nouveau_runtime_pm == 0) {
+ 		pm_runtime_forbid(dev);
+ 		return -EBUSY;
+ 	}
+ 
+ 	/* are we optimus enabled? */
+ 	if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) {
+ 		DRM_DEBUG_DRIVER("failing to power off - not optimus\n");
+ 		pm_runtime_forbid(dev);
+ 		return -EBUSY;
+ 	}
+ 
+ 	nv_debug_level(SILENT);
+ 	drm_kms_helper_poll_disable(drm_dev);
+ 	vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF);
+ 	nouveau_switcheroo_optimus_dsm();
+ 	ret = nouveau_do_suspend(drm_dev, true);
+ 	pci_save_state(pdev);
+ 	pci_disable_device(pdev);
++	pci_ignore_hotplug(pdev);
+ 	pci_set_power_state(pdev, PCI_D3cold);
+ 	drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;
+ 	return ret;
+ }
+ 
+ static int
+ nouveau_pmops_runtime_resume(struct device *dev)
+ {
+ 	struct pci_dev *pdev = to_pci_dev(dev);
+ 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
+ 	struct nvif_device *device = &nouveau_drm(drm_dev)->device;
+ 	int ret;
+ 
+ 	if (nouveau_runtime_pm == 0)
+ 		return -EINVAL;
+ 
+ 	pci_set_power_state(pdev, PCI_D0);
+ 	pci_restore_state(pdev);
+ 	ret = pci_enable_device(pdev);
+ 	if (ret)
+ 		return ret;
+ 	pci_set_master(pdev);
+ 
+ 	ret = nouveau_do_resume(drm_dev, true);
+ 	drm_kms_helper_poll_enable(drm_dev);
+ 	/* do magic */
+ 	nvif_mask(device, 0x88488, (1 << 25), (1 << 25));
+ 	vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_ON);
+ 	drm_dev->switch_power_state = DRM_SWITCH_POWER_ON;
+ 	nv_debug_level(NORMAL);
+ 	return ret;
+ }
+ 
+ static int
+ nouveau_pmops_runtime_idle(struct device *dev)
+ {
+ 	struct pci_dev *pdev = to_pci_dev(dev);
+ 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
+ 	struct nouveau_drm *drm = nouveau_drm(drm_dev);
+ 	struct drm_crtc *crtc;
+ 
+ 	if (nouveau_runtime_pm == 0) {
+ 		pm_runtime_forbid(dev);
+ 		return -EBUSY;
+ 	}
+ 
+ 	/* are we optimus enabled? */
+ 	if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) {
+ 		DRM_DEBUG_DRIVER("failing to power off - not optimus\n");
+ 		pm_runtime_forbid(dev);
+ 		return -EBUSY;
+ 	}
+ 
+ 	/* if we have a hdmi audio device - make sure it has a driver loaded */
+ 	if (drm->hdmi_device) {
+ 		if (!drm->hdmi_device->driver) {
+ 			DRM_DEBUG_DRIVER("failing to power off - no HDMI audio driver loaded\n");
+ 			pm_runtime_mark_last_busy(dev);
+ 			return -EBUSY;
+ 		}
+ 	}
+ 
+ 	list_for_each_entry(crtc, &drm->dev->mode_config.crtc_list, head) {
+ 		if (crtc->enabled) {
+ 			DRM_DEBUG_DRIVER("failing to power off - crtc active\n");
+ 			return -EBUSY;
+ 		}
+ 	}
+ 	pm_runtime_mark_last_busy(dev);
+ 	pm_runtime_autosuspend(dev);
+ 	/* we don't want the main rpm_idle to call suspend - we want to autosuspend */
+ 	return 1;
+ }
  
  static int
  nouveau_drm_open(struct drm_device *dev, struct drm_file *fpriv)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

             reply	other threads:[~2014-12-05  4:39 UTC|newest]

Thread overview: 159+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-05  4:39 Stephen Rothwell [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-01-05  2:16 linux-next: manual merge of the drm tree with Linus' tree Stephen Rothwell
2026-01-05  7:07 ` Thomas Zimmermann
2026-01-06 21:35   ` Stephen Rothwell
2025-12-04  3:06 Stephen Rothwell
2025-12-04  7:35 ` Thomas Zimmermann
2025-06-06  2:08 Stephen Rothwell
2025-05-21  4:13 Stephen Rothwell
2025-05-21  4:10 Stephen Rothwell
2025-03-24  3:06 Stephen Rothwell
2025-03-03  2:12 Stephen Rothwell
2024-11-11  2:04 Stephen Rothwell
2024-10-28  2:49 Stephen Rothwell
2024-09-16  4:15 Stephen Rothwell
2024-09-16 12:58 ` Tobias Jakobi
2024-09-17 20:24   ` Alex Deucher
2024-09-09  3:11 Stephen Rothwell
2024-03-04  1:08 Stephen Rothwell
2024-03-04  0:47 Stephen Rothwell
2024-01-08  0:14 Stephen Rothwell
2023-06-19  1:17 Stephen Rothwell
2022-11-30 22:57 Stephen Rothwell
2022-11-27 23:58 Stephen Rothwell
2022-11-29  9:07 ` Geert Uytterhoeven
2022-11-17  2:13 Stephen Rothwell
2022-09-19  0:58 Stephen Rothwell
2022-09-19  7:58 ` Geert Uytterhoeven
2022-09-19 14:23   ` Nathan Chancellor
2022-02-28  3:17 Stephen Rothwell
2021-10-29  0:48 Stephen Rothwell
2021-10-29  6:52 ` Joonas Lahtinen
2021-10-11  0:37 Stephen Rothwell
2021-08-23  2:41 Stephen Rothwell
2021-08-24  0:12 ` Stephen Rothwell
2021-08-12  1:20 Stephen Rothwell
2021-07-01  0:52 Stephen Rothwell
2021-03-29  2:14 Stephen Rothwell
2021-03-30  7:36 ` Geert Uytterhoeven
2021-03-30 23:41   ` Stephen Rothwell
2021-02-01  1:30 Stephen Rothwell
2021-02-14 22:07 ` Stephen Rothwell
2021-01-18  0:56 Stephen Rothwell
2020-10-02  3:42 Stephen Rothwell
2020-05-25  3:51 Stephen Rothwell
2020-03-23  0:50 Stephen Rothwell
2019-11-13  1:38 Stephen Rothwell
2019-11-13  1:13 Stephen Rothwell
2019-11-13  0:58 Stephen Rothwell
2019-11-13  0:50 Stephen Rothwell
2019-11-13  0:46 Stephen Rothwell
2019-11-13  0:40 Stephen Rothwell
2019-08-26  3:12 Stephen Rothwell
2019-06-11  2:19 Stephen Rothwell
2018-06-04  3:09 Stephen Rothwell
2018-03-26  3:38 Stephen Rothwell
2018-03-22  6:37 Stephen Rothwell
2018-03-26  3:45 ` Stephen Rothwell
2018-03-13  1:15 Stephen Rothwell
2018-02-18 23:10 Stephen Rothwell
2018-02-20 20:15 ` Rodrigo Vivi
2018-02-18 23:02 Stephen Rothwell
2018-01-15  1:08 Stephen Rothwell
2017-11-23 23:37 Stephen Rothwell
2017-10-30 18:36 Mark Brown
2017-10-30 18:26 Mark Brown
2017-08-28  2:32 Stephen Rothwell
2017-07-31  2:24 Stephen Rothwell
2017-07-24  2:06 Stephen Rothwell
2017-07-24  2:09 ` Stephen Rothwell
2017-06-05  2:49 Stephen Rothwell
2017-04-05  0:30 Stephen Rothwell
2017-02-23 23:17 Stephen Rothwell
2016-09-28  1:57 Stephen Rothwell
2016-09-20  2:42 Stephen Rothwell
2016-09-20 12:25 ` Philipp Zabel
2016-09-05  3:58 Stephen Rothwell
2016-09-05  3:51 Stephen Rothwell
2016-07-29  1:45 Stephen Rothwell
2016-05-09  1:28 Stephen Rothwell
2016-05-09  1:27 Stephen Rothwell
2016-03-17  0:45 Stephen Rothwell
2016-03-17  1:43 ` Luis R. Rodriguez
2016-02-29  2:59 Stephen Rothwell
2015-12-07  3:38 Stephen Rothwell
2015-11-01  8:11 Stephen Rothwell
2015-07-27  1:14 Stephen Rothwell
2015-06-21  3:50 Stephen Rothwell
2015-06-22  7:20 ` Christian König
2015-05-11  3:07 Stephen Rothwell
2015-04-07  5:22 Stephen Rothwell
2015-01-29  2:17 Stephen Rothwell
2015-01-29  8:19 ` Oded Gabbay
2015-01-22  2:22 Stephen Rothwell
2015-01-22  2:31 ` Dave Airlie
2015-01-22  2:57   ` Stephen Rothwell
2015-01-22  2:18 Stephen Rothwell
2015-01-22  2:15 Stephen Rothwell
2014-12-05  4:46 Stephen Rothwell
2014-11-17  3:11 Stephen Rothwell
2014-11-17  9:47 ` Thierry Reding
2014-06-05  3:59 Stephen Rothwell
2014-06-05  3:54 Stephen Rothwell
2014-03-31  2:54 Stephen Rothwell
2014-03-24  2:01 Stephen Rothwell
2014-03-24  8:49 ` Jani Nikula
2013-12-19  2:09 Stephen Rothwell
2013-12-19  1:59 Stephen Rothwell
2013-11-07  2:21 Stephen Rothwell
2013-11-07  2:10 Stephen Rothwell
2013-10-28  5:58 Stephen Rothwell
2013-10-28  5:28 Stephen Rothwell
2013-10-28  5:11 Stephen Rothwell
2013-07-29  2:58 Stephen Rothwell
2013-07-26  3:01 Stephen Rothwell
2013-06-24  2:56 Stephen Rothwell
2013-06-17  3:09 Stephen Rothwell
2013-02-13  4:48 Stephen Rothwell
2012-11-30  1:22 Stephen Rothwell
2012-10-04  2:00 Stephen Rothwell
2012-10-04  1:54 Stephen Rothwell
2012-09-17  4:53 Stephen Rothwell
2012-08-24  2:20 Stephen Rothwell
2012-08-24  2:19 Stephen Rothwell
2012-08-24  7:13 ` Jani Nikula
2012-08-24  7:12   ` Dave Airlie
2012-08-24 20:29     ` Sedat Dilek
2012-07-19  1:38 Stephen Rothwell
2012-07-16  3:00 Stephen Rothwell
2012-06-29  3:30 Stephen Rothwell
2012-06-29  9:01 ` Daniel Vetter
2012-05-14  4:08 Stephen Rothwell
2012-05-07  3:45 Stephen Rothwell
2012-05-07  8:06 ` Daniel Vetter
2012-05-03  3:07 Stephen Rothwell
2012-04-13  3:38 Stephen Rothwell
2012-04-13  8:59 ` Daniel Vetter
2012-03-05  3:47 Stephen Rothwell
2011-12-28  2:53 Stephen Rothwell
2011-12-28  2:44 Stephen Rothwell
2011-12-21  3:18 Stephen Rothwell
2011-12-12  2:06 Stephen Rothwell
2011-03-09  3:41 Stephen Rothwell
2010-10-15  1:54 Stephen Rothwell
2010-10-03 23:30 Stephen Rothwell
2010-10-03 23:30 Stephen Rothwell
2010-04-28  3:58 Stephen Rothwell
2010-04-27  2:51 Stephen Rothwell
2010-04-12  5:06 Stephen Rothwell
2009-10-06  2:28 Stephen Rothwell
2009-10-08  2:35 ` Stephen Rothwell
2009-10-08  3:38   ` Dave Airlie
2009-10-08  3:44     ` Stephen Rothwell
2009-09-08  5:01 Stephen Rothwell
2009-08-20  5:27 Stephen Rothwell
2009-08-20  5:30 ` Dave Airlie
2009-08-20  6:43   ` Stephen Rothwell
2009-08-20  5:07 Stephen Rothwell
2009-08-05  3:44 Stephen Rothwell
2009-02-10  6:22 Stephen Rothwell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141205153921.342a0790@canb.auug.org.au \
    --to=sfr@canb$(echo .)auug.org.au \
    --cc=airlied@linux$(echo .)ie \
    --cc=bskeggs@redhat$(echo .)com \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linux-next@vger$(echo .)kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox