On Tue, 11 Nov 2008 08:15:26 +0000 (GMT) Dave Airlie <[EMAIL PROTECTED]> wrote:

> commit 78538bf14995a136c2d9a22159ada49937359119
> Author: Dave Airlie <[EMAIL PROTECTED]>
> Date:   Tue Nov 11 17:56:16 2008 +1000
> 
>     drm/radeon: map registers at load time
>     
>     Now that the radeon driver has suspend/resume functions, it needs to map 
> its
>     registers at load time or it will likely crash if a suspend operation 
> occurs
>     before the driver has been initialized.
>     
>     This patch moves the register mapping code from firstopen to load and 
> makes
>     the mapping into a _DRM_DRIVER one so that the core won't remove it at
>     lastclose time.

Does this make the below patch obsolete?

>     Fixes (at least partially) kernel bz #11891.

A little thing: there are (or used to be) people who troll commits for
bugzilla reports to close off.  I've adopted the convention of
indicating bugzilla reports via their full URL to make those efforts
easier and to increase their accuracy.



From: Jiri Slaby <[EMAIL PROTECTED]>

When the driver is bound to a device and nobody opens the device node, it
will oops on suspend and resume, since it's not mapped and dev_priv->mmio
is NULL.

Signed-off-by: Jiri Slaby <[EMAIL PROTECTED]>
Cc: David Airlie <[EMAIL PROTECTED]>
Cc: Rafael J. Wysocki <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/gpu/drm/radeon/radeon_drv.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff -puN 
drivers/gpu/drm/radeon/radeon_drv.c~drm-fix-radeon-suspend-resume-oops 
drivers/gpu/drm/radeon/radeon_drv.c
--- a/drivers/gpu/drm/radeon/radeon_drv.c~drm-fix-radeon-suspend-resume-oops
+++ a/drivers/gpu/drm/radeon/radeon_drv.c
@@ -56,6 +56,9 @@ static int radeon_suspend(struct drm_dev
 {
        drm_radeon_private_t *dev_priv = dev->dev_private;
 
+       if (!dev_priv->mmio)
+               return 0;
+
        /* Disable *all* interrupts */
        if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690)
                RADEON_WRITE(R500_DxMODE_INT_MASK, 0);
@@ -67,6 +70,9 @@ static int radeon_resume(struct drm_devi
 {
        drm_radeon_private_t *dev_priv = dev->dev_private;
 
+       if (!dev_priv->mmio)
+               return 0;
+
        /* Restore interrupt registers */
        if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690)
                RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg);
_


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to