Re: radeon issues on MacBook Pro 8,2

From: Seth Forshee
Date: Tue Jan 31 2012 - 20:06:30 EST


On Fri, Jan 20, 2012 at 05:08:31PM -0600, Seth Forshee wrote:
> > Can you track down who is calling the connector->detect() callbacks
> > during suspend and resume?
>
> I got two different stack traces, see below.
>
> And to slightly amend my statement above, I'm only seeing the wrong
> status returned on the suspend side of things. The status during resume
> always seems to be correct.
>
> Pid: 49, comm: kworker/0:2 Tainted: G C O 3.2.0-10-generic #17-Ubuntu
> Call Trace:
> [<ffffffffa03f5e1e>] radeon_dp_detect+0x1de/0x230 [radeon]
> [<ffffffffa014ac6d>] output_poll_execute+0xbd/0x1a0 [drm_kms_helper]
> [<ffffffffa014abb0>] ? drm_helper_mode_fill_fb_struct+0x30/0x30 [drm_kms_helper]
> [<ffffffff81083dca>] process_one_work+0x11a/0x480
> [<ffffffff81084b74>] worker_thread+0x164/0x370
> [<ffffffff81084a10>] ? manage_workers.isra.30+0x130/0x130
> [<ffffffff810893cc>] kthread+0x8c/0xa0
> [<ffffffff81660674>] kernel_thread_helper+0x4/0x10
> [<ffffffff81089340>] ? flush_kthread_worker+0xa0/0xa0
> [<ffffffff81660670>] ? gs_change+0x13/0x13
>
> Pid: 49, comm: kworker/0:2 Tainted: G C O 3.2.0-10-generic #17-Ubuntu
> Call Trace:
> [<ffffffffa03f5e1e>] radeon_dp_detect+0x1de/0x230 [radeon]
> [<ffffffffa014b6b3>] drm_helper_probe_single_connector_modes+0x2c3/0x380 [drm_kms_helper]
> [<ffffffffa0149d42>] drm_fb_helper_hotplug_event+0xf2/0x150 [drm_kms_helper]
> [<ffffffffa03fe8d5>] radeon_fb_output_poll_changed+0x15/0x20 [radeon]
> [<ffffffffa03f7b65>] radeon_output_poll_changed+0x15/0x20 [radeon]
> [<ffffffffa014ad40>] output_poll_execute+0x190/0x1a0 [drm_kms_helper]
> [<ffffffffa014abb0>] ? drm_helper_mode_fill_fb_struct+0x30/0x30 [drm_kms_helper]
> [<ffffffff81083dca>] process_one_work+0x11a/0x480
> [<ffffffff81084b74>] worker_thread+0x164/0x370
> [<ffffffff81084a10>] ? manage_workers.isra.30+0x130/0x130
> [<ffffffff810893cc>] kthread+0x8c/0xa0
> [<ffffffff81660674>] kernel_thread_helper+0x4/0x10
> [<ffffffff81089340>] ? flush_kthread_worker+0xa0/0xa0
> [<ffffffff81660670>] ? gs_change+0x13/0x13

>From these traces it looks like all that really needs to happen is to
disable the output polling during suspend. The following patch seems to
get rid of the problems I'm seeing. Does this look okay to you?