2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('osdep.c', 'cutils.c', 'unicode.c', 'qemu-timer-common.c'))
|
util: Add write-only "node-affinity" property for ThreadContext
Let's make it easier to pin threads created via a ThreadContext to
all host CPUs currently belonging to a given set of host NUMA nodes --
which is the common case.
"node-affinity" is simply a shortcut for setting "cpu-affinity" manually
to the list of host CPUs belonging to the set of host nodes. This property
can only be written.
A simple QEMU example to set the CPU affinity to host node 1 on a system
with two nodes, 24 CPUs each, whereby odd-numbered host CPUs belong to
host node 1:
qemu-system-x86_64 -S \
-object thread-context,id=tc1,node-affinity=1
And we can query the cpu-affinity via HMP/QMP:
(qemu) qom-get tc1 cpu-affinity
[
1,
3,
5,
7,
9,
11,
13,
15,
17,
19,
21,
23,
25,
27,
29,
31,
33,
35,
37,
39,
41,
43,
45,
47
]
We cannot query the node-affinity:
(qemu) qom-get tc1 node-affinity
Error: Insufficient permission to perform this operation
But note that due to dynamic library loading this example will not work
before we actually make use of thread_context_create_thread() in QEMU
code, because the type will otherwise not get registered. We'll wire
this up next to make it work.
Note that if the host CPUs for a host node change due do CPU hot(un)plug
CPU onlining/offlining (i.e., lscpu output changes) after the ThreadContext
was started, the CPU affinity will not get updated.
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20221014134720.168738-5-david@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
2022-10-14 16:47:17 +03:00
|
|
|
util_ss.add(files('thread-context.c'), numa)
|
2021-10-07 16:08:25 +03:00
|
|
|
if not config_host_data.get('CONFIG_ATOMIC64')
|
|
|
|
util_ss.add(files('atomic64.c'))
|
|
|
|
endif
|
2023-11-03 11:17:48 +03:00
|
|
|
if host_os != 'windows'
|
2023-08-30 12:29:54 +03:00
|
|
|
util_ss.add(files('aio-posix.c'))
|
|
|
|
util_ss.add(files('fdmon-poll.c'))
|
|
|
|
if config_host_data.get('CONFIG_EPOLL_CREATE1')
|
|
|
|
util_ss.add(files('fdmon-epoll.c'))
|
|
|
|
endif
|
|
|
|
util_ss.add(files('compatfd.c'))
|
|
|
|
util_ss.add(files('event_notifier-posix.c'))
|
|
|
|
util_ss.add(files('mmap-alloc.c'))
|
|
|
|
freebsd_dep = []
|
2023-11-03 11:17:48 +03:00
|
|
|
if host_os == 'freebsd'
|
2023-08-30 12:29:54 +03:00
|
|
|
freebsd_dep = util
|
|
|
|
endif
|
|
|
|
util_ss.add(files('oslib-posix.c'), freebsd_dep)
|
|
|
|
util_ss.add(files('qemu-thread-posix.c'))
|
|
|
|
util_ss.add(files('memfd.c'))
|
|
|
|
util_ss.add(files('drm.c'))
|
|
|
|
else
|
|
|
|
util_ss.add(files('aio-win32.c'))
|
|
|
|
util_ss.add(files('event_notifier-win32.c'))
|
|
|
|
util_ss.add(files('oslib-win32.c'))
|
|
|
|
util_ss.add(files('qemu-thread-win32.c'))
|
|
|
|
util_ss.add(winmm, pathcch)
|
2021-06-03 13:10:05 +03:00
|
|
|
endif
|
meson: fix missing preprocessor symbols
While most libraries do not need a CONFIG_* symbol because the
"when:" clauses are enough, some do. Add them back or stop
using them if possible.
In the case of libpmem, the statement to add the CONFIG_* symbol
was still in configure, but could not be triggered because it
checked for "no" instead of "disabled" (and it would be wrong anyway
since the test for the library has not been done yet).
Reported-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Fixes: 587d59d6cc ("configure, meson: convert virgl detection to meson", 2021-07-06)
Fixes: 83ef16821a ("configure, meson: convert libdaxctl detection to meson", 2021-07-06)
Fixes: e36e8c70f6 ("configure, meson: convert libpmem detection to meson", 2021-07-06)
Fixes: 53c22b68e3 ("configure, meson: convert liburing detection to meson", 2021-07-06)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-07-08 14:50:06 +03:00
|
|
|
util_ss.add(when: linux_io_uring, if_true: files('fdmon-io_uring.c'))
|
2022-10-12 12:31:32 +03:00
|
|
|
if glib_has_gslice
|
|
|
|
util_ss.add(files('qtree.c'))
|
|
|
|
endif
|
2023-09-13 23:00:43 +03:00
|
|
|
util_ss.add(files('defer-call.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('envlist.c', 'path.c', 'module.c'))
|
|
|
|
util_ss.add(files('host-utils.c'))
|
|
|
|
util_ss.add(files('bitmap.c', 'bitops.c'))
|
|
|
|
util_ss.add(files('fifo8.c'))
|
2022-06-21 04:48:35 +03:00
|
|
|
util_ss.add(files('cacheflush.c'))
|
2022-03-23 18:57:25 +03:00
|
|
|
util_ss.add(files('error.c', 'error-report.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('qemu-print.c'))
|
|
|
|
util_ss.add(files('id.c'))
|
|
|
|
util_ss.add(files('qemu-config.c', 'notify.c'))
|
|
|
|
util_ss.add(files('qemu-option.c', 'qemu-progress.c'))
|
|
|
|
util_ss.add(files('keyval.c'))
|
|
|
|
util_ss.add(files('crc32c.c'))
|
|
|
|
util_ss.add(files('uuid.c'))
|
|
|
|
util_ss.add(files('getauxval.c'))
|
|
|
|
util_ss.add(files('rcu.c'))
|
2021-11-08 15:52:11 +03:00
|
|
|
if have_membarrier
|
|
|
|
util_ss.add(files('sys_membarrier.c'))
|
|
|
|
endif
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('log.c'))
|
|
|
|
util_ss.add(files('qdist.c'))
|
|
|
|
util_ss.add(files('qht.c'))
|
|
|
|
util_ss.add(files('qsp.c'))
|
|
|
|
util_ss.add(files('range.c'))
|
2023-10-19 16:45:12 +03:00
|
|
|
util_ss.add(files('reserved-region.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('stats64.c'))
|
|
|
|
util_ss.add(files('systemd.c'))
|
2021-04-28 18:17:36 +03:00
|
|
|
util_ss.add(files('transactions.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('guest-random.c'))
|
2021-03-23 20:52:46 +03:00
|
|
|
util_ss.add(files('yank.c'))
|
2022-01-07 00:00:53 +03:00
|
|
|
util_ss.add(files('int128.c'))
|
2022-02-26 21:07:17 +03:00
|
|
|
util_ss.add(files('memalign.c'))
|
2022-09-17 15:05:54 +03:00
|
|
|
util_ss.add(files('interval-tree.c'))
|
2022-11-11 18:47:56 +03:00
|
|
|
util_ss.add(files('lockcnt.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
|
|
|
|
if have_user
|
|
|
|
util_ss.add(files('selfmap.c'))
|
|
|
|
endif
|
|
|
|
|
|
|
|
if have_system
|
2021-01-23 13:39:57 +03:00
|
|
|
util_ss.add(files('crc-ccitt.c'))
|
2022-04-20 18:33:44 +03:00
|
|
|
util_ss.add(when: gio, if_true: files('dbus.c'))
|
2023-11-03 11:17:48 +03:00
|
|
|
if host_os == 'linux'
|
2023-05-26 13:20:39 +03:00
|
|
|
util_ss.add(files('userfaultfd.c'))
|
|
|
|
endif
|
2020-08-19 15:44:56 +03:00
|
|
|
endif
|
|
|
|
|
2022-11-10 11:36:26 +03:00
|
|
|
if have_block or have_ga
|
|
|
|
util_ss.add(files('aiocb.c', 'async.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('base64.c'))
|
2022-11-10 11:36:26 +03:00
|
|
|
util_ss.add(files('main-loop.c'))
|
|
|
|
util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 'qemu-coroutine-io.c'))
|
2022-10-12 14:19:35 +03:00
|
|
|
util_ss.add(files(f'coroutine-@coroutine_backend@.c'))
|
2022-11-10 11:36:26 +03:00
|
|
|
util_ss.add(files('thread-pool.c', 'qemu-timer.c'))
|
|
|
|
util_ss.add(files('qemu-sockets.c'))
|
|
|
|
endif
|
|
|
|
if have_block
|
|
|
|
util_ss.add(files('aio-wait.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('buffer.c'))
|
|
|
|
util_ss.add(files('bufferiszero.c'))
|
|
|
|
util_ss.add(files('hbitmap.c'))
|
|
|
|
util_ss.add(files('hexdump.c'))
|
|
|
|
util_ss.add(files('iova-tree.c'))
|
2022-11-10 11:36:26 +03:00
|
|
|
util_ss.add(files('iov.c', 'uri.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('nvdimm-utils.c'))
|
2020-09-18 11:09:09 +03:00
|
|
|
util_ss.add(files('block-helpers.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('qemu-coroutine-sleep.c'))
|
|
|
|
util_ss.add(files('qemu-co-shared-resource.c'))
|
2022-04-07 16:27:23 +03:00
|
|
|
util_ss.add(files('qemu-co-timeout.c'))
|
2020-08-19 15:44:56 +03:00
|
|
|
util_ss.add(files('readline.c'))
|
|
|
|
util_ss.add(files('throttle.c'))
|
|
|
|
util_ss.add(files('timed-average.c'))
|
2022-01-07 16:35:14 +03:00
|
|
|
if config_host_data.get('CONFIG_INOTIFY1')
|
2024-02-06 03:22:03 +03:00
|
|
|
freebsd_dep = []
|
|
|
|
if host_os == 'freebsd'
|
|
|
|
freebsd_dep = inotify
|
|
|
|
endif
|
|
|
|
util_ss.add(files('filemonitor-inotify.c'), freebsd_dep)
|
2022-01-07 16:35:14 +03:00
|
|
|
else
|
|
|
|
util_ss.add(files('filemonitor-stub.c'))
|
|
|
|
endif
|
2023-11-03 11:17:48 +03:00
|
|
|
if host_os == 'linux'
|
2023-05-26 13:20:39 +03:00
|
|
|
util_ss.add(files('vhost-user-server.c'), vhost_user)
|
|
|
|
util_ss.add(files('vfio-helpers.c'))
|
|
|
|
util_ss.add(files('chardev_open.c'))
|
|
|
|
endif
|
2020-08-19 15:44:56 +03:00
|
|
|
endif
|
2023-05-18 07:12:08 +03:00
|
|
|
|
2023-05-18 06:50:45 +03:00
|
|
|
if cpu == 'aarch64'
|
|
|
|
util_ss.add(files('cpuinfo-aarch64.c'))
|
|
|
|
elif cpu in ['x86', 'x86_64']
|
2023-05-18 07:12:08 +03:00
|
|
|
util_ss.add(files('cpuinfo-i386.c'))
|
2023-09-17 01:01:47 +03:00
|
|
|
elif cpu == 'loongarch64'
|
|
|
|
util_ss.add(files('cpuinfo-loongarch.c'))
|
2023-06-05 18:29:04 +03:00
|
|
|
elif cpu in ['ppc', 'ppc64']
|
|
|
|
util_ss.add(files('cpuinfo-ppc.c'))
|
2023-05-18 07:12:08 +03:00
|
|
|
endif
|