qemu-cr16/include/qemu
Jonah Palmer 05063f5584 vhost-iova-tree, svq: Implement GPA->IOVA & partial IOVA->HVA trees
Creates and supports a GPA->IOVA tree and a partial IOVA->HVA tree by
splitting up guest-backed memory maps and host-only memory maps from the
full IOVA->HVA tree. That is, any guest-backed memory maps are now
stored in the GPA->IOVA tree and host-only memory maps stay in the
IOVA->HVA tree.

Also propagates the GPAs (in_addr/out_addr) of a VirtQueueElement to
vhost_svq_translate_addr() to translate GPAs to IOVAs via the GPA->IOVA
tree (when descriptors are backed by guest memory). For descriptors
backed by host-only memory, the existing partial SVQ IOVA->HVA tree is
used.

GPAs are unique in the guest's address space, ensuring unambiguous IOVA
translations. This avoids the issue where different GPAs map to the same
HVA, causing the original HVA->IOVA translation to potentially return an
IOVA associated with the wrong intended GPA.

Signed-off-by: Jonah Palmer <jonah.palmer@oracle.com>
Acked-by: Eugenio Pérez <eperezma@redhat.com>
Message-Id: <20250217144936.3589907-3-jonah.palmer@oracle.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2025-02-21 07:18:42 -05:00
..
accel.h accel: Declare AccelClass::cpu_common_[un]realize() handlers 2023-10-03 08:00:25 -07:00
async-teardown.h Don't include headers already included by qemu/osdep.h 2023-02-08 07:28:05 +01:00
atomic.h include: Fix typo in name of MAKE_IDENTFIER macro 2024-08-09 17:37:54 +01:00
atomic128.h tcg: Correct invalid mentions of 'softmmu' by 'system-mode' 2023-10-07 19:02:33 +02:00
base64.h
bcd.h
bitmap.h bitops.h: Define bit operations on 'uint32_t' arrays 2024-11-19 13:02:06 +00:00
bitops.h bitops.h: Define bit operations on 'uint32_t' arrays 2024-11-19 13:02:06 +00:00
bswap.h qemu/bswap: Undefine CPU_CONVERT() once done 2024-10-15 11:55:09 -03:00
buffer.h
cacheflush.h
cacheinfo.h
chardev_open.h util/char_dev: Add open_cdev() 2023-12-19 19:03:38 +01:00
clang-tsa.h clang-tsa: Add macros for shared locks 2022-12-15 16:07:43 +01:00
co-shared-resource.h util/co-shared-resource: Remove unused co_try_get_from_shres 2024-09-30 10:53:18 +03:00
compiler.h include: Fix typo in name of MAKE_IDENTFIER macro 2024-08-09 17:37:54 +01:00
config-file.h util/qemu-config: Extract QMP commands to qemu-config-qmp.c 2024-04-18 11:17:27 +02:00
coroutine-core.h Rename "QEMU global mutex" to "BQL" in comments and docs 2024-01-08 10:45:43 -05:00
coroutine-tls.h
coroutine.h qemu/coroutine: Include missing 'qemu/atomic.h' header 2024-12-20 17:44:57 +01:00
coroutine_int.h
cpu-float.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
cpuid.h host/include/i386: Implement clmul.h 2023-09-15 13:57:00 +00:00
crc-ccitt.h license: Update deprecated SPDX tag GPL-2.0 to GPL-2.0-only 2024-09-20 10:11:59 +03:00
crc32c.h igb: Implement Rx SCTP CSO 2023-05-23 15:20:15 +08:00
ctype.h
cutils.h util/cutils: Remove unused qemu_get_exec_dir 2024-09-20 10:04:34 +03:00
datadir.h
dbus.h Don't include headers already included by qemu/osdep.h 2023-02-08 07:28:05 +01:00
defer-call.h util/defer-call: move defer_call() to util/ 2023-10-31 15:41:42 +01:00
drm.h
envlist.h envlist: Remove unused envlist_parse 2024-09-20 10:00:27 +03:00
error-report.h Move error_printf_unless_qmp() with monitor unit 2022-04-21 17:09:09 +04:00
event_notifier.h
fifo8.h fifo8: introduce fifo8_peek() function 2024-09-13 20:11:13 +02:00
fifo32.h
filemonitor.h
futex.h
guest-random.h util/guest-random: Clean up global variable shadowing 2023-10-06 13:27:48 +02:00
hbitmap.h hbitmap: fix hbitmap_status() return value for first dirty bit case 2023-02-17 14:34:24 +01:00
help-texts.h docs: update copyright date to the year 2025 2025-01-02 07:44:28 +01:00
help_option.h
host-utils.h target/i386: use compiler builtin to compute PF 2024-10-31 18:28:33 +01:00
hw-version.h
id.h
int128.h host/include/generic/host/atomic128: Fix compilation problem with Clang 17 2023-11-13 11:35:47 +01:00
interval-tree.h util: Add interval-tree.c 2022-12-20 17:09:41 -08:00
iov.h util/iov: Introduce iov_send_recv_with_flags() 2024-10-10 12:33:31 +01:00
iova-tree.h vhost-iova-tree, svq: Implement GPA->IOVA & partial IOVA->HVA trees 2025-02-21 07:18:42 -05:00
jhash.h
job.h mirror: Don't call job_pause_point() under graph lock 2024-03-18 12:03:04 +01:00
keyval.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
lockable.h lockable: Do not cast function pointers 2024-05-29 12:41:56 +02:00
lockcnt.h docs/devel/lockcnt: Include kernel-doc API documentation 2024-10-15 15:16:17 +01:00
log-for-trace.h util/log: Drop return value from qemu_log 2022-04-20 10:51:11 -07:00
log.h log: Add separate debug option for logging invalid memory accesses 2024-12-20 17:44:55 +01:00
madvise.h
main-loop.h Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
memalign.h
memfd.h
mmap-alloc.h util/mmap-alloc: qemu_fd_getfs() 2023-04-24 11:29:00 +02:00
module.h module: add Error arguments to module_load and module_load_qom 2022-11-06 09:48:50 +01:00
mprotect.h
notify.h migration: convert to NotifierWithReturn 2024-02-28 11:31:28 +08:00
nvdimm-utils.h
option.h qemu-option: remove QemuOpt from typedefs.h 2024-05-03 15:47:48 +02:00
option_int.h
osdep.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
path.h
plugin-event.h include/qemu: Split out plugin-event.h 2023-03-22 15:06:57 +00:00
plugin-memory.h plugin: Simplify struct qemu_plugin_hwaddr 2023-09-16 14:57:15 +00:00
plugin.h plugins: save value during memory accesses 2024-09-19 15:58:01 +01:00
pmem.h include/qemu: remove return after g_assert_not_reached() 2024-09-24 13:53:35 +02:00
processor.h qemu/processor: Remove unused 'qemu/atomic.h' header 2023-08-31 19:47:43 +02:00
progress_meter.h coroutine: Clean up superfluous inclusion of qemu/lockable.h 2023-01-19 10:18:28 +01:00
qdist.h
qemu-plugin.h plugins: add missing export for qemu_plugin_num_vcpus 2024-11-25 10:27:38 +00:00
qemu-print.h
qemu-progress.h
qht.h
qsp.h
qtree.h include: Clean up includes 2024-01-30 21:20:20 +03:00
queue.h
range.h util/range: Make ranges_overlap() return bool 2024-07-23 20:30:36 +02:00
ratelimit.h
rcu.h bulk: Do not declare function prototypes using 'extern' keyword 2023-08-31 19:47:43 +02:00
rcu_queue.h remove unnecessary extern "C" blocks 2023-02-10 14:12:06 +01:00
readline.h readline: Extract readline_add_completion_of() from monitor 2023-02-04 07:56:54 +01:00
reserved-region.h util/reserved-region: Add new ReservedRegion helpers 2023-11-03 09:20:31 +01:00
selfmap.h util/selfmap: Use dev_t and ino_t in MapInfo 2023-09-01 13:34:03 -07:00
seqlock.h
sockets.h sockets: Remove deadcode 2024-10-22 11:44:23 +01:00
stats64.h stat64: Add stat64_set() operation 2023-04-27 16:39:43 +02:00
sys_membarrier.h bulk: Do not declare function prototypes using 'extern' keyword 2023-08-31 19:47:43 +02:00
systemd.h
thread-context.h util: Introduce ThreadContext user-creatable object 2022-10-27 11:00:43 +02:00
thread-posix.h thread-posix: implement Semaphore with QemuCond and QemuMutex 2022-04-06 14:31:56 +02:00
thread-win32.h
thread.h include: Move QemuLockCnt APIs to their own header 2024-10-15 15:16:17 +01:00
throttle-options.h
throttle.h throttle: use enum ThrottleDirection instead of bool is_write 2023-08-29 10:49:24 +02:00
timed-average.h license: Simplify GPL-2.0-or-later license descriptions 2024-09-20 10:11:59 +03:00
timer.h qemu-timer: Remove unused timer functions 2024-10-02 12:38:36 +02:00
transactions.h
tsan.h
typedefs.h accel/tcg: Add TCGCPUOps.tlb_fill_align 2024-10-13 11:27:05 -07:00
unicode.h
units.h
userfaultfd.h util/userfaultfd: Remove unused uffd_poll_events 2024-10-08 15:28:55 -04:00
uuid.h util/uuid: Define UUID_STR_LEN from UUID_NONE string 2023-11-03 09:20:31 +01:00
vfio-helpers.h
vhost-user-server.h export/vhost-user-blk: Fix consecutive drains 2023-11-28 14:56:32 +01:00
win_dump_defs.h include/qemu: add 32-bit Windows dump structures 2022-04-22 13:36:04 +04:00
xattr.h qemu/xattr.h: Exclude <sys/xattr.h> for Windows 2022-12-23 11:48:13 +01:00
xxhash.h accel/tcg: include cs_base in our hash calculations 2023-06-01 11:05:05 -04:00
yank.h qapi: Fix dangling references to docs/devel/qapi-code-gen.txt 2024-01-26 07:04:53 +01:00