unicorn/qemu/include/exec
Alexey Kardashevskiy b90333a531
memory: Share special empty FlatView
This shares an cached empty FlatView among address spaces. The empty
FV is used every time when a root MR renders into a FV without memory
sections which happens when MR or its children are not enabled or
zero-sized. The empty_view is not NULL to keep the rest of memory
API intact; it also has a dispatch tree for the same reason.

On POWER8 with 255 CPUs, 255 virtio-net, 40 PCI bridges guest this halves
the amount of FlatView's in use (557 -> 260) and dispatch tables
(~800000 -> ~370000). In an unrelated experiment with 112 non-virtio
devices on x86 ("-M pc"), only 4 FlatViews are alive, and about ~2000
are created at startup.

Backports commit 092aa2fc65b7a35121616aad8f39d47b8f921618 from qemu
2018-03-11 22:34:28 -04:00
..
address-spaces.h Clean up header guards that don't match their file name 2018-02-25 04:18:42 -05:00
cpu-all.h exec: introduce MemoryRegionCache 2018-03-01 10:50:30 -05:00
cpu-common.h cpu: Introduce a wrapper for tlb_flush() that can be used in common code 2018-03-03 21:24:55 -05:00
cpu-defs.h tcg: add CONFIG_TCG guards in headers 2018-03-03 21:37:52 -05:00
cpu_ldst.h cpu_ldst.h: use correct guest address parameter 2018-03-01 08:56:37 -05:00
cpu_ldst_template.h softmmu: add helper function to pass through retaddr 2018-02-17 15:23:38 -05:00
cputlb.h include/exec: Move cputlb exec.c defs out 2018-02-23 10:52:25 -05:00
exec-all.h memory: Move AddressSpaceDispatch from AddressSpace to FlatView 2018-03-11 20:40:24 -04:00
gen-icount.h tcg: Dynamically allocate TCGOps 2018-03-05 16:34:40 -05:00
helper-gen.h tcg: Introduce tcgv_{i32,i64,ptr}_{arg,temp} 2018-03-05 08:46:12 -05:00
helper-head.h include/exec/helper-head.h: support f16 in helper calls 2018-03-08 12:28:05 -05:00
helper-proto.h Clean up decorations and whitespace around header guards 2018-02-25 04:26:02 -05:00
helper-tcg.h tcg: Expand glue macros before stringifying helper names 2018-03-03 23:07:21 -05:00
hwaddr.h qemu-common: push cpu.h inclusion out of qemu-common.h 2018-02-24 01:50:56 -05:00
ioport.h hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
memattrs.h memory.h: Move MemTxResult type to memattrs.h 2018-03-04 13:10:47 -05:00
memory-internal.h memory: Rename mem_begin/mem_commit/mem_add helpers 2018-03-11 21:36:50 -04:00
memory.h memory: Share special empty FlatView 2018-03-11 22:34:28 -04:00
ram_addr.h memory: remove qemu_get_ram_fd, qemu_set_ram_fd, qemu_ram_block_host_ptr 2018-02-24 03:34:44 -05:00
ramlist.h memory: RCU ram_list.dirty_memory[] for safe RAM hotplug 2018-02-22 15:38:03 -05:00
semihost.h exec: Add semihosting stubs 2018-02-17 15:23:33 -05:00
tb-context.h tcg: allocate TB structs before the corresponding translated code 2018-03-03 17:05:49 -05:00
tb-hash-xx.h Clean up ill-advised or unusual header guards 2018-02-25 04:22:46 -05:00
tb-hash.h tb-hash: improve tb_jmp_cache hash function in user mode 2018-03-03 14:11:29 -05:00
tb-lookup.h exec-all: bring tb->invalid into tb->cflags 2018-03-05 02:46:21 -05:00
translator.h tcg: Add generic translation framework 2018-03-04 14:31:16 -05:00