On Wed, Jul 17, 2013 at 4:24 PM, Andre Heider <a.heider@xxxxxxxxx> wrote: > On Wed, Jul 17, 2013 at 9:54 PM, <alexdeucher@xxxxxxxxx> wrote: >> From: Alex Deucher <alexander.deucher@xxxxxxx> >> >> Hi Dave, >> >> Just a few DPM fixes. >> >> The following changes since commit d1ce3d5496f2a7c90dd00a9133572f931d2acdcc: >> >> uvesafb: Really allow mtrr being 0, as documented and warn()ed (2013-07-16 10:24:28 +1000) >> >> are available in the git repository at: >> git://people.freedesktop.org/~agd5f/linux drm-fixes-3.11 >> >> Alex Deucher (3): >> drm/radeon: add a module parameter to disable aspm >> drm/radeon: fix an endian bug in atom table parsing >> drm/radeon/dpm: fix atom vram table parsing >> >> Andre Heider (1): >> drm/radeon/dpm/atom: restructure logic to work around a compiler bug > > Discarding the debug patches from bug #66932 and then merging your > branch makes it break again :P > Seems like the printk()s mattered and the gcc 4.8 still hates the code. > > I still think its due to the asRegIndexBuf[1] definition + accessing > the array with i>0, let me poke at it a little Does the attached patch help? Alex
From f90555cbe629e14c6af1dcec1933a3833ecd321f Mon Sep 17 00:00:00 2001 From: Alex Deucher <alexander.deucher@xxxxxxx> Date: Wed, 17 Jul 2013 16:34:12 -0400 Subject: [PATCH] drm/radeon/dpm/atom: fix broken gcc harder See bugs: https://bugs.freedesktop.org/show_bug.cgi?id=66932 https://bugs.freedesktop.org/show_bug.cgi?id=66972 https://bugs.freedesktop.org/show_bug.cgi?id=66945 Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> --- drivers/gpu/drm/radeon/radeon_atombios.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index 2606ec6..e3f3e88 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c @@ -3699,18 +3699,21 @@ int radeon_atom_init_mc_reg_table(struct radeon_device *rdev, (ATOM_MEMORY_SETTING_DATA_BLOCK *) ((u8 *)reg_block + (2 * sizeof(u16)) + le16_to_cpu(reg_block->usRegIndexTblSize)); + ATOM_INIT_REG_INDEX_FORMAT *format = ®_block->asRegIndexBuf[0]; num_entries = (u8)((le16_to_cpu(reg_block->usRegIndexTblSize)) / sizeof(ATOM_INIT_REG_INDEX_FORMAT)) - 1; if (num_entries > VBIOS_MC_REGISTER_ARRAY_SIZE) return -EINVAL; while (i < num_entries) { - if (reg_block->asRegIndexBuf[i].ucPreRegDataLength & ACCESS_PLACEHOLDER) + if (format->ucPreRegDataLength & ACCESS_PLACEHOLDER) break; reg_table->mc_reg_address[i].s1 = - (u16)(le16_to_cpu(reg_block->asRegIndexBuf[i].usRegIndex)); + (u16)(le16_to_cpu(format->usRegIndex)); reg_table->mc_reg_address[i].pre_reg_data = - (u8)(reg_block->asRegIndexBuf[i].ucPreRegDataLength); + (u8)(format->ucPreRegDataLength); i++; + format = (ATOM_INIT_REG_INDEX_FORMAT *) + ((u8 *)format + sizeof(ATOM_INIT_REG_INDEX_FORMAT)); } reg_table->last = i; while ((*(u32 *)reg_data != END_OF_REG_DATA_BLOCK) && -- 1.7.7.5
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel