https://github.com/torvalds/linux
Revision 432abf68a79332282329286d190e21fe3ac02a31 authored by Huang Rui on 12 December 2016, 12:28:26 UTC, committed by Joerg Roedel on 04 January 2017, 14:22:22 UTC
The generic command buffer entry is 128 bits (16 bytes), so the offset of tail and head pointer should be 16 bytes aligned and increased with 0x10 per command. When cmd buf is full, head = (tail + 0x10) % CMD_BUFFER_SIZE. So when left space of cmd buf should be able to store only two command, we should be issued one COMPLETE_WAIT additionally to wait all older commands completed. Then the left space should be increased after IOMMU fetching from cmd buf. So left check value should be left <= 0x20 (two commands). Signed-off-by: Huang Rui <ray.huang@amd.com> Fixes: ac0ea6e92b222 ('x86/amd-iommu: Improve handling of full command buffer') Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent 65ca7f5
Tip revision: 432abf68a79332282329286d190e21fe3ac02a31 authored by Huang Rui on 12 December 2016, 12:28:26 UTC
iommu/amd: Fix the left value check of cmd buffer
iommu/amd: Fix the left value check of cmd buffer
Tip revision: 432abf6
File | Mode | Size |
---|---|---|
842 | ||
fonts | ||
lz4 | ||
lzo | ||
mpi | ||
raid6 | ||
reed_solomon | ||
xz | ||
zlib_deflate | ||
zlib_inflate | ||
.gitignore | -rw-r--r-- | 70 bytes |
Kconfig | -rw-r--r-- | 12.1 KB |
Kconfig.debug | -rw-r--r-- | 67.9 KB |
Kconfig.kasan | -rw-r--r-- | 1.8 KB |
Kconfig.kgdb | -rw-r--r-- | 4.1 KB |
Kconfig.kmemcheck | -rw-r--r-- | 2.9 KB |
Kconfig.ubsan | -rw-r--r-- | 1.5 KB |
Makefile | -rw-r--r-- | 7.2 KB |
argv_split.c | -rw-r--r-- | 2.1 KB |
asn1_decoder.c | -rw-r--r-- | 13.2 KB |
assoc_array.c | -rw-r--r-- | 52.6 KB |
atomic64.c | -rw-r--r-- | 4.8 KB |
atomic64_test.c | -rw-r--r-- | 6.3 KB |
audit.c | -rw-r--r-- | 1.7 KB |
bcd.c | -rw-r--r-- | 261 bytes |
bch.c | -rw-r--r-- | 35.6 KB |
bitmap.c | -rw-r--r-- | 36.3 KB |
bitrev.c | -rw-r--r-- | 1.9 KB |
bsearch.c | -rw-r--r-- | 1.6 KB |
btree.c | -rw-r--r-- | 19.2 KB |
bug.c | -rw-r--r-- | 4.7 KB |
build_OID_registry | -rwxr-xr-x | 4.7 KB |
bust_spinlocks.c | -rw-r--r-- | 660 bytes |
chacha20.c | -rw-r--r-- | 2.6 KB |
check_signature.c | -rw-r--r-- | 599 bytes |
checksum.c | -rw-r--r-- | 5.0 KB |
clz_ctz.c | -rw-r--r-- | 1.3 KB |
clz_tab.c | -rw-r--r-- | 855 bytes |
cmdline.c | -rw-r--r-- | 4.1 KB |
compat_audit.c | -rw-r--r-- | 796 bytes |
cordic.c | -rw-r--r-- | 2.5 KB |
cpu_rmap.c | -rw-r--r-- | 7.8 KB |
cpumask.c | -rw-r--r-- | 4.6 KB |
crc-ccitt.c | -rw-r--r-- | 3.0 KB |
crc-itu-t.c | -rw-r--r-- | 2.8 KB |
crc-t10dif.c | -rw-r--r-- | 1.6 KB |
crc16.c | -rw-r--r-- | 2.8 KB |
crc32.c | -rw-r--r-- | 45.2 KB |
crc32defs.h | -rw-r--r-- | 2.0 KB |
crc7.c | -rw-r--r-- | 2.6 KB |
crc8.c | -rw-r--r-- | 2.4 KB |
ctype.c | -rw-r--r-- | 1.4 KB |
debug_info.c | -rw-r--r-- | 741 bytes |
debug_locks.c | -rw-r--r-- | 1.2 KB |
debugobjects.c | -rw-r--r-- | 26.9 KB |
dec_and_lock.c | -rw-r--r-- | 784 bytes |
decompress.c | -rw-r--r-- | 1.7 KB |
decompress_bunzip2.c | -rw-r--r-- | 23.5 KB |
decompress_inflate.c | -rw-r--r-- | 4.4 KB |
decompress_unlz4.c | -rw-r--r-- | 4.2 KB |
decompress_unlzma.c | -rw-r--r-- | 15.8 KB |
decompress_unlzo.c | -rw-r--r-- | 7.1 KB |
decompress_unxz.c | -rw-r--r-- | 10.9 KB |
devres.c | -rw-r--r-- | 9.8 KB |
digsig.c | -rw-r--r-- | 5.6 KB |
div64.c | -rw-r--r-- | 4.1 KB |
dma-debug.c | -rw-r--r-- | 43.9 KB |
dma-noop.c | -rw-r--r-- | 1.6 KB |
dump_stack.c | -rw-r--r-- | 1.2 KB |
dynamic_debug.c | -rw-r--r-- | 25.3 KB |
dynamic_queue_limits.c | -rw-r--r-- | 4.3 KB |
earlycpio.c | -rw-r--r-- | 4.0 KB |
extable.c | -rw-r--r-- | 3.1 KB |
fault-inject.c | -rw-r--r-- | 6.0 KB |
fdt.c | -rw-r--r-- | 69 bytes |
fdt_empty_tree.c | -rw-r--r-- | 80 bytes |
fdt_ro.c | -rw-r--r-- | 72 bytes |
fdt_rw.c | -rw-r--r-- | 72 bytes |
fdt_strerror.c | -rw-r--r-- | 78 bytes |
fdt_sw.c | -rw-r--r-- | 72 bytes |
fdt_wip.c | -rw-r--r-- | 73 bytes |
find_bit.c | -rw-r--r-- | 4.5 KB |
flex_array.c | -rw-r--r-- | 11.0 KB |
flex_proportions.c | -rw-r--r-- | 6.9 KB |
gcd.c | -rw-r--r-- | 1.3 KB |
gen_crc32table.c | -rw-r--r-- | 3.2 KB |
genalloc.c | -rw-r--r-- | 21.6 KB |
glob.c | -rw-r--r-- | 7.7 KB |
halfmd4.c | -rw-r--r-- | 2.0 KB |
hexdump.c | -rw-r--r-- | 8.3 KB |
hweight.c | -rw-r--r-- | 2.0 KB |
idr.c | -rw-r--r-- | 28.5 KB |
inflate.c | -rw-r--r-- | 38.6 KB |
int_sqrt.c | -rw-r--r-- | 652 bytes |
interval_tree.c | -rw-r--r-- | 499 bytes |
interval_tree_test.c | -rw-r--r-- | 2.3 KB |
iomap.c | -rw-r--r-- | 6.5 KB |
iomap_copy.c | -rw-r--r-- | 2.8 KB |
iommu-common.c | -rw-r--r-- | 7.0 KB |
iommu-helper.c | -rw-r--r-- | 1.0 KB |
ioremap.c | -rw-r--r-- | 3.4 KB |
iov_iter.c | -rw-r--r-- | 30.8 KB |
irq_poll.c | -rw-r--r-- | 5.4 KB |
irq_regs.c | -rw-r--r-- | 604 bytes |
is_single_threaded.c | -rw-r--r-- | 1.3 KB |
jedec_ddr_data.c | -rw-r--r-- | 3.0 KB |
kasprintf.c | -rw-r--r-- | 1.4 KB |
kfifo.c | -rw-r--r-- | 12.7 KB |
klist.c | -rw-r--r-- | 10.3 KB |
kobject.c | -rw-r--r-- | 26.0 KB |
kobject_uevent.c | -rw-r--r-- | 11.3 KB |
kstrtox.c | -rw-r--r-- | 10.6 KB |
kstrtox.h | -rw-r--r-- | 254 bytes |
lcm.c | -rw-r--r-- | 441 bytes |
libcrc32c.c | -rw-r--r-- | 2.1 KB |
list_debug.c | -rw-r--r-- | 1.7 KB |
list_sort.c | -rw-r--r-- | 6.8 KB |
llist.c | -rw-r--r-- | 3.1 KB |
locking-selftest-hardirq.h | -rw-r--r-- | 207 bytes |
locking-selftest-mutex.h | -rw-r--r-- | 120 bytes |
locking-selftest-rlock-hardirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-rlock-softirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-rlock.h | -rw-r--r-- | 158 bytes |
locking-selftest-rsem.h | -rw-r--r-- | 163 bytes |
locking-selftest-softirq.h | -rw-r--r-- | 207 bytes |
locking-selftest-spin-hardirq.h | -rw-r--r-- | 73 bytes |
locking-selftest-spin-softirq.h | -rw-r--r-- | 73 bytes |
locking-selftest-spin.h | -rw-r--r-- | 118 bytes |
locking-selftest-wlock-hardirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-wlock-softirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-wlock.h | -rw-r--r-- | 158 bytes |
locking-selftest-wsem.h | -rw-r--r-- | 163 bytes |
locking-selftest.c | -rw-r--r-- | 40.1 KB |
lockref.c | -rw-r--r-- | 3.9 KB |
lru_cache.c | -rw-r--r-- | 19.4 KB |
md5.c | -rw-r--r-- | 3.7 KB |
memory-notifier-error-inject.c | -rw-r--r-- | 1.1 KB |
memweight.c | -rw-r--r-- | 999 bytes |
net_utils.c | -rw-r--r-- | 604 bytes |
netdev-notifier-error-inject.c | -rw-r--r-- | 1.5 KB |
nlattr.c | -rw-r--r-- | 15.7 KB |
nmi_backtrace.c | -rw-r--r-- | 2.9 KB |
nodemask.c | -rw-r--r-- | 617 bytes |
notifier-error-inject.c | -rw-r--r-- | 2.7 KB |
notifier-error-inject.h | -rw-r--r-- | 614 bytes |
of-reconfig-notifier-error-inject.c | -rw-r--r-- | 1.3 KB |
oid_registry.c | -rw-r--r-- | 3.8 KB |
once.c | -rw-r--r-- | 1.3 KB |
parser.c | -rw-r--r-- | 8.4 KB |
pci_iomap.c | -rw-r--r-- | 4.2 KB |
percpu-refcount.c | -rw-r--r-- | 11.8 KB |
percpu_counter.c | -rw-r--r-- | 5.5 KB |
percpu_ida.c | -rw-r--r-- | 9.5 KB |
percpu_test.c | -rw-r--r-- | 3.2 KB |
plist.c | -rw-r--r-- | 5.9 KB |
pm-notifier-error-inject.c | -rw-r--r-- | 1.1 KB |
radix-tree.c | -rw-r--r-- | 52.6 KB |
random32.c | -rw-r--r-- | 12.7 KB |
ratelimit.c | -rw-r--r-- | 1.6 KB |
rational.c | -rw-r--r-- | 1.5 KB |
rbtree.c | -rw-r--r-- | 17.3 KB |
rbtree_test.c | -rw-r--r-- | 5.5 KB |
reciprocal_div.c | -rw-r--r-- | 492 bytes |
rhashtable.c | -rw-r--r-- | 24.3 KB |
sbitmap.c | -rw-r--r-- | 7.9 KB |
scatterlist.c | -rw-r--r-- | 18.8 KB |
seq_buf.c | -rw-r--r-- | 7.8 KB |
sg_pool.c | -rw-r--r-- | 3.6 KB |
sg_split.c | -rw-r--r-- | 5.1 KB |
sha1.c | -rw-r--r-- | 6.1 KB |
show_mem.c | -rw-r--r-- | 1.2 KB |
smp_processor_id.c | -rw-r--r-- | 1.3 KB |
sort.c | -rw-r--r-- | 2.9 KB |
stackdepot.c | -rw-r--r-- | 8.5 KB |
stmp_device.c | -rw-r--r-- | 2.1 KB |
string.c | -rw-r--r-- | 20.0 KB |
string_helpers.c | -rw-r--r-- | 13.5 KB |
strncpy_from_user.c | -rw-r--r-- | 3.1 KB |
strnlen_user.c | -rw-r--r-- | 4.3 KB |
swiotlb.c | -rw-r--r-- | 27.3 KB |
syscall.c | -rw-r--r-- | 2.6 KB |
test-kstrtox.c | -rw-r--r-- | 17.3 KB |
test-string_helpers.c | -rw-r--r-- | 10.3 KB |
test_bitmap.c | -rw-r--r-- | 9.0 KB |
test_bpf.c | -rw-r--r-- | 133.8 KB |
test_firmware.c | -rw-r--r-- | 4.3 KB |
test_hash.c | -rw-r--r-- | 6.3 KB |
test_hexdump.c | -rw-r--r-- | 5.7 KB |
test_kasan.c | -rw-r--r-- | 9.1 KB |
test_module.c | -rw-r--r-- | 753 bytes |
test_printf.c | -rw-r--r-- | 12.4 KB |
test_rhashtable.c | -rw-r--r-- | 10.3 KB |
test_static_key_base.c | -rw-r--r-- | 2.0 KB |
test_static_keys.c | -rw-r--r-- | 6.0 KB |
test_user_copy.c | -rw-r--r-- | 3.1 KB |
test_uuid.c | -rw-r--r-- | 3.4 KB |
textsearch.c | -rw-r--r-- | 9.4 KB |
timerqueue.c | -rw-r--r-- | 3.1 KB |
ts_bm.c | -rw-r--r-- | 5.3 KB |
ts_fsm.c | -rw-r--r-- | 10.6 KB |
ts_kmp.c | -rw-r--r-- | 4.3 KB |
ubsan.c | -rw-r--r-- | 10.9 KB |
ubsan.h | -rw-r--r-- | 1.5 KB |
ucs2_string.c | -rw-r--r-- | 2.4 KB |
uuid.c | -rw-r--r-- | 3.1 KB |
vsprintf.c | -rw-r--r-- | 66.6 KB |
win_minmax.c | -rw-r--r-- | 3.3 KB |
Computing file changes ...