Chris Wilson
e0da1963fe
drm/i915: Short-circuit i915_gem_wait_for_idle() if already idle
If the device is asleep (no GT wakeref), we know the GPU is already idle.
If we add an early return, we can avoid touching registers and checking
hw state outside of the assumed GT wakelock. This prevents causing such
errors whilst debugging:
[ 2613.401647] RPM wakelock ref not held during HW access
[ 2613.401684] ------------[ cut here ]------------
[ 2613.401720] WARNING: CPU: 5 PID: 7739 at drivers/gpu/drm/i915/intel_drv.h:1787 gen6_read32+0x21f/0x2b0 [i915]
[ 2613.401731] Modules linked in: snd_hda_intel i915 vgem snd_hda_codec_hdmi x86_pkg_temp_thermal intel_powerclamp snd_hda_codec_realtek coretemp snd_hda_codec_generic crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm r8169 mii mei_me lpc_ich mei prime_numbers [last unloaded: i915]
[ 2613.401823] CPU: 5 PID: 7739 Comm: drv_missed_irq Tainted: G U 4.12.0-rc2-CI-CI_DRM_421+ #1
[ 2613.401825] Hardware name: MSI MS-7924/Z97M-G43(MS-7924), BIOS V1.12 02/15/2016
[ 2613.401840] task: ffff880409e3a740 task.stack: ffffc900084dc000
[ 2613.401861] RIP: 0010:gen6_read32+0x21f/0x2b0 [i915]
[ 2613.401863] RSP: 0018:ffffc900084dfce8 EFLAGS: 00010292
[ 2613.401869] RAX: 000000000000002a RBX: ffff8804016a8000 RCX: 0000000000000006
[ 2613.401871] RDX: 0000000000000006 RSI: ffffffff81cbf2d9 RDI: ffffffff81c9e3a7
[ 2613.401874] RBP: ffffc900084dfd18 R08: ffff880409e3afc8 R09: 0000000000000000
[ 2613.401877] R10: 000000008a1c483f R11: 0000000000000000 R12: 000000000000209c
[ 2613.401879] R13: 0000000000000001 R14: ffff8804016a8000 R15: ffff8804016ac150
[ 2613.401882] FS: 00007f39ef3dd8c0(0000) GS:ffff88041fb40000(0000) knlGS:0000000000000000
[ 2613.401885] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2613.401887] CR2: 00000000023717c8 CR3: 00000002e7b34000 CR4: 00000000001406e0
[ 2613.401889] Call Trace:
[ 2613.401912] intel_engine_is_idle+0x76/0x90 [i915]
[ 2613.401931] i915_gem_wait_for_idle+0xe6/0x1e0 [i915]
[ 2613.401951] fault_irq_set+0x40/0x90 [i915]
[ 2613.401970] i915_ring_test_irq_set+0x42/0x50 [i915]
[ 2613.401976] simple_attr_write+0xc7/0xe0
[ 2613.401981] full_proxy_write+0x4f/0x70
[ 2613.401987] __vfs_write+0x23/0x120
[ 2613.401992] ? rcu_read_lock_sched_held+0x75/0x80
[ 2613.401996] ? rcu_sync_lockdep_assert+0x2a/0x50
[ 2613.401999] ? __sb_start_write+0xfa/0x1f0
[ 2613.402004] vfs_write+0xc5/0x1d0
[ 2613.402008] ? trace_hardirqs_on_caller+0xe7/0x1c0
[ 2613.402013] SyS_write+0x44/0xb0
[ 2613.402020] entry_SYSCALL_64_fastpath+0x1c/0xb1
[ 2613.402022] RIP: 0033:0x7f39eded6670
[ 2613.402025] RSP: 002b:00007fffdcdcb1a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[ 2613.402030] RAX: ffffffffffffffda RBX: ffffffff81470203 RCX: 00007f39eded6670
[ 2613.402033] RDX: 0000000000000001 RSI: 000000000041bc33 RDI: 0000000000000006
[ 2613.402036] RBP: ffffc900084dff88 R08: 00007f39ef3dd8c0 R09: 0000000000000001
[ 2613.402038] R10: 0000000000000000 R11: 0000000000000246 R12: 000000000041bc33
[ 2613.402041] R13: 0000000000000006 R14: 0000000000000000 R15: 0000000000000000
[ 2613.402046] ? __this_cpu_preempt_check+0x13/0x20
[ 2613.402052] Code: 01 9b fa e0 0f ff e9 28 fe ff ff 80 3d 6a dd 0e 00 00 0f 85 29 fe ff ff 48 c7 c7 48 19 29 a0 c6 05 56 dd 0e 00 01 e8 da 9a fa e0 <0f> ff e9 0f fe ff ff b9 01 00 00 00 ba 01 00 00 00 44 89 e6 48
[ 2613.402199] ---[ end trace 31f0cfa93ab632bf ]---
Fixes: 25112b64b3 ("drm/i915: Wait for all engines to be idle as part of i915_gem_wait_for_idle()")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170530121334.17364-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
(cherry picked from commit 863e9fde1a)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
2017-06-07 16:30:54 +03:00 |
| .. |
|
accessibility
|
|
|
|
acpi
|
Merge branches 'acpi-button', 'acpica' and 'acpi-sysfs'
|
2017-06-03 00:03:29 +02:00 |
|
amba
|
|
|
|
android
|
|
|
|
ata
|
ARM: SoC driver updates
|
2017-05-09 10:01:15 -07:00 |
|
atm
|
|
|
|
auxdisplay
|
|
|
|
base
|
Merge branches 'pm-sleep' and 'powercap'
|
2017-05-22 20:32:05 +02:00 |
|
bcma
|
|
|
|
block
|
A small fix for rbd FALLOC_FL_ZERO_RANGE/PUNCH_HOLE handling breakage
|
2017-06-02 12:03:07 -07:00 |
|
bluetooth
|
Bluetooth: hci_ldisc: Add protocol check to hci_uart_tx_wakeup()
|
2017-04-30 12:22:14 +02:00 |
|
bus
|
|
|
|
cdrom
|
|
|
|
char
|
Fix a race on architectures with prioritized interrupts (such as m68k)
|
2017-06-02 16:19:47 -07:00 |
|
clk
|
Sort of on the quieter side this time, which is probably due more
|
2017-05-10 13:38:18 -07:00 |
|
clocksource
|
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2017-05-12 10:43:25 -07:00 |
|
connector
|
|
|
|
cpufreq
|
Merge branch 'pm-cpufreq'
|
2017-06-03 00:01:45 +02:00 |
|
cpuidle
|
Merge branches 'pm-domains', 'pm-cpuidle', 'pm-sleep' and 'powercap'
|
2017-05-09 23:21:46 +02:00 |
|
crypto
|
virtio: fixes, cleanups, performance
|
2017-05-10 11:33:08 -07:00 |
|
dax
|
dax: fix false CONFIG_BLOCK dependency
|
2017-05-13 16:18:21 -07:00 |
|
dca
|
|
|
|
devfreq
|
|
|
|
dio
|
|
|
|
dma
|
dmaengine: pl330: fix warning in pl330_remove
|
2017-06-02 11:49:44 +05:30 |
|
dma-buf
|
|
|
|
edac
|
EDAC, amd64: Fix reporting of Chip Select sizes on Fam17h
|
2017-05-03 16:27:36 +02:00 |
|
eisa
|
|
|
|
extcon
|
|
|
|
firewire
|
|
|
|
firmware
|
Merge branch 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2017-06-02 08:51:53 -07:00 |
|
fmc
|
|
|
|
fpga
|
|
|
|
fsi
|
|
|
|
gpio
|
Annotation of module parameters that specify device settings
|
2017-05-10 19:13:03 -07:00 |
|
gpu
|
drm/i915: Short-circuit i915_gem_wait_for_idle() if already idle
|
2017-06-07 16:30:54 +03:00 |
|
hid
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
|
2017-06-02 09:23:56 -07:00 |
|
hsi
|
|
|
|
hv
|
char/misc patches for 4.12-rc1
|
2017-05-04 19:15:35 -07:00 |
|
hwmon
|
hwmon: (aspeed-pwm-tacho) make fan/pwm names start with index 1
|
2017-06-03 03:55:43 -07:00 |
|
hwspinlock
|
|
|
|
hwtracing
|
drivers/hwtracing/intel_th/msu.c: use set_memory.h header
|
2017-05-08 17:15:14 -07:00 |
|
i2c
|
i2c: designware: Fix bogus sda_hold_time due to uninitialized vars
|
2017-05-22 19:22:19 -07:00 |
|
ide
|
ide: don't call memcpy with the same source and destination
|
2017-05-08 17:36:39 -04:00 |
|
idle
|
x86/intel_idle: add Gemini Lake support
|
2017-05-01 23:17:37 +02:00 |
|
iio
|
Annotation of module parameters that specify device settings
|
2017-05-10 19:13:03 -07:00 |
|
infiniband
|
RDMA/SA: Fix kernel panic in CMA request handler flow
|
2017-06-01 17:20:14 -04:00 |
|
input
|
Input: axp20x-pek - switch to acpi_dev_present and check for ACPI0011 too
|
2017-06-02 17:53:20 -07:00 |
|
iommu
|
iommu/mediatek: Include linux/dma-mapping.h
|
2017-05-17 14:51:54 +02:00 |
|
ipack
|
|
|
|
irqchip
|
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2017-05-21 11:45:26 -07:00 |
|
isdn
|
Annotation of module parameters that specify device settings
|
2017-05-10 19:13:03 -07:00 |
|
leds
|
leds: pca955x: Correct I2C Functionality
|
2017-05-22 21:12:44 +02:00 |
|
lguest
|
|
|
|
lightnvm
|
lightnvm: fix bad back free on error path
|
2017-05-04 07:53:04 -06:00 |
|
macintosh
|
DeviceTree for 4.12:
|
2017-05-05 19:33:07 -07:00 |
|
mailbox
|
|
|
|
mcb
|
|
|
|
md
|
- a DM verity fix for a mode when no salt is used
|
2017-06-02 11:50:37 -07:00 |
|
media
|
mtk-vcodec: Use designated initializers
|
2017-05-28 10:23:02 -07:00 |
|
memory
|
memory: omap-gpmc: Fix debug output for access width
|
2017-05-16 08:12:47 -07:00 |
|
memstick
|
|
|
|
message
|
|
|
|
mfd
|
|
|
|
misc
|
sgi-xp: Use designated initializers
|
2017-05-28 10:22:42 -07:00 |
|
mmc
|
This pull request contains fixes to make the WiFi work again for the ARM64
|
2017-05-26 09:05:35 -07:00 |
|
mtd
|
mtd: nand: make nand_ooblayout_lp_hamming_ops static
|
2017-05-22 09:42:29 +02:00 |
|
net
|
net: ethernet: ax88796: don't call free_irq without request_irq first
|
2017-05-26 14:55:38 -04:00 |
|
nfc
|
|
|
|
ntb
|
|
|
|
nubus
|
|
|
|
nvdimm
|
Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
|
2017-05-12 15:43:10 -07:00 |
|
nvme
|
nvme: Quirk APST on Intel 600P/P3100 devices
|
2017-05-26 11:53:02 +03:00 |
|
nvmem
|
ARM: SoC driver updates
|
2017-05-09 10:01:15 -07:00 |
|
of
|
MMC host:
|
2017-05-24 08:21:56 -07:00 |
|
oprofile
|
|
|
|
parisc
|
|
|
|
parport
|
|
|
|
pci
|
PCI/PM: Add needs_resume flag to avoid suspend complete optimization
|
2017-05-23 14:18:17 -05:00 |
|
pcmcia
|
Annotation of module parameters that specify device settings
|
2017-05-10 19:13:03 -07:00 |
|
perf
|
drivers/perf: arm_pmu_acpi: avoid perf IRQ init when guest PMU is off
|
2017-05-30 12:40:03 +01:00 |
|
phy
|
|
|
|
pinctrl
|
pinctrl: sunxi: Fix SPDIF function name for A83T
|
2017-05-23 11:31:27 +02:00 |
|
platform
|
char/misc patches for 4.12-rc1
|
2017-05-04 19:15:35 -07:00 |
|
pnp
|
|
|
|
power
|
power supply and reset changes for the v4.12 series (part 2)
|
2017-05-12 12:02:21 -07:00 |
|
powercap
|
PowerCap: Fix an error code in powercap_register_zone()
|
2017-05-14 13:30:05 +02:00 |
|
pps
|
|
|
|
ps3
|
|
|
|
ptp
|
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2017-05-01 16:15:18 -07:00 |
|
pwm
|
|
|
|
rapidio
|
char/misc patches for 4.12-rc1
|
2017-05-04 19:15:35 -07:00 |
|
ras
|
|
|
|
regulator
|
Merge remote-tracking branch 'regulator/topic/vctrl' into regulator-next
|
2017-04-30 22:17:44 +09:00 |
|
remoteproc
|
virtio: fixes, cleanups, performance
|
2017-05-10 11:33:08 -07:00 |
|
reset
|
ARM: SoC driver updates
|
2017-05-09 10:01:15 -07:00 |
|
rpmsg
|
virtio: fixes, cleanups, performance
|
2017-05-10 11:33:08 -07:00 |
|
rtc
|
Merge branches 'pm-sleep' and 'powercap'
|
2017-05-22 20:32:05 +02:00 |
|
s390
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
|
2017-05-16 09:24:44 -07:00 |
|
sbus
|
|
|
|
scsi
|
SCSI fixes on 20170603
|
2017-06-04 11:15:43 -07:00 |
|
sfi
|
|
|
|
sh
|
|
|
|
sn
|
|
|
|
soc
|
ARM: SoC fixes (and a cross-arch dt-include fix)
|
2017-05-19 13:36:56 -07:00 |
|
spi
|
|
|
|
spmi
|
|
|
|
ssb
|
|
|
|
staging
|
staging: fsl-dpaa2/eth: add ETHERNET dependency
|
2017-05-16 14:23:31 +02:00 |
|
target
|
iscsi-target: Always wait for kthread_should_stop() before kthread exit
|
2017-05-31 15:12:57 -07:00 |
|
tc
|
|
|
|
tee
|
Linux 4.12-rc1
|
2017-05-18 23:54:47 -07:00 |
|
thermal
|
thermal: broadcom: ns-thermal: default on iProc SoCs
|
2017-05-23 20:09:34 -07:00 |
|
thunderbolt
|
|
|
|
tty
|
Revert "tty: fix port buffer locking"
|
2017-06-04 10:23:25 +02:00 |
|
uio
|
uio: fix incorrect memory leak cleanup
|
2017-05-16 23:06:41 +02:00 |
|
usb
|
USB-serial fixes for v4.12-rc2
|
2017-05-19 10:10:07 +02:00 |
|
uwb
|
uwb: fix device quirk on big-endian hosts
|
2017-05-17 11:27:41 +02:00 |
|
vfio
|
powerpc updates for 4.12 part 1.
|
2017-05-05 11:36:44 -07:00 |
|
vhost
|
mm: support __GFP_REPEAT in kvmalloc_node for >32kB
|
2017-05-08 17:15:12 -07:00 |
|
video
|
fbdev changes for v4.12:
|
2017-05-11 11:12:26 -07:00 |
|
virt
|
drivers/virt/fsl_hypervisor.c: use get_user_pages_unlocked()
|
2017-05-08 17:15:10 -07:00 |
|
virtio
|
virtio: allow extra context per descriptor
|
2017-05-02 23:41:43 +03:00 |
|
vlynq
|
|
|
|
vme
|
|
|
|
w1
|
|
|
|
watchdog
|
watchdog: bcm281xx: Fix use of uninitialized spinlock.
|
2017-05-19 10:42:25 +02:00 |
|
xen
|
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
|
2017-05-09 09:12:53 -07:00 |
|
zorro
|
|
|
|
Kconfig
|
|
|
|
Makefile
|
Merge branch 'tee/initial-merge' into fixes
|
2017-05-10 21:03:31 +02:00 |