[Intel-gfx] [PATCH] drm/i915: Always pin the default context

Daniel Vetter daniel at ffwll.ch
Sat Jan 25 21:23:29 CET 2014


On Thu, Jan 23, 2014 at 07:40:02PM +0000, Chris Wilson wrote:
> Through a twisty and circuituous path it is possible to currently trick
> the code into creating a default context and forgetting to pin it
> immediately into the GGTT. (This requires a system using contexts without
> an aliasing ppgtt, which is currently restricted to Baytrails machines
> manually specifying a module parameter to force enable contexts, or
> on Sandybridge and later that manually disable the aliasing ppgtt.) The
> consequence is that during module unload we attempt to unpin the default
> context twice and encounter a BUG remonstrating that we attempt to unpin
> an unbound object.
> 
> [  161.002869] Kernel BUG at f84861f8 [verbose debug info unavailable]
> [  161.002875] invalid opcode: 0000 [#1] SMP
> [  161.002882] Modules linked in: coretemp kvm_intel kvm crc32_pclmul aesni_intel aes_i586 xts lrw gf128mul ablk_helper cryptd hid_sensor_accel_3d hid_sensor_gyro_3d hid_sensor_magn_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf industrialio hid_sensor_iio_common snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_page_alloc snd_seq_midi snd_seq_midi_event dm_multipath scsi_dh asix ppdev usbnet snd_rawmidi mii hid_sensor_hub microcode snd_seq rfcomm bnep snd_seq_device bluetooth snd_timer snd parport_pc binfmt_misc soundcore dw_dmac_pci dw_dmac_core mac_hid lp parport dm_mirror dm_region_hash dm_log hid_generic usbhid hid i915(O-) drm_kms_helper(O) igb dca ptp pps_core i2c_algo_bit drm(O) ahci libahci video
> [  161.002991] CPU: 0 PID: 2114 Comm: rmmod Tainted: G        W  O 3.13.0-rc8+ #2
> [  161.002997] Hardware name: NEXCOM VTC1010/Aptio CRB, BIOS 5.6.5 09/24/2013
> [  161.003004] task: dbdd6800 ti: dbe0e000 task.ti: dbe0e000
> [  161.003010] EIP: 0060:[<f84861f8>] EFLAGS: 00010246 CPU: 0
> [  161.003044] EIP is at i915_gem_object_ggtt_unpin+0x88/0x90 [i915]
> [  161.003050] EAX: dfce3840 EBX: 00000000 ECX: dfafd690 EDX: dfce3874
> [  161.003056] ESI: c0086b40 EDI: df962e00 EBP: dbe0fe1c ESP: dbe0fe0c
> [  161.003062]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
> [  161.003068] CR0: 8005003b CR2: b7718000 CR3: 1bec0000 CR4: 001007f0
> [  161.003076] Stack:
> [  161.003081]  00afc014 00000004 c0086b40 dfafc000 dbe0fe38 f8487e5a dfaa5400 c0086b40
> [  161.003099]  dfafc000 dfaa5400 dfaa5414 dbe0fe58 f84741aa 00000000 f89c34b9 dfaa5414
> [  161.003117]  dfaa5400 dfaa5400 f644b000 dbe0fe6c f89a5443 dfaa5400 f8505000 f644b000
> [  161.003134] Call Trace:
> [  161.003169]  [<f8487e5a>] i915_gem_context_fini+0xba/0x1c0 [i915]
> [  161.003202]  [<f84741aa>] i915_driver_unload+0x1fa/0x2f0 [i915]
> [  161.003232]  [<f89a5443>] drm_dev_unregister+0x23/0x90 [drm]
> [  161.003259]  [<f89a54ed>] drm_put_dev+0x3d/0x70 [drm]
> [  161.003294]  [<f8470615>] i915_pci_remove+0x15/0x20 [i915]
> [  161.003306]  [<c1338a6f>] pci_device_remove+0x2f/0xa0
> [  161.003317]  [<c140c871>] __device_release_driver+0x61/0xc0
> [  161.003328]  [<c140d12f>] driver_detach+0x8f/0xa0
> [  161.003341]  [<c140c54f>] bus_remove_driver+0x4f/0xc0
> [  161.003353]  [<c140d708>] driver_unregister+0x28/0x60
> [  161.003362]  [<c10cee42>] ? stop_cpus+0x32/0x40
> [  161.003372]  [<c10bd510>] ? module_refcount+0x90/0x90
> [  161.003383]  [<c13378c5>] pci_unregister_driver+0x15/0x60
> [  161.003413]  [<f89a739f>] drm_pci_exit+0x9f/0xb0 [drm]
> [  161.003458]  [<f84e624a>] i915_exit+0x1b/0x1d [i915]
> [  161.003468]  [<c10bf8a8>] SyS_delete_module+0x158/0x1f0
> [  161.003480]  [<c1173d5d>] ? ____fput+0xd/0x10
> [  161.003488]  [<c106f0fe>] ? task_work_run+0x7e/0xb0
> [  161.003499]  [<c165a68d>] sysenter_do_call+0x12/0x28
> [  161.003505] Code: 0f b6 4d f3 8d 51 0f 83 e1 f0 83 e2 0f 09 d1 84 d2 88 48 54 75 07 80 a7 91 00 00 00 7f 83 c4 04 5b 5e 5f 5d c3 8d b6 00 00 00 00 <0f> 0b 8d b6 00 00 00 00 55 89 e5 57 56 53 83 ec 64 3e 8d 74 26
> [  161.003586] EIP: [<f84861f8>] i915_gem_object_ggtt_unpin+0x88/0x90 [i915] SS:ESP 0068:dbe0fe0c
> 
> v2: Rename the local variable (is_default_ctx) to avoid confusion with
> the function is_default_ctx(). And correct Jesse's email address.
> 
> Reported-by: Jesse Barnes <jbarnes at virtuousgeek.org>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73985
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
> Cc: Ben Widawsky <benjamin.widawsky at intel.com>
> Tested-by: Jesse Barnes <jbarnes at virtuousgeek.org>
> Reviewed-by: Ben Widawsky <benjamin.widawsky at intel.com>

Queued for -next, thanks for the patch.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list