1. 19 May, 2018 4 commits
    • Chris Wilson's avatar
      drm/i915/execlists: Handle copying default context state for atomic reset · fe0c4935
      Chris Wilson authored
      We want to be able to reset the GPU from inside a timer callback
      (hardirq context). One step requires us to copy the default context
      state over to the guilty context, which means we need to plan in advance
      to have that object accessible from within an atomic context. The atomic
      context prevents us from pinning the object or from peeking into the
      shmemfs backing store (all may sleep), so we choose to pin the
      default_state into memory when the engine becomes active. This
      compromise allows us to swap out the default state when idle, when
      required.
      
      References: 5692251c ("drm/i915/lrc: Scrub the GPU state of the guilty hanging request")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180518090212.5349-2-chris@chris-wilson.co.uk
      fe0c4935
    • Chris Wilson's avatar
      drm/i915: Make intel_engine_dump irqsafe · d6d12ec0
      Chris Wilson authored
      To be useful later, enable intel_engine_dump() to be called from irq
      context (i.e. using saving and restoring irq start rather than assuming
      we enter with irqs enabled).
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180518090212.5349-1-chris@chris-wilson.co.uk
      d6d12ec0
    • Chris Wilson's avatar
      drm/i915: Speed up idle detection by kicking the tasklets · dd0cf235
      Chris Wilson authored
      We rely on ksoftirqd to run in a timely fashion in order to drain the
      execlists queue. Quite frequently, it does not. In some cases we may see
      latencies of over 200ms triggering our idle timeouts and forcing us to
      declare the driver wedged!
      
      Thus we can speed up idle detection by bypassing ksoftirqd in these
      cases and flush our tasklet to confirm if we are indeed still waiting
      for the ELSP to drain.
      
      v2: Put the execlists.first check back; it is required for handling
      reset!
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=106373Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180506171328.30034-1-chris@chris-wilson.co.uk
      dd0cf235
    • Chris Wilson's avatar
      drm/i915/lvds: Move acpi lid notification registration to registration phase · e578a570
      Chris Wilson authored
      Delay registering ourselves with the acpi lid notification mechanism
      until we are registering the connectors after initialisation is
      complete. This prevents a possibility of trying to handle the lid
      notification before we are ready with the danger of chasing
      uninitialised function pointers.
      
       BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
       IP:           (null)
       PGD 0 P4D 0
       Oops: 0010 [#1] PREEMPT SMP PTI
       Modules linked in: arc4(+) iwldvm(+) i915(+) mac80211 i2c_algo_bit coretemp mei_wdt iwlwifi drm_kms_helper kvm_intel wmi_bmof iTCO_wdt iTCO_vendor_support kvm snd_hda_codec_conexant snd_hda_codec_generic drm psmouse cfg80211 irqbypass input_leds pcspkr i2c_i801 snd_hda_intel snd_hda_codec thinkpad_acpi snd_hda_core mei_me lpc_ich snd_hwdep e1000e wmi nvram snd_pcm mei snd_timer shpchp ptp pps_core rfkill syscopyarea snd intel_agp sysfillrect intel_gtt soundcore sysimgblt battery led_class fb_sys_fops ac rtc_cmos agpgart evdev mac_hid acpi_cpufreq ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 fscrypto crypto_simd glue_helper cryptd aes_x86_64 xts algif_skcipher af_alg dm_crypt dm_mod sd_mod uas usb_storage serio_raw atkbd libps2 ahci libahci uhci_hcd libata scsi_mod ehci_pci
        ehci_hcd usbcore usb_common i8042 serio
       CPU: 1 PID: 378 Comm: systemd-logind Not tainted 4.16.8-1-ARCH #1
       Hardware name: LENOVO 7454CTO/7454CTO, BIOS 6DET72WW (3.22 ) 10/25/2012
       RIP: 0010:          (null)
       RSP: 0018:ffffaf4580c33a18 EFLAGS: 00010287
       RAX: 0000000000000000 RBX: ffff947533558000 RCX: 000000000000003e
       RDX: ffffffffc0aa80c0 RSI: ffffaf4580c33a3c RDI: ffff947534e4c000
       RBP: ffff947533558338 R08: ffff947534598930 R09: ffffffffc0a928b1
       R10: ffffd8f181d5fd40 R11: 0000000000000000 R12: ffffffffc0a928b1
       R13: ffff947533558368 R14: ffffffffc0a928a9 R15: ffff947534e4c000
       FS:  00007f3dc4ddb940(0000) GS:ffff947539280000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000000000000000 CR3: 000000006e214000 CR4: 00000000000406e0
       Call Trace:
        ?  intel_modeset_setup_hw_state+0x385/0xf60 [i915]
        ? __intel_display_resume+0x1e/0xc0 [i915]
        ? intel_display_resume+0xcc/0x120 [i915]
        ? intel_lid_notify+0xbc/0xc0 [i915]
        ? notifier_call_chain+0x47/0x70
        ? blocking_notifier_call_chain+0x3e/0x60
        ? acpi_lid_notify_state+0x8f/0x1d0
        ? acpi_lid_update_state+0x49/0x70
        ? acpi_lid_input_open+0x60/0x90
        ? input_open_device+0x5d/0xa0
        ? evdev_open+0x1ba/0x1e0 [evdev]
        ? chrdev_open+0xa3/0x1b0
        ? cdev_put.part.0+0x20/0x20
        ? do_dentry_open+0x14c/0x300
        ? path_openat+0x30c/0x1240
        ? current_time+0x16/0x60
        ? do_filp_open+0x93/0x100
        ? __check_object_size+0xfb/0x180
        ? do_sys_open+0x186/0x210
        ? do_syscall_64+0x74/0x190
        ?  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
       Code:  Bad RIP value.
       RIP:           (null) RSP: ffffaf4580c33a18
       CR2: 0000000000000000
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106559
      Fixes: c1c7af60 ("drm/i915: force mode set at lid open time")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180518074840.16194-1-chris@chris-wilson.co.uk
      Cc: stable@vger.kernel.org
      e578a570
  2. 18 May, 2018 10 commits
  3. 17 May, 2018 10 commits
  4. 16 May, 2018 10 commits
  5. 14 May, 2018 4 commits
  6. 13 May, 2018 2 commits