Chris Wilson
751b01cb07
drm/i915/ppgtt: Pin page directories before allocation
Commit e2b763caa6 ("drm/i915: Remove bitmap tracking for used-pdpes")
believed that because it did not insert its freshly allocated page
directory into the pd tree, it was safe from the shrinker. I failed to
heed the lesson learnt from commit dd19674bac ("drm/i915: Remove bitmap
tracking for used-ptes") that we need to pin all the levels in the tree
before hitting the shrinker or else the shrinker may free an upper layer
as we proceed to allocate the tree. Thus leaving dangling pointers
everywhere and a GPF should we hit direct reclaim at just the wrong
moment.
CPU: 0 PID: 7374 Comm: chromium Tainted: P O 4.14.13-1-ARCH #1
Hardware name: Apple Inc. MacBookPro12,1/Mac-E43C1C25D4880AD6, BIOS MBP121.88Z.0167.B33.1706181928 06/18/2017
task: ffff994f696c2c40 task.stack: ffffb1a789d4c000
RIP: 0010:gen8_ppgtt_set_pde.isra.40+0x48/0x70 [i915]
RSP: 0018:ffffb1a789d4f940 EFLAGS: 00010206
RAX: 81c1788cc4f68138 RBX: ffff994f54db8000 RCX: ffff994f696c2c40
RDX: 000000023bc73003 RSI: ffff994d598b6b80 RDI: ffff994f54db8000
RBP: ffff994d598b6b80 R08: 0000000000000000 R09: 0000000000000000
R10: ffffb1a789d4f550 R11: ffff994eaf3c3208 R12: 0000000000000027
R13: 0000000000005000 R14: 0000000004e8f000 R15: ffff994f54dba000
FS: 00007f585886aa00(0000) GS:ffff994faec00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000004ac8e8 CR3: 00000002552c8004 CR4: 00000000003606f0
Call Trace:
gen8_ppgtt_alloc_pdp+0x178/0x320 [i915]
gen8_ppgtt_alloc_4lvl+0x5f/0x150 [i915]
ppgtt_bind_vma+0x30/0x70 [i915]
i915_vma_bind+0x68/0xd0 [i915]
__i915_vma_do_pin+0x2d6/0x3a0 [i915]
eb_lookup_vmas+0x7a2/0xb50 [i915]
i915_gem_do_execbuffer+0x4d7/0x10e0 [i915]
? sock_wfree+0x34/0x60
? unix_stream_read_generic+0x1f9/0x7e0
? import_iovec+0x37/0xd0
? i915_gem_execbuffer2+0x5d/0x390 [i915]
i915_gem_execbuffer2+0x1b7/0x390 [i915]
? i915_gem_execbuffer+0x2d0/0x2d0 [i915]
drm_ioctl_kernel+0x59/0xb0 [drm]
drm_ioctl+0x2d5/0x370 [drm]
? i915_gem_execbuffer+0x2d0/0x2d0 [i915]
? __seccomp_filter+0x3b/0x260
do_vfs_ioctl+0xa1/0x610
? syscall_trace_enter+0xdb/0x2b0
SyS_ioctl+0x74/0x80
do_syscall_64+0x55/0x110
entry_SYSCALL64_slow_path+0x25/0x25
RIP: 0033:0x7f584fa82d27
RSP: 002b:00007ffee14a7828 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 000003b0126a1030 RCX: 00007f584fa82d27
RDX: 00007ffee14a7870 RSI: 0000000040406469 RDI: 0000000000000080
RBP: 00007ffee14a7870 R08: 0000000000000002 R09: 0000000000000077
R10: 00007f5839f2b780 R11: 0000000000000246 R12: 0000000040406469
R13: 0000000000000080 R14: 00007f5842b00040 R15: 0000000000000000
Code: 01 00 83 81 58 0a 00 00 01 48 2b 05 13 9d fd c9 48 c1 f8 06 48 c1 e0 0c 48 8d 04 d0 48 8b 56 08 48 03 05 0c 9d fd c9 48 83 ca 03 <48> 89 10 83 a9 58 0a 00 00 01 65 ff 0d 37 03 fb 3e 74 02 f3 c3
RIP: gen8_ppgtt_set_pde.isra.40+0x48/0x70 [i915] RSP: ffffb1a789d4f940
Reported-by: Eric Blau <eblau@eblau.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104773
Fixes: e2b763caa6 ("drm/i915: Remove bitmap tracking for used-pdpes")
References: dd19674bac ("drm/i915: Remove bitmap tracking for used-ptes")
Testcase: igt/drv_selftest/live_gtt (igt_ppgtt_shrink_boom)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180131214440.7141-1-chris@chris-wilson.co.uk
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
(cherry picked from commit b715a2f0c7)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
|
2018-02-01 07:33:04 -08:00 |
| .. |
|
accessibility
|
|
|
|
acpi
|
Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
|
2017-12-23 13:47:22 -08:00 |
|
amba
|
|
|
|
android
|
|
|
|
ata
|
|
|
|
atm
|
|
|
|
auxdisplay
|
|
|
|
base
|
Linux 4.15-rc8
|
2018-01-18 09:32:15 +10:00 |
|
bcma
|
|
|
|
block
|
Two rbd fixes for 4.12 and 4.2 issues respectively, marked for stable.
|
2018-01-11 16:57:32 -08:00 |
|
bluetooth
|
|
|
|
bus
|
Allwinner fixes for 4.15
|
2018-01-04 17:06:25 +01:00 |
|
cdrom
|
|
|
|
char
|
|
|
|
clk
|
clk: use atomic runtime pm api in clk_core_is_enabled
|
2017-12-26 17:34:03 -08:00 |
|
clocksource
|
|
|
|
connector
|
|
|
|
cpufreq
|
|
|
|
cpuidle
|
|
|
|
crypto
|
crypto: inside-secure - do not use areq->result for partial results
|
2017-12-22 19:48:01 +11:00 |
|
dax
|
|
|
|
dca
|
|
|
|
devfreq
|
|
|
|
dio
|
|
|
|
dma
|
|
|
|
dma-buf
|
dma-buf: fix reservation_object_wait_timeout_rcu once more v2
|
2018-01-23 10:46:39 -05:00 |
|
edac
|
|
|
|
eisa
|
|
|
|
extcon
|
|
|
|
firewire
|
|
|
|
firmware
|
efi/capsule-loader: Reinstate virtual capsule mapping
|
2018-01-03 13:54:31 +01:00 |
|
fmc
|
|
|
|
fpga
|
|
|
|
fsi
|
|
|
|
gpio
|
gpio: Add missing open drain/source handling to gpiod_set_value_cansleep()
|
2018-01-10 14:17:17 +01:00 |
|
gpu
|
drm/i915/ppgtt: Pin page directories before allocation
|
2018-02-01 07:33:04 -08:00 |
|
hid
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
|
2017-12-30 10:16:51 -08:00 |
|
hsi
|
|
|
|
hv
|
|
|
|
hwmon
|
hwmon: Deal with errors from the thermal subsystem
|
2017-12-26 11:53:24 -08:00 |
|
hwspinlock
|
|
|
|
hwtracing
|
|
|
|
i2c
|
|
|
|
ide
|
|
|
|
idle
|
|
|
|
iio
|
|
|
|
infiniband
|
Fourth pull request for 4.15-rc
|
2018-01-08 16:17:31 -08:00 |
|
input
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
|
2018-01-05 16:45:06 -08:00 |
|
iommu
|
iommu/arm-smmu-v3: Cope with duplicated Stream IDs
|
2018-01-02 16:45:51 +00:00 |
|
ipack
|
|
|
|
irqchip
|
genirq/irqdomain: Rename early argument of irq_domain_activate_irq()
|
2017-12-29 21:13:04 +01:00 |
|
isdn
|
|
|
|
leds
|
leds: core: Fix regression caused by commit 2b83ff96f5
|
2018-01-07 13:27:07 +01:00 |
|
lightnvm
|
|
|
|
macintosh
|
|
|
|
mailbox
|
|
|
|
mcb
|
|
|
|
md
|
|
|
|
media
|
|
|
|
memory
|
|
|
|
memstick
|
|
|
|
message
|
|
|
|
mfd
|
mfd: rtsx: Release IRQ during shutdown
|
2018-01-05 11:14:57 +00:00 |
|
misc
|
|
|
|
mmc
|
mmc: s3mci: mark debug_regs[] as static
|
2018-01-04 12:42:31 +01:00 |
|
mtd
|
mtd: nand: pxa3xx: Fix READOOB implementation
|
2018-01-06 23:06:58 +01:00 |
|
mux
|
mux: core: fix double get_device()
|
2018-01-09 14:19:41 +01:00 |
|
net
|
mlxsw: spectrum_qdisc: Don't use variable array in mlxsw_sp_tclass_congestion_enable
|
2018-01-10 15:58:23 -05:00 |
|
nfc
|
|
|
|
ntb
|
|
|
|
nubus
|
|
|
|
nvdimm
|
|
|
|
nvme
|
nvme-fabrics: initialize default host->id in nvmf_host_default()
|
2018-01-08 10:52:03 +01:00 |
|
nvmem
|
nvmem: meson-mx-efuse: fix reading from an offset other than 0
|
2017-12-23 16:46:23 +01:00 |
|
of
|
of_mdio: avoid MDIO bus removal when a PHY is missing
|
2018-01-10 15:07:47 -05:00 |
|
opp
|
|
|
|
oprofile
|
|
|
|
parisc
|
parisc: Show unhashed EISA EEPROM address
|
2018-01-02 21:01:02 +01:00 |
|
parport
|
|
|
|
pci
|
Merge branch 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2017-12-31 13:13:56 -08:00 |
|
pcmcia
|
|
|
|
perf
|
|
|
|
phy
|
|
|
|
pinctrl
|
genirq/irqdomain: Rename early argument of irq_domain_activate_irq()
|
2017-12-29 21:13:04 +01:00 |
|
platform
|
platform/x86: wmi: Call acpi_wmi_init() later
|
2018-01-08 10:47:48 -08:00 |
|
pnp
|
|
|
|
power
|
|
|
|
powercap
|
|
|
|
pps
|
|
|
|
ps3
|
|
|
|
ptp
|
|
|
|
pwm
|
|
|
|
rapidio
|
|
|
|
ras
|
|
|
|
regulator
|
|
|
|
remoteproc
|
|
|
|
reset
|
|
|
|
rpmsg
|
|
|
|
rtc
|
|
|
|
s390
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
|
2018-01-05 12:17:33 -08:00 |
|
sbus
|
|
|
|
scsi
|
SCSI fixes on 20171230
|
2017-12-30 14:31:30 -08:00 |
|
sfi
|
|
|
|
sh
|
|
|
|
sn
|
|
|
|
soc
|
|
|
|
spi
|
|
|
|
spmi
|
|
|
|
ssb
|
|
|
|
staging
|
Linux 4.15-rc8
|
2018-01-18 09:32:15 +10:00 |
|
target
|
|
|
|
tc
|
|
|
|
tee
|
|
|
|
thermal
|
|
|
|
thunderbolt
|
|
|
|
tty
|
|
|
|
uio
|
|
|
|
usb
|
usb: misc: usb3503: make sure reset is low for at least 100us
|
2018-01-11 18:39:52 +01:00 |
|
uwb
|
|
|
|
vfio
|
|
|
|
vhost
|
|
|
|
video
|
|
|
|
virt
|
|
|
|
virtio
|
|
|
|
vlynq
|
|
|
|
vme
|
|
|
|
w1
|
|
|
|
watchdog
|
|
|
|
xen
|
xen: fixes for 4.15-rc8
|
2018-01-12 10:00:15 -08:00 |
|
zorro
|
|
|
|
Kconfig
|
|
|
|
Makefile
|
|
|