unicorn/qemu
David Hildenbrand de513617c8 accel/tcg: allow to invalidate a write TLB entry immediately
Background: s390x implements Low-Address Protection (LAP). If LAP is
enabled, writing to effective addresses (before any translation)
0-511 and 4096-4607 triggers a protection exception.

So we have subpage protection on the first two pages of every address
space (where the lowcore - the CPU private data resides).

By immediately invalidating the write entry but allowing the caller to
continue, we force every write access onto these first two pages into
the slow path. we will get a tlb fault with the specific accessed
addresses and can then evaluate if protection applies or not.

We have to make sure to ignore the invalid bit if tlb_fill() succeeds.

Backports commit f52bfb12143e29d7c8bd827bdb751aee47a9694e from qemu
2020-01-14 07:14:10 -05:00
..
accel accel/tcg: allow to invalidate a write TLB entry immediately 2020-01-14 07:14:10 -05:00
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs target/riscv: Initial introduction of the RISC-V target 2019-03-08 21:46:10 -05:00
docs docs/devel/memory.txt: Document _with_attrs accessors 2018-10-04 04:46:26 -04:00
fpu fpu: rename softfloat-specialize.h -> .inc.c 2019-11-18 21:12:30 -05:00
hw i386: Update new x86_apicid parsing rules with die_offset support 2019-08-08 18:22:03 -04:00
include accel/tcg: allow to invalidate a write TLB entry immediately 2020-01-14 07:14:10 -05:00
qapi qapi: Rewrite string-input-visitor's integer and list parsing 2018-12-18 04:57:25 -05:00
qobject qstring: Move qstring_from_substr()'s @end one to the right 2018-08-02 21:24:19 -04:00
qom cpu: Move icount_decr to CPUNegativeOffsetState 2019-06-13 15:34:28 -04:00
scripts decodetree: Suppress redundant declaration warnings 2019-11-18 21:21:30 -05:00
target target/sparc: sun4u Invert Endian TTE bit 2020-01-07 19:21:30 -05:00
tcg tcg: TCGMemOp is now accelerator independent MemOp 2019-11-28 03:01:12 -05:00
util util/cacheinfo: Use uint64_t on LLP64 model to satisfy Windows ARM64 2019-05-09 17:43:27 -04:00
aarch64.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
aarch64eb.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
armeb.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
CODING_STYLE.rst docs: split the CODING_STYLE doc into distinct groups 2019-11-28 02:54:44 -05:00
configure configure: remove AUTOCONF_HOST 2019-11-18 22:19:47 -05:00
COPYING
COPYING.LIB
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
exec.c cputlb: Handle watchpoints via TLB_WATCHPOINT 2020-01-14 06:58:33 -05:00
gen_all_header.sh
glib_compat.c target/arm/translate: Synchronize with Qemu 2019-04-27 10:13:01 -04:00
header_gen.py tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE
m68k.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
Makefile Makefile: Rename targets for make recursion 2019-08-08 17:26:49 -04:00
Makefile.objs qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
Makefile.target configure: Remove old -fno-gcse workaround for GCC 4.6.x and 4.7.[012] 2018-12-18 03:52:36 -05:00
memory.c memory: Single byte swap along the I/O path 2020-01-07 19:12:04 -05:00
memory_ldst.inc.c memory: Single byte swap along the I/O path 2020-01-07 19:12:04 -05:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
mips64.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
mips64el.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
mipsel.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
powerpc.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
riscv32.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
riscv64.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
sparc.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
sparc64.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
unicorn_common.h unicorn_common: Fix unicorn memory functions failing 2018-09-03 10:40:14 -04:00
VERSION Open 5.0 development tree 2020-01-07 17:50:51 -05:00
vl.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
vl.h
x86_64.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00