public inbox for qemu-devel@nongnu.org
 help / color / mirror / Atom feed
* [PULL 00/14] Trivial patches for 2026-03-16
@ 2026-03-16  7:09 Michael Tokarev
  2026-03-16  7:09 ` [PULL 01/14] net/slirp: allow hostfwd socket paths with dashes Michael Tokarev
                   ` (14 more replies)
  0 siblings, 15 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

The following changes since commit fff352b9b6080e580aa1fadd29b4eccf4cb2922a:

  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2026-03-12 15:21:06 +0000)

are available in the Git repository at:

  https://gitlab.com/mjt0k/qemu.git tags/pull-trivial-patches

for you to fetch changes up to 4ba98cfd263ba3e657b9d18c90bc5a4f2dcb0c63:

  rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build (2026-03-16 10:05:25 +0300)

----------------------------------------------------------------
trivial patches for 2026-03-16

a few patches accumulated in trivial-patches tree to date.
A larger part of it is my linux-user cleanup series.

----------------------------------------------------------------
Christopher Palmer-Richez (1):
      net/slirp: allow hostfwd socket paths with dashes

Michael Tokarev (7):
      linux-user/syscall.c: assume splice is always present
      meson.build: stop checking for splice()
      linux-user: assume inotify sycalls are always present
      meson.build: stop checking for inotify_init()
      linux-user: assume epoll is always present
      meson.build: do not check for epoll.h (CONFIG_EPOLL)
      rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build

Sergei Heifetz (5):
      migration/savevm.c: reorder usage and assertion of mis->from_src_file
      dump/dump.c: reorder usage and assertion of block
      system/physmem.c: remove useless assertion of block
      hw/usb/core.c: reorder usage and assertion of p->ep
      target/i386: fix NULL pointer dereference in legacy-cache=off handling

Thomas Huth (1):
      docs: Move xbzrle.txt into the migration folder and convert to rst

 docs/devel/migration/features.rst               |   1 +
 docs/{xbzrle.txt => devel/migration/xbzrle.rst} | 106 ++++++++++++++----------
 dump/dump.c                                     |   2 +-
 hw/usb/core.c                                   |   2 +-
 linux-user/fd-trans.c                           |   5 --
 linux-user/fd-trans.h                           |   4 -
 linux-user/syscall.c                            |  44 ++--------
 linux-user/syscall_defs.h                       |   3 -
 meson.build                                     |  19 +----
 migration/savevm.c                              |   3 +-
 net/slirp.c                                     |  22 ++++-
 system/physmem.c                                |   2 -
 target/i386/cpu.c                               |   7 +-
 util/aio-posix.h                                |   4 +-
 util/meson.build                                |   2 +-
 15 files changed, 107 insertions(+), 119 deletions(-)
 rename docs/{xbzrle.txt => devel/migration/xbzrle.rst} (74%)


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PULL 01/14] net/slirp: allow hostfwd socket paths with dashes
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 02/14] migration/savevm.c: reorder usage and assertion of mis->from_src_file Michael Tokarev
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Christopher Palmer-Richez, qemu-trivial, Michael Tokarev

From: Christopher Palmer-Richez <crichez@pm.me>

Adds get_last_str_sep, a variant of get_str_sep that checks for the last
occurence of a separator. Updates slirp_hostfwd to parse unix domain
socket paths with dashes.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/347
Signed-off-by: Christopher Palmer-Richez <crichez@pm.me>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 net/slirp.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/net/slirp.c b/net/slirp.c
index 04925f3318..968be9cc99 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -69,6 +69,26 @@ static int get_str_sep(char *buf, int buf_size, const char **pp, int sep)
     return 0;
 }
 
+static int get_last_str_sep(char *buf, int buf_size, const char **pp, int sep)
+{
+    const char *p, *p1;
+    int len;
+    p = *pp;
+    p1 = strrchr(p, sep);
+    if (!p1)
+        return -1;
+    len = p1 - p;
+    p1++;
+    if (buf_size > 0) {
+        if (len > buf_size - 1)
+            len = buf_size - 1;
+        memcpy(buf, p, len);
+        buf[len] = '\0';
+    }
+    *pp = p1;
+    return 0;
+}
+
 /* slirp network adapter */
 
 #define SLIRP_CFG_HOSTFWD 1
@@ -848,7 +868,7 @@ static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp)
 
 #if !defined(WIN32) && SLIRP_CHECK_VERSION(4, 7, 0)
     if (is_unix) {
-        if (get_str_sep(buf, sizeof(buf), &p, '-') < 0) {
+        if (get_last_str_sep(buf, sizeof(buf), &p, '-') < 0) {
             fail_reason = "Missing - separator";
             goto fail_syntax;
         }
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 02/14] migration/savevm.c: reorder usage and assertion of mis->from_src_file
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
  2026-03-16  7:09 ` [PULL 01/14] net/slirp: allow hostfwd socket paths with dashes Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 03/14] dump/dump.c: reorder usage and assertion of block Michael Tokarev
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sergei Heifetz, qemu-trivial, Michael Tokarev

From: Sergei Heifetz <heifetz@yandex-team.com>

Reorder the code so the assertion of mis->from_src_file occurs before
the call to migration_ioc_unregister_yank_from_file, which dereferences
it in qemu_file_get_ioc.

Fixes: 39675ffffb3394 ("migration: Move the yank unregister of channel_close out")
Signed-off-by: Sergei Heifetz <heifetz@yandex-team.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 migration/savevm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/migration/savevm.c b/migration/savevm.c
index 197c89e0e6..dd58f2a705 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2875,13 +2875,14 @@ static bool postcopy_pause_incoming(MigrationIncomingState *mis)
 
     assert(migrate_postcopy_ram());
 
+    assert(mis->from_src_file);
+
     /*
      * Unregister yank with either from/to src would work, since ioc behind it
      * is the same
      */
     migration_ioc_unregister_yank_from_file(mis->from_src_file);
 
-    assert(mis->from_src_file);
     qemu_file_shutdown(mis->from_src_file);
     qemu_fclose(mis->from_src_file);
     mis->from_src_file = NULL;
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 03/14] dump/dump.c: reorder usage and assertion of block
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
  2026-03-16  7:09 ` [PULL 01/14] net/slirp: allow hostfwd socket paths with dashes Michael Tokarev
  2026-03-16  7:09 ` [PULL 02/14] migration/savevm.c: reorder usage and assertion of mis->from_src_file Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 04/14] system/physmem.c: remove useless " Michael Tokarev
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sergei Heifetz, qemu-trivial, Michael Tokarev

From: Sergei Heifetz <heifetz@yandex-team.com>

Reorder the code so the assertion of block occurs before it is
used in the subsequent lines.

Signed-off-by: Sergei Heifetz <heifetz@yandex-team.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 dump/dump.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dump/dump.c b/dump/dump.c
index f7a99a7af2..80ed6c8d21 100644
--- a/dump/dump.c
+++ b/dump/dump.c
@@ -1288,6 +1288,7 @@ static bool get_next_page(GuestPhysBlock **blockptr, uint64_t *pfnptr,
     /* block == NULL means the start of the iteration */
     if (!block) {
         block = QTAILQ_FIRST(&s->guest_phys_blocks.head);
+        assert(block);
         *blockptr = block;
         addr = block->target_start;
         *pfnptr = dump_paddr_to_pfn(s, addr);
@@ -1295,7 +1296,6 @@ static bool get_next_page(GuestPhysBlock **blockptr, uint64_t *pfnptr,
         *pfnptr += 1;
         addr = dump_pfn_to_paddr(s, *pfnptr);
     }
-    assert(block != NULL);
 
     while (1) {
         if (addr >= block->target_start && addr < block->target_end) {
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 04/14] system/physmem.c: remove useless assertion of block
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (2 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 03/14] dump/dump.c: reorder usage and assertion of block Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 05/14] hw/usb/core.c: reorder usage and assertion of p->ep Michael Tokarev
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sergei Heifetz, qemu-trivial, Michael Tokarev

From: Sergei Heifetz <heifetz@yandex-team.com>

It is useless to assert that block is not NULL because it is
already dereferenced in the first line of the function.

The assertion is also unnecessary because the function is called
in only two places, and `block` can't be NULL in either of them:
- In `migration/ram.c`, we have already dereferenced `block` in
  the code just before the call.
- In `system/memory.c`, we assert `mr->ram_block` before passing
  it to the function.

(We could split the declaration and initialization of oldsize,
but then we would need to remove the const qualifier. As the
assertion is useless anyway, removing the const qualifier seems
worse.)

Signed-off-by: Sergei Heifetz <heifetz@yandex-team.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 system/physmem.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/system/physmem.c b/system/physmem.c
index 4a9e076004..4e26f1a1d4 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -2028,8 +2028,6 @@ int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp)
     const ram_addr_t oldsize = block->used_length;
     const ram_addr_t unaligned_size = newsize;
 
-    assert(block);
-
     newsize = TARGET_PAGE_ALIGN(newsize);
     newsize = REAL_HOST_PAGE_ALIGN(newsize);
 
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 05/14] hw/usb/core.c: reorder usage and assertion of p->ep
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (3 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 04/14] system/physmem.c: remove useless " Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 06/14] target/i386: fix NULL pointer dereference in legacy-cache=off handling Michael Tokarev
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sergei Heifetz, qemu-trivial, Michael Tokarev

From: Sergei Heifetz <heifetz@yandex-team.com>

Reorder the code so the assertion of p->ep occurs before it is
used in the subsequent lines.

Signed-off-by: Sergei Heifetz <heifetz@yandex-team.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 hw/usb/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/usb/core.c b/hw/usb/core.c
index b3f811c513..9572a870cc 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -423,10 +423,10 @@ void usb_handle_packet(USBDevice *dev, USBPacket *p)
         p->status = USB_RET_NODEV;
         return;
     }
+    assert(p->ep);
     assert(dev == p->ep->dev);
     assert(dev->state == USB_STATE_DEFAULT);
     usb_packet_check_state(p, USB_PACKET_SETUP);
-    assert(p->ep != NULL);
 
     /* Submitting a new packet clears halt */
     if (p->ep->halted) {
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 06/14] target/i386: fix NULL pointer dereference in legacy-cache=off handling
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (4 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 05/14] hw/usb/core.c: reorder usage and assertion of p->ep Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 07/14] docs: Move xbzrle.txt into the migration folder and convert to rst Michael Tokarev
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sergei Heifetz, qemu-trivial, Michael Tokarev

From: Sergei Heifetz <heifetz@yandex-team.com>

The check that xcc->model is not NULL occurs after it is dereferenced
inside x86_cpu_get_versioned_cache_info(), so something like
`-cpu host,legacy-cache=off` leads to a segfault rather than an error.
This patch fixes that.

Fixes: cca0a000d06f897411a8a ("target/i386: allow versioned CPUs to specify new cache_info")
Signed-off-by: Sergei Heifetz <heifetz@yandex-team.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
[Mjt: simplify the following condition too]
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 target/i386/cpu.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 5b9ae79f16..b5e483e8cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -10107,10 +10107,11 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
 
     /* Cache information initialization */
     if (!cpu->legacy_cache) {
-        const CPUCaches *cache_info =
-            x86_cpu_get_versioned_cache_info(cpu, xcc->model);
+        const CPUCaches *cache_info = xcc->model
+            ? x86_cpu_get_versioned_cache_info(cpu, xcc->model)
+            : NULL;
 
-        if (!xcc->model || !cache_info) {
+        if (!cache_info) {
             g_autofree char *name = x86_cpu_class_get_model_name(xcc);
             error_setg(errp,
                        "CPU model '%s' doesn't support legacy-cache=off", name);
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 07/14] docs: Move xbzrle.txt into the migration folder and convert to rst
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (5 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 06/14] target/i386: fix NULL pointer dereference in legacy-cache=off handling Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 08/14] linux-user/syscall.c: assume splice is always present Michael Tokarev
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Thomas Huth, qemu-trivial, Michael Tokarev

From: Thomas Huth <thuth@redhat.com>

xbzrle is a feature of migration and thus this file should go
into the docs/devel/migration/ folder. While we're at it, turn
it into proper .rst format, too.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 docs/devel/migration/features.rst             |   1 +
 .../migration/xbzrle.rst}                     | 106 +++++++++++-------
 2 files changed, 65 insertions(+), 42 deletions(-)
 rename docs/{xbzrle.txt => devel/migration/xbzrle.rst} (74%)

diff --git a/docs/devel/migration/features.rst b/docs/devel/migration/features.rst
index 8f431d52f9..9aef79e7fa 100644
--- a/docs/devel/migration/features.rst
+++ b/docs/devel/migration/features.rst
@@ -15,3 +15,4 @@ Migration has plenty of features to support different use cases.
    qpl-compression
    uadk-compression
    qatzip-compression
+   xbzrle
diff --git a/docs/xbzrle.txt b/docs/devel/migration/xbzrle.rst
similarity index 74%
rename from docs/xbzrle.txt
rename to docs/devel/migration/xbzrle.rst
index bcb3f0c901..d4f4007261 100644
--- a/docs/xbzrle.txt
+++ b/docs/devel/migration/xbzrle.rst
@@ -20,7 +20,7 @@ A small cache size will result in high cache miss rate.
 Cache size can be changed before and during migration.
 
 Format
-=======
+------
 
 The compression format performs a XOR between the previous and current content
 of the page, where zero represents an unchanged value.
@@ -29,17 +29,19 @@ A zero run is represented by its length (in bytes).
 A non zero run is represented by its length (in bytes) and the new data.
 The run length is encoded using ULEB128 (http://en.wikipedia.org/wiki/LEB128)
 
-There can be more than one valid encoding, the sender may send a longer encoding
-for the benefit of reducing computation cost.
+There can be more than one valid encoding, the sender may send a longer
+encoding for the benefit of reducing computation cost.
 
-page = zrun nzrun
-       | zrun nzrun page
+::
 
-zrun = length
+    page = zrun nzrun
+           | zrun nzrun page
 
-nzrun = length byte...
+    zrun = length
 
-length = uleb128 encoded integer
+    nzrun = length byte...
+
+    length = uleb128 encoded integer
 
 On the sender side XBZRLE is used as a compact delta encoding of page updates,
 retrieving the old page content from the cache (default size of 64MB). The
@@ -55,24 +57,34 @@ instead.
 XBZRLE has a sustained bandwidth of 2-2.5 GB/s for typical workloads making it
 ideal for in-line, real-time encoding such as is needed for live-migration.
 
-Example
+Example:
+
 old buffer:
-1001 zeros
-05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 68 00 00 6b 00 6d
-3074 zeros
+
+.. code:: batch
+
+    1001 zeros
+    05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 68 00 00 6b 00 6d
+    3074 zeros
 
 new buffer:
-1001 zeros
-01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 68 00 00 67 00 69
-3074 zeros
+
+.. code:: batch
+
+    1001 zeros
+    01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 68 00 00 67 00 69
+    3074 zeros
 
 encoded buffer:
 
-encoded length 24
-e9 07 0f 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 03 01 67 01 01 69
+.. code:: batch
+
+    encoded length 24
+    e9 07 0f 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 03 01 67 01 01 69
 
 Cache update strategy
-=====================
+---------------------
+
 Keeping the hot pages in the cache is effective for decreasing cache
 misses. XBZRLE uses a counter as the age of each page. The counter will
 increase after each ram dirty bitmap sync. When a cache conflict is
@@ -80,21 +92,27 @@ detected, XBZRLE will only evict pages in the cache that are older than
 a threshold.
 
 Usage
-======================
-1. Verify the destination QEMU version is able to decode the new format.
-    {qemu} info migrate_capabilities
-    {qemu} xbzrle: off , ...
+-----
 
-2. Activate xbzrle on both source and destination:
-   {qemu} migrate_set_capability xbzrle on
+1. Verify the destination QEMU version is able to decode the new format::
+
+    (qemu) info migrate_capabilities
+    xbzrle: off
+    ...
+
+2. Activate xbzrle on both source and destination::
+
+    (qemu) migrate_set_capability xbzrle on
 
 3. Set the XBZRLE cache size - the cache size is in MBytes and should be a
-power of 2. The cache default value is 64MBytes. (on source only)
-    {qemu} migrate_set_parameter xbzrle-cache-size 256m
+   power of 2. The cache default value is 64 MBytes (on source only)::
+
+    (qemu) migrate_set_parameter xbzrle-cache-size 256m
 
-4. Start outgoing migration
-    {qemu} migrate -d tcp:destination.host:4444
-    {qemu} info migrate
+4. Start outgoing migration::
+
+    (qemu) migrate -d tcp:destination.host:4444
+    (qemu) info migrate
     capabilities: xbzrle: on
     Migration status: active
     transferred ram: A kbytes
@@ -114,6 +132,7 @@ power of 2. The cache default value is 64MBytes. (on source only)
 
 xbzrle cache miss: the number of cache misses to date - high cache-miss rate
 indicates that the cache size is set too low.
+
 xbzrle overflow: the number of overflows in the decoding which where the delta
 could not be compressed. This can happen if the changes in the pages are too
 large or there are many short changes; for example, changing every second byte
@@ -123,16 +142,19 @@ Testing: Testing indicated that live migration with XBZRLE was completed in 110
 seconds, whereas without it would not be able to complete.
 
 A simple synthetic memory r/w load generator:
-..    include <stdlib.h>
-..    include <stdio.h>
-..    int main()
-..    {
-..        char *buf = (char *) calloc(4096, 4096);
-..        while (1) {
-..            int i;
-..            for (i = 0; i < 4096 * 4; i++) {
-..                buf[i * 4096 / 4]++;
-..            }
-..            printf(".");
-..        }
-..    }
+
+.. code-block:: c
+
+    #include <stdlib.h>
+    #include <stdio.h>
+    int main()
+    {
+        char *buf = (char *) calloc(4096, 4096);
+        while (1) {
+            int i;
+            for (i = 0; i < 4096 * 4; i++) {
+                buf[i * 4096 / 4]++;
+            }
+            printf(".");
+        }
+    }
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 08/14] linux-user/syscall.c: assume splice is always present
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (6 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 07/14] docs: Move xbzrle.txt into the migration folder and convert to rst Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 09/14] meson.build: stop checking for splice() Michael Tokarev
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

splice() &Co are defined since linux 2.6.17 (glibc 2.5).
Assume it is always present.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 linux-user/syscall.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 064bc604c9..87f9c22b68 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -13624,15 +13624,9 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
         return ret;
 #endif
 
-#ifdef CONFIG_SPLICE
-#ifdef TARGET_NR_tee
     case TARGET_NR_tee:
-        {
-            ret = get_errno(tee(arg1,arg2,arg3,arg4));
-        }
+        ret = get_errno(tee(arg1, arg2, arg3, arg4));
         return ret;
-#endif
-#ifdef TARGET_NR_splice
     case TARGET_NR_splice:
         {
             loff_t loff_in, loff_out;
@@ -13662,9 +13656,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
-#endif
-#ifdef TARGET_NR_vmsplice
-	case TARGET_NR_vmsplice:
+    case TARGET_NR_vmsplice:
         {
             struct iovec *vec = lock_iovec(VERIFY_READ, arg2, arg3, 1);
             if (vec != NULL) {
@@ -13675,8 +13667,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
-#endif
-#endif /* CONFIG_SPLICE */
+
 #ifdef CONFIG_EVENTFD
 #if defined(TARGET_NR_eventfd)
     case TARGET_NR_eventfd:
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 09/14] meson.build: stop checking for splice()
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (7 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 08/14] linux-user/syscall.c: assume splice is always present Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 10/14] linux-user: assume inotify sycalls are always present Michael Tokarev
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

CONFIG_SPLICE was only needed for linux-user/, where it is not
used anymore (assuming splice &Co is always present)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 meson.build | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/meson.build b/meson.build
index 11139f540b..59ed1a527a 100644
--- a/meson.build
+++ b/meson.build
@@ -2908,14 +2908,6 @@ config_host_data.set('CONFIG_PTHREAD_AFFINITY_NP', cc.links(osdep_prefix + '''
 config_host_data.set('CONFIG_SIGNALFD', cc.links(osdep_prefix + '''
   #include <sys/signalfd.h>
   int main(void) { return signalfd(-1, NULL, SFD_CLOEXEC); }'''))
-config_host_data.set('CONFIG_SPLICE', cc.links(osdep_prefix + '''
-  int main(void)
-  {
-    int len, fd = 0;
-    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
-    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
-    return 0;
-  }'''))
 
 config_host_data.set('HAVE_MLOCKALL', cc.links(osdep_prefix + '''
   #include <sys/mman.h>
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 10/14] linux-user: assume inotify sycalls are always present
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (8 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 09/14] meson.build: stop checking for splice() Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:09 ` [PULL 11/14] meson.build: stop checking for inotify_init() Michael Tokarev
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

inotify_init() and other syscalls appeared in linux 2.6.13,
inotify_init1() - in linux 2.6.27.

There's no need to check their presence on linux anymore.

Keep condition on TARGET_NR_inotify_init because modern
architectures have only more generic inotify_init1().

Other, not linux-specific, places of the code checks for
inotify_init1() syscall only.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 linux-user/fd-trans.c |  5 -----
 linux-user/fd-trans.h |  4 ----
 linux-user/syscall.c  | 19 ++-----------------
 3 files changed, 2 insertions(+), 26 deletions(-)

diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c
index f83d1f79d5..64dd0745d2 100644
--- a/linux-user/fd-trans.c
+++ b/linux-user/fd-trans.c
@@ -18,9 +18,7 @@
 #include <sys/signalfd.h>
 #include <linux/unistd.h>
 #include <linux/audit.h>
-#ifdef CONFIG_INOTIFY
 #include <sys/inotify.h>
-#endif
 #include <linux/netlink.h>
 #ifdef CONFIG_RTNETLINK
 #include <linux/rtnetlink.h>
@@ -1861,8 +1859,6 @@ TargetFdTrans target_timerfd_trans = {
     .host_to_target_data = swap_data_u64,
 };
 
-#if defined(CONFIG_INOTIFY) && (defined(TARGET_NR_inotify_init) || \
-        defined(TARGET_NR_inotify_init1))
 static abi_long host_to_target_data_inotify(void *buf, size_t len)
 {
     struct inotify_event *ev;
@@ -1885,4 +1881,3 @@ static abi_long host_to_target_data_inotify(void *buf, size_t len)
 TargetFdTrans target_inotify_trans = {
     .host_to_target_data = host_to_target_data_inotify,
 };
-#endif
diff --git a/linux-user/fd-trans.h b/linux-user/fd-trans.h
index e14f96059c..3bbc15fa1f 100644
--- a/linux-user/fd-trans.h
+++ b/linux-user/fd-trans.h
@@ -141,9 +141,5 @@ extern TargetFdTrans target_netlink_audit_trans;
 extern TargetFdTrans target_signalfd_trans;
 extern TargetFdTrans target_eventfd_trans;
 extern TargetFdTrans target_timerfd_trans;
-#if (defined(TARGET_NR_inotify_init) && defined(__NR_inotify_init)) || \
-    (defined(CONFIG_INOTIFY1) && defined(TARGET_NR_inotify_init1) && \
-     defined(__NR_inotify_init1))
 extern TargetFdTrans target_inotify_trans;
 #endif
-#endif
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 87f9c22b68..1f28e7e93f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -514,15 +514,7 @@ static int sys_renameat2(int oldfd, const char *old,
 #endif
 #endif /* TARGET_NR_renameat2 */
 
-#ifdef CONFIG_INOTIFY
 #include <sys/inotify.h>
-#else
-/* Userspace can usually survive runtime without inotify */
-#undef TARGET_NR_inotify_init
-#undef TARGET_NR_inotify_init1
-#undef TARGET_NR_inotify_add_watch
-#undef TARGET_NR_inotify_rm_watch
-#endif /* CONFIG_INOTIFY  */
 
 #if defined(TARGET_NR_prlimit64)
 #ifndef __NR_prlimit64
@@ -13441,8 +13433,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
     case TARGET_NR_futex_time64:
         return do_futex(cpu, true, arg1, arg2, arg3, arg4, arg5, arg6);
 #endif
-#ifdef CONFIG_INOTIFY
-#if defined(TARGET_NR_inotify_init)
+
+#ifdef TARGET_NR_inotify_init
     case TARGET_NR_inotify_init:
         ret = get_errno(inotify_init());
         if (ret >= 0) {
@@ -13450,7 +13442,6 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
         }
         return ret;
 #endif
-#if defined(TARGET_NR_inotify_init1) && defined(CONFIG_INOTIFY1)
     case TARGET_NR_inotify_init1:
         ret = get_errno(inotify_init1(target_to_host_bitmask(arg1,
                                           fcntl_flags_tbl)));
@@ -13458,19 +13449,13 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
             fd_trans_register(ret, &target_inotify_trans);
         }
         return ret;
-#endif
-#if defined(TARGET_NR_inotify_add_watch)
     case TARGET_NR_inotify_add_watch:
         p = lock_user_string(arg2);
         ret = get_errno(inotify_add_watch(arg1, path(p), arg3));
         unlock_user(p, arg2, 0);
         return ret;
-#endif
-#if defined(TARGET_NR_inotify_rm_watch)
     case TARGET_NR_inotify_rm_watch:
         return get_errno(inotify_rm_watch(arg1, arg2));
-#endif
-#endif
 
 #if defined(TARGET_NR_mq_open) && defined(__NR_mq_open)
     case TARGET_NR_mq_open:
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 11/14] meson.build: stop checking for inotify_init()
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (9 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 10/14] linux-user: assume inotify sycalls are always present Michael Tokarev
@ 2026-03-16  7:09 ` Michael Tokarev
  2026-03-16  7:10 ` [PULL 12/14] linux-user: assume epoll is always present Michael Tokarev
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

