#7 Update to v9.2.0 for hyperscale release
Opened 9 days ago by render. Modified 9 days ago

@@ -1,46 +1,33 @@ 

- From 34acc8e0028bf059c9c4e725c653df56eac7c296 Mon Sep 17 00:00:00 2001

- Message-ID: <34acc8e0028bf059c9c4e725c653df56eac7c296.1724767601.git.crobinso@redhat.com>

+ From 63d3792ebe5202121526d5a2077eb42e16f53b79 Mon Sep 17 00:00:00 2001

  From: Cole Robinson <crobinso@redhat.com>

  Date: Mon, 26 Aug 2024 14:06:14 -0400

  Subject: [PATCH] Disable 9p `local` tests that fail on copr aarch64

- Content-type: text/plain

  

  Upstream issue:

  https://gitlab.com/qemu-project/qemu/-/issues/2541

  

  Signed-off-by: Cole Robinson <crobinso@redhat.com>

  ---

-  tests/qtest/virtio-9p-test.c | 20 ++++++++++----------

-  1 file changed, 10 insertions(+), 10 deletions(-)

+  tests/qtest/virtio-9p-test.c | 2 ++

+  1 file changed, 2 insertions(+)

  

  diff --git a/tests/qtest/virtio-9p-test.c b/tests/qtest/virtio-9p-test.c

- index 3c8cd235cf..1d550eafb1 100644

+ index ab3a12c816..261b0c17f1 100644

  --- a/tests/qtest/virtio-9p-test.c

  +++ b/tests/qtest/virtio-9p-test.c

- @@ -748,16 +748,16 @@ static void register_virtio_9p_test(void)

+ @@ -792,6 +792,7 @@ static void register_virtio_9p_test(void)

       /* 9pfs test cases using the 'local' filesystem driver */

       opts.before = assign_9p_local_driver;

       qos_add_test("local/config", "virtio-9p", pci_config,  &opts);

- -    qos_add_test("local/create_dir", "virtio-9p", fs_create_dir, &opts);

- -    qos_add_test("local/unlinkat_dir", "virtio-9p", fs_unlinkat_dir, &opts);

- -    qos_add_test("local/create_file", "virtio-9p", fs_create_file, &opts);

- -    qos_add_test("local/unlinkat_file", "virtio-9p", fs_unlinkat_file, &opts);

- -    qos_add_test("local/symlink_file", "virtio-9p", fs_symlink_file, &opts);

- -    qos_add_test("local/unlinkat_symlink", "virtio-9p", fs_unlinkat_symlink,

- -                 &opts);

- -    qos_add_test("local/hardlink_file", "virtio-9p", fs_hardlink_file, &opts);

- -    qos_add_test("local/unlinkat_hardlink", "virtio-9p", fs_unlinkat_hardlink,

- -                 &opts);

- +    /* qos_add_test("local/create_dir", "virtio-9p", fs_create_dir, &opts); */

- +    /* qos_add_test("local/unlinkat_dir", "virtio-9p", fs_unlinkat_dir, &opts); */

- +    /* qos_add_test("local/create_file", "virtio-9p", fs_create_file, &opts); */

- +    /* qos_add_test("local/unlinkat_file", "virtio-9p", fs_unlinkat_file, &opts); */

- +    /* qos_add_test("local/symlink_file", "virtio-9p", fs_symlink_file, &opts); */

- +    /* qos_add_test("local/unlinkat_symlink", "virtio-9p", fs_unlinkat_symlink, */

- +    /*              &opts); */

- +    /* qos_add_test("local/hardlink_file", "virtio-9p", fs_hardlink_file, &opts); */

- +    /* qos_add_test("local/unlinkat_hardlink", "virtio-9p", fs_unlinkat_hardlink, */

- +    /*              &opts); */

+ +#if 0

+      qos_add_test("local/create_dir", "virtio-9p", fs_create_dir, &opts);

+      qos_add_test("local/unlinkat_dir", "virtio-9p", fs_unlinkat_dir, &opts);

+      qos_add_test("local/create_file", "virtio-9p", fs_create_file, &opts);

+ @@ -804,6 +805,7 @@ static void register_virtio_9p_test(void)

+                   &opts);

+      qos_add_test("local/use_after_unlink", "virtio-9p", fs_use_after_unlink,

+                   &opts);

+ +#endif

   }

   

   libqos_init(register_virtio_9p_test);

@@ -1,228 +0,0 @@ 

- From 9651cead2f1bb34b9b72f9c2c5dc81baea2b082e Mon Sep 17 00:00:00 2001

- From: Michael Vogt <mvogt@redhat.com>

- Date: Tue, 1 Oct 2024 17:14:53 +0200

- Subject: [PATCH] linux-user: add openat2 support in linux-user

- 

- This commit adds support for the `openat2()` syscall in the

- `linux-user` userspace emulator.

- 

- It is implemented by extracting a new helper `maybe_do_fake_open()`

- out of the exiting `do_guest_openat()` and share that with the

- new `do_guest_openat2()`. Unfortunately we cannot just make

- do_guest_openat2() a superset of do_guest_openat() because the

- openat2() syscall is stricter with the argument checking and

- will return an error for invalid flags or mode combinations (which

- open()/openat() will ignore).

- 

- The implementation is similar to SYSCALL_DEFINE(openat2), i.e.

- a new `copy_struct_from_user()` is used that works the same

- as the kernels version to support backwards-compatibility

- for struct syscall argument.

- 

- Instead of including openat2.h we create a copy of `open_how`

- as `open_how_ver0` to ensure that if the structure grows we

- can log a LOG_UNIMP warning.

- 

- Note that in this commit using openat2() for a "faked" file in

- /proc will honor the "resolve" flags for

- RESOLVE_NO_{MAGIC,SYM}LINKS for path based access to /proc/self/exe

- (which is the only magic link we support for faked files).

- Note it will not catch special access via e.g. dirfd. This is not

- great but it seems similar to the exiting behavior when openat()

- is called with a dirfd to "/proc". Here too the fake file lookup

- may not catch the special file because no dirfd is used to

- determine if the path is in /proc.

- 

- Signed-off-by: Michael Vogt <mvogt@redhat.com>

- Buglink: https://github.com/osbuild/bootc-image-builder/issues/619

- Reviewed-by: Laurent Vivier <laurent@vivier.eu>

- Message-ID: <1c2c8c9db3731ed4c6fd9b10c63637c3e4caf8f5.1727795334.git.mvogt@redhat.com>

- Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

- ---

-  linux-user/syscall.c      | 105 +++++++++++++++++++++++++++++++++++++-

-  linux-user/syscall_defs.h |  13 +++++

-  2 files changed, 116 insertions(+), 2 deletions(-)

- 

- diff --git a/linux-user/syscall.c b/linux-user/syscall.c

- index a666986189..2febc3bc3f 100644

- --- a/linux-user/syscall.c

- +++ b/linux-user/syscall.c

- @@ -602,6 +602,34 @@ static int check_zeroed_user(abi_long addr, size_t ksize, size_t usize)

-      return 1;

-  }

-  

- +/*

- + * Copies a target struct to a host struct, in a way that guarantees

- + * backwards-compatibility for struct syscall arguments.

- + *

- + * Similar to kernels uaccess.h:copy_struct_from_user()

- + */

- +static int

- +copy_struct_from_user(void *dst, size_t ksize, abi_ptr src, size_t usize)

