radeon testing

Alex Deucher alexdeucher at gmail.com
Tue Aug 21 13:39:31 PDT 2012


On Tue, Aug 21, 2012 at 4:33 PM, Luca Tettamanti <kronos.it at gmail.com> wrote:
> On Tue, Aug 21, 2012 at 09:51:46AM -0400, Alex Deucher wrote:
>> On Mon, Aug 20, 2012 at 3:30 PM, Luca Tettamanti <kronos.it at gmail.com> wrote:
>> > Any printk between evergreen_mc_stop and evergreen_mc_resume locks up
>> > the machine. The likely culprit is commit 023e188e:
>>
>> yeah, vram is locked out at that point.  I guess we probably need to
>> block anyone from trying to access it.
>
> I see; the 2 dev_warn would probably lock up the machine as well right?
>
>> > I haven't tried backing out the commit yet, but looking at the diff I
>> > see that you call radeon_wait_for_vblank and radeon_get_vblank_counter,
>> > but evergreen_mc_program is called way before IRQ is set up. Is the
>> > vblank counter running? Looks like we just hitting the timeout here...
>>
>> We aren't waiting for an interrupt, just polling the current crtc
>> status until it enters the vblank region.  The status and counters
>> should be working as we only wait on displays that are enabled.
>
> It appears that all the crtcs are considered active:
>
> [    4.260766] crtc 0 enabled 272696081 (this is the value of crtc_enabled)
> [    4.260766] crtc 0 wait for vblank 0x1 (0x1 means no timeout)
> [    4.260766] crtc 0: waited 33 [100000] (number of loops of radeon_get_vblank_counter)
> [    4.260766] crtc 1 enabled 272630544
> [    4.260766] crtc 1 wait for vblank 0x1
> [    4.260766] crtc 1: waited 100000 [100000]
> [    4.260766] crtc 2 enabled 4195088
> [    4.260766] crtc 2 wait for vblank 0x1
> [    4.260766] crtc 2: waited 100000 [100000]
> [    4.260766] crtc 3 enabled 4195088
> [    4.260766] crtc 3 wait for vblank 0x1
> [    4.260766] crtc 3: waited 100000 [100000]
> [    4.260766] crtc 4 enabled 4195088
> [    4.260766] crtc 4 wait for vblank 0x1
> [    4.260766] crtc 4: waited 100000 [100000]
> [    4.260766] crtc 5 enabled 4195088
> [    4.260766] crtc 5 wait for vblank 0x1
> [    4.260766] crtc 5: waited 100000 [100000]
>
> Maybe the code should be checking EVERGREEN_CRTC_MASTER_EN?
>
> I'm testing this patch and the boot is fast again:

Yes, that's correct.  I'll fix that up.

Alex

>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
> index 2308c7d..72bf721 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -1251,7 +1251,8 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
>         WREG32(VGA_RENDER_CONTROL, 0);
>         /* blank the display controllers */
>         for (i = 0; i < rdev->num_crtc; i++) {
> -               crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]);
> +               crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) &
> +                               EVERGREEN_CRTC_MASTER_EN;
>                 if (crtc_enabled) {
>                         save->crtc_enabled[i] = true;
>                         if (ASIC_IS_DCE6(rdev)) {
>
>
> Luca


More information about the dri-devel mailing list