the only place in qemu which used the check for inotify_init()
was linux-user, which now assumes inotify_init() is always
present.  There's no need to check for this function anymore.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 meson.build | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/meson.build b/meson.build
index 59ed1a527a..a0f5e900be 100644
--- a/meson.build
+++ b/meson.build
@@ -2675,15 +2675,12 @@ endif
 config_host_data.set('CONFIG_ASAN_IFACE_FIBER', have_asan_fiber)
 
 inotify = not_found
-have_inotify_init = cc.has_header_symbol('sys/inotify.h', 'inotify_init')
 have_inotify_init1 = cc.has_header_symbol('sys/inotify.h', 'inotify_init1')
-if (have_inotify_init or have_inotify_init1) and not cc.has_function('inotify_init1')
+if have_inotify_init1 and not cc.has_function('inotify_init1')
   # FreeBSD 14 and older need libinotify-kqueue wrapper
   inotify = cc.find_library('inotify')
-  have_inotify_init = have_inotify_init and inotify.found()
-  have_inotify_init1 = have_inotify_init1 and inotify.found()
+  have_inotify_init1 = inotify.found()
 endif
-config_host_data.set('CONFIG_INOTIFY', have_inotify_init)
 config_host_data.set('CONFIG_INOTIFY1', have_inotify_init1)
 
 # has_header_symbol
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 12/14] linux-user: assume epoll is always present
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (10 preceding siblings ...)
  2026-03-16  7:09 ` [PULL 11/14] meson.build: stop checking for inotify_init() Michael Tokarev
@ 2026-03-16  7:10 ` Michael Tokarev
  2026-03-16  7:10 ` [PULL 13/14] meson.build: do not check for epoll.h (CONFIG_EPOLL) Michael Tokarev
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

epoll is in linux since 2.6 (glibc 2.3.2).
epoll_init1 has been added in 2.6.27 (glibc 2.9).
There's no need to check for its presence, including all other
epoll-related syscalls.

Modern architectures don't have epoll_create(), only
epoll_create1(), so keep conditional around the former.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 linux-user/syscall.c      | 10 ++--------
 linux-user/syscall_defs.h |  3 ---
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 1f28e7e93f..7832a1aba5 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -73,9 +73,7 @@
 #ifdef CONFIG_EVENTFD
 #include <sys/eventfd.h>
 #endif
-#ifdef CONFIG_EPOLL
 #include <sys/epoll.h>
-#endif
 #ifdef CONFIG_ATTR
 #include "qemu/xattr.h"
 #endif
@@ -13732,16 +13730,13 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
     case TARGET_NR_signalfd:
         return do_signalfd4(arg1, arg2, 0);
 #endif
-#if defined(CONFIG_EPOLL)
+
 #if defined(TARGET_NR_epoll_create)
     case TARGET_NR_epoll_create:
         return get_errno(epoll_create(arg1));
 #endif
-#if defined(TARGET_NR_epoll_create1) && defined(CONFIG_EPOLL_CREATE1)
     case TARGET_NR_epoll_create1:
         return get_errno(epoll_create1(target_to_host_bitmask(arg1, fcntl_flags_tbl)));
-#endif
-#if defined(TARGET_NR_epoll_ctl)
     case TARGET_NR_epoll_ctl:
     {
         struct epoll_event ep;
@@ -13770,7 +13765,6 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
         }
         return get_errno(epoll_ctl(arg1, arg2, arg3, epp));
     }
-#endif
 
 #if defined(TARGET_NR_epoll_wait)
     case TARGET_NR_epoll_wait:
@@ -13856,7 +13850,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
         g_free(ep);
         return ret;
     }
-#endif /* CONFIG_EPOLL */
+
 #ifdef TARGET_NR_prlimit64
     case TARGET_NR_prlimit64:
     {
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 20d862fd8b..aac8b0c574 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -2595,7 +2595,6 @@ struct target_drm_i915_getparam {
 #define FUTEX_CLOCK_REALTIME    256
 #define FUTEX_CMD_MASK          ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
 
-#ifdef CONFIG_EPOLL
 #if defined(TARGET_X86_64)
 #define TARGET_EPOLL_PACKED QEMU_PACKED
 #else
@@ -2616,8 +2615,6 @@ struct target_epoll_event {
 
 #define TARGET_EP_MAX_EVENTS (INT_MAX / sizeof(struct target_epoll_event))
 
-#endif
-
 struct target_ucred {
     abi_uint pid;
     abi_uint uid;
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 13/14] meson.build: do not check for epoll.h (CONFIG_EPOLL)
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (11 preceding siblings ...)
  2026-03-16  7:10 ` [PULL 12/14] linux-user: assume epoll is always present Michael Tokarev
@ 2026-03-16  7:10 ` Michael Tokarev
  2026-03-16  7:10 ` [PULL 14/14] rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build Michael Tokarev
  2026-03-16 10:15 ` [PULL 00/14] Trivial patches for 2026-03-16 Peter Maydell
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

The only place where we used CONFIG_EPOLL was linux-user,
which now enables it unconditionally.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 meson.build | 1 -
 1 file changed, 1 deletion(-)

diff --git a/meson.build b/meson.build
index a0f5e900be..264a1c4b72 100644
--- a/meson.build
+++ b/meson.build
@@ -2595,7 +2595,6 @@ config_host_data.set('CONFIG_FSFREEZE', qga_fsfreeze)
 config_host_data.set('CONFIG_FSTRIM', qga_fstrim)
 
 # has_header
-config_host_data.set('CONFIG_EPOLL', cc.has_header('sys/epoll.h'))
 config_host_data.set('CONFIG_LINUX_MAGIC_H', cc.has_header('linux/magic.h'))
 valgrind = false
 if get_option('valgrind').allowed()
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PULL 14/14] rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (12 preceding siblings ...)
  2026-03-16  7:10 ` [PULL 13/14] meson.build: do not check for epoll.h (CONFIG_EPOLL) Michael Tokarev
@ 2026-03-16  7:10 ` Michael Tokarev
  2026-03-16 10:15 ` [PULL 00/14] Trivial patches for 2026-03-16 Peter Maydell
  14 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16  7:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael Tokarev, qemu-trivial

