Re: has the i915 "black screen" boot issue returned? [BISECTED]

From: Robert P. J. Day
Date: Fri Jan 28 2011 - 15:21:38 EST


On Fri, 28 Jan 2011, Rafael J. Wysocki wrote:

> On Friday, January 28, 2011, Robert P. J. Day wrote:
> > On Fri, 28 Jan 2011, Chris Wilson wrote:
> >
> > > On Fri, 28 Jan 2011 09:51:01 -0500 (EST), "Robert P. J. Day" <rpjday@xxxxxxxxxxxxxx> wrote:
> > > > sadly, no change -- still black screen. again, rebooted
> > > > successfully under commit 8a327f23. just to be clear, here's "git
> > > > diff":
> > > >
> > > > $ git diff
> > > > diff --git a/include/linux/acpi_io.h b/include/linux/acpi_io.h
> > > > index 7180013..e035f3c 100644
> > > > --- a/include/linux/acpi_io.h
> > > > +++ b/include/linux/acpi_io.h
> > > > @@ -7,7 +7,7 @@
> > > > static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys,
> > > > acpi_size size)
> > > > {
> > > > - return ioremap_cache(phys, size);
> > > > + return ioremap(phys, size);
> > > > }
> > >
> > > Ok, that implies the new mapping is fine and not the cause of the issue.
> > >
> > > Instead you have some OpRegion related regression hidden until till now
> > > because the conflicting mapping disabled it for i915.
> > >
> > > That would be easy to test by returning early in intel_opregion_setup():
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_opregion.c
> > > b/drivers/gpu/drm/i915/intel_
> > > index 9efccb9..8c93201 100644
> > > --- a/drivers/gpu/drm/i915/intel_opregion.c
> > > +++ b/drivers/gpu/drm/i915/intel_opregion.c
> > > @@ -470,6 +470,8 @@ int intel_opregion_setup(struct drm_device *dev)
> > > u32 asls, mboxes;
> > > int err = 0;
> > >
> > > + return -ENOTSUPP;
> > > +
> > >
> > > pci_read_config_dword(dev->pdev, PCI_ASLS, &asls);
> > > DRM_DEBUG_DRIVER("graphic opregion physical addr: 0x%x\n", asls);
> > > if (asls == 0) {
> > >
> >
> > so you want me to revert to a stock b705120e before doing the above?
>
> Alternatively, you could take the vanilla Linus' tree and replace
> ioremap_cache() with ioremap() in include/linux/acpi_io.h . Please try that
> and see if it makes a difference.

been there, done that, that's all so ... this morning. i continued
bisecting and playing and eventually verified the following
workaround for an earlier working version of the kernel:

$ git diff
diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index 64fd644..28adc6d 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -495,6 +495,8 @@ int intel_opregion_setup(struct drm_device *dev)
opregion->acpi = base + OPREGION_ACPI_OFFSET;
}

+return 0; // rday
+
if (mboxes & MBOX_SWSCI) {
DRM_DEBUG_DRIVER("SWSCI supported\n");
opregion->swsci = base + OPREGION_SWSCI_OFFSET;


this was based on a suggestion by chris wilson to deactivate the
"mboxes" tests in that single source file and see what happened.
adding the "return 0" above suddenly gave me a properly booting
kernel. i applied the same diff to the current kernel and it's
building as we speak.

rday

p.s. having that "return 0" *after* that test but before the next one
still gave me a black screen.

--

========================================================================
Robert P. J. Day Waterloo, Ontario, CANADA
http://crashcourse.ca

Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/