[pull] radeon drm-fixes-3.6

Alex Deucher alexdeucher at gmail.com
Thu Sep 20 10:05:17 PDT 2012


If it's not too late, there's one more patch that fixes a resume
regression on pre-r6xx asics.

commit 16c58081eb95e35f284421176f355eccfc773bbe
Author: Simon Kitching <skitching at vonos.net>
Date:   Thu Sep 20 12:59:16 2012 -0400

    drm/radeon: Prevent leak of scratch register on resume from suspend

    Cards typically have 5-7 scratch registers; one of these is reserved for
    rdev->rptr_save_reg. Unfortunately the reservation is done in function
    r100_cp_init, which is called by all drivers except r600 - and this
    function is also invoked on resume from suspend. After several resumes,
    no scratch registers are free and graphics acceleration is disabled.

    Dmesg then reports either:
       *ERROR* radeon: cp failed to get scratch reg (-22).
       *ERROR* radeon: cp isn't working(-22).
       radeon 0000:01:00.0: failed initializing CP (-22).
    or:
       *ERROR* radeon: failed to get scratch reg (-22).
       *ERROR* radeon: failed testing IB on GFX ring (-22).
       *ERROR* ib ring test failed (-22).

    The chain of calls on boot for all except r600 is:
    radeon_init -> ... -> (rXXX_init) -> rXXX_startup -> r100_cp_init

    The chain of calls on resume for all except r600 is:
    rXXX_resume -> rXXX_startup -> r100_cp_init.

    R600 correctly allocates rptr_save_reg in r600_init (ie once only, not
    in resume). However moving the code into the init functions for all
    drivers means touching 4 drivers. So instead, this patch just adds a
    test in r100_cp_init to avoid reallocating on resume. As the rdev
    structure is allocated via kzalloc in radeon_driver_load_kms, and zero
    is not a valid registerid, zero safely implies not-yet-allocated.

    This issue appears to have been introduced in c7eff978 (3.6.0-rcN)

    Signed-off-by: Simon Kitching <skitching at vonos.net>
    Signed-off-by: Alex Deucher <alexander.deucher at amd.com>


On Tue, Sep 18, 2012 at 9:13 AM,  <alexdeucher at gmail.com> wrote:
> From: Alex Deucher <alexander.deucher at amd.com>
>
> The pll fix ended up causing some regressions.  Drop it for 3.6.  I've
> fixed it properly in 3.7, but the fix is too invasive for 3.6.
>
> The following changes since commit 610bd7da160f76f1644ecb4cd7f39511b49a22cc:
>
>   drm/nouveau: fix booting with plymouth + dumb support (2012-09-14 15:45:01 +1000)
>
> are available in the git repository at:
>   git://people.freedesktop.org/~agd5f/linux drm-fixes-3.6
>
> Alex Deucher (1):
>       Revert "drm/radeon: rework pll selection (v3)"
>
>  drivers/gpu/drm/radeon/atombios_crtc.c |  163 +++++++-------------------------
>  1 files changed, 34 insertions(+), 129 deletions(-)


More information about the dri-devel mailing list