Since CONFIG_EPOLL is now unused, it's okay to
perform this rename, to make it less ugly.

Since epoll is linux-specific and is always present on linux,
define CONFIG_EPOLL to 1 on linux, without compile-time test.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 meson.build      | 3 +--
 util/aio-posix.h | 4 ++--
 util/meson.build | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/meson.build b/meson.build
index 264a1c4b72..b2154bb928 100644
--- a/meson.build
+++ b/meson.build
@@ -2685,8 +2685,7 @@ config_host_data.set('CONFIG_INOTIFY1', have_inotify_init1)
 # has_header_symbol
 config_host_data.set('CONFIG_BLKZONED',
                      cc.has_header_symbol('linux/blkzoned.h', 'BLKOPENZONE'))
-config_host_data.set('CONFIG_EPOLL_CREATE1',
-                     cc.has_header_symbol('sys/epoll.h', 'epoll_create1'))
+config_host_data.set('CONFIG_EPOLL', host_os == 'linux')
 config_host_data.set('CONFIG_FALLOCATE_PUNCH_HOLE',
                      cc.has_header_symbol('linux/falloc.h', 'FALLOC_FL_PUNCH_HOLE') and
                      cc.has_header_symbol('linux/falloc.h', 'FALLOC_FL_KEEP_SIZE'))
