On Mon, 24 Aug 2009, Zhenyu Wang wrote: > yeah, Alex's patch is ok in general, and Alan's problem seems specific on 845G. > So the origin restore order issue for us seems gone with pci layer early resume, > we could remove the restore in intel_agp and drm/i915, although Alex's patch makes > them noop. > > How about this one? Alan, could you help to test this with drm/i915 module loaded? > > thanks. > > From 7ab123a67e3ab3f31051d95e74362ae711e0657e Mon Sep 17 00:00:00 2001 > From: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx> > Date: Mon, 24 Aug 2009 10:29:07 +0800 > Subject: [PATCH] agp/intel: remove restore in resume > > As earlier pci driver resume has already restored space for > host bridge and graphics device, don't need to restore it > again which might cause problem on some chips, e.g 845G tested > by Alan. > > Signed-off-by: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx> > --- > drivers/char/agp/intel-agp.c | 9 --------- > drivers/gpu/drm/i915/i915_drv.c | 1 - > 2 files changed, 0 insertions(+), 10 deletions(-) > > diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c > index 8c9d50d..ed43ab2 100644 > --- a/drivers/char/agp/intel-agp.c > +++ b/drivers/char/agp/intel-agp.c > @@ -2308,15 +2308,6 @@ static int agp_intel_resume(struct pci_dev *pdev) > struct agp_bridge_data *bridge = pci_get_drvdata(pdev); > int ret_val; > > - pci_restore_state(pdev); > - > - /* We should restore our graphics device's config space, > - * as host bridge (00:00) resumes before graphics device (02:00), > - * then our access to its pci space can work right. > - */ > - if (intel_private.pcidev) > - pci_restore_state(intel_private.pcidev); > - > if (bridge->driver == &intel_generic_driver) > intel_configure(); > else if (bridge->driver == &intel_850_driver) > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index fc4b68a..645f298 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -95,7 +95,6 @@ static int i915_resume(struct drm_device *dev) > int ret = 0; > > pci_set_power_state(dev->pdev, PCI_D0); > - pci_restore_state(dev->pdev); > if (pci_enable_device(dev->pdev)) > return -1; > pci_set_master(dev->pdev); I tested the following configurations (each with your patch applied): Without Alex's patch and without i915 loaded; With Alex's patch and without i915 loaded; With Alex's patch and with i915 loaded. They all worked. (Note that I normally run without drm/i915. The Xorg 2D-acceleration code is buggy on my hardware, so I don't use it.) Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm