Dave Airlie
c5be9b5403
Merge branch 'vmwgfx-next' of git://people.freedesktop.org/~thomash/linux into drm-next
...
A patchset worked out together with Peter Zijlstra. Ingo is OK with taking
it through the DRM tree:
This is a small fallout from a work to allow batching WW mutex locks and
unlocks.
Our Wound-Wait mutexes actually don't use the Wound-Wait algorithm but
the Wait-Die algorithm. One could perhaps rename those mutexes tree-wide to
"Wait-Die mutexes" or "Deadlock Avoidance mutexes". Another approach suggested
here is to implement also the "Wound-Wait" algorithm as a per-WW-class
choice, as it has advantages in some cases. See for example
http://www.mathcs.emory.edu/~cheung/Courses/554/Syllabus/8-recv+serial/deadlock-compare.html
Now Wound-Wait is a preemptive algorithm, and the preemption is implemented
using a lazy scheme: If a wounded transaction is about to go to sleep on
a contended WW mutex, we return -EDEADLK. That is sufficient for deadlock
prevention. Since with WW mutexes we also require the aborted transaction to
sleep waiting to lock the WW mutex it was aborted on, this choice also provides
a suitable WW mutex to sleep on. If we were to return -EDEADLK on the first
WW mutex lock after the transaction was wounded whether the WW mutex was
contended or not, the transaction might frequently be restarted without a wait,
which is far from optimal. Note also that with the lazy preemption scheme,
contrary to Wait-Die there will be no rollbacks on lock contention of locks
held by a transaction that has completed its locking sequence.
The modeset locks are then changed from Wait-Die to Wound-Wait since the
typical locking pattern of those locks very well matches the criterion for
a substantial reduction in the number of rollbacks. For reservation objects,
the benefit is more unclear at this point and they remain using Wait-Die.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180703105339.4461-1-thellstrom@vmware.com
2018-07-06 08:47:14 +10:00
..
842
fonts
lz4
lzo
mpi
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
raid6
powerpc updates for 4.17
2018-04-07 12:08:19 -07:00
reed_solomon
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
xz
zlib_deflate
zlib_inflate
zstd
lib: zstd: clean up Makefile for simpler composite object handling
2018-03-26 02:01:27 +09:00
.gitignore
argv_split.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
ashldi3.c
move libgcc.h to include/linux
2017-12-01 13:09:40 -08:00
ashrdi3.c
move libgcc.h to include/linux
2017-12-01 13:09:40 -08:00
asn1_decoder.c
ASN.1: check for error from ASN1_OP_END__ACT actions
2017-12-08 15:13:27 +00:00
assoc_array.c
lib/assoc_array: Remove smp_read_barrier_depends()
2017-12-04 10:52:56 -08:00
atomic64.c
atomic64_test.c
audit.c
bcd.c
bch.c
bitmap.c
lib/bitmap.c: micro-optimization for __bitmap_complement()
2018-06-07 17:34:39 -07:00
bitrev.c
bsearch.c
btree.c
btree: avoid variable-length allocations
2018-03-14 16:55:29 -07:00
bucket_locks.c
mm: kvmalloc does not fallback to vmalloc for incompatible gfp flags
2018-06-07 17:34:38 -07:00
bug.c
lib/bug.c: exclude non-BUG/WARN exceptions from report_bug()
2018-03-09 16:40:01 -08:00
build_OID_registry
bust_spinlocks.c
chacha20.c
crypto: chacha20 - use rol32() macro from bitops.h
2018-01-12 23:03:01 +11:00
check_signature.c
checksum.c
clz_ctz.c
clz_tab.c
cmdline.c
cmpdi2.c
move libgcc.h to include/linux
2017-12-01 13:09:40 -08:00
compat_audit.c
cordic.c
cpu_rmap.c
cpumask.c
lib: optimize cpumask_next_and()
2018-02-06 18:32:44 -08:00
crc-ccitt.c
lib/crc-ccitt: Add CCITT-FALSE CRC16 variant
2018-01-08 10:08:33 +00:00
crc-itu-t.c
crc-t10dif.c
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c
crc32defs.h
crc32test.c
ctype.c
debug_info.c
debug_locks.c
debugobjects.c
debugobjects: Avoid another unused variable warning
2018-03-14 20:20:01 +01:00
dec_and_lock.c
atomic: Add irqsave variant of atomic_dec_and_lock()
2018-06-12 23:33:24 +02:00
decompress.c
decompress_bunzip2.c
decompress_inflate.c
decompress_unlz4.c
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c
devres.c
devres: combine function devm_ioremap*
2018-03-15 18:08:55 +01:00
digsig.c
div64.c
dump_stack.c
printk: move dump stack related code to lib/dump_stack.c
2018-03-15 13:25:36 +01:00
dynamic_debug.c
dynamic-debug-howto: fix optional/omitted ending line number to be LARGE instead of 0
2017-11-17 16:10:01 -08:00
dynamic_queue_limits.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2017-11-15 11:56:19 -08:00
earlycpio.c
error-inject.c
error-injection: Add injectable error types
2018-01-12 17:33:38 -08:00
errseq.c
errseq: Always report a writeback error once
2018-04-27 08:51:26 -04:00
extable.c
fault-inject.c
fdt.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c
lib: optimize cpumask_next_and()
2018-02-06 18:32:44 -08:00
find_bit_benchmark.c
lib/find_bit_benchmark.c: avoid soft lockup in test_find_first_bit()
2018-05-11 17:28:45 -07:00
flex_array.c
flex_proportions.c
gcd.c
gen_crc32table.c
genalloc.c
lib/genalloc.c: make the avail variable an atomic_long_t
2017-11-17 16:10:02 -08:00
glob.c
globtest.c
hexdump.c
hweight.c
idr.c
lib/idr.c: remove simple_ida_lock
2018-06-07 17:34:39 -07:00
inflate.c
int_sqrt.c
lib: Add strongly typed 64bit int_sqrt
2018-02-04 10:17:21 +00:00
interval_tree.c
interval_tree_test.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
iomap.c
iomap_copy.c
iommu-helper.c
iommu-helper: mark iommu_is_span_boundary as inline
2018-05-09 06:55:44 +02:00
ioremap.c
mm/vmalloc: add interfaces to free unmapped page table
2018-03-22 17:07:01 -07:00
iov_iter.c
Merge branch 'for-4.18/mcsafe' into libnvdimm-for-next
2018-06-08 15:16:44 -07:00
irq_poll.c
irq_regs.c
is_single_threaded.c
jedec_ddr_data.c
kasprintf.c
Kconfig
Move all the dma-mapping code to kernel/dma
2018-06-20 16:30:01 +09:00
Kconfig.debug
fault-injection: reorder config entries
2018-06-15 07:55:24 +09:00
Kconfig.kasan
kasan: depend on CONFIG_SLUB_DEBUG
2018-06-28 11:16:44 -07:00
Kconfig.kgdb
Kconfig.ubsan
lib: add testing module for UBSAN
2018-04-11 10:28:35 -07:00
kfifo.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
klist.c
kobject.c
kobject: don't use WARN for registration failures
2018-04-23 13:14:55 +02:00
kobject_uevent.c
netns: restrict uevents
2018-05-01 10:22:41 -04:00
kstrtox.c
kstrtox.h
lcm.c
libcrc32c.c
libcrc32c: Add crc32c_impl function
2018-03-26 15:09:38 +02:00
list_debug.c
lib/list_debug.c: print unmangled addresses
2018-04-11 10:28:35 -07:00
list_sort.c
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
locking: Implement an algorithm choice for Wound-Wait mutexes
2018-07-03 09:44:36 +02:00
lockref.c
lockref: Add lockref_put_not_zero
2018-04-12 09:41:19 -07:00
logic_pio.c
lib: Add generic PIO mapping method
2018-03-21 17:18:34 -05:00
lru_cache.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
lshrdi3.c
move libgcc.h to include/linux
2017-12-01 13:09:40 -08:00
Makefile
Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-06-24 19:36:16 +08:00
memory-notifier-error-inject.c
memweight.c
muldi3.c
move libgcc.h to include/linux
2017-12-01 13:09:40 -08:00
net_utils.c
netdev-notifier-error-inject.c
nlattr.c
netlink: Relax attr validation for fixed length types
2017-12-07 14:00:57 -05:00
nmi_backtrace.c
lib/nmi_backtrace.c: fix kernel text address leak
2017-11-17 16:10:02 -08:00
nodemask.c
notifier-error-inject.c
notifier-error-inject.h
of-reconfig-notifier-error-inject.c
oid_registry.c
509: fix printing uninitialized stack memory when OID is empty
2017-12-08 15:13:28 +00:00
once.c
parman.c
parser.c
pci_iomap.c
PCI: Add SPDX GPL-2.0 when no license was specified
2018-01-26 11:45:16 -06:00
percpu-refcount.c
percpu_ref: Update doc to dissuade users from depending on internal RCU grace periods
2018-03-19 10:09:44 -07:00
percpu_counter.c
percpu_ida.c
lib/percpu_ida.c: don't do alloc from per-CPU list if there is none
2018-06-28 11:16:44 -07:00
percpu_test.c
plist.c
pm-notifier-error-inject.c
prime_numbers.c
radix-tree.c
idr: fix invalid ptr dereference on item delete
2018-05-25 18:12:10 -07:00
random32.c
treewide: Switch DEFINE_TIMER callbacks to struct timer_list *
2017-11-21 15:57:05 -08:00
ratelimit.c
rational.c
rbtree.c
lib/rbtree,drm/mm: add rbtree_replace_node_cached()
2017-12-14 16:00:48 -08:00
rbtree_test.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
reciprocal_div.c
refcount.c
locking/refcounts: Implement refcount_dec_and_lock_irqsave()
2018-06-12 23:33:25 +02:00
rhashtable.c
rhashtable: improve rhashtable_walk stability when stop/start used.
2018-04-24 13:21:46 -04:00
sbitmap.c
treewide: kzalloc_node() -> kcalloc_node()
2018-06-12 16:19:22 -07:00
scatterlist.c
for-linus-20180629
2018-06-30 10:47:46 -07:00
seq_buf.c
sg_pool.c
sg_split.c
sha1.c
sha256.c
kernel/kexec_file.c: move purgatories sha256 to common code
2018-04-13 17:10:28 -07:00
show_mem.c
siphash.c
smp_processor_id.c
lib: do not use print_symbol()
2018-01-05 15:24:00 +01:00
sort.c
stackdepot.c
lib/stackdepot.c: use a non-instrumented version of memcmp()
2018-02-06 18:32:44 -08:00
stmp_device.c
string.c
lib/strscpy: Shut up KASAN false-positives in strscpy()
2018-02-01 12:20:21 -08:00
string_helpers.c
strncpy_from_user.c
strnlen_user.c
syscall.c
test-kstrtox.c
test-string_helpers.c
test_bitmap.c
lib/test_bitmap.c: fix bitmap optimisation tests to report errors correctly
2018-05-18 17:17:12 -07:00
test_bpf.c
bpf: add also cbpf long jump test cases with heavy expansion
2018-06-03 07:42:06 -07:00
test_debug_virtual.c
test_firmware.c
treewide: Use array_size() in vzalloc()
2018-06-12 16:19:22 -07:00
test_hash.c
test_hexdump.c
test_kasan.c
kasan: fix invalid-free test crashing the kernel
2018-04-11 10:28:32 -07:00
test_kmod.c
treewide: Use array_size() in vzalloc()
2018-06-12 16:19:22 -07:00
test_list_sort.c
lib/test: delete five error messages for failed memory allocations
2017-11-17 16:10:01 -08:00
test_module.c
test_overflow.c
test_overflow: fix an IS_ERR() vs NULL bug
2018-06-12 16:19:22 -07:00
test_parman.c
test_printf.c
Revert "lib/test_printf.c: call wait_for_random_bytes() before plain %p tests"
2018-06-25 13:44:20 +02:00
test_rhashtable.c
treewide: Use array_size() in vzalloc()
2018-06-12 16:19:22 -07:00
test_siphash.c
test_sort.c
lib/test_sort.c: add module unload support
2018-02-06 18:32:45 -08:00
test_static_key_base.c
test_static_keys.c
test_string.c
lib: add module support to string tests
2017-11-17 16:10:01 -08:00
test_sysctl.c
test_ubsan.c
lib/test_ubsan.c: make test_ubsan_misaligned_access() static
2018-04-11 10:28:35 -07:00
test_user_copy.c
treewide: simplify Kconfig dependencies for removed archs
2018-03-26 15:55:57 +02:00
test_uuid.c
textsearch.c
textsearch: fix kernel-doc warnings and add kernel-api section
2018-04-16 18:53:13 -04:00
timerqueue.c
timerqueue: Document return values of timerqueue_add/del()
2017-12-29 23:13:10 +01:00
ts_bm.c
ts_fsm.c
ts_kmp.c
ubsan.c
lib/ubsan: remove returns-nonnull-attribute checks
2018-02-06 18:32:46 -08:00
ubsan.h
lib/ubsan: remove returns-nonnull-attribute checks
2018-02-06 18:32:46 -08:00
ucmpdi2.c
Add notrace to lib/ucmpdi2.c
2018-04-23 16:39:35 +01:00
ucs2_string.c
lib/ucs2_string.c: add MODULE_LICENSE()
2018-06-07 17:34:39 -07:00
usercopy.c
Fix misannotated out-of-line _copy_to_user()
2017-12-11 09:35:11 -05:00
uuid.c
Documentation: add UUID/GUID to kernel-api
2017-12-11 15:03:08 -07:00
vsprintf.c
Printk changes for 4.18
2018-06-06 16:04:55 -07:00
win_minmax.c
xxhash.c