diff --git a/util/aio-posix.h b/util/aio-posix.h
index 0cedb8d189..ab894a3c0f 100644
--- a/util/aio-posix.h
+++ b/util/aio-posix.h
@@ -52,7 +52,7 @@ extern const FDMonOps fdmon_poll_ops;
 /* Switch back to poll(2). list_lock must be held. */
 void fdmon_poll_downgrade(AioContext *ctx);
 
-#ifdef CONFIG_EPOLL_CREATE1
+#ifdef CONFIG_EPOLL
 bool fdmon_epoll_try_upgrade(AioContext *ctx, unsigned npfd);
 void fdmon_epoll_setup(AioContext *ctx);
 
@@ -71,7 +71,7 @@ static inline void fdmon_epoll_setup(AioContext *ctx)
 static inline void fdmon_epoll_disable(AioContext *ctx)
 {
 }
-#endif /* !CONFIG_EPOLL_CREATE1 */
+#endif /* !CONFIG_EPOLL */
 
 #ifdef CONFIG_LINUX_IO_URING
 bool fdmon_io_uring_setup(AioContext *ctx, Error **errp);
diff --git a/util/meson.build b/util/meson.build
index e7a2a2a64c..33132c04ad 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -3,7 +3,7 @@ util_ss.add(files('thread-context.c'), numa)
 if host_os != 'windows'
   util_ss.add(files('aio-posix.c'))
   util_ss.add(files('fdmon-poll.c'))
