[BUG/REGRESSION] Radeon HDMI casuses oops on Acube Sam460ex amcc 460ex power board
Alex Deucher
alexdeucher at gmail.com
Mon May 18 13:59:13 PDT 2015
On Mon, May 18, 2015 at 1:48 PM, Julian Margetson <runaway at candw.ms> wrote:
> On 5/18/2015 12:08 PM, Alex Deucher wrote:
>>
>> On Sun, May 17, 2015 at 7:20 PM, Julian Margetson <runaway at candw.ms>
>> wrote:
>>>
>>> Kernels 4.03 and 4.04 oops with HDMI connection on Acube Sam460ex amcc
>>> 460ex powerpc board.
>>>
>>> 016a255b7835ee7e49a3eba3c14ba0bc0221a4f8 is the first bad commit
>>>
>>> commit 016a255b7835ee7e49a3eba3c14ba0bc0221a4f8
>>> Author: Alex Deucher <alexander.deucher at amd.com>
>>> Date: Tue Apr 7 09:52:42 2015 -0400
>>>
>>> drm/radeon: only mark audio as connected if the monitor supports it
>>> (v3)
>>>
>>> commit 0f55db36d49d45b80eff0c0a2a498766016f458b upstream.
>>>
>>> Otherwise the driver may try and send audio which may confuse the
>>> monitor.
>>>
>>> v2: set pin to NULL if no audio
>>> v3: avoid crash with analog encoders
>>>
>>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>>> Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
>>>
>>> :040000 040000 de0366a6790f5c91d175bcb89cb34956bbe72b26
>>> bbdb5734961f824558152c7c34a840c78bc3a9a9 M drivers
>>>
>> The attached patch should fix it up.
>>
>> Alex
>>
>>
>>>
>>> [ 2.587570] Linux agpgart interface v0.103
>>> [ 2.591997] [drm] Initialized drm 1.1.0 20060810
>>> [ 2.596892] [drm] radeon kernel modesetting enabled.
>>> [ 2.602989] [drm] initializing kernel modesetting (VERDE 0x1002:0x683F
>>> 0x1545:0x7750).
>>> [ 2.611161] [drm] register mmio base: 0xe90000000
>>> [ 2.615935] [drm] register mmio size: 262144
>>> [ 2.952043] ATOM BIOS: C44501
>>> [ 2.955323] radeon 0001:81:00.0: VRAM: 1024M 0x0000000000000000 -
>>> 0x000000003FFFFFFF (1024M used)
>>> [ 2.964253] radeon 0001:81:00.0: GTT: 1024M 0x0000000040000000 -
>>> 0x000000007FFFFFFF
>>> [ 2.971938] [drm] Detected VRAM RAM=1024M, BAR=256M
>>> [ 2.976840] [drm] RAM width 128bits DDR
>>> [ 2.980898] [TTM] Zone kernel: Available graphics memory: 379358 kiB
>>> [ 2.987383] [TTM] Zone highmem: Available graphics memory: 1034718 kiB
>>> [ 2.993934] [TTM] Initializing pool allocator
>>> [ 2.998331] [TTM] Initializing DMA pool allocator
>>> [ 3.003153] [drm] radeon: 1024M of VRAM memory ready
>>> [ 3.008162] [drm] radeon: 1024M of GTT memory ready.
>>> [ 3.013203] [drm] Loading verde Microcode
>>> [ 3.017266] [drm] Internal thermal controller with fan control
>>> [ 3.023437] [drm] probing gen 2 caps for device aaa1:bed1 = 18cc41/0
>>> [ 3.077284] [drm] radeon: dpm initialized
>>> [ 3.081503] [drm] GART: num cpu pages 262144, num gpu pages 262144
>>> [ 3.093142] [drm] probing gen 2 caps for device aaa1:bed1 = 18cc41/0
>>> [ 3.125984] [drm] PCIE GART of 1024M enabled (table at
>>> 0x0000000000277000).
>>> [ 3.133327] radeon 0001:81:00.0: WB enabled
>>> [ 3.137565] radeon 0001:81:00.0: fence driver on ring 0 use gpu addr
>>> 0x0000000040000c00 and cpu addr 0xffc01c00
>>> [ 3.147697] radeon 0001:81:00.0: fence driver on ring 1 use gpu addr
>>> 0x0000000040000c04 and cpu addr 0xffc01c04
>>> [ 3.157827] radeon 0001:81:00.0: fence driver on ring 2 use gpu addr
>>> 0x0000000040000c08 and cpu addr 0xffc01c08
>>> [ 3.167957] radeon 0001:81:00.0: fence driver on ring 3 use gpu addr
>>> 0x0000000040000c0c and cpu addr 0xffc01c0c
>>> [ 3.178078] radeon 0001:81:00.0: fence driver on ring 4 use gpu addr
>>> 0x0000000040000c10 and cpu addr 0xffc01c10
>>> [ 3.209673] radeon 0001:81:00.0: fence driver on ring 5 use gpu addr
>>> 0x0000000000075a18 and cpu addr 0xf90b5a18
>>> [ 3.219822] [drm] Supports vblank timestamp caching Rev 2
>>> (21.10.2013).
>>> [ 3.226457] [drm] Driver supports precise vblank timestamp query.
>>> [ 3.232584] radeon 0001:81:00.0: radeon: MSI limited to 32-bit
>>> [ 3.238466] ppc4xx_setup_msi_irqs: fail allocating msi interrupt
>>> [ 3.244586] [drm] radeon: irq initialized.
>>> [ 4.006339] [drm:r600_ring_test] *ERROR* radeon: ring 0 test failed
>>> (scratch(0x850C)=0xCAFEDEAD)
>>> [ 4.015198] radeon 0001:81:00.0: disabling GPU acceleration
>>> [ 4.220071] [drm] Radeon Display Connectors
>>> [ 4.224651] [drm] Connector 0:
>>> [ 4.227787] [drm] HDMI-A-1
>>> [ 4.230754] [drm] HPD4
>>> [ 4.233328] [drm] DDC: 0x6570 0x6570 0x6574 0x6574 0x6578 0x6578
>>> 0x657c
>>> 0x657c
>>> [ 4.240806] [drm] Encoders:
>>> [ 4.243815] [drm] DFP1: INTERNAL_UNIPHY2
>>> [ 4.248131] [drm] Connector 1:
>>> [ 4.251227] [drm] DVI-I-1
>>> [ 4.254051] [drm] HPD2
>>> [ 4.256608] [drm] DDC: 0x6560 0x6560 0x6564 0x6564 0x6568 0x6568
>>> 0x656c
>>> 0x656c
>>> [ 4.264034] [drm] Encoders:
>>> [ 4.267021] [drm] DFP2: INTERNAL_UNIPHY
>>> [ 4.271223] [drm] CRT1: INTERNAL_KLDSCP_DAC1
>>> [ 4.390562] [drm] fb mappable at 0x80478000
>>> [ 4.394789] [drm] vram apper at 0x80000000
>>> [ 4.398905] [drm] size 8294400
>>> [ 4.401978] [drm] fb depth is 24
>>> [ 4.405225] [drm] pitch is 7680
>>> [ 4.700581] Console: switching to colour frame buffer device 240x67
>>> [ 4.779669] radeon 0001:81:00.0: fb0: radeondrmfb frame buffer device
>>> [ 4.786489] radeon 0001:81:00.0: registered panic notifier
>>> [ 4.796803] [drm] Initialized radeon 2.41.0 20080528 for 0001:81:00.0
>>> on
>>> minor 0
>>>
>>> [ 31.191562] Unable to handle kernel paging request for data at address
>>> 0x00000008
>>> [ 31.258832] Faulting instruction address: 0xc04a51bc
>>> [ 34.049506] Oops: Kernel access of bad area, sig: 11 [#1]
>>> [ 34.055246] PREEMPT Canyonlands
>>> [ 34.058586] Modules linked in:
>>> [ 34.061830] CPU: 0 PID: 1998 Comm: Xorg Not tainted 4.0.3-Sam460ex #2
>>> [ 34.068633] task: edee4c60 ti: ede8a000 task.ti: ede8a000
>>> [ 34.074334] NIP: c04a51bc LR: c04a546c CTR: c03e5050
>>> [ 34.079578] REGS: ede8bc30 TRAP: 0300 Not tainted (4.0.3-Sam460ex)
>>> [ 34.086381] MSR: 00029000 <CE,EE,ME> CR: 20004422 XER: 00000000
>>> [ 34.092944] DEAR: 00000008 ESR: 00000000
>>> GPR00: c04a5438 ede8bce0 edee4c60 eea84000 00000000 00000000 c0710000
>>> 00000000
>>> GPR08: 00000000 00000000 eeac0400 ede8bce0 20004444 b7a55afc b80efab0
>>> b80ee530
>>> GPR16: 00000000 ffffffff 6f23c730 ede8be18 c03add44 eeac0578 00000001
>>> 00004000
>>> GPR24: 00004000 c0719b98 fffffff2 00000001 eeb61200 eea84000 eea8df00
>>> 00000000
>>> [ 34.127485] NIP [c04a51bc] radeon_audio_enable+0x4/0x18
>>> [ 34.133000] LR [c04a546c] radeon_audio_detect+0xd4/0x104
>>> [ 34.138604] Call Trace:
>>> [ 34.141185] [ede8bce0] [c04a5438] radeon_audio_detect+0xa0/0x104
>>> (unreliable)
>>> [ 34.148771] [ede8bd00] [c03e6958] radeon_dvi_detect+0x390/0x3b4
>>> [ 34.155046] [ede8bd30] [c0391cec]
>>> drm_helper_probe_single_connector_modes_merge_bits+0xf4/0x448
>>> [ 34.164253] [ede8bd70] [c03ade28] drm_mode_getconnector+0xe4/0x334
>>> [ 34.170796] [ede8be10] [c03a0be8] drm_ioctl+0x348/0x464
>>> [ 34.176343] [ede8bed0] [c00ce2e8] do_vfs_ioctl+0x52c/0x6e8
>>> [ 34.182158] [ede8bf20] [c00ce4e4] SyS_ioctl+0x40/0x68
>>> [ 34.187515] [ede8bf40] [c000ab1c] ret_from_syscall+0x0/0x3c
>>> [ 34.193417] --- interrupt: c01 at 0x6fb001dc
>>> [ 34.193417] LR = 0x6fb00100
>>> [ 34.201216] Instruction dump:
>>> [ 34.204368] 8129012c 806a0018 2f890000 419e0018 81290004 2f890000
>>> 419e000c 7d2903a6
>>> [ 34.212674] 4e800420 38600000 4e800020 81231cd8 <81290008> 2f890000
>>> 4d9e0020 7d2903a6
>>> [ 34.376219] ---[ end trace 803e15e46b991816 ]---
>>> [ 34.380843]
>>> * Starting Mount filesystems on boot[ OK ]
>>> *
>>>
>>>
>>>
> applied patch and oops still with Kernel 4.04 and 4.1.0-rc3.
>
I'm not readily seeing where it's failing. Please apply the attached
patches and send me the output.
Alex
> [ 28.780273] Unable to handle kernel paging request for data at address
> 0x00000008
> [ 28.846502] Faulting instruction address: 0xc04a520c
> [ 34.670171] Oops: Kernel access of bad area, sig: 11 [#1]
> [ 34.675912] PREEMPT Canyonlands
> [ 34.679252] Modules linked in:
> [ 34.682496] CPU: 0 PID: 1895 Comm: Xorg Not tainted 4.0.4-Sam460ex #3
> [ 34.689299] task: ede4e3e0 ti: edd10000 task.ti: edd10000
> [ 34.694999] NIP: c04a520c LR: c04a54ec CTR: c03e5094
> [ 34.700243] REGS: edd11c30 TRAP: 0300 Not tainted (4.0.4-Sam460ex)
> [ 34.707047] MSR: 00029000 <CE,EE,ME> CR: 28004222 XER: 00000000
> [ 34.713601] DEAR: 00000008 ESR: 00000000
> GPR00: c04a54b8 edd11ce0 ede4e3e0 eea38000 00000000 00000000 c0710000
> 00000000
> GPR08: 00000000 00000000 eeb34400 edd11ce0 28004244 b78d7afc b7b6bab0
> b7b6a530
> GPR16: 00000000 ffffffff 6f23c730 edd11e18 c03add64 eeb34578 00000001
> 00004000
> GPR24: 00004000 c0719b98 fffffff2 eeb62200 eeb63e00 eea3ef00 eea38000
> 00000000
> [ 34.748139] NIP [c04a520c] radeon_audio_enable+0x4/0x18
> [ 34.753657] LR [c04a54ec] radeon_audio_detect+0x104/0x134
> [ 34.759355] Call Trace:
> [ 34.761938] [edd11ce0] [c04a54b8] radeon_audio_detect+0xd0/0x134
> (unreliable)
> [ 34.769523] [edd11d00] [c03e69a8] radeon_dvi_detect+0x39c/0x3c0
> [ 34.775800] [edd11d30] [c0391cf8]
> drm_helper_probe_single_connector_modes_merge_bits+0xf4/0x448
> [ 34.785005] [edd11d70] [c03ade48] drm_mode_getconnector+0xe4/0x334
> [ 34.791548] [edd11e10] [c03a0bf4] drm_ioctl+0x348/0x464
> [ 34.797095] [edd11ed0] [c00ce2e4] do_vfs_ioctl+0x52c/0x6e8
> [ 34.802910] [edd11f20] [c00ce4e0] SyS_ioctl+0x40/0x68
> [ 34.808260] [edd11f40] [c000ab1c] ret_from_syscall+0x0/0x3c
> [ 34.814160] --- interrupt: c01 at 0x6fb001dc
> [ 34.814160] LR = 0x6fb00100
> [ 34.821960] Instruction dump:
> [ 34.825112] 8129012c 806a0018 2f890000 419e0018 81290004 2f890000
> 419e000c 7d2903a6
> [ 34.833418] 4e800420 38600000 4e800020 81231cd8 <81290008> 2f890000
> 4d9e0020 7d2903a6
> [ 34.996734] ---[ end trace c29f79df28960722 ]---
> [ 35.001353]
>
> * Starting Mount filesystems on boot
>
-------------- next part --------------
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
index a07561d..5c261da 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.c
+++ b/drivers/gpu/drm/radeon/radeon_audio.c
@@ -473,12 +473,16 @@ void radeon_audio_detect(struct drm_connector *connector,
radeon_encoder = to_radeon_encoder(encoder);
dig = radeon_encoder->enc_priv;
+ DRM_INFO("encoder id: 0x%x\n", radeon_encoder->encoder_id);
+
if (!dig->afmt)
return;
if (status == connector_status_connected) {
struct radeon_connector *radeon_connector = to_radeon_connector(connector);
+ DRM_INFO("connector_status_connected\n");
+
if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
radeon_dp_getsinktype(radeon_connector) ==
CONNECTOR_OBJECT_ID_DISPLAYPORT)
@@ -486,14 +490,21 @@ void radeon_audio_detect(struct drm_connector *connector,
else
radeon_encoder->audio = rdev->audio.hdmi_funcs;
+ DRM_INFO("audio: 0x%p\n", radeon_encoder->audio);
+
dig->afmt->pin = radeon_audio_get_pin(encoder);
if (drm_detect_monitor_audio(radeon_connector_edid(connector))) {
+ DRM_INFO("enabling audio\n");
radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
} else {
+ DRM_INFO("disabling audio\n");
radeon_audio_enable(rdev, dig->afmt->pin, 0);
dig->afmt->pin = NULL;
}
+ DRM_INFO("pin: 0x%p\n", dig->afmt->pin);
} else {
+ DRM_INFO("connector_status_disconnected\n");
+ DRM_INFO("pin: 0x%p\n", dig->afmt->pin);
radeon_audio_enable(rdev, dig->afmt->pin, 0);
dig->afmt->pin = NULL;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-drm-radeon-properly-select-encoder-in-radeon_audio_d.patch
Type: text/x-patch
Size: 3410 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20150518/64d833b4/attachment-0001.bin>
More information about the dri-devel
mailing list