Bug 24462
Summary: | r600: spread spectrum: flickering screen (bisected) | ||
---|---|---|---|
Product: | Drivers | Reporter: | Luca Tettamanti (kronos.it) |
Component: | Video(DRI - non Intel) | Assignee: | drivers_video-dri |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | alexdeucher, florian, maciej.rutecki, rjw |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.37-rc5 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 21782 | ||
Attachments: |
possible fix
M76 vbios possible fix possible fix better fix new patch |
Description
Luca Tettamanti
2010-12-08 16:18:38 UTC
Created attachment 39252 [details]
possible fix
Does this patch help?
(In reply to comment #1) > Created an attachment (id=39252) [details] > possible fix > > Does this patch help? No, flickering it's still there. The parameters passed to EnableSpreadSpectrumOnPPLL with 2.6.36 and 2.6.37-rc5 are: ss->percentage = 0x1e ss->type = 0x1 ss->step = 0x1 ss->delay = 0x2a ss->range = 0x2 pll_id = 0x0 but 2.6.36 uses ENABLE_SPREAD_SPECTRUM_ON_PPLL_PS_ALLOCATION, while the newer kernel uses ENABLE_LVDS_SS_PARAMETERS_V2 for the parameters (the only difference is that the latter does not have ucPpll); is this correct? Please attach a copy of your vbios: (as root) (use lspci to get the bus id) cd /sys/bus/pci/devices/<pci bus id> echo 1 > rom cat rom > /tmp/vbios.rom echo 0 > rom Created attachment 39342 [details]
M76 vbios
Created attachment 39362 [details] possible fix (In reply to comment #2) > but 2.6.36 uses ENABLE_SPREAD_SPECTRUM_ON_PPLL_PS_ALLOCATION, while the newer > kernel uses ENABLE_LVDS_SS_PARAMETERS_V2 for the parameters (the only > difference is that the latter does not have ucPpll); is this correct? That is correct. I suspect it's the pll that's problematic: if (ss_enabled) { if (ss->refdiv) { pll->flags |= RADEON_PLL_USE_REF_DIV; pll->reference_div = ss->refdiv; } } It uses a fixed reference divider of 2 in your case. Does the attached patch help? Please also try this patch in conjunction with the patch in comment 1. First-Bad-Commit : ba032a58d1f320039e7850fb6e8651695c1aa571 Handled-By : Alex Deucher <alexdeucher@gmail.com> (In reply to comment #5) > Does the attached patch > help? Please also try this patch in conjunction with the patch in comment 1. Still not working, even with the first patch applied. Created attachment 39372 [details]
possible fix
This patch disables use of the ss fixed ref divide and should fix it.
(In reply to comment #8) > This patch disables use of the ss fixed ref divide and should fix it. Yes, taking out that code worked. I'm of course available for further testing if you're not satisfied with this workaround ;) I've sent the patch to Dave. It should show up in his next drm pull request. Fixed by commit e5fd205 drm/radeon/kms: disable ss fixed ref divide . Luca, can you try re-enabling this code with 2.6.38-rc4 or newer? Do you still have problems? Created attachment 47282 [details]
better fix
Can you try the following patch against 2.6.38-rc4 or newer and make sure all is working well?
(In reply to comment #14) > Created an attachment (id=47282) [details] > better fix > > Can you try the following patch against 2.6.38-rc4 or newer and make sure all > is working well? 2.6.38-rc4 plus the patch looks good, thanks! Created attachment 47482 [details]
new patch
Can you try this patch? Try uncommenting the following lines to see if either of those flags work as well. Try them individually and together if possible and report back which, if any, helps.
/*pll->flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP;*/
/*if (ASIC_IS_AVIVO(rdev))
pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV;*/
Thanks!
(In reply to comment #16) > Created an attachment (id=47482) [details] > new patch > > Can you try this patch? Try uncommenting the following lines to see if > either > of those flags work as well. Try them individually and together if possible > and report back which, if any, helps. > > /*pll->flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP;*/ > > /*if (ASIC_IS_AVIVO(rdev)) > pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV;*/ The first one alone works, the second one alone does *not* work, both together work fine. |