-  if config_host_data.get('CONFIG_EPOLL_CREATE1')
+  if config_host_data.get('CONFIG_EPOLL')
     util_ss.add(files('fdmon-epoll.c'))
   endif
   util_ss.add(files('compatfd.c'))
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PULL 00/14] Trivial patches for 2026-03-16
  2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
                   ` (13 preceding siblings ...)
  2026-03-16  7:10 ` [PULL 14/14] rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build Michael Tokarev
@ 2026-03-16 10:15 ` Peter Maydell
  2026-03-16 10:54   ` Michael Tokarev
  14 siblings, 1 reply; 17+ messages in thread
From: Peter Maydell @ 2026-03-16 10:15 UTC (permalink / raw)
  To: Michael Tokarev; +Cc: qemu-devel, qemu-trivial

On Mon, 16 Mar 2026 at 07:10, Michael Tokarev <mjt@tls.msk.ru> wrote:
>
> The following changes since commit fff352b9b6080e580aa1fadd29b4eccf4cb2922a:
>
>   Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2026-03-12 15:21:06 +0000)
>
> are available in the Git repository at:
>
>   https://gitlab.com/mjt0k/qemu.git tags/pull-trivial-patches
>
> for you to fetch changes up to 4ba98cfd263ba3e657b9d18c90bc5a4f2dcb0c63:
>
>   rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build (2026-03-16 10:05:25 +0300)
>
> ----------------------------------------------------------------
> trivial patches for 2026-03-16
>
> a few patches accumulated in trivial-patches tree to date.
> A larger part of it is my linux-user cleanup series.
>
> ----------------------------------------------------------------

