diff mbox

drm/radeon: fix regression on atom cards with hardcoded EDID record.

Message ID 1304244990-3998-1-git-send-email-airlied@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dave Airlie May 1, 2011, 10:16 a.m. UTC
From: Dave Airlie <airlied@redhat.com>

Since fafcf94e2b5732d1e13b440291c53115d2b172e9 introduced an edid size, it seems to have broken this path.

This manifest as oops on T500 Lenovo laptops with dual graphics primarily.

Should fix: https://bugzilla.kernel.org/show_bug.cgi?id=33812

Signed-off-by: Dave Airlie <airlied@redhat.com>
cc: stable@kernel.org
---
 drivers/gpu/drm/radeon/radeon_atombios.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

Comments

Dave Airlie May 1, 2011, 9:03 p.m. UTC | #1
On Mon, May 2, 2011 at 4:26 AM, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Sun, May 1, 2011 at 6:16 AM, Dave Airlie <airlied@gmail.com> wrote:
>> From: Dave Airlie <airlied@redhat.com>
>>
>> Since fafcf94e2b5732d1e13b440291c53115d2b172e9 introduced an edid size, it seems to have broken this path.
>>
>> This manifest as oops on T500 Lenovo laptops with dual graphics primarily.
>>
>> Should fix: https://bugzilla.kernel.org/show_bug.cgi?id=33812
>>
>> Signed-off-by: Dave Airlie <airlied@redhat.com>
>> cc: stable@kernel.org
>
> Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
>
> Although, I think there may be a problem with the mux switching since
> we shouldn't hit the hardcoded EDID unless DDC fails.

I've avoided having to do a MUX switch for DDC so far since I've no
idea how to enumerate what the MUX is attached to properly.

The good thing is the table has worked fine up until now.

Dave.
Alex Deucher May 1, 2011, 10:03 p.m. UTC | #2
On Sun, May 1, 2011 at 5:03 PM, Dave Airlie <airlied@gmail.com> wrote:
> On Mon, May 2, 2011 at 4:26 AM, Alex Deucher <alexdeucher@gmail.com> wrote:
>> On Sun, May 1, 2011 at 6:16 AM, Dave Airlie <airlied@gmail.com> wrote:
>>> From: Dave Airlie <airlied@redhat.com>
>>>
>>> Since fafcf94e2b5732d1e13b440291c53115d2b172e9 introduced an edid size, it seems to have broken this path.
>>>
>>> This manifest as oops on T500 Lenovo laptops with dual graphics primarily.
>>>
>>> Should fix: https://bugzilla.kernel.org/show_bug.cgi?id=33812
>>>
>>> Signed-off-by: Dave Airlie <airlied@redhat.com>
>>> cc: stable@kernel.org
>>
>> Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
>>
>> Although, I think there may be a problem with the mux switching since
>> we shouldn't hit the hardcoded EDID unless DDC fails.
>
> I've avoided having to do a MUX switch for DDC so far since I've no
> idea how to enumerate what the MUX is attached to properly.

Ah ok.  That would explain the bugs where VGA/DVI ddc doesn't work you
switch gfx.

Alex

>
> The good thing is the table has worked fine up until now.
>
> Dave.
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index f5d12fb..f116516 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -1599,9 +1599,10 @@  struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
 							memcpy((u8 *)edid, (u8 *)&fake_edid_record->ucFakeEDIDString[0],
 							       fake_edid_record->ucFakeEDIDLength);
 
-							if (drm_edid_is_valid(edid))
+							if (drm_edid_is_valid(edid)) {
 								rdev->mode_info.bios_hardcoded_edid = edid;
-							else
+								rdev->mode_info.bios_hardcoded_edid_size = edid_size;
+							} else
 								kfree(edid);
 						}
 					}