- +{

- +    size_t size = MIN(ksize, usize);

- +    size_t rest = MAX(ksize, usize) - size;

- +

- +    /* Deal with trailing bytes. */

- +    if (usize < ksize) {

- +        memset(dst + size, 0, rest);

- +    } else if (usize > ksize) {

- +        int ret = check_zeroed_user(src, ksize, usize);

- +        if (ret <= 0) {

- +            return ret ?: -TARGET_E2BIG;

- +        }

- +    }

- +    /* Copy the interoperable parts of the struct. */

- +    if (copy_from_user(dst, src, size)) {

- +        return -TARGET_EFAULT;

- +    }

- +    return 0;

- +}

- +

-  #define safe_syscall0(type, name) \

-  static type safe_##name(void) \

-  { \

- @@ -653,6 +681,15 @@ safe_syscall3(ssize_t, read, int, fd, void *, buff, size_t, count)

-  safe_syscall3(ssize_t, write, int, fd, const void *, buff, size_t, count)

-  safe_syscall4(int, openat, int, dirfd, const char *, pathname, \

-                int, flags, mode_t, mode)

- +

- +struct open_how_ver0 {

- +    __u64 flags;

- +    __u64 mode;

- +    __u64 resolve;

- +};

- +safe_syscall4(int, openat2, int, dirfd, const char *, pathname, \

- +              const struct open_how_ver0 *, how, size_t, size)

- +

-  #if defined(TARGET_NR_wait4) || defined(TARGET_NR_waitpid)

-  safe_syscall4(pid_t, wait4, pid_t, pid, int *, status, int, options, \

-                struct rusage *, rusage)

- @@ -8332,8 +8369,9 @@ static int open_net_route(CPUArchState *cpu_env, int fd)

-  }

-  #endif

-  

- -int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *fname,

- -                    int flags, mode_t mode, bool safe)

- +static int maybe_do_fake_open(CPUArchState *cpu_env, int dirfd,

- +                              const char *fname, int flags, mode_t mode,

- +                              int openat2_resolve, bool safe)

-  {

-      g_autofree char *proc_name = NULL;

-      const char *pathname;

- @@ -8370,6 +8408,12 @@ int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *fname,

-      }

-  

-      if (is_proc_myself(pathname, "exe")) {

- +        /* Honor openat2 resolve flags */

- +        if ((openat2_resolve & RESOLVE_NO_MAGICLINKS) ||

- +            (openat2_resolve & RESOLVE_NO_SYMLINKS)) {

- +            errno = ELOOP;

- +            return -1;

- +        }

-          if (safe) {

-              return safe_openat(dirfd, exec_path, flags, mode);

-          } else {

- @@ -8416,6 +8460,17 @@ int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *fname,

-          return fd;

-      }

-  

- +    return -2;

- +}

- +

- +int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *pathname,

- +                    int flags, mode_t mode, bool safe)

- +{

- +    int fd = maybe_do_fake_open(cpu_env, dirfd, pathname, flags, mode, 0, safe);

- +    if (fd > -2) {

- +        return fd;

- +    }

- +

-      if (safe) {

-          return safe_openat(dirfd, path(pathname), flags, mode);

-      } else {

- @@ -8423,6 +8478,49 @@ int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *fname,

-      }

-  }

-  

- +

- +static int do_openat2(CPUArchState *cpu_env, abi_long dirfd,

- +                      abi_ptr guest_pathname, abi_ptr guest_open_how,

- +                      abi_ulong guest_size)

- +{

- +    struct open_how_ver0 how = {0};

- +    char *pathname;

- +    int ret;

- +

- +    if (guest_size < sizeof(struct target_open_how_ver0)) {

- +        return -TARGET_EINVAL;

- +    }

- +    ret = copy_struct_from_user(&how, sizeof(how), guest_open_how, guest_size);

- +    if (ret) {

- +        if (ret == -TARGET_E2BIG) {

- +            qemu_log_mask(LOG_UNIMP,

- +                          "Unimplemented openat2 open_how size: "

- +                          TARGET_ABI_FMT_lu "\n", guest_size);

- +        }

- +        return ret;

- +    }

- +    pathname = lock_user_string(guest_pathname);

- +    if (!pathname) {

- +        return -TARGET_EFAULT;

- +    }

- +

- +    how.flags = target_to_host_bitmask(tswap64(how.flags), fcntl_flags_tbl);

- +    how.mode = tswap64(how.mode);

- +    how.resolve = tswap64(how.resolve);

- +    int fd = maybe_do_fake_open(cpu_env, dirfd, pathname, how.flags, how.mode,

- +                                how.resolve, true);

- +    if (fd > -2) {

- +        ret = get_errno(fd);

- +    } else {

- +        ret = get_errno(safe_openat2(dirfd, pathname, &how,

- +                                     sizeof(struct open_how_ver0)));

- +    }

- +

- +    fd_trans_unregister(ret);

- +    unlock_user(pathname, guest_pathname, 0);

- +    return ret;

- +}

- +

-  ssize_t do_guest_readlink(const char *pathname, char *buf, size_t bufsiz)

-  {

-      ssize_t ret;

- @@ -9195,6 +9293,9 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,

-          fd_trans_unregister(ret);

-          unlock_user(p, arg2, 0);

-          return ret;

- +    case TARGET_NR_openat2:

- +        ret = do_openat2(cpu_env, arg1, arg2, arg3, arg4);

- +        return ret;

-  #if defined(TARGET_NR_name_to_handle_at) && defined(CONFIG_OPEN_BY_HANDLE)

-      case TARGET_NR_name_to_handle_at:

-          ret = do_name_to_handle_at(arg1, arg2, arg3, arg4, arg5);

- diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h

- index e08d088740..de5091c977 100644

- --- a/linux-user/syscall_defs.h

- +++ b/linux-user/syscall_defs.h

- @@ -2748,4 +2748,17 @@ struct target_sched_param {

-      abi_int sched_priority;

-  };

-  

- +/* from kernel's include/uapi/linux/openat2.h */

- +struct target_open_how_ver0 {

- +    abi_ullong flags;

- +    abi_ullong mode;

- +    abi_ullong resolve;

- +};

- +#ifndef RESOLVE_NO_MAGICLINKS

- +#define RESOLVE_NO_MAGICLINKS   0x02

- +#endif

- +#ifndef RESOLVE_NO_SYMLINKS

- +#define RESOLVE_NO_SYMLINKS     0x04

- +#endif

- +

-  #endif

- -- 

- 2.47.0

- 

@@ -1,85 +0,0 @@ 

- From b5aa46fc7bb03877bbea711903e19ad4e27e8259 Mon Sep 17 00:00:00 2001

- From: Michael Vogt <michael.vogt@gmail.com>

- Date: Wed, 23 Oct 2024 09:50:56 +0200

- Subject: [PATCH] linux-user: guard openat2 with `#if

-  defined(TARGET_NR_openat2)`

- 

- This commit adds a bunch of `#ifdef` around the openat2 support.

- We need this to build the `cris-linux-user` target which is still

- present in this version but got dropped from upstream in commit

- 44e4075bf4 but is still present in v9.1.0.

- 

- This patch can be dropped once cris is also removed from the

- package.

- ---

-  linux-user/syscall.c | 9 ++++++++-

-  1 file changed, 8 insertions(+), 1 deletion(-)

- 

- diff --git a/linux-user/syscall.c b/linux-user/syscall.c

- index 85d61db546..22e5ad3c5f 100644

- --- a/linux-user/syscall.c

- +++ b/linux-user/syscall.c

- @@ -608,6 +608,7 @@ static int check_zeroed_user(abi_long addr, size_t ksize, size_t usize)

-   *

-   * Similar to kernels uaccess.h:copy_struct_from_user()

-   */

- +#if defined(TARGET_NR_openat2)

-  static int

-  copy_struct_from_user(void *dst, size_t ksize, abi_ptr src, size_t usize)

-  {

- @@ -629,6 +630,7 @@ copy_struct_from_user(void *dst, size_t ksize, abi_ptr src, size_t usize)

-      }

-      return 0;

-  }

- +#endif

-  

-  #define safe_syscall0(type, name) \

-  static type safe_##name(void) \

- @@ -682,6 +684,7 @@ safe_syscall3(ssize_t, write, int, fd, const void *, buff, size_t, count)

-  safe_syscall4(int, openat, int, dirfd, const char *, pathname, \

-                int, flags, mode_t, mode)

-  

- +#if defined(TARGET_NR_openat2)

-  struct open_how_ver0 {

-      __u64 flags;

-      __u64 mode;

- @@ -689,6 +692,7 @@ struct open_how_ver0 {

-  };

-  safe_syscall4(int, openat2, int, dirfd, const char *, pathname, \

-                const struct open_how_ver0 *, how, size_t, size)

- +#endif

-  

-  #if defined(TARGET_NR_wait4) || defined(TARGET_NR_waitpid)

-  safe_syscall4(pid_t, wait4, pid_t, pid, int *, status, int, options, \

- @@ -8480,7 +8484,7 @@ int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *pathname,

-      }

-  }

-  

- -

- +#if defined(TARGET_NR_openat2)

-  static int do_openat2(CPUArchState *cpu_env, abi_long dirfd,

-                        abi_ptr guest_pathname, abi_ptr guest_open_how,

-                        abi_ulong guest_size)

- @@ -8522,6 +8526,7 @@ static int do_openat2(CPUArchState *cpu_env, abi_long dirfd,

-      unlock_user(pathname, guest_pathname, 0);

-      return ret;

-  }

- +#endif

-  

-  ssize_t do_guest_readlink(const char *pathname, char *buf, size_t bufsiz)

-  {

- @@ -9295,9 +9300,11 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,

-          fd_trans_unregister(ret);

-          unlock_user(p, arg2, 0);

-          return ret;

- +#if defined(TARGET_NR_openat2)

-      case TARGET_NR_openat2:

-          ret = do_openat2(cpu_env, arg1, arg2, arg3, arg4);

-          return ret;

- +#endif

-  #if defined(TARGET_NR_name_to_handle_at) && defined(CONFIG_OPEN_BY_HANDLE)

-      case TARGET_NR_name_to_handle_at:

-          ret = do_name_to_handle_at(arg1, arg2, arg3, arg4, arg5);

- -- 

- 2.47.0

- 

@@ -0,0 +1,31 @@ 

+ From: Roberto Campesato <render@metalabs.org>

+ diff --git a/crypto/tlscredsx509.c b/crypto/tlscredsx509.c

+ --- a/crypto/tlscredsx509.c

+ +++ b/crypto/tlscredsx509.c

+ @@ -502,14 +502,6 @@ qcrypto_tls_creds_x509_sanity_check(QCryptoTLSCredsX509 *creds,

+          goto cleanup;

+      }

+ 

+ -    for (i = 0; i < ncacerts; i++) {

+ -        if (qcrypto_tls_creds_check_cert(creds,

+ -                                         cacerts[i], cacertFile,

+ -                                         isServer, true, errp) < 0) {

+ -            goto cleanup;

+ -        }

+ -    }

+ -

+      if (cert && ncacerts &&

+          qcrypto_tls_creds_check_cert_pair(cert, certFile, cacerts,

+                                            ncacerts, cacertFile,

+ diff --git a/tests/unit/test-crypto-tlscredsx509.c b/tests/unit/test-crypto-tlscredsx509.c

+ --- a/tests/unit/test-crypto-tlscredsx509.c

+ +++ b/tests/unit/test-crypto-tlscredsx509.c

+ @@ -285,7 +285,7 @@ int main(int argc, char **argv)

+      TLS_TEST_REG(badca1, true, cacert4req.filename, servercert4req.filename,

+                   true);

+      TLS_TEST_REG(badca2, true,

+ -                 cacert5req.filename, servercert5req.filename, true);

+ +                 cacert5req.filename, servercert5req.filename, false);

+      TLS_TEST_REG(badca3, true,

+                   cacert6req.filename, servercert6req.filename, true);

+ 

@@ -0,0 +1,33 @@ 

+ From: Roberto Campesato <render@metalabs.org>

+ diff --git a/linux-user/main.c b/linux-user/main.c

+ index 0cdaf30d34..553faf1309 100644

+ --- a/linux-user/main.c

+ +++ b/linux-user/main.c

+ @@ -357,6 +357,10 @@ static void handle_arg_uname(const char *arg)

+ 

+  static void handle_arg_cpu(const char *arg)

+  {

+ +    if (cpu_model != NULL) {

+ +        free(cpu_model);

+ +        cpu_model = NULL;

+ +    }

+      cpu_model = strdup(arg);

+      if (cpu_model == NULL || is_help_option(cpu_model)) {

+          list_cpus();

+ @@ -717,7 +721,16 @@ int main(int argc, char **argv, char **envp)

+          }

+      }

+ 

+ +    /* This is a pretty disgusting hack, in place to get a default

+ +       CPU that has x86_64-v2 support, required for emulating a

+ +       CPU that CentOS 9 is happy to run on (via binfmt_misc).  */

+ +#if defined(TARGET_X86_64) && !defined(__x86_64__)

+ +    cpu_model = strdup("Nehalem-v1");

+ +#elif defined(TARGET_AARCH64) && !defined(__aarch64__)

+ +    cpu_model = strdup("cortex-a72");

+ +#else

+      cpu_model = NULL;

+ +#endif

+ 

+      qemu_add_opts(&qemu_trace_opts);

+      qemu_plugin_add_opts();

@@ -0,0 +1,123 @@ 

+ From: Roberto Campesato <render@metalabs.org>

+ diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h

+ --- a/linux-user/ioctls.h

+ +++ b/linux-user/ioctls.h

+ @@ -154,6 +154,10 @@

+       IOCTL(BTRFS_IOC_SNAP_CREATE, IOC_W,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))

+  #endif

+ +#ifdef BTRFS_IOC_SNAP_CREATE_V2

+ +     IOCTL(BTRFS_IOC_SNAP_CREATE_V2, IOC_W,

+ +           MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args_v2)))

+ +#endif

+  #ifdef BTRFS_IOC_SCAN_DEV

+       IOCTL(BTRFS_IOC_SCAN_DEV, IOC_W,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))

+ @@ -170,14 +174,26 @@

+       IOCTL(BTRFS_IOC_RM_DEV, IOC_W,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))

+  #endif

+ +#ifdef BTRFS_IOC_RM_DEV_V2

+ +     IOCTL(BTRFS_IOC_RM_DEV_V2, IOC_W,

+ +           MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args_v2)))

+ +#endif

+  #ifdef BTRFS_IOC_SUBVOL_CREATE

+       IOCTL(BTRFS_IOC_SUBVOL_CREATE, IOC_W,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))

+  #endif

+ +#ifdef BTRFS_IOC_SUBVOL_CREATE_V2

+ +     IOCTL(BTRFS_IOC_SUBVOL_CREATE_V2, IOC_W,

+ +           MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args_v2)))

+ +#endif

+  #ifdef BTRFS_IOC_SNAP_DESTROY

+       IOCTL(BTRFS_IOC_SNAP_DESTROY, IOC_W,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))

+  #endif

+ +#ifdef BTRFS_IOC_SNAP_DESTROY_V2

+ +     IOCTL(BTRFS_IOC_SNAP_DESTROY_V2, IOC_W,

+ +           MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args_v2)))

+ +#endif

+  #ifdef BTRFS_IOC_INO_LOOKUP

+       IOCTL(BTRFS_IOC_INO_LOOKUP, IOC_RW,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_ino_lookup_args)))

+ @@ -273,6 +289,10 @@

+       IOCTL(BTRFS_IOC_INO_LOOKUP_USER, IOC_RW,

+             MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_ino_lookup_user_args)))

+  #endif

+ +#ifdef BTRFS_IOC_TREE_SEARCH

+ +     IOCTL(BTRFS_IOC_TREE_SEARCH, IOC_RW,

+ +           MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_search_args)))

+ +#endif

+ 

+  #ifdef CONFIG_USBFS

+    /* USB ioctls */

+ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h

+ --- a/linux-user/syscall_defs.h

+ +++ b/linux-user/syscall_defs.h

+ @@ -966,9 +966,12 @@

+  #define TARGET_BTRFS_IOC_RM_DEV                 TARGET_IOWU(BTRFS_IOCTL_MAGIC, 11)

+  #define TARGET_BTRFS_IOC_SUBVOL_CREATE          TARGET_IOWU(BTRFS_IOCTL_MAGIC, 14)

+  #define TARGET_BTRFS_IOC_SNAP_DESTROY           TARGET_IOWU(BTRFS_IOCTL_MAGIC, 15)

+ +#define TARGET_BTRFS_IOC_TREE_SEARCH            TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 17)

+  #define TARGET_BTRFS_IOC_INO_LOOKUP             TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 18)

+  #define TARGET_BTRFS_IOC_DEFAULT_SUBVOL         TARGET_IOW(BTRFS_IOCTL_MAGIC, 19, \

+                                                             abi_ullong)

+ +#define TARGET_BTRFS_IOC_SNAP_CREATE_V2         TARGET_IOWU(BTRFS_IOCTL_MAGIC, 23)

+ +#define TARGET_BTRFS_IOC_SUBVOL_CREATE_V2       TARGET_IOWU(BTRFS_IOCTL_MAGIC, 24)

+  #define TARGET_BTRFS_IOC_SUBVOL_GETFLAGS        TARGET_IOR(BTRFS_IOCTL_MAGIC, 25, \

+                                                             abi_ullong)

+  #define TARGET_BTRFS_IOC_SUBVOL_SETFLAGS        TARGET_IOW(BTRFS_IOCTL_MAGIC, 26, \

+ @@ -990,10 +993,12 @@

+  #define TARGET_BTRFS_IOC_GET_FEATURES           TARGET_IORU(BTRFS_IOCTL_MAGIC, 57)

+  #define TARGET_BTRFS_IOC_SET_FEATURES           TARGET_IOWU(BTRFS_IOCTL_MAGIC, 57)

+  #define TARGET_BTRFS_IOC_GET_SUPPORTED_FEATURES TARGET_IORU(BTRFS_IOCTL_MAGIC, 57)

+ +#define TARGET_BTRFS_IOC_RM_DEV_V2              TARGET_IOWU(BTRFS_IOCTL_MAGIC, 58)

+  #define TARGET_BTRFS_IOC_LOGICAL_INO_V2         TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 59)

+  #define TARGET_BTRFS_IOC_GET_SUBVOL_INFO        TARGET_IORU(BTRFS_IOCTL_MAGIC, 60)

+  #define TARGET_BTRFS_IOC_GET_SUBVOL_ROOTREF     TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 61)

+  #define TARGET_BTRFS_IOC_INO_LOOKUP_USER        TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 62)

+ +#define TARGET_BTRFS_IOC_SNAP_DESTROY_V2        TARGET_IOWU(BTRFS_IOCTL_MAGIC, 63)

+  #endif

+ 

+  /* usb ioctls */

+ diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h

+ --- a/linux-user/syscall_types.h

+ +++ b/linux-user/syscall_types.h

+ @@ -373,6 +373,37 @@

+         MK_ARRAY(TYPE_CHAR, BTRFS_PATH_NAME_MAX + 1)) /* name */

+  #endif

+ 

+ +#if defined(BTRFS_IOC_SNAP_CREATE_V2) || \

+ +    defined(BTRFS_IOC_SUBVOL_CREATE_V2) || \

+ +    defined(BTRFS_IOC_RM_DEV_V2) || defined(BTRFS_IOC_SNAP_DESTROY_V2)

+ +STRUCT(btrfs_ioctl_vol_args_v2,

+ +       TYPE_LONGLONG, /* fd */

+ +       TYPE_ULONGLONG, /* transid */

+ +       TYPE_ULONGLONG, /* flags */

+ +       MK_ARRAY(TYPE_ULONGLONG, 4), /* unused */

+ +       MK_ARRAY(TYPE_CHAR, BTRFS_SUBVOL_NAME_MAX + 1)) /* name */

+ +#endif

+ +

+ +#ifdef BTRFS_IOC_TREE_SEARCH

+ +STRUCT(btrfs_ioctl_search_args,

+ +       TYPE_ULONGLONG, /* tree_id */

+ +       TYPE_ULONGLONG, /* min_objectid */

+ +       TYPE_ULONGLONG, /* max_objectid */

+ +       TYPE_ULONGLONG, /* min_offset */

+ +       TYPE_ULONGLONG, /* max_offset */

+ +       TYPE_ULONGLONG, /* min_transid */

+ +       TYPE_ULONGLONG, /* max_transid */

+ +       TYPE_INT,       /* min_type */

+ +       TYPE_INT,       /* max_type */

+ +       TYPE_INT,       /* nr_items */

+ +       TYPE_INT,       /* unused */

+ +       TYPE_ULONGLONG, /* unused1 */

+ +       TYPE_ULONGLONG, /* unused2 */

+ +       TYPE_ULONGLONG, /* unused3 */

+ +       TYPE_ULONGLONG, /* unused4 */

+ +       MK_ARRAY(TYPE_CHAR, BTRFS_SEARCH_ARGS_BUFSIZE)) /* buf */

+ +#endif

+ +

+  #ifdef BTRFS_IOC_GET_SUBVOL_INFO

+  STRUCT(btrfs_ioctl_timespec,

+         TYPE_ULONGLONG, /* sec */

@@ -0,0 +1,53 @@ 

+ From: Roberto Campesato <render@metalabs.org>

+ diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c

+ index 75d11a07b2..4da3b75af9 100644

+ --- a/accel/kvm/kvm-all.c

+ +++ b/accel/kvm/kvm-all.c

+ @@ -2966,9 +2966,13 @@ int kvm_convert_memory(hwaddr start, hwaddr size, bool to_private)

+               */

+              goto out_unref;

+          }

+ -        ret = ram_block_discard_range(rb, offset, size);

+ +        ret = ram_block_discard_is_disabled()

+ +              ? ram_block_discard_range(rb, offset, size)

+ +              : 0;

+      } else {

+ -        ret = ram_block_discard_guest_memfd_range(rb, offset, size);

+ +        ret = ram_block_discard_is_disabled()

+ +              ? ram_block_discard_guest_memfd_range(rb, offset, size)

+ +              : 0;

+      }

+ 

+  out_unref:

+ diff --git a/system/physmem.c b/system/physmem.c

+ index 94600a33ec..16e1dd4f22 100644

+ --- a/system/physmem.c

+ +++ b/system/physmem.c

+ @@ -1880,19 +1880,10 @@ static void ram_block_add(RAMBlock *new_block, Error **errp)

+      }

+ 

+      if (new_block->flags & RAM_GUEST_MEMFD) {

+ -        int ret;

+ 

+          assert(kvm_enabled());

+          assert(new_block->guest_memfd < 0);

+ 

+ -        ret = ram_block_discard_require(true);

+ -        if (ret < 0) {

+ -            error_setg_errno(errp, -ret,

+ -                             "cannot set up private guest memory: discard currently blocked");

+ -            error_append_hint(errp, "Are you using assigned devices?\n");

+ -            goto out_free;

+ -        }

+ -

+          new_block->guest_memfd = kvm_create_guest_memfd(new_block->max_length,

+                                                          0, errp);

+          if (new_block->guest_memfd < 0) {

+ @@ -2156,7 +2147,6 @@ static void reclaim_ramblock(RAMBlock *block)

+ 

+      if (block->guest_memfd >= 0) {

+          close(block->guest_memfd);

+ -        ram_block_discard_require(false);

+      }

+ 

+      g_free(block);

@@ -0,0 +1,78 @@ 

+ From 0c0baf37eaaccff09f8b75015cad0dacc997ff87 Mon Sep 17 00:00:00 2001

+ From: Fabiano Rosas <farosas@suse.de>

+ Date: Fri, 13 Dec 2024 10:30:40 -0300

+ Subject: [PATCH] migration/multifd: Fix compat with QEMU < 9.0

+ 

+ Commit f5f48a7891 ("migration/multifd: Separate SYNC request with

+ normal jobs") changed the multifd source side to stop sending data

+ along with the MULTIFD_FLAG_SYNC, effectively introducing the concept

+ of a SYNC-only packet. Relying on that, commit d7e58f412c

+ ("migration/multifd: Don't send ram data during SYNC") later came

+ along and skipped reading data from SYNC packets.

+ 

+ In a versions timeline like this:

+ 

+   8.2 f5f48a7 9.0 9.1 d7e58f41 9.2

+ 

+ The issue arises that QEMUs < 9.0 still send data along with SYNC, but

+ QEMUs > 9.1 don't gather that data anymore. This leads to various

+ kinds of migration failures due to desync/missing data.

+ 

+ Stop checking for a SYNC packet on the destination and unconditionally

+ unfill the packet.

+ 

+ From now on:

+ 

+ old -> new:

+ the source sends data + sync, destination reads normally

+ 

+ new -> new:

+ source sends only sync, destination reads zeros

+ 

+ new -> old:

+ source sends only sync, destination reads zeros

+ 

+ CC: qemu-stable@nongnu.org

+ Fixes: d7e58f412c ("migration/multifd: Don't send ram data during SYNC")

+ Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2720

+ Signed-off-by: Fabiano Rosas <farosas@suse.de>

+ ---

+  migration/multifd.c | 15 +++++++++------

+  1 file changed, 9 insertions(+), 6 deletions(-)

+ 

+ diff --git a/migration/multifd.c b/migration/multifd.c

+ index 498e71fd102..8d0a763a720 100644

+ --- a/migration/multifd.c

+ +++ b/migration/multifd.c

+ @@ -252,9 +252,8 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)

+      p->packet_num = be64_to_cpu(packet->packet_num);

+      p->packets_recved++;

+  

+ -    if (!(p->flags & MULTIFD_FLAG_SYNC)) {

+ -        ret = multifd_ram_unfill_packet(p, errp);

+ -    }

+ +    /* Always unfill, old QEMUs (<9.0) send data along with SYNC */

+ +    ret = multifd_ram_unfill_packet(p, errp);

+  

+      trace_multifd_recv_unfill(p->id, p->packet_num, p->flags,

+                                p->next_packet_size);

+ @@ -1151,9 +1150,13 @@ static void *multifd_recv_thread(void *opaque)

+              flags = p->flags;

+              /* recv methods don't know how to handle the SYNC flag */

+              p->flags &= ~MULTIFD_FLAG_SYNC;

+ -            if (!(flags & MULTIFD_FLAG_SYNC)) {

+ -                has_data = p->normal_num || p->zero_num;

+ -            }

+ +

+ +            /*

+ +             * Even if it's a SYNC packet, this needs to be set

+ +             * because older QEMUs (<9.0) still send data along with

+ +             * the SYNC packet.

+ +             */

+ +            has_data = p->normal_num || p->zero_num;

+              qemu_mutex_unlock(&p->mutex);

+          } else {

+              /*

+ -- 

+ GitLab

+ 

file modified
+158 -72
@@ -79,6 +79,7 @@ 

  %global have_spice 0

  %endif

  %if 0%{?rhel} >= 9

+ # TODO(Hyperscale): enable when RHBZ#2233161 is resolved

  %global have_spice 0

  %endif

  
@@ -91,7 +92,7 @@ 

  %endif

  

  %global have_liburing 0

- %if 0%{?fedora}

+ %if 0%{?fedora} || 0%{?centos_hs}

  %ifnarch %{arm}

  %global have_liburing 1

  %endif
@@ -112,7 +113,7 @@ 

  

  %global have_jack 1

  %if 0%{?rhel}

- %global have_jack 0

+ %global have_jack %{defined centos_hs}

  %endif

  

  %global have_dbus_display 1
@@ -121,10 +122,7 @@ 

  %global have_dbus_display 0

  %endif

  

- %global have_libblkio 0

- %if 0%{?fedora} >= 37

  %global have_libblkio 1

- %endif

  

  %global have_gvnc_devel %{defined fedora}

  %global have_sdl_image %{defined fedora}
@@ -136,7 +134,7 @@ 

  

  # Matches edk2.spec ExclusiveArch

  %global have_edk2 0

- %ifarch %{ix86} x86_64 %{arm} aarch64 riscv64

+ %ifarch %{ix86} x86_64 aarch64 riscv64

  %global have_edk2 1

  %endif

  
@@ -153,7 +151,7 @@ 

  %endif

  

  %define have_block_nfs 0

- %if 0%{?fedora}

+ %if 0%{?fedora} || 0%{?centos_hs}

  %define have_block_nfs 1

  %endif

  
@@ -163,7 +161,7 @@ 

  %endif

  

  %define have_libcacard 1

- %if 0%{?rhel} >= 9

+ %if 0%{?rhel} >= 9 && ! 0%{?centos_hs}

  %define have_libcacard 0

  %endif

  
@@ -174,6 +172,18 @@ 

  %endif

  %endif

  

+ %define have_qatzip 0

+ %ifarch x86_64

+ %define have_qatzip 1

+ %endif

+ 

+ %global have_libcbor 1

+ %if 0%{?rhel}

+ # libcbor missing on centos stream 9

+ %global have_libcbor 0

+ %endif

+ 

+ 

  # LTO still has issues with qemu on armv7hl and aarch64

  # https://bugzilla.redhat.com/show_bug.cgi?id=1952483

  %global _lto_cflags %{nil}
@@ -349,6 +359,8 @@ 

  %{obsoletes_block_gluster} \

  %{obsoletes_block_rbd} \

  %{obsoletes_package_virtiofsd} \

+ Obsoletes: %{name}-system-cris <= %{epoch}:%{version}-%{release} \

+ Obsoletes: %{name}-system-cris-core <= %{epoch}:%{version}-%{release} \

  Obsoletes: %{name}-system-lm32 <= %{epoch}:%{version}-%{release} \

  Obsoletes: %{name}-system-lm32-core <= %{epoch}:%{version}-%{release} \

  Obsoletes: %{name}-system-moxie <= %{epoch}:%{version}-%{release} \
@@ -360,7 +372,7 @@ 

  Obsoletes: sgabios-bin <= 1:0.20180715git-10.fc38

  

  # Release candidate version tracking

- # global rcver rc4

+ #global rcver rc0

  %if 0%{?rcver:1}

  %global rcrel .%{rcver}

  %global rcstr -%{rcver}
@@ -369,10 +381,13 @@ 

  # To prevent rpmdev-bumpspec breakage

  %global baserelease 1

  

+ # Hyperscale release

+ %global hsrel .1

+ 

  Summary: QEMU is a FAST! processor emulator

  Name: qemu

- Version: 9.1.1

- Release: %{baserelease}%{?rcrel}%{?dist}

+ Version: 9.2.0

+ Release: %{baserelease}%{?rcrel}%{?hsrel}%{?dist}

  Epoch: 2

  License: %{shrink:

      Apache-2.0 AND
@@ -406,6 +421,27 @@ 

  #     Generating build-id links failed

  %global  _missing_build_ids_terminate_build    0

  

+ # fb-only patches.

+ %if 0%{?facebook}

+ # internal hack #1: skip validation of all CA certs in the provided bundle including

+ # those not in the chain of trust. evaluating rework for potential upstreaming.

+ Patch: 0001-relax-CA-certs-checks.patch

+ 

+ # internal hack #2: when using qemu-user from binfmt_misc we cannot pass parameters to select

+ # which cpu to use. changing the default to use the oldest cpu supported by CentOS 9.

+ # evaluating if an environment variable could be used for this

+ Patch: 0003-linux-user-default-cpu-model.patch

+ 

+ # Add new btrfs *_v2 ioctls for user-level emulation.

+ # will be reworked for potential upstreaming.

+ Patch: 0004-BTRFS_V2_IOCTLS.patch

+ 

+ # Include experimental changes based AMD patches for SEV/SNP to make PCI passthrough

+ # work with SNP

+ Patch: 0005-disable_ram_block_discard_for_pci_passthrough_on_AMD_SEV_SNP.patch

+ 

+ %endif

+ 

  Source10: qemu-guest-agent.service

  Source11: 99-qemu-guest-agent.rules

  Source12: bridge.conf
@@ -423,11 +459,9 @@ 

  # Fix compat with new glibc (not upstream yet)

  Patch: schedattr.patch

  

- # Openat2 support (upstream commit 9651cea)

- Patch: 0001-linux-user-add-openat2-support-in-linux-user.patch

- # linux-user-cris support for openat2, can be removed once "cris" is

- # removed (after v9.1.0)

- Patch: 0001-linux-user-guard-openat2-with-if-defined-TARGET_NR_o.patch

+ # Fix migration from qemu 7.x, 8.x to 9.2+

+ # https://gitlab.com/qemu-project/qemu/-/issues/2720

+ Patch: 0c0baf37eaaccff09f8b75015cad0dacc997ff87.patch

  

  BuildRequires: gnupg2

  BuildRequires: meson >= %{meson_version}
@@ -598,6 +632,14 @@ 

  # Builds on centos-stream 9 require python-tomli

  BuildRequires: python-tomli

  %endif

+ %if %{have_qatzip}

+ # --enable-qatzip

+ BuildRequires: qatzip-devel

+ %endif

+ %if %{have_libcbor}

+ # --enable-libcbor

+ BuildRequires: libcbor-devel

+ %endif

  

  %if %{user_static}

  BuildRequires: glibc-static
@@ -614,7 +656,6 @@ 

  Requires: %{name}-system-alpha = %{epoch}:%{version}-%{release}

  Requires: %{name}-system-arm = %{epoch}:%{version}-%{release}

  Requires: %{name}-system-avr = %{epoch}:%{version}-%{release}

- Requires: %{name}-system-cris = %{epoch}:%{version}-%{release}

  Requires: %{name}-system-loongarch64 = %{epoch}:%{version}-%{release}

  Requires: %{name}-system-m68k = %{epoch}:%{version}-%{release}

  Requires: %{name}-system-microblaze = %{epoch}:%{version}-%{release}
@@ -1103,7 +1144,6 @@ 

  Requires: qemu-user-static-aarch64

  Requires: qemu-user-static-alpha

  Requires: qemu-user-static-arm

- Requires: qemu-user-static-cris

  Requires: qemu-user-static-hexagon

  Requires: qemu-user-static-hppa

  Requires: qemu-user-static-loongarch64
@@ -1119,6 +1159,7 @@ 

  Requires: qemu-user-static-x86

  Requires: qemu-user-static-xtensa

  Obsoletes: qemu-user-static-nios2 <= %{epoch}:%{version}-%{release}

+ Obsoletes: qemu-user-static-cris <= %{epoch}:%{version}-%{release}

  

  

  %description user-static
@@ -1143,12 +1184,6 @@ 

  This package provides the arm user mode emulation of qemu targets built as

  static binaries

  

- %package user-static-cris

- Summary: QEMU user mode emulation of cris qemu targets static build

- %description user-static-cris

- This package provides the cris user mode emulation of qemu targets built as

- static binaries

- 

  %package user-static-hexagon

  Summary: QEMU user mode emulation of hexagon qemu targets static build

  %description user-static-hexagon
@@ -1276,9 +1311,8 @@ 

  %package system-arm-core

  Summary: QEMU system emulator for ARM

  Requires: %{name}-common = %{epoch}:%{version}-%{release}

- %if %{have_edk2}

- Requires: edk2-arm

- %endif

+ # Drop the next line in Fedora >= 44.

+ Obsoletes: edk2-arm <= 20241117-2.fc42

  %description system-arm-core

  This package provides the QEMU system emulator for ARM boards.

  
@@ -1297,20 +1331,6 @@ 

  This package provides the QEMU system emulator for AVR systems.

  

  

- %package system-cris

- Summary: QEMU system emulator for CRIS

- Requires: %{name}-system-cris-core = %{epoch}:%{version}-%{release}

- %{requires_all_modules}

- %description system-cris

- This package provides the system emulator for CRIS systems.

- 

- %package system-cris-core

- Summary: QEMU system emulator for CRIS

- Requires: %{name}-common = %{epoch}:%{version}-%{release}

- %description system-cris-core

- This package provides the system emulator for CRIS boards.

- 

- 

  %package system-hppa

  Summary: QEMU system emulator for HPPA

  Requires: %{name}-system-hppa-core = %{epoch}:%{version}-%{release}
@@ -1554,6 +1574,7 @@ 

    --audio-drv-list=                \\\

    --disable-af-xdp                 \\\

    --disable-alsa                   \\\

+   --disable-asan                   \\\

    --disable-attr                   \\\

    --disable-auth-pam               \\\

    --disable-avx2                   \\\
@@ -1605,6 +1626,7 @@ 

    --disable-jack                   \\\

    --disable-kvm                    \\\

    --disable-l2tpv3                 \\\

+   --disable-libcbor                \\\

    --disable-libdaxctl              \\\

    --disable-libdw                  \\\

    --disable-libkeyutils            \\\
@@ -1646,10 +1668,10 @@ 

    --disable-rdma                   \\\

    --disable-relocatable            \\\

    --disable-replication            \\\

+   --disable-rust                   \\\

    --disable-rutabaga-gfx           \\\

    --disable-rng-none               \\\

    --disable-safe-stack             \\\

-   --disable-sanitizers             \\\

    --disable-sdl                    \\\

    --disable-sdl-image              \\\

    --disable-seccomp                \\\
@@ -1662,6 +1684,7 @@ 

    --disable-sparse                 \\\

    --disable-spice                  \\\

    --disable-spice-protocol         \\\

+   --disable-strict-rust-lints      \\\

    --disable-strip                  \\\

    --disable-system                 \\\

    --disable-tcg                    \\\
@@ -1670,6 +1693,7 @@ 

    --disable-tsan                   \\\

    --disable-uadk                   \\\

    --disable-u2f                    \\\

+   --disable-ubsan                  \\\

    --disable-usb-redir              \\\

    --disable-user                   \\\

    --disable-vpc                    \\\
@@ -1778,6 +1802,9 @@ 

  %endif

    --enable-kvm \

    --enable-l2tpv3 \

+ %if %{have_libcbor}

+   --enable-libcbor \

+ %endif

    --enable-libiscsi \

  %if %{have_pmem}

    --enable-libpmem \
@@ -1866,6 +1893,9 @@ 

    --enable-linux-user \

    --enable-multiprocess \

    --enable-parallels \

+ %if %{have_qatzip}

+   --enable-qatzip \

+ %endif

    --enable-qcow1 \

    --enable-qed \

    --enable-qom-cast-debug \
@@ -1891,7 +1921,6 @@ 

  %endif

    --enable-vhdx \

    --enable-virtfs \

-   --enable-virtfs-proxy-helper \

    --enable-vpc \

    --enable-vnc-jpeg \

    --enable-vte \
@@ -2150,6 +2179,14 @@ 

  # tests have been flakey in the past

  export MTESTARGS="--no-suite block"

  

+ # Most architectures can use the default timeouts, but in some cases

+ # the hardware that's currently available is too slow and we need to

+ # allow tests to run for a little bit longer

+ %define timeout_multiplier 1

+ %ifarch riscv64

+ %define timeout_multiplier 3

+ %endif

+ 

  %if %{with check}

  %if !%{tools_only}

  
@@ -2158,8 +2195,13 @@ 

  # ppc64le random qtest segfaults with no discernable pattern

  #   Last check: 2023-10

  #   Added: 2022-06

- %ifnarch %{power64}

- %make_build check

+ #

+ # i686 test failing as of qemu-9.2.0-rcX. Discussed here:

+ # https://src.fedoraproject.org/rpms/qemu/pull-request/71

+ # Decided to disable i686 tests entirely, en route to fully

+ # removing i686 support in the future

+ %ifnarch %{power64} %{ix86}

+ %make_build check TIMEOUT_MULTIPLIER=%{timeout_multiplier}

  %endif

  

  popd
@@ -2212,11 +2254,6 @@ 

  %postun user-static-arm

  /bin/systemctl --system try-restart systemd-binfmt.service &>/dev/null || :

  

- %post user-static-cris

- /bin/systemctl --system try-restart systemd-binfmt.service &>/dev/null || :

- %postun user-static-cris

- /bin/systemctl --system try-restart systemd-binfmt.service &>/dev/null || :

- 

  %post user-static-hexagon

  /bin/systemctl --system try-restart systemd-binfmt.service &>/dev/null || :

  %postun user-static-hexagon
@@ -2389,8 +2426,6 @@ 

  # Fedora specific

  %{_datadir}/applications/qemu.desktop

  %exclude %{_datadir}/%{name}/qemu-nsis.bmp

- %{_libexecdir}/virtfs-proxy-helper

- %{_mandir}/man1/virtfs-proxy-helper.1*

  

  

  %files tests
@@ -2545,7 +2580,6 @@ 

  %{_bindir}/qemu-alpha

  %{_bindir}/qemu-arm

  %{_bindir}/qemu-armeb

- %{_bindir}/qemu-cris

  %{_bindir}/qemu-hppa

  %{_bindir}/qemu-hexagon

  %{_bindir}/qemu-loongarch64
@@ -2588,9 +2622,6 @@ 

  %{_datadir}/systemtap/tapset/qemu-arm.stp

  %{_datadir}/systemtap/tapset/qemu-arm-log.stp

  %{_datadir}/systemtap/tapset/qemu-arm-simpletrace.stp

- %{_datadir}/systemtap/tapset/qemu-cris.stp

- %{_datadir}/systemtap/tapset/qemu-cris-log.stp

- %{_datadir}/systemtap/tapset/qemu-cris-simpletrace.stp

  %{_datadir}/systemtap/tapset/qemu-hexagon.stp

  %{_datadir}/systemtap/tapset/qemu-hexagon-log.stp

  %{_datadir}/systemtap/tapset/qemu-hexagon-simpletrace.stp
@@ -2719,12 +2750,6 @@ 

  %endif

  %{_exec_prefix}/lib/binfmt.d/qemu-armeb-static.conf

  

- %files user-static-cris

- %{_bindir}/qemu-cris-static

- %{_datadir}/systemtap/tapset/qemu-cris-log-static.stp

- %{_datadir}/systemtap/tapset/qemu-cris-simpletrace-static.stp

- %{_datadir}/systemtap/tapset/qemu-cris-static.stp

- 

  %files user-static-hexagon

  %{_bindir}/qemu-hexagon-static

  %{_datadir}/systemtap/tapset/qemu-hexagon-log-static.stp
@@ -2943,15 +2968,6 @@ 

  %{_mandir}/man1/qemu-system-avr.1*

  

  

- %files system-cris

- %files system-cris-core

- %{_bindir}/qemu-system-cris

- %{_datadir}/systemtap/tapset/qemu-system-cris.stp

- %{_datadir}/systemtap/tapset/qemu-system-cris-log.stp

- %{_datadir}/systemtap/tapset/qemu-system-cris-simpletrace.stp

- %{_mandir}/man1/qemu-system-cris.1*

- 

- 

  %files system-hppa

  %files system-hppa-core

  %{_bindir}/qemu-system-hppa
@@ -3084,7 +3100,6 @@ 

  %{_datadir}/systemtap/tapset/qemu-system-s390x-simpletrace.stp

  %{_mandir}/man1/qemu-system-s390x.1*

  %{_datadir}/%{name}/s390-ccw.img

- %{_datadir}/%{name}/s390-netboot.img

  

  

  %files system-sh4
@@ -3174,6 +3189,43 @@ 

  

  

  %changelog

+ * Fri Dec 20 2024 Roberto Campesato <render@metalabs.org> - 2:9.2.0-2.1

+ - Merge latest changes from Fedora

+ - Remove fb-only patch already included upstream

+ - Include fix for multifd migration regression https://gitlab.com/qemu-project/qemu/-/issues/2720

+ 

+ * Fri Dec 13 2024 Richard W.M. Jones <rjones@redhat.com> - 2:9.2.0-2

+ - Rebuild for libnfs 6 (soname changed from 14 to 16)

+ 

+ * Thu Dec 12 2024 Daniel P. Berrangé <berrange@redhat.com> - 9.2.0-1

+ - Rebase to qemu 9.2.0

+ 

+ * Wed Dec 11 2024 Richard W.M. Jones <rjones@redhat.com> - 2:9.2.0-0.6.rc3

+ - Rebuild to fix qemu-aarch64-static SIGSEGV (RHBZ#2330793)

+ 

+ * Fri Dec  6 2024 Daniel P. Berrangé <berrange@redhat.com> - 9.2.0-0.5.rc3

+ - Rebase to qemu 9.2.0-rc3

+ 

+ * Tue Dec 03 2024 Andrea Bolognani <abologna@redhat.com> - 9.2.0-0.4.rc1

+ - Increase test timeout on riscv64

+ 

+ * Mon Dec 02 2024 Richard W.M. Jones <rjones@redhat.com> - 9.2.0-0.3.rc1

+ - Remove edk2 dependency on arm (32 bit) (RHBZ#2329331)

+ 

+ * Fri Nov 29 2024 Daniel P. Berrangé <berrange@redhat.com> - 9.2.0-0.2.rc1

+ - Fix crash querying virtio-balloon stats

+ 

+ * Mon Nov 25 2024 Cole Robinson <crobinso@redhat.com> - 9.2.0-0.1.rc1

+ - Rebase to qemu 9.2.0-rc1

+ 

+ * Tue Nov 05 2024 Cole Robinson <crobinso@redhat.com> - 9.1.1-2

+ - Fix spice audio regression with qemu 9.1.1

+ 

+ * Fri Oct 25 2024 Roberto Campesato <render@metalabs.org> - 9.1.1-1.1

+ - Merge latest changes from Fedora

+ - Added fb-only patch based on experimental AMD changes for SEV/SNP

+   to make PCI passthrough work with SNP

+ 

  * Thu Oct 24 2024 Cole Robinson <crobinso@redhat.com> - 9.1.1-1

  - Rebase to qemu 9.1.1 stable

  
@@ -3185,9 +3237,17 @@ 

  - Replace BLACKLIST_RPC with QEMU_GA_ARGS in sysconfig file

  - Related rhbz #2258100

  

+ * Mon Oct 14 2024 Roberto Campesato <render@metalabs.org> - 2:9.1.0-2.1

+ - Merge latest changes from Fedora

+ 

  * Mon Sep 16 2024 Richard W.M. Jones <rjones@redhat.com> - 2:9.1.0-2

  - Replace qemu --blacklist option with -b (related: RHBZ#2258100)

  

+ * Wed Sep 11 2024 Roberto Campesato <render@metalabs.org> - 9.1.0-1.1

+ - Merge latest changes from Fedora

+ - Added fb-only patch based on experimental AMD changes for SEV/SNP

+   to make PCI passthrough work with SNP

+ 

  * Thu Sep 05 2024 Cole Robinson <crobinso@redhat.com> - 9.1.0-1

  - New release qemu 9.1.0 GA

  
@@ -3222,6 +3282,17 @@ 

  * Sat Apr 06 2024 Cole Robinson <crobinso@redhat.com> - 8.2.2-2

  - Rebuild for new libiscsi

  

+ * Tue Mar 26 2024 Roberto Campesato <render@metalabs.org> - 8.2.2-1.1

+ - include unit test change in patch relaxing CA cert bundle validation

+ 

+ * Tue Mar 19 2024 Roberto Campesato <render@metalabs.org> - 8.2.2-1.1

+ - Merge latest changes from Fedora

+ - Re-enabled libblkio (RHBZ#2232766 closed)

+ - Added fb-only patches

+   . relaxing CA cert bundle validatation

+   . setting default cpu_model for linux-user x86_64 and aarch64

+   . btrfs v2 ioctls

+ 

  * Wed Mar 06 2024 Cole Robinson <crobinso@redhat.com> - 8.2.2-1

  - New release qemu 8.2.2

  
@@ -3273,6 +3344,10 @@ 

  * Tue Sep 26 2023 Cole Robinson <crobinso@redhat.com> - 8.1.1-1

  - Rebase to qemu 8.1.1

  

+ * Tue Sep 19 2023 Davide Cavalca <dcavalca@centosproject.org> - 2:8.1.0-2.1

+ - Merge latest changes from Fedora

+ - Enable libcacard support for Hyperscale builds

+ 

  * Thu Aug 24 2023 Cole Robinson <crobinso@redhat.com> - 8.1.0-2

  - Make qemu-docs noarch

  
@@ -3285,6 +3360,13 @@ 

  * Sun Aug 20 2023 Cole Robinson <crobinso@redhat.com> - 8.1.0-0.1-rc4

  - Rebase to qemu 8.1.0-rc4

  

+ * Thu Aug 17 2023 Davide Cavalca <dcavalca@centosproject.org> - 2:8.0.3-1.1

+ - Merge latest changes from Fedora

+ - Temporarily disable virgl for Hyperscale due to missing dependencies

+ - Adjust Requires for virtiofsd for RHEL 9 and earlier

+   Upstream PR: https://src.fedoraproject.org/rpms/qemu/pull-request/47

+ - Enable jack support for Hyperscale builds

+ 

  * Thu Jul 20 2023 Camilla Conte <cconte@redhat.com> - 2:8.0.3-1

  - New upstream release 8.0.3

  
@@ -3334,6 +3416,10 @@ 

  * Fri Nov 11 2022 Eduardo Lima (Etrunko) <etrunko@redhat.com> - 7.1.0-4

  - Update libbpf dependency

  

+ * Thu Sep 08 2022 Davide Cavalca <dcavalca@centosproject.org> - 7.1.0-3.1

+ - Enable some additional features for Hyperscale

+ - Number patches for compatibility with el8

+ 

  * Thu Sep 08 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 7.1.0-3

  - Unconditionally enable capstone-devel

  

file modified
+2 -2
@@ -1,2 +1,2 @@ 

- SHA512 (qemu-9.1.1.tar.xz) = cbf2e43d54eafe776dd8245a91ff3c28bbe6206b62205addb25b49ffaac79cefc49c9df082c28aedc17ffc4a67db6352fc7a97895887ccbbb1ce198981e242b4

- SHA512 (qemu-9.1.1.tar.xz.sig) = 54ae84bc7c3703c4d1cc163c8f5e6d7cf355e1a709552585b383394a89492693c745ef0c465cf193e7da35978d89cd7d2bfe7ed4032e5013ee93295f786ed1ed

+ SHA512 (qemu-9.2.0.tar.xz) = f92548623e4e31400c823a2d78417a8a4ecfccb07f3ee4883e2f2ad33054539d2a37d076dbc64df42c6c86c08fa7c2c975cd6e823aa14d5f20cef83348006813

+ SHA512 (qemu-9.2.0.tar.xz.sig) = 0200d0b88c423bbde2ae279f33a9bfda8b3f44da5f36f79fa687fa301f62e130ff88c12a6f984d74efb6af7609cd77e6501a3779f7536093f012d25920ff59e0