Hi; this fails to build on some configs, eg:

https://gitlab.com/qemu-project/qemu/-/jobs/13506360670

../net/slirp.c:72:12: error: ‘get_last_str_sep’ defined but not used
[-Werror=unused-function]
   72 | static int get_last_str_sep(char *buf, int buf_size, const
char **pp, int sep)
      |            ^~~~~~~~~~~~~~~~

Looks like one of the patches defines the function unconditionally
but puts the only callsite inside an ifdef, so if the config
means we don't compile the code that calls it then the compiler
complains about the unused function.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PULL 00/14] Trivial patches for 2026-03-16
  2026-03-16 10:15 ` [PULL 00/14] Trivial patches for 2026-03-16 Peter Maydell
@ 2026-03-16 10:54   ` Michael Tokarev
  0 siblings, 0 replies; 17+ messages in thread
From: Michael Tokarev @ 2026-03-16 10:54 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, qemu-trivial

On 16.03.2026 13:15, Peter Maydell wrote:
[]
> Hi; this fails to build on some configs, eg:
> 
> https://gitlab.com/qemu-project/qemu/-/jobs/13506360670
> 
> ../net/slirp.c:72:12: error: ‘get_last_str_sep’ defined but not used
> [-Werror=unused-function]
>     72 | static int get_last_str_sep(char *buf, int buf_size, const
> char **pp, int sep)
>        |            ^~~~~~~~~~~~~~~~
> 
> Looks like one of the patches defines the function unconditionally
> but puts the only callsite inside an ifdef, so if the config
> means we don't compile the code that calls it then the compiler
> complains about the unused function.

Yeah, -- I wondered about that too for a moment but didn't think about
it at the time.  I re-sent this pullreq with the problematic patch
dropped, the rest is the same.

Thanks, and sorry for the trouble.

/mjt


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-03-16 10:55 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-16  7:09 [PULL 00/14] Trivial patches for 2026-03-16 Michael Tokarev
2026-03-16  7:09 ` [PULL 01/14] net/slirp: allow hostfwd socket paths with dashes Michael Tokarev
2026-03-16  7:09 ` [PULL 02/14] migration/savevm.c: reorder usage and assertion of mis->from_src_file Michael Tokarev
2026-03-16  7:09 ` [PULL 03/14] dump/dump.c: reorder usage and assertion of block Michael Tokarev
2026-03-16  7:09 ` [PULL 04/14] system/physmem.c: remove useless " Michael Tokarev
2026-03-16  7:09 ` [PULL 05/14] hw/usb/core.c: reorder usage and assertion of p->ep Michael Tokarev
2026-03-16  7:09 ` [PULL 06/14] target/i386: fix NULL pointer dereference in legacy-cache=off handling Michael Tokarev
2026-03-16  7:09 ` [PULL 07/14] docs: Move xbzrle.txt into the migration folder and convert to rst Michael Tokarev
2026-03-16  7:09 ` [PULL 08/14] linux-user/syscall.c: assume splice is always present Michael Tokarev
2026-03-16  7:09 ` [PULL 09/14] meson.build: stop checking for splice() Michael Tokarev
2026-03-16  7:09 ` [PULL 10/14] linux-user: assume inotify sycalls are always present Michael Tokarev
2026-03-16  7:09 ` [PULL 11/14] meson.build: stop checking for inotify_init() Michael Tokarev
2026-03-16  7:10 ` [PULL 12/14] linux-user: assume epoll is always present Michael Tokarev
2026-03-16  7:10 ` [PULL 13/14] meson.build: do not check for epoll.h (CONFIG_EPOLL) Michael Tokarev
2026-03-16  7:10 ` [PULL 14/14] rename CONFIG_EPOLL_CREATE1 to CONFIG_EPOLL, and stop checking for epoll in meson.build Michael Tokarev
2026-03-16 10:15 ` [PULL 00/14] Trivial patches for 2026-03-16 Peter Maydell
2026-03-16 10:54   ` Michael Tokarev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox