Kernel Bug Tracker – Bug 23322
DisplayPort no longer working after patch
Last modified: 2010-12-02 21:21:54 UTC
With a Radeon HD5850 on the open source radeon drivers my DisplayPort monitor stopped working between rc1 and rc2. The card is reported as having only three outputs now, HDMI and 2xDVI. I did a bisect and the cause is this commit:
2236baa75f704851d3cd3310569058151acb1f06 is the first bad commit
Author: Jean Delvare <firstname.lastname@example.org>
Date: Mon Nov 15 22:40:38 2010 +0100
i2c: Sanity checks on adapter registration
Make sure I2C adapters being registered have the required struct
fields set. If they don't, problems will happen later.
Signed-off-by: Jean Delvare <email@example.com>
:040000 040000 d56136ee874424d0d5e11a6483ea1f393b35edb8 0cf1eaab8f5fd4a1b1786e7c745cb709ade50c28 M drivers
I don't know what "problems" will happen later, I have not noticed any problems except it's sometimes a bit hard to make it wake after sleeping. Let me know what more details you need.
Ah, looked at commit, then searched dmesg. I outlined it with ***:
[ 3.820055] [drm] radeon defaulting to kernel modesetting.
[ 3.820057] [drm] radeon kernel modesetting enabled.
[ 3.820091] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 3.820094] radeon 0000:01:00.0: setting latency timer to 64
[ 3.821271] [drm] initializing kernel modesetting (CYPRESS 0x1002:0x6899).
[ 3.821550] [drm] register mmio base: 0xFBBC0000
[ 3.821553] [drm] register mmio size: 131072
[ 3.821645] ATOM BIOS: CYPRESS
[ 3.821661] radeon 0000:01:00.0: VRAM: 1024M 0x00000000 - 0x3FFFFFFF (1024M used)
[ 3.821663] radeon 0000:01:00.0: GTT: 512M 0x40000000 - 0x5FFFFFFF
[ 3.821666] mtrr: type mismatch for e0000000,10000000 old: write-back new: write-combining
[ 3.821668] [drm] Detected VRAM RAM=1024M, BAR=256M
[ 3.821669] [drm] RAM width 256bits DDR
[ 3.821818] [TTM] Zone kernel: Available graphics memory: 4094930 kiB.
[ 3.821819] [TTM] Zone dma32: Available graphics memory: 2097152 kiB.
[ 3.821820] [TTM] Initializing pool allocator.
[ 3.821829] [drm] radeon: 1024M of VRAM memory ready
[ 3.821830] [drm] radeon: 512M of GTT memory ready.
[ 3.821869] radeon 0000:01:00.0: irq 46 for MSI/MSI-X
[ 3.821873] radeon 0000:01:00.0: radeon: using MSI.
[ 3.821902] [drm] radeon: irq initialized.
[ 3.821903] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 3.822357] [drm] Loading CYPRESS Microcode
[ 3.826259] radeon 0000:01:00.0: WB enabled
[ 3.842864] [drm] ring test succeeded in 1 usecs
[ 3.842932] [drm] radeon: ib pool ready.
[ 3.843067] [drm] ib test succeeded in 0 usecs
[ 3.843076] failed to evaluate ATIF got AE_BAD_PARAMETER
***[ 3.844511] i2c-core: Attempt to register an adapter with no name!
[ 3.844550] [drm] Failed to register i2c DP-auxch
[ 3.844603] [drm] Radeon Display Connectors
[ 3.844604] [drm] Connector 0:
[ 3.844605] [drm] HDMI-A
[ 3.844606] [drm] HPD5
[ 3.844607] [drm] DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
[ 3.844608] [drm] Encoders:
[ 3.844609] [drm] DFP2: INTERNAL_UNIPHY2
[ 3.844610] [drm] Connector 1:
[ 3.844611] [drm] DVI-I
[ 3.844611] [drm] HPD1
[ 3.844612] [drm] DDC: 0x6450 0x6450 0x6454 0x6454 0x6458 0x6458 0x645c 0x645c
[ 3.844613] [drm] Encoders:
[ 3.844614] [drm] DFP3: INTERNAL_UNIPHY1
[ 3.844615] [drm] CRT2: INTERNAL_KLDSCP_DAC2
[ 3.844616] [drm] Connector 2:
[ 3.844617] [drm] DVI-I
[ 3.844617] [drm] HPD6
[ 3.844619] [drm] DDC: 0x6470 0x6470 0x6474 0x6474 0x6478 0x6478 0x647c 0x647c
[ 3.844620] [drm] Encoders:
[ 3.844620] [drm] DFP4: INTERNAL_UNIPHY
[ 3.844621] [drm] CRT1: INTERNAL_KLDSCP_DAC1
Turns out it's actually a bug in the radeon driver, it has the name just forgets to set it before calling, duh. This patch will fix it. Also changing to DRI (non-intel) where it belongs...
diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c
index 0cfbba0..d71d693 100644
@@ -947,6 +947,7 @@ struct radeon_i2c_chan *radeon_i2c_create_dp(struct drm_device *dev,
i2c->adapter.owner = THIS_MODULE;
i2c->dev = dev;
+ sprintf(i2c->adapter.name, "Radeon i2c dp bus %s", name);
i2c->adapter.algo_data = &i2c->algo.dp;
i2c->algo.dp.aux_ch = radeon_dp_i2c_aux_ch;
i2c->algo.dp.address = 0;
Turns out I can't change the assignee so you must do it...
Meh, and according to this the fix is already going into rc3 according to http://lists.freedesktop.org/archives/dri-devel/2010-November/005596.html
Alex Deucher (12):
drm/radeon/kms: register an i2c adapter name for the dp aux bus
So... if I can set it resolved I will now, if not you do it...
First-Bad-Commit : 2236baa75f704851d3cd3310569058151acb1f06
Fixed by commit a5193fe .