On Sun, Sep 03, 2017 at 01:18:40PM +0100, Chris Wilson wrote: > Quoting ville.syrjala@xxxxxxxxxxxxxxx (2017-09-01 20:54:56) > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > 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.syrjala@xxxxxxxxxxxxxxx> > > 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 <chris@xxxxxxxxxxxxxxxxxx> Thanks. Pushed to dinq. -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx