On Sun, Sep 03, 2017 at 01:18:40PM +0100, Chris Wilson wrote:
> Quoting ville.syrj...@linux.intel.com (2017-09-01 20:54:56)
> > From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> > 
> > Our fbdev setup requires the device to be awake for access
> > through the GTT. If one boots without connected displays and
> > later plugs one in, we won't have any runtime PM references when
> > the fbdev setup runs. Explicitly grab a runtime PM reference during
> > the fbdev setup to avoid the following spew:
> > 
> > [   62.518435] RPM wakelock ref not held during HW access
> > [   62.518459] ------------[ cut here ]------------
> > [   62.518546] WARNING: CPU: 3 PID: 37 at 
> > ../drivers/gpu/drm/i915/intel_drv.h:1800 i915_vma_pin_iomap+0x144/0x150 
> > [i915]
> > [   62.518585] Modules linked in: i915 i2c_algo_bit drm_kms_helper 
> > syscopyarea sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart 
> > netconsole nls_iso8859_1 nls_cp437 vfat fat efi_pstore coretemp hwmon 
> > intel_rapl x86_pkg_temp_thermal e1000e efivars ptp pps_core video evdev 
> > ip_tables x_tables ipv6 autofs4
> > [   62.518741] CPU: 3 PID: 37 Comm: kworker/3:1 Not tainted 4.13.0-rc7-skl+ 
> > #1077
> > [   62.518770] Hardware name:                  /NUC7i5BNB, BIOS 
> > BNKBL357.86A.0048.2017.0704.1415 07/04/2017
> > [   62.518827] Workqueue: events i915_hotplug_work_func [i915]
> > [   62.518853] task: ffff88046c00dc00 task.stack: ffffc90000184000
> > [   62.518896] RIP: 0010:i915_vma_pin_iomap+0x144/0x150 [i915]
> > [   62.518919] RSP: 0018:ffffc90000187cc8 EFLAGS: 00010292
> > [   62.518942] RAX: 000000000000002a RBX: ffff880460044000 RCX: 
> > 0000000000000006
> > [   62.518969] RDX: 0000000000000006 RSI: ffffffff819c3e6f RDI: 
> > ffffffff819f1c0e
> > [   62.518996] RBP: ffffc90000187cd8 R08: ffff88046c00e4f0 R09: 
> > 0000000000000000
> > [   62.519022] R10: ffff8804669ca800 R11: 0000000000000000 R12: 
> > ffff880461d20000
> > [   62.519049] R13: ffffc90000187d48 R14: ffff880461d20000 R15: 
> > ffff880460044000
> > [   62.519076] FS:  0000000000000000(0000) GS:ffff88047ed80000(0000) 
> > knlGS:0000000000000000
> > [   62.519107] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [   62.519130] CR2: 000056478ae213f0 CR3: 0000000002c0f000 CR4: 
> > 00000000003406e0
> > [   62.519156] Call Trace:
> > [   62.519190]  intelfb_create+0x176/0x360 [i915]
> > [   62.519216]  __drm_fb_helper_initial_config_and_unlock+0x1c7/0x3c0 
> > [drm_kms_helper]
> > [   62.519251]  drm_fb_helper_hotplug_event.part.18+0xac/0xc0 
> > [drm_kms_helper]
> > [   62.519282]  drm_fb_helper_hotplug_event+0x1a/0x20 [drm_kms_helper]
> > [   62.519324]  intel_fbdev_output_poll_changed+0x1a/0x20 [i915]
> > [   62.519352]  drm_kms_helper_hotplug_event+0x27/0x30 [drm_kms_helper]
> > [   62.519395]  i915_hotplug_work_func+0x24e/0x2b0 [i915]
> > [   62.519420]  process_one_work+0x1d3/0x6d0
> > [   62.519440]  worker_thread+0x4b/0x400
> > [   62.519458]  ? schedule+0x4a/0x90
> > [   62.519475]  ? preempt_count_sub+0x97/0xf0
> > [   62.519495]  kthread+0x114/0x150
> > [   62.519511]  ? process_one_work+0x6d0/0x6d0
> > [   62.519530]  ? kthread_create_on_node+0x40/0x40
> > [   62.519551]  ret_from_fork+0x27/0x40
> > [   62.519569] Code: c4 78 e6 e0 0f ff e9 08 ff ff ff 80 3d d5 bc 0c 00 00 
> > 0f 85 0b ff ff ff 48 c7 c7 d8 50 32 a0 c6 05 c1 bc 0c 00 01 e8 9d 78 e6 e0 
> > <0f> ff e9 f1 fe ff ff 0f 1f 44 00 00 0f 1f 44 00 00 0f b6 87 98
> > [   62.519771] ---[ end trace 5fbe271f991a58ae ]---
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> Ah right, the current code only works because it assumes the fbcon is
> active on the display (thus holding a wakeref) anytime it writes through
> the fbdev's GGTT iomapping. This is one instance where we need GGTT access
> before the fbcon controls the display, hence needs an explicit wakeref.
> 
> intel_fbdev_set_suspend() is also outside of the fbcon control, I
> presume that (memset_io) works because we hold a wakeref whilst doing
> suspend/resume.
> 
> Reviewed-by: Chris Wilson <ch...@chris-wilson.co.uk>

Thanks. Pushed to dinq.

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to