Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 30c78658aa056ae5d3995b4680bcbba5fce2e092
      
https://github.com/qemu/qemu/commit/30c78658aa056ae5d3995b4680bcbba5fce2e092
  Author: Denis Rastyogin <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/vfp_helper.c

  Log Message:
  -----------
  target/arm: remove redundant code

This call is redundant as it only retrieves a value that is not used further.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Denis Rastyogin <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: cca8b4f2a150a7d44962b5da547e21e1782595f2
      
https://github.com/qemu/qemu/commit/cca8b4f2a150a7d44962b5da547e21e1782595f2
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/helper.h
    M target/arm/vfp_helper.c

  Log Message:
  -----------
  target/arm: Convert vfp_helper.c to fpst alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: d778bad9a179c709120900326ba2b6d9f7e65014
      
https://github.com/qemu/qemu/commit/d778bad9a179c709120900326ba2b6d9f7e65014
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/tcg/helper-a64.c
    M target/arm/tcg/helper-a64.h

  Log Message:
  -----------
  target/arm: Convert helper-a64.c to fpst alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: aec7ae42a9f4f3eaf40d66b7be8de8a6da6c9cea
      
https://github.com/qemu/qemu/commit/aec7ae42a9f4f3eaf40d66b7be8de8a6da6c9cea
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/helper.h
    M target/arm/tcg/helper-a64.h
    M target/arm/tcg/helper-sve.h
    M target/arm/tcg/vec_helper.c

  Log Message:
  -----------
  target/arm: Convert vec_helper.c to fpst alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: dae5be12c6e06712bd211e92e2f0b6252a1cc90b
      
https://github.com/qemu/qemu/commit/dae5be12c6e06712bd211e92e2f0b6252a1cc90b
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/helper.h
    M target/arm/tcg/neon_helper.c

  Log Message:
  -----------
  target/arm: Convert neon_helper.c to fpst alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 2115be5953181c3c4f3aa3918b4cbc32de9d4602
      
https://github.com/qemu/qemu/commit/2115be5953181c3c4f3aa3918b4cbc32de9d4602
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/tcg/helper-sve.h
    M target/arm/tcg/sve_helper.c

  Log Message:
  -----------
  target/arm: Convert sve_helper.c to fpst alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 00d9edc8d40197b7f752782dde4fdeb61e425d2b
      
https://github.com/qemu/qemu/commit/00d9edc8d40197b7f752782dde4fdeb61e425d2b
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/tcg/helper-sme.h
    M target/arm/tcg/sme_helper.c

  Log Message:
  -----------
  target/arm: Convert sme_helper.c to fpst alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Peter Maydell <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: ed57e163bcb730d8a73b516a45ad9a5733da05e8
      
https://github.com/qemu/qemu/commit/ed57e163bcb730d8a73b516a45ad9a5733da05e8
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/helper.h
    M target/arm/tcg/helper-a64.h
    M target/arm/tcg/vec_helper.c

  Log Message:
  -----------
  target/arm: Convert vec_helper.c to use env alias

Allow the helpers to receive CPUARMState* directly
instead of via void*.

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 1db3b63b5ca7fb4780f8aaf4bb4f6b717218ef10
      
https://github.com/qemu/qemu/commit/1db3b63b5ca7fb4780f8aaf4bb4f6b717218ef10
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/helper.h
    M target/arm/tcg/neon_helper.c

  Log Message:
  -----------
  target/arm: Convert neon_helper.c to use env alias

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: eec2584d3c03006131696fb343aebf48c696e804
      
https://github.com/qemu/qemu/commit/eec2584d3c03006131696fb343aebf48c696e804
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/tcg/helper-a64.c
    M target/arm/tcg/helper-a64.h
    M target/arm/tcg/translate-a64.c

  Log Message:
  -----------
  target/arm: Use float_status in helper_fcvtx_f64_to_f32

Pass float_status not env to match other functions.

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 1660866e2c8ab994748ad03e12296ac83a407b10
      
https://github.com/qemu/qemu/commit/1660866e2c8ab994748ad03e12296ac83a407b10
  Author: Richard Henderson <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/helper.h
    M target/arm/tcg/translate-a64.c
    M target/arm/tcg/translate-vfp.c
    M target/arm/vfp_helper.c

  Log Message:
  -----------
  target/arm: Use float_status in helper_vfp_fcvt{ds,sd}

Pass float_status not env to match other functions.

Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 2b745c8f91376b7bf0259b2bfc10015591d2c1c3
      
https://github.com/qemu/qemu/commit/2b745c8f91376b7bf0259b2bfc10015591d2c1c3
  Author: Peter Maydell <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/cpregs.h
    M target/arm/cpu-features.h
    M target/arm/helper.c
    M target/arm/tcg/op_helper.c

  Log Message:
  -----------
  target/arm: Implement fine-grained-trap handling for FEAT_XS

FEAT_XS introduces a set of new TLBI maintenance instructions with an
"nXS" qualifier.  These behave like the stardard ones except that
they do not wait for memory accesses with the XS attribute to
complete.  They have an interaction with the fine-grained-trap
handling: the FGT bits that a hypervisor can use to trap TLBI
maintenance instructions normally trap also the nXS variants, but the
hypervisor can elect to not trap the nXS variants by setting
HCRX_EL2.FGTnXS to 1.

Add support to our FGT mechanism for these TLBI bits. For each
TLBI-trapping FGT bit we define, for example:
 * FGT_TLBIVAE1 -- the same value we do at present for the
   normal variant of the insn
 * FGT_TLBIVAE1NXS -- for the nXS qualified insn; the value of
   this enum has an NXS bit ORed into it

In access_check_cp_reg() we can then ignore the trap bit for an
access where ri->fgt has the NXS bit set and HCRX_EL2.FGTnXS is 1.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]


  Commit: a2508d0e29b69525f39733c5726e1412e5663eb0
      
https://github.com/qemu/qemu/commit/a2508d0e29b69525f39733c5726e1412e5663eb0
  Author: Peter Maydell <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/cpregs.h
    M target/arm/helper.c

  Log Message:
  -----------
  target/arm: Add ARM_CP_ADD_TLBI_NXS type flag for NXS insns

All of the TLBI insns with an NXS variant put that variant at the
same encoding but with a CRn field that is one greater than for the
original TLBI insn.  To avoid having to define every TLBI insn
effectively twice, once in the normal way and once in a set of cpreg
arrays that are only registered when FEAT_XS is present, we define a
new ARM_CP_ADD_TLB_NXS type flag for cpregs.  When this flag is set
in a cpreg struct and FEAT_XS is present,
define_one_arm_cp_reg_with_opaque() will automatically add a second
cpreg to the hash table for the TLBI NXS insn with:
 * the crn+1 encoding
 * an FGT field that indicates that it should honour HCR_EL2.FGTnXS
 * a name with the "NXS" suffix

(If there are future TLBI NXS insns that don't use this same
encoding convention, it is also possible to define them manually.)

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]


  Commit: 4278186a3045d14723b9445a45ee9bca0fd023f4
      
https://github.com/qemu/qemu/commit/4278186a3045d14723b9445a45ee9bca0fd023f4
  Author: Peter Maydell <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/tcg/tlb-insns.c

  Log Message:
  -----------
  target/arm: Add ARM_CP_ADD_TLBI_NXS type flag to TLBI insns

Add the ARM_CP_ADD_TLBI_NXS to the TLBI insns with an NXS variant.
This is every AArch64 TLBI encoding except for the four FEAT_RME TLBI
insns.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]


  Commit: a65a24b9cfcff5bb132386fc78ab87c0019d396c
      
https://github.com/qemu/qemu/commit/a65a24b9cfcff5bb132386fc78ab87c0019d396c
  Author: Manos Pitsidianakis <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M target/arm/tcg/a64.decode
    M target/arm/tcg/translate-a64.c

  Log Message:
  -----------
  target/arm: Add decodetree entry for DSB nXS variant

The DSB nXS variant is always both a reads and writes request type.
Ignore the domain field like we do in plain DSB and perform a full
system barrier operation.

The DSB nXS variant is part of FEAT_XS made mandatory from Armv8.7.

Signed-off-by: Manos Pitsidianakis <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]
[PMM: added missing "UNDEF unless feature present" check]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 19db1d4da7ba78f3774624a4125c7c78542ed735
      
https://github.com/qemu/qemu/commit/19db1d4da7ba78f3774624a4125c7c78542ed735
  Author: Manos Pitsidianakis <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M docs/system/arm/emulation.rst
    M target/arm/tcg/cpu64.c

  Log Message:
  -----------
  target/arm: Enable FEAT_XS for the max cpu

Add FEAT_XS feature report value in max cpu's ID_AA64ISAR1 sys register.

Signed-off-by: Manos Pitsidianakis <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]
[PMM: Add entry for FEAT_XS to documentation]
Reviewed-by: Richard Henderson <[email protected]>


  Commit: daae2280cad120a307083342ed0913f523b5aeb1
      
https://github.com/qemu/qemu/commit/daae2280cad120a307083342ed0913f523b5aeb1
  Author: Manos Pitsidianakis <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    A tests/tcg/aarch64/system/feat-xs.c

  Log Message:
  -----------
  tests/tcg/aarch64: add system test for FEAT_XS

Add system test to make sure FEAT_XS is enabled for max cpu emulation
and that QEMU doesn't crash when encountering an NXS instruction
variant.

Signed-off-by: Manos Pitsidianakis <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
Message-id: [email protected]
[PMM: In ISAR field test, mask with 0xf, not 0xff; use < rather
 than an equality test to follow the standard ID register field
 check guidelines]
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 9678b9c505725732353baefedb88b53c2eb8a184
      
https://github.com/qemu/qemu/commit/9678b9c505725732353baefedb88b53c2eb8a184
  Author: Peter Maydell <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M hw/intc/arm_gicv3_its.c

  Log Message:
  -----------
  hw/intc/arm_gicv3_its: Zero initialize local DTEntry etc structs

In the GICv3 ITS model, we have a common coding pattern which has a
local C struct like "DTEntry dte", which is a C representation of an
in-guest-memory data structure, and we call a function such as
get_dte() to read guest memory and fill in the C struct.  These
functions to read in the struct sometimes have cases where they will
leave early and not fill in the whole struct (for instance get_dte()
will set "dte->valid = false" and nothing else for the case where it
is passed an entry_addr implying that there is no L2 table entry for
the DTE).  This then causes potential use of uninitialized memory
later, for instance when we call a trace event which prints all the
fields of the struct.  Sufficiently advanced compilers may produce
-Wmaybe-uninitialized warnings about this, especially if LTO is
enabled.

Rather than trying to carefully separate out these trace events into
"only the 'valid' field is initialized" and "all fields can be
printed", zero-init all the structs when we define them. None of
these structs are large (the biggest is 24 bytes) and having
consistent behaviour is less likely to be buggy.

Cc: [email protected]
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2718
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: [email protected]


  Commit: e91254250acb8570bd7b8a8f89d30e6d18291d02
      
https://github.com/qemu/qemu/commit/e91254250acb8570bd7b8a8f89d30e6d18291d02
  Author: Marcin Juszkiewicz <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/test_aarch64_sbsaref.py

  Log Message:
  -----------
  tests/functional: update sbsa-ref firmware used in test

Update the URLs for the binaries we use for the firmware in the
sbsa-ref functional tests.

The firmware is built using Debian 'bookworm' cross toolchain (gcc
12.2.0).

Used versions:

- Trusted Firmware v2.12.0
- Tianocore EDK2 stable202411
- Tianocore EDK2 Platforms code commit 4b3530d

This allows us to move away from "some git commit on trunk"
to a stable release for both TF-A and EDK2.

Signed-off-by: Marcin Juszkiewicz <[email protected]>
Message-id: [email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>


  Commit: 7d99aa1f501971c1c42b8f5ffa11a6209533ff9b
      
https://github.com/qemu/qemu/commit/7d99aa1f501971c1c42b8f5ffa11a6209533ff9b
  Author: Shameer Kolothum <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/multifd-uadk.c

  Log Message:
  -----------
  migration/multifd: Fix compile error caused by page_size usage

>From Commit 90fa121c6c07 ("migration/multifd: Inline page_size and
page_count") onwards page_size is not part of MutiFD*Params but uses
an inline constant instead.

However, it missed updating an old usage, causing a compile error.

Fixes: 90fa121c6c07 ("migration/multifd: Inline page_size and page_count")
Signed-off-by: Shameer Kolothum <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: dd955540c5ef1ed989feada115a2d69f899bdc39
      
https://github.com/qemu/qemu/commit/dd955540c5ef1ed989feada115a2d69f899bdc39
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  migration/multifd: Further remove the SYNC on complete

Commit 637280aeb2 ("migration/multifd: Avoid the final FLUSH in
complete()") stopped sending the RAM_SAVE_FLAG_MULTIFD_FLUSH flag at
ram_save_complete(), because the sync on the destination side is not
needed due to the last iteration of find_dirty_block() having already
done it.

However, that commit overlooked that multifd_ram_flush_and_sync() on the
source side is also not needed at ram_save_complete(), for the same
reason.

Moreover, removing the RAM_SAVE_FLAG_MULTIFD_FLUSH but keeping the
multifd_ram_flush_and_sync() means that currently the recv threads will
hang when receiving the MULTIFD_FLAG_SYNC message, waiting for the
destination sync which only happens when RAM_SAVE_FLAG_MULTIFD_FLUSH is
received.

Luckily, multifd is still all working fine because recv side cleanup
code (mostly multifd_recv_sync_main()) is smart enough to make sure even
if recv threads are stuck at SYNC it'll get kicked out. And since this
is the completion phase of migration, nothing else will be sent after
the SYNCs.

This needs to be fixed because in the future VFIO will have data to push
after ram_save_complete() and we don't want the recv thread to be stuck
in the MULTIFD_FLAG_SYNC message.

Remove the unnecessary (and buggy) invocation of
multifd_ram_flush_and_sync().

For very old binaries (multifd_flush_after_each_section==true), the
flush_and_sync is still needed because each EOS received on destination
will enforce all-channel sync once.

Stable branches do not need this patch, as no real bug I can think of
that will go wrong there.. so not attaching Fixes to be clear on the
backport not needed.

Reviewed-by: Fabiano Rosas <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 371b63227038c6e98ed3d8162978179213aaf297
      
https://github.com/qemu/qemu/commit/371b63227038c6e98ed3d8162978179213aaf297
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/multifd-nocomp.c
    M migration/multifd.c
    M migration/multifd.h

  Log Message:
  -----------
  migration/multifd: Allow to sync with sender threads only

Teach multifd_send_sync_main() to sync with threads only.

We already have such requests, which is when mapped-ram is enabled with
multifd.  In that case, no SYNC messages will be pushed to the stream when
multifd syncs the sender threads because there's no destination threads
waiting for that.  The whole point of the sync is to make sure all threads
finished their jobs.

So fundamentally we have a request to do the sync in different ways:

  - Either to sync the threads only,
  - Or to sync the threads but also with the destination side.

Mapped-ram did it already because of the use_packet check in the sync
handler of the sender thread.  It works.

However it may stop working when e.g. VFIO may start to reuse multifd
channels to push device states.  In that case VFIO has similar request on
"thread-only sync" however we can't check a flag because such sync request
can still come from RAM which needs the on-wire notifications.

Paving way for that by allowing the multifd_send_sync_main() to specify
what kind of sync the caller needs.  We can use it for mapped-ram already.

No functional change intended.

Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 58ae96ad239d9d891ec648f241378451b8d0315f
      
https://github.com/qemu/qemu/commit/58ae96ad239d9d891ec648f241378451b8d0315f
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/ram.c
    M migration/ram.h
    M migration/rdma.h

  Log Message:
  -----------
  migration/ram: Move RAM_SAVE_FLAG* into ram.h

Firstly, we're going to use the multifd flag soon in multifd code, so ram.c
isn't gonna work.

Secondly, we have a separate RDMA flag dangling around, which is definitely
not obvious.  There's one comment that helps, but not too much.

Put all RAM save flags altogether, so nothing will get overlooked.

Add a section explain why we can't use bits over 0x200.

Remove RAM_SAVE_FLAG_FULL as it's already not used in QEMU, as the comment
explained.

Reviewed-by: Fabiano Rosas <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 6f5d514060ae2e677421a90128f3ef7df1278d25
      
https://github.com/qemu/qemu/commit/6f5d514060ae2e677421a90128f3ef7df1278d25
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/multifd-nocomp.c
    M migration/multifd.h
    M migration/ram.c

  Log Message:
  -----------
  migration/multifd: Unify RAM_SAVE_FLAG_MULTIFD_FLUSH messages

RAM_SAVE_FLAG_MULTIFD_FLUSH message should always be correlated to a sync
request on src.  Unify such message into one place, and conditionally send
the message only if necessary.

Reviewed-by: Fabiano Rosas <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: df5f25616e932f4636fb5b05a6c63809c9dba3cc
      
https://github.com/qemu/qemu/commit/df5f25616e932f4636fb5b05a6c63809c9dba3cc
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  migration/multifd: Remove sync processing on postcopy

Multifd never worked with postcopy, at least yet so far.

Remove the sync processing there, because it's confusing, and they should
never appear.  Now if RAM_SAVE_FLAG_MULTIFD_FLUSH is observed, we fail hard
instead of trying to invoke multifd code.

Reviewed-by: Fabiano Rosas <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: b0631f22986f9a78cbd219d1d1066cb03463cb1f
      
https://github.com/qemu/qemu/commit/b0631f22986f9a78cbd219d1d1066cb03463cb1f
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/multifd-nocomp.c
    M migration/multifd.h
    M migration/ram.c

  Log Message:
  -----------
  migration/multifd: Cleanup src flushes on condition check

The src flush condition check is over complicated, and it's getting more
out of control if postcopy will be involved.

In general, we have two modes to do the sync: legacy or modern ways.
Legacy uses per-section flush, modern uses per-round flush.

Mapped-ram always uses the modern, which is per-round.

Introduce two helpers, which can greatly simplify the code, and hopefully
make it readable again.

Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 805fdc46559f810d966119fcdb68400749f0609f
      
https://github.com/qemu/qemu/commit/805fdc46559f810d966119fcdb68400749f0609f
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  migration/multifd: Document the reason to sync for save_setup()

It's not straightforward to see why src QEMU needs to sync multifd during
setup() phase.  After all, there's no page queued at that point.

For old QEMUs, there's a solid reason: EOS requires it to work.  While it's
clueless on the new QEMUs which do not take EOS message as sync requests.

One will figure that out only when this is conditionally removed.  In fact,
the author did try it out.  Logically we could still avoid doing this on
new machine types, however that needs a separate compat field and that can
be an overkill in some trivial overhead in setup() phase.

Let's instead document it completely, to avoid someone else tries this
again and do the debug one more time, or anyone confused on why this ever
existed.

Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 0b06a2bc929ec6089097edb8a3e87f277a619f3c
      
https://github.com/qemu/qemu/commit/0b06a2bc929ec6089097edb8a3e87f277a619f3c
  Author: Fabiano Rosas <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/multifd.c

  Log Message:
  -----------
  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: [email protected]
Fixes: d7e58f412c ("migration/multifd: Don't send ram data during SYNC")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2720
Reviewed-by: Peter Xu <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 19fa564c729fc0194c9db881052c9ad4eb0542d3
      
https://github.com/qemu/qemu/commit/19fa564c729fc0194c9db881052c9ad4eb0542d3
  Author: Fabiano Rosas <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c

  Log Message:
  -----------
  s390x: Fix CSS migration

Commit a55ae46683 ("s390: move css_migration_enabled from machine to
css.c") disabled CSS migration globally instead of doing it
per-instance.

CC: Paolo Bonzini <[email protected]>
CC: [email protected] #9.1
Fixes: a55ae46683 ("s390: move css_migration_enabled from machine to css.c")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2704
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: ec8a60e9d7b2d4ad9e931a3a8dd9b0cfdea6856b
      
https://github.com/qemu/qemu/commit/ec8a60e9d7b2d4ad9e931a3a8dd9b0cfdea6856b
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/migration.c

  Log Message:
  -----------
  migration: Add helper to get target runstate

In 99% cases, after QEMU migrates to dest host, it tries to detect the
target VM runstate using global_state_get_runstate().

There's one outlier so far which is Xen that won't send global state.
That's the major reason why global_state_received() check was always there
together with global_state_get_runstate().

However it's utterly confusing why global_state_received() has anything to
do with "let's start VM or not".

Provide a helper to explain it, then we have an unified entry for getting
the target dest QEMU runstate after migration.

Suggested-by: Fabiano Rosas <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: a1e6047ff4471e728151d266180944673e7880f5
      
https://github.com/qemu/qemu/commit/a1e6047ff4471e728151d266180944673e7880f5
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M monitor/qmp-cmds.c

  Log Message:
  -----------
  qmp/cont: Only activate disks if migration completed

As the comment says, the activation of disks is for the case where
migration has completed, rather than when QEMU is still during
migration (RUN_STATE_INMIGRATE).

Move the code over to reflect what the comment is describing.

Cc: Kevin Wolf <[email protected]>
Cc: Markus Armbruster <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: d918c306b8810e41f5a9480665a5f96887a5e514
      
https://github.com/qemu/qemu/commit/d918c306b8810e41f5a9480665a5f96887a5e514
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/migration.c

  Log Message:
  -----------
  migration/block: Make late-block-active the default

Migration capability 'late-block-active' controls when the block drives
will be activated.  If enabled, block drives will only be activated until
VM starts, either src runstate was "live" (RUNNING, or SUSPENDED), or it'll
be postponed until qmp_cont().

Let's do this unconditionally.  There's no harm to delay activation of
block drives.  Meanwhile there's no ABI breakage if dest does it, because
src QEMU has nothing to do with it, so it's no concern on ABI breakage.

IIUC we could avoid introducing this cap when introducing it before, but
now it's still not too late to just always do it.  Cap now prone to
removal, but it'll be for later patches.

Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: e3199ab57af834b14aa00add60ca992552d77e3b
      
https://github.com/qemu/qemu/commit/e3199ab57af834b14aa00add60ca992552d77e3b
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/savevm.c

  Log Message:
  -----------
  migration/block: Apply late-block-active behavior to postcopy

Postcopy never cared about late-block-active.  However there's no mention
in the capability that it doesn't apply to postcopy.

Considering that we _assumed_ late activation is always good, do that too
for postcopy unconditionally, just like precopy.  After this patch, we
should have unified the behavior across all.

Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: a20b422dee599c49e3db45771a9e93bd8f1c4042
      
https://github.com/qemu/qemu/commit/a20b422dee599c49e3db45771a9e93bd8f1c4042
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M migration/migration.c
    M migration/savevm.c

  Log Message:
  -----------
  migration/block: Fix possible race with block_inactive

Src QEMU sets block_inactive=true very early before the invalidation takes
place.  It means if something wrong happened during setting the flag but
before reaching qemu_savevm_state_complete_precopy_non_iterable() where it
did the invalidation work, it'll make block_inactive flag inconsistent.

For example, think about when qemu_savevm_state_complete_precopy_iterable()
can fail: it will have block_inactive set to true even if all block drives
are active.

Fix that by only update the flag after the invalidation is done.

No Fixes for any commit, because it's not an issue if bdrv_activate_all()
is re-entrant upon all-active disks - false positive block_inactive can
bring nothing more than "trying to active the blocks but they're already
active".  However let's still do it right to avoid the inconsistent flag
v.s. reality.

Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 1348d67f74a9e21d7b5ab887bb196da20012be53
      
https://github.com/qemu/qemu/commit/1348d67f74a9e21d7b5ab887bb196da20012be53
  Author: Peter Xu <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M include/migration/misc.h
    A migration/block-active.c
    M migration/colo.c
    M migration/meson.build
    M migration/migration.c
    M migration/migration.h
    M migration/savevm.c
    M migration/trace-events
    M monitor/qmp-cmds.c

  Log Message:
  -----------
  migration/block: Rewrite disk activation

This patch proposes a flag to maintain disk activation status globally.  It
mostly rewrites disk activation mgmt for QEMU, including COLO and QMP
command xen_save_devices_state.

Backgrounds
===========

We have two problems on disk activations, one resolved, one not.

Problem 1: disk activation recover (for switchover interruptions)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

When migration is either cancelled or failed during switchover, especially
when after the disks are inactivated, QEMU needs to remember re-activate
the disks again before vm starts.

It used to be done separately in two paths: one in qmp_migrate_cancel(),
the other one in the failure path of migration_completion().

It used to be fixed in different commits, all over the places in QEMU.  So
these are the relevant changes I saw, I'm not sure if it's complete list:

 - In 2016, commit fe904ea824 ("migration: regain control of images when
   migration fails to complete")

 - In 2017, commit 1d2acc3162 ("migration: re-active images while migration
   been canceled after inactive them")

 - In 2023, commit 6dab4c93ec ("migration: Attempt disk reactivation in
   more failure scenarios")

Now since we have a slightly better picture maybe we can unify the
reactivation in a single path.

One side benefit of doing so is, we can move the disk operation outside QMP
command "migrate_cancel".  It's possible that in the future we may want to
make "migrate_cancel" be OOB-compatible, while that requires the command
doesn't need BQL in the first place.  This will already do that and make
migrate_cancel command lightweight.

Problem 2: disk invalidation on top of invalidated disks
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is an unresolved bug for current QEMU.  Link in "Resolves:" at the
end.  It turns out besides the src switchover phase (problem 1 above), QEMU
also needs to remember block activation on destination.

Consider two continuous migration in a row, where the VM was always paused.
In that scenario, the disks are not activated even until migration
completed in the 1st round.  When the 2nd round starts, if QEMU doesn't
know the status of the disks, it needs to try inactivate the disk again.

Here the issue is the block layer API bdrv_inactivate_all() will crash a
QEMU if invoked on already inactive disks for the 2nd migration.  For
detail, see the bug link at the end.

Implementation
==============

This patch proposes to maintain disk activation with a global flag, so we
know:

  - If we used to inactivate disks for migration, but migration got
  cancelled, or failed, QEMU will know it should reactivate the disks.

  - On incoming side, if the disks are never activated but then another
  migration is triggered, QEMU should be able to tell that inactivate is
  not needed for the 2nd migration.

We used to have disk_inactive, but it only solves the 1st issue, not the
2nd.  Also, it's done in completely separate paths so it's extremely hard
to follow either how the flag changes, or the duration that the flag is
valid, and when we will reactivate the disks.

Convert the existing disk_inactive flag into that global flag (also invert
its naming), and maintain the disk activation status for the whole
lifecycle of qemu.  That includes the incoming QEMU.

Put both of the error cases of source migration (failure, cancelled)
together into migration_iteration_finish(), which will be invoked for
either of the scenario.  So from that part QEMU should behave the same as
before.  However with such global maintenance on disk activation status, we
not only cleanup quite a few temporary paths that we try to maintain the
disk activation status (e.g. in postcopy code), meanwhile it fixes the
crash for problem 2 in one shot.

For freshly started QEMU, the flag is initialized to TRUE showing that the
QEMU owns the disks by default.

For incoming migrated QEMU, the flag will be initialized to FALSE once and
for all showing that the dest QEMU doesn't own the disks until switchover.
That is guaranteed by the "once" variable.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2395
Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 1bed6df0c71d3a74286f53c01fafd21fde8777f4
      
https://github.com/qemu/qemu/commit/1bed6df0c71d3a74286f53c01fafd21fde8777f4
  Author: Shameer Kolothum <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/qtest/migration/compression-tests.c

  Log Message:
  -----------
  tests/qtest/migration: Fix compile errors when CONFIG_UADK is set

Removes accidental inclusion of unrelated functions within CONFIG_UADK
as this causes compile errors like:

error: redefinition of ‘migrate_hook_start_xbzrle’

Fixes: 932f74f3fe6e ("tests/qtest/migration: Split compression tests from 
migration-test.c")
Signed-off-by: Shameer Kolothum <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>


  Commit: 11b88e07f0c221890502250bfe758c526f93cc69
      
https://github.com/qemu/qemu/commit/11b88e07f0c221890502250bfe758c526f93cc69
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/test_aarch64_aspeed.py
    M tests/functional/test_arm_aspeed_ast1030.py
    M tests/functional/test_arm_aspeed_ast2500.py
    M tests/functional/test_arm_aspeed_ast2600.py
    M tests/functional/test_arm_aspeed_palmetto.py
    M tests/functional/test_arm_aspeed_rainier.py
    M tests/functional/test_arm_aspeed_romulus.py

  Log Message:
  -----------
  tests/functional: add execute permission to aspeed tests

Tests are expected to be directly invoked when debugging so must
have execute permission.

Signed-off-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 8a6253a43a43084275b31ef05e674e4987b05a84
      
https://github.com/qemu/qemu/commit/8a6253a43a43084275b31ef05e674e4987b05a84
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/asset.py
    M tests/functional/qemu_test/tesseract.py
    M tests/functional/qemu_test/tuxruntest.py
    M tests/functional/test_aarch64_aspeed.py
    M tests/functional/test_aarch64_sbsaref_alpine.py
    M tests/functional/test_aarch64_sbsaref_freebsd.py
    M tests/functional/test_acpi_bits.py
    M tests/functional/test_arm_bpim2u.py
    M tests/functional/test_arm_collie.py
    M tests/functional/test_arm_cubieboard.py
    M tests/functional/test_arm_orangepi.py
    M tests/functional/test_arm_smdkc210.py
    M tests/functional/test_arm_sx1.py
    M tests/functional/test_microblaze_s3adsp1800.py
    M tests/functional/test_ppc_amiga.py
    M tests/functional/test_virtio_gpu.py

  Log Message:
  -----------
  tests/functional: remove many unused imports

Identified using 'pylint --disable=all --enable=W0611'

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: c27f452d61a4741605da2e03c0e6c756dd249f25
      
https://github.com/qemu/qemu/commit/c27f452d61a4741605da2e03c0e6c756dd249f25
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/asset.py

  Log Message:
  -----------
  tests/functional: resolve str(Asset) to cache file path

Allow an Asset object to be used in place of a filename but
making its string representation resolve to the cache file
path.

Signed-off-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 0da341a78f00d6feae98f38d1dfbe2e9f88d0b93
      
https://github.com/qemu/qemu/commit/0da341a78f00d6feae98f38d1dfbe2e9f88d0b93
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/__init__.py
    M tests/functional/qemu_test/cmd.py
    M tests/functional/test_acpi_bits.py
    M tests/functional/test_ppc64_hv.py

  Log Message:
  -----------
  tests/functional: remove duplicated 'which' function impl

Put the 'which' function into shared code.

Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: dd6dfc012c914d3e81be1da4b0ca7328949bdd08
      
https://github.com/qemu/qemu/commit/dd6dfc012c914d3e81be1da4b0ca7328949bdd08
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/cmd.py

  Log Message:
  -----------
  tests/functional: simplify 'which' implementation

The 'access' check implies the file exists.

Reviewed-by: Thomas Huth <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: c54edc71093bf85550245250d1f5922465848e83
      
https://github.com/qemu/qemu/commit/c54edc71093bf85550245250d1f5922465848e83
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/tesseract.py
    M tests/functional/test_m68k_nextcube.py

  Log Message:
  -----------
  tests/functional: drop 'tesseract_available' helper

Platforms we target have new enough tesseract that it suffices to merely
check if the binary exists.

Signed-off-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 3ea06d65be5ee65beabc479d92e964e3c9df5080
      
https://github.com/qemu/qemu/commit/3ea06d65be5ee65beabc479d92e964e3c9df5080
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/__init__.py
    A tests/functional/qemu_test/decorators.py

  Log Message:
  -----------
  tests/functional: introduce some helpful decorators

Reduce repeated boilerplate with some helper decorators:

 @skipIfNotPlatform("x86_64", "aarch64")

  => Skip unless the build host platform matches

 @skipIfMissingCommands("mkisofs", "losetup")

  => Skips unless all listed commands are found in $PATH

 @skipIfMissingImports("numpy", "cv2")

  => Skips unless all listed modules can be imported

 @skipFlakyTest("https://gitlab.com/qemu-project/qemu/-/issues/NNN";)

  => Skips unless env var requests flaky tests with the
     reason documented in the referenced gitlab bug

 @skipBigData

  => Skips unless env var permits tests creating big data files

 @skipUntrustedTest

  => Skips unless env var permits tests which are potentially
     dangerous to the host

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 3d5938607e05c4f8ac6df046a92fad19b681c23b
      
https://github.com/qemu/qemu/commit/3d5938607e05c4f8ac6df046a92fad19b681c23b
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/test_acpi_bits.py
    M tests/functional/test_arm_aspeed_ast2600.py
    M tests/functional/test_arm_bflt.py
    M tests/functional/test_arm_bpim2u.py
    M tests/functional/test_arm_cubieboard.py
    M tests/functional/test_arm_integratorcp.py
    M tests/functional/test_arm_orangepi.py
    M tests/functional/test_linux_initrd.py
    M tests/functional/test_m68k_nextcube.py
    M tests/functional/test_mips64el_fuloong2e.py
    M tests/functional/test_mips64el_loongson3v.py
    M tests/functional/test_mips64el_malta.py
    M tests/functional/test_ppc64_hv.py
    M tests/functional/test_ppc_40p.py
    M tests/functional/test_rx_gdbsim.py
    M tests/functional/test_sh4_r2d.py

  Log Message:
  -----------
  tests/functional: switch to new test skip decorators

This ensures consistency of behaviour across all the tests, and requires
that we provide gitlab bug links when marking a test to be skipped due
to unreliability.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 9132fff802431438a2805389e74402321fb9afed
      
https://github.com/qemu/qemu/commit/9132fff802431438a2805389e74402321fb9afed
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/__init__.py
    M tests/functional/qemu_test/cmd.py
    M tests/functional/qemu_test/tuxruntest.py

  Log Message:
  -----------
  tests/functional: drop 'has_cmd' and 'has_cmds' helpers

The 'which' helper is simpler, not depending on the external 'which'
binary, and is sufficient for test needs.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: f84f8e71eb4bdd193e89c6550a015277b686b0af
      
https://github.com/qemu/qemu/commit/f84f8e71eb4bdd193e89c6550a015277b686b0af
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/testcase.py

  Log Message:
  -----------
  tests/functional: add helpers for building file paths

Add helper methods that construct paths for

 * log files - to be preserved at the end of a test
 * scratch files - to be purged at the end of a test
 * build files - anything relative to the build root
 * data files - anything relative to the functional test source root
 * socket files - a short temporary dir to avoid UNIX socket limits

These are to be used instead of direct access to the self.workdir,
or self.logdir variables, or any other place where paths are built
manually.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: bcc12768c242a4862a1725e22371dd87af1c2b7e
      
https://github.com/qemu/qemu/commit/bcc12768c242a4862a1725e22371dd87af1c2b7e
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/testcase.py
    M tests/functional/test_virtio_gpu.py

  Log Message:
  -----------
  tests/functional: switch over to using self.log_file(...)

This removes direct access of the 'self.logdir' variable.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 8b5a0dd3a8a4526bb91430b7f548c95d46093dc1
      
https://github.com/qemu/qemu/commit/8b5a0dd3a8a4526bb91430b7f548c95d46093dc1
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/cmd.py
    M tests/functional/qemu_test/testcase.py
    M tests/functional/test_aarch64_virt.py
    M tests/functional/test_virtio_gpu.py

  Log Message:
  -----------
  tests/functional: switch over to using self.build_file(...)

This removes direct access of the 'BUILD_DIR' variable.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: bd96e460d3a1fb882e01b385d695070659078ba6
      
https://github.com/qemu/qemu/commit/bd96e460d3a1fb882e01b385d695070659078ba6
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/test_acpi_bits.py

  Log Message:
  -----------
  tests/functional: switch over to using self.data_file(...)

This removes direct path manipulation to figure out the source dir

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: beaf88c895a5eda649777757c80ab4171de777ff
      
https://github.com/qemu/qemu/commit/beaf88c895a5eda649777757c80ab4171de777ff
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/linuxkernel.py
    M tests/functional/qemu_test/tuxruntest.py
    M tests/functional/test_aarch64_aspeed.py
    M tests/functional/test_aarch64_raspi3.py
    M tests/functional/test_aarch64_raspi4.py
    M tests/functional/test_aarch64_sbsaref.py
    M tests/functional/test_aarch64_virt.py
    M tests/functional/test_acpi_bits.py
    M tests/functional/test_alpha_clipper.py
    M tests/functional/test_arm_aspeed_ast1030.py
    M tests/functional/test_arm_aspeed_ast2500.py
    M tests/functional/test_arm_aspeed_ast2600.py
    M tests/functional/test_arm_bflt.py
    M tests/functional/test_arm_bpim2u.py
    M tests/functional/test_arm_canona1100.py
    M tests/functional/test_arm_cubieboard.py
    M tests/functional/test_arm_emcraft_sf2.py
    M tests/functional/test_arm_integratorcp.py
    M tests/functional/test_arm_orangepi.py
    M tests/functional/test_arm_raspi2.py
    M tests/functional/test_arm_smdkc210.py
    M tests/functional/test_arm_vexpress.py
    M tests/functional/test_m68k_mcf5208evb.py
    M tests/functional/test_m68k_nextcube.py
    M tests/functional/test_microblaze_s3adsp1800.py
    M tests/functional/test_microblazeel_s3adsp1800.py
    M tests/functional/test_mips64el_malta.py
    M tests/functional/test_mips_malta.py
    M tests/functional/test_mipsel_malta.py
    M tests/functional/test_or1k_sim.py
    M tests/functional/test_ppc64_e500.py
    M tests/functional/test_ppc64_hv.py
    M tests/functional/test_ppc_amiga.py
    M tests/functional/test_ppc_bamboo.py
    M tests/functional/test_ppc_mac.py
    M tests/functional/test_ppc_mpc8544ds.py
    M tests/functional/test_ppc_virtex_ml507.py
    M tests/functional/test_rx_gdbsim.py
    M tests/functional/test_s390x_ccw_virtio.py
    M tests/functional/test_s390x_topology.py
    M tests/functional/test_sh4_r2d.py
    M tests/functional/test_sh4eb_r2d.py
    M tests/functional/test_sparc64_sun4u.py
    M tests/functional/test_sparc_sun4m.py
    M tests/functional/test_xtensa_lx60.py

  Log Message:
  -----------
  tests/functional: switch over to using self.scratch_file()

Replace any instances of

  os.path.join(self.workdir, ".../...")
  self.workdir + "/.../..."

with

  self.scratch_file("...", "...")

which is more compact and portable

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 7788cc7c5a2395707082952bebfcdae1e2be8ca1
      
https://github.com/qemu/qemu/commit/7788cc7c5a2395707082952bebfcdae1e2be8ca1
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/test_sh4eb_r2d.py

  Log Message:
  -----------
  tests/functional: remove redundant 'rmtree' call

Everything in the scratch directory is automatically purged. Calling
'rmtree' again breaks the ability to optionally preserve the scratch
directory contents.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: cfcb4484fc78cbbd835e2880add561e1fbef6796
      
https://github.com/qemu/qemu/commit/cfcb4484fc78cbbd835e2880add561e1fbef6796
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    A tests/functional/qemu_test/archive.py
    M tests/functional/qemu_test/utils.py

  Log Message:
  -----------
  tests/functional: move archive handling into new archive.py file

More archive related code will be added shortly, so having a
separate file makes more sense.

The utils.py imports the functions from archive.py, so that
existing callers don't need to be modified. This avoids
redundant code churn until later in the series when all
calls will be adapted for other reasons.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: ba32e50a1b2103e9f548c30ef5e96375c0002372
      
https://github.com/qemu/qemu/commit/ba32e50a1b2103e9f548c30ef5e96375c0002372
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    A tests/functional/qemu_test/uncompress.py
    M tests/functional/qemu_test/utils.py

  Log Message:
  -----------
  tests/functional: move uncompress handling into new uncompress.py file

More uncompress related code will be added shortly, so having a
separate file makes more sense.

The utils.py imports the functions from archive.py, so that
existing callers don't need to be modified. This avoids
redundant code churn until later in the series when all
calls will be adapted for other reasons.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 379ee839f9ae374302c4b9f444c9f804ec7a2796
      
https://github.com/qemu/qemu/commit/379ee839f9ae374302c4b9f444c9f804ec7a2796
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/archive.py

  Log Message:
  -----------
  tests/functional: add common zip_extract helper

This mirrors the existing archive_extract and cpio_extract helpers

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 512fe088b12885ddf035124cb5ff8315cfe0de06
      
https://github.com/qemu/qemu/commit/512fe088b12885ddf035124cb5ff8315cfe0de06
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/archive.py
    M tests/functional/qemu_test/linuxkernel.py

  Log Message:
  -----------
  tests/functional: add common deb_extract helper

This mirrors the existing archive_extract, cpio_extract and zip_extract
helpers

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: c055f1d26fbcc18de02e59569f3e2a224595835a
      
https://github.com/qemu/qemu/commit/c055f1d26fbcc18de02e59569f3e2a224595835a
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/archive.py

  Log Message:
  -----------
  tests/functional: let cpio_extract accept filenames

Currently cpio_extract differs from tar_extract/zip_extract
in that it only allows a file-like object as input. Adapt it
to also support filenames.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: c283afbf658cdc2156250a84be433fc0bdd002ac
      
https://github.com/qemu/qemu/commit/c283afbf658cdc2156250a84be433fc0bdd002ac
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/__init__.py
    M tests/functional/qemu_test/archive.py

  Log Message:
  -----------
  tests/functional: add a generalized archive_extract

There are many types of archives that the tests deal with. Provide
a generalized 'archive_extract' that can detect the format and
delegate to the appropriate helper for extraction. This ensures
that all archive extraction code follows the same design pattern.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 239fd29d6f82724c95a7a7f840c9f9244bcbe6d4
      
https://github.com/qemu/qemu/commit/239fd29d6f82724c95a7a7f840c9f9244bcbe6d4
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/testcase.py

  Log Message:
  -----------
  tests/functional: add 'archive_extract' to QemuBaseTest

This helper wrappers archive.archive_extract, forcing the use of the
scratch directory, to ensure any extracted files are cleaned at test
termination. If a specific member is requested, then the path to the
extracted file is also returned.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 5831ed84e7e450a652f215721aba34ed4e1ffb97
      
https://github.com/qemu/qemu/commit/5831ed84e7e450a652f215721aba34ed4e1ffb97
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/linuxkernel.py
    M tests/functional/test_aarch64_aspeed.py
    M tests/functional/test_aarch64_raspi3.py
    M tests/functional/test_aarch64_raspi4.py
    M tests/functional/test_acpi_bits.py
    M tests/functional/test_arm_aspeed_ast1030.py
    M tests/functional/test_arm_aspeed_ast2500.py
    M tests/functional/test_arm_aspeed_ast2600.py
    M tests/functional/test_arm_aspeed_rainier.py
    M tests/functional/test_arm_bflt.py
    M tests/functional/test_arm_bpim2u.py
    M tests/functional/test_arm_canona1100.py
    M tests/functional/test_arm_cubieboard.py
    M tests/functional/test_arm_orangepi.py
    M tests/functional/test_arm_raspi2.py
    M tests/functional/test_arm_smdkc210.py
    M tests/functional/test_arm_vexpress.py
    M tests/functional/test_m68k_mcf5208evb.py
    M tests/functional/test_m68k_q800.py
    M tests/functional/test_microblaze_s3adsp1800.py
    M tests/functional/test_microblazeel_s3adsp1800.py
    M tests/functional/test_mips64el_fuloong2e.py
    M tests/functional/test_mips64el_malta.py
    M tests/functional/test_mips_malta.py
    M tests/functional/test_mipsel_malta.py
    M tests/functional/test_or1k_sim.py
    M tests/functional/test_ppc64_e500.py
    M tests/functional/test_ppc_amiga.py
    M tests/functional/test_ppc_bamboo.py
    M tests/functional/test_ppc_mac.py
    M tests/functional/test_ppc_mpc8544ds.py
    M tests/functional/test_ppc_virtex_ml507.py
    M tests/functional/test_sh4_r2d.py
    M tests/functional/test_sh4eb_r2d.py
    M tests/functional/test_sparc64_sun4u.py
    M tests/functional/test_sparc_sun4m.py
    M tests/functional/test_xtensa_lx60.py

  Log Message:
  -----------
  tests/functional: convert tests to new archive_extract helper

Replace use of utils.archive_extract and extract_from_deb with the
new archive_extract helper.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: dd66e65f055a0d8651afcf63460b1130487aeebb
      
https://github.com/qemu/qemu/commit/dd66e65f055a0d8651afcf63460b1130487aeebb
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/__init__.py
    M tests/functional/qemu_test/uncompress.py

  Log Message:
  -----------
  tests/functional: add a generalized uncompress helper

There are many types of compression that the tests deal with, and
it makes sense to have a single helper 'uncompress' that can deal
with all.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: fd4abcb00839a310fc668d86177278e789f51688
      
https://github.com/qemu/qemu/commit/fd4abcb00839a310fc668d86177278e789f51688
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/testcase.py

  Log Message:
  -----------
  tests/functional: add 'uncompress' to QemuBaseTest

This helper wrappers utils.uncompress, forcing the use of the scratch
directory, to ensure any uncompressed files are cleaned at test
termination.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 65d35a4e27a808370bac40c06c1e24d30461b0eb
      
https://github.com/qemu/qemu/commit/65d35a4e27a808370bac40c06c1e24d30461b0eb
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/test_aarch64_raspi4.py
    M tests/functional/test_aarch64_sbsaref.py
    M tests/functional/test_alpha_clipper.py
    M tests/functional/test_arm_bpim2u.py
    M tests/functional/test_arm_cubieboard.py
    M tests/functional/test_arm_orangepi.py
    M tests/functional/test_arm_raspi2.py
    M tests/functional/test_arm_smdkc210.py
    M tests/functional/test_mips64el_malta.py
    M tests/functional/test_mips_malta.py
    M tests/functional/test_mipsel_malta.py
    M tests/functional/test_rx_gdbsim.py
    M tests/functional/test_s390x_ccw_virtio.py
    M tests/functional/test_s390x_topology.py

  Log Message:
  -----------
  tests/functional: convert tests to new uncompress helper

Replace use of lzma_uncompress and gzip_uncompress with the
new uncompress helper.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 3bb4c8b6134df5367675c4ade4f5c177d29fe903
      
https://github.com/qemu/qemu/commit/3bb4c8b6134df5367675c4ade4f5c177d29fe903
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/utils.py

  Log Message:
  -----------
  tests/functional: drop back compat imports from utils.py

Now that all tests are converted over to the higher level wrapper
functions, the back compat imports from utils.py are redundant.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 37e9b19c34d9500164e33ccf377e1830e956bca0
      
https://github.com/qemu/qemu/commit/37e9b19c34d9500164e33ccf377e1830e956bca0
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/archive.py
    M tests/functional/qemu_test/tesseract.py
    M tests/functional/qemu_test/testcase.py
    M tests/functional/qemu_test/tuxruntest.py
    M tests/functional/test_aarch64_virt.py
    M tests/functional/test_ppc64_tuxrun.py

  Log Message:
  -----------
  tests/functional: replace 'run_cmd' with subprocess helpers

The 'run_cmd' helper is re-implementing a convenient helper that
already exists in the form of the 'run' and 'check_call' methods
provided by 'subprocess'.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: c5be9dd32f35d049983cc42c3835cc3d8167f13f
      
https://github.com/qemu/qemu/commit/c5be9dd32f35d049983cc42c3835cc3d8167f13f
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/__init__.py
    M tests/functional/qemu_test/cmd.py

  Log Message:
  -----------
  tests/functional: remove now unused 'run_cmd' helper

All usage has been replaced by direct 'subprocess' helpers.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 6ff217c2d1c231f727c1be356da4a71cdfdd7ec5
      
https://github.com/qemu/qemu/commit/6ff217c2d1c231f727c1be356da4a71cdfdd7ec5
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/asset.py
    M tests/functional/qemu_test/testcase.py

  Log Message:
  -----------
  tests/functional: skip tests if assets are not available

If downloading of assets has been disabled, then skip running a
test if the assets it has registered are not already downloaded.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 674a750b51df188d6baf55f1f1f8fc6f57fcf6cf
      
https://github.com/qemu/qemu/commit/674a750b51df188d6baf55f1f1f8fc6f57fcf6cf
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/asset.py

  Log Message:
  -----------
  tests/functional: ignore errors when caching assets, except for 404

We see periodic errors caching assets due to a combination of transient
networking and server problems. With the previous patch to skip running
a test when it has missing assets, we can now treat most cache download
errors as non-fatal.

Only HTTP 404 is retained as fatal, since it is a strong indicator of
a fully broken test rather than a transient error.

Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 23cb2e9961953bb59a010115eda5e267f46352b4
      
https://github.com/qemu/qemu/commit/23cb2e9961953bb59a010115eda5e267f46352b4
  Author: Daniel P. Berrangé <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: add myself as reviewer for functional test suite

Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 799d683026e1f1b18380c2629f6c882f4c6c568b
      
https://github.com/qemu/qemu/commit/799d683026e1f1b18380c2629f6c882f4c6c568b
  Author: Thomas Huth <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M MAINTAINERS
    M tests/avocado/boot_linux_console.py
    M tests/functional/meson.build
    A tests/functional/test_arm_quanta_gsj.py

  Log Message:
  -----------
  tests/functional: Convert the quanta-gsj avocado test

Straight forward conversion, basically just the hashsums needed
to be updated to sha256 now.

Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: a44b318fc45d59c0904c887957fb24421bf4ddd4
      
https://github.com/qemu/qemu/commit/a44b318fc45d59c0904c887957fb24421bf4ddd4
  Author: Thomas Huth <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/avocado/boot_linux_console.py
    M tests/functional/meson.build
    A tests/functional/test_arm_virt.py

  Log Message:
  -----------
  tests/functional: Convert the arm virt avocado test

Straight forward conversion, basically just the hashsums needed
to be updated to sha256 now.

Message-ID: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 9fa4fc23e34114971f7ee81acb9b5f4ab0017c7a
      
https://github.com/qemu/qemu/commit/9fa4fc23e34114971f7ee81acb9b5f4ab0017c7a
  Author: Thomas Huth <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M tests/functional/qemu_test/utils.py
    M tests/functional/test_info_usernet.py

  Log Message:
  -----------
  tests/functional: Add a helper function for retrieving the hostfwd port

It's just a wrapper around get_info_usernet_hostfwd_port from the
qemu module that is also calling the right monitor command for
retrieving the information from QEMU.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 270d4a5164ed9881ee7b9e8190a24e37af82a7e1
      
https://github.com/qemu/qemu/commit/270d4a5164ed9881ee7b9e8190a24e37af82a7e1
  Author: Thomas Huth <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M MAINTAINERS
    R tests/avocado/intel_iommu.py
    M tests/functional/meson.build
    A tests/functional/test_intel_iommu.py

  Log Message:
  -----------
  tests/functional: Convert the intel_iommu avocado test

Convert the intel_iommu test to the new functional framework.
This test needs some changes since we neither support the old 'LinuxTest'
class in the functional framework yet, nor a way to use SSH for running
commands in the guest. So we now directly download a Fedora kernel and
initrd and set up the serial console for executing the commands and for
looking for the results. Instead of configuring the cloud image via
cloud-init, we now simply mount the file system manually from an initrd
rescue shell.

While the old test was exercising the network with a "dnf install"
command (which is not the best option for the CI since this depends
on third party servers), the new code is now setting up a little
HTTP server in the guest and transfers a file from the guest to the
host instead.

The test should now run much faster and more reliable (since we
don't depend on the third party servers for "dnf install" anymore),
so we can also drop the @skipUnless decorator now.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: bf850896961fe228a79044c79e97f8aac464a16f
      
https://github.com/qemu/qemu/commit/bf850896961fe228a79044c79e97f8aac464a16f
  Author: Thomas Huth <[email protected]>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    R tests/avocado/hotplug_cpu.py
    M tests/functional/meson.build
    A tests/functional/test_x86_64_hotplug_cpu.py

  Log Message:
  -----------
  tests/functional: Convert the hotplug_cpu avocado test

Since we don't have ssh support in the functional test framework yet,
simply use the serial console for this test instead. It's also
sufficient to only boot into an initrd here, no need to fire up a
full-blown guest, so the test now finishes much faster.

While we're at it, also unplug the CPU now and check that it is gone
in the guest.

Message-ID: <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 0e2d621e60d440629fc94b9e1cf56a1c9276c04f
      
https://github.com/qemu/qemu/commit/0e2d621e60d440629fc94b9e1cf56a1c9276c04f
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/virtio/virtio-mem.c
    M include/hw/virtio/virtio-mem.h

  Log Message:
  -----------
  virtio-mem: unplug memory only during system resets, not device resets

We recently converted from the LegacyReset to the new reset framework
in commit c009a311e939 ("virtio-mem: Use new Resettable framework instead
of LegacyReset") to be able to use the ResetType to filter out wakeup
resets.

However, this change had an undesired implications: as we override the
Resettable interface methods in VirtIOMEMClass, the reset handler will
not only get called during system resets (i.e., qemu_devices_reset())
but also during any direct or indirect device rests (e.g.,
device_cold_reset()).

Further, we might now receive two reset callbacks during
qemu_devices_reset(), first when reset by a parent and later when reset
directly.

The memory state of virtio-mem devices is rather special: it's supposed to
be persistent/unchanged during most resets (similar to resetting a hard
disk will not destroy the data), unless actually cold-resetting the whole
system (different to a hard disk where a reboot will not destroy the data):
ripping out system RAM is something guest OSes don't particularly enjoy,
but we want to detect when rebooting to an OS that does not support
virtio-mem and wouldn't be able to detect+use the memory -- and we want
to force-defragment hotplugged memory to also shrink the usable device
memory region. So we rally want to catch system resets to do that.

On supported targets (e.g., x86), getting a cold reset on the
device/parent triggers is not that easy (but looks like PCI code
might trigger it), so this implication went unnoticed.

However, with upcoming s390x support it is problematic: during
kdump, s390x triggers a subsystem reset, ending up in
s390_machine_reset() and calling only subsystem_reset() instead of
qemu_devices_reset() -- because it's not a full system reset.

In subsystem_reset(), s390x performs a device_cold_reset() of any
TYPE_VIRTUAL_CSS_BRIDGE device, which ends up resetting all children,
including the virtio-mem device. Consequently, we wrongly detect a system
reset and unplug all device memory, resulting in hotplugged memory not
getting included in the crash dump -- undesired.

We really must not mess with hotplugged memory state during simple
device resets. To fix, create+register a new reset object that will only
get triggered during qemu_devices_reset() calls, but not during any other
resets as it is logically not the child of any other object.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Cc: "Michael S. Tsirkin" <[email protected]>
Cc: Juraj Marcin <[email protected]>
Cc: Peter Maydell <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 75311d65e879872a72aabf1b6ed46c5ba5b046a3
      
https://github.com/qemu/qemu/commit/75311d65e879872a72aabf1b6ed46c5ba5b046a3
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c

  Log Message:
  -----------
  s390x/s390-virtio-ccw: don't crash on weird RAM sizes

KVM is not happy when starting a VM with weird RAM sizes:

  # qemu-system-s390x --enable-kvm --nographic -m 1234K
  qemu-system-s390x: kvm_set_user_memory_region: KVM_SET_USER_MEMORY_REGION
    failed, slot=0, start=0x0, size=0x244000: Invalid argument
  kvm_set_phys_mem: error registering slot: Invalid argument
  Aborted (core dumped)

Let's handle that in a better way by rejecting such weird RAM sizes
right from the start:

  # qemu-system-s390x --enable-kvm --nographic -m 1234K
  qemu-system-s390x: ram size must be multiples of 1 MiB

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Eric Farman <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Acked-by: Janosch Frank <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 60d0f858526aa5c8d9d223768cf34e40c2ffdf84
      
https://github.com/qemu/qemu/commit/60d0f858526aa5c8d9d223768cf34e40c2ffdf84
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/s390-virtio-hcall.c
    M hw/s390x/s390-virtio-hcall.h

  Log Message:
  -----------
  s390x/s390-virtio-hcall: remove hypercall registration mechanism

Nowadays, we only have a single machine type in QEMU, everything is based
on virtio-ccw and the traditional virtio machine does no longer exist. No
need to dynamically register diag500 handlers. Move the two existing
handlers into s390-virtio-hcall.c.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Acked-by: Christian Borntraeger <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 96ce23321e797870467b6331635457c1e63ae950
      
https://github.com/qemu/qemu/commit/96ce23321e797870467b6331635457c1e63ae950
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-hcall.c
    M hw/s390x/s390-virtio-hcall.h
    M target/s390x/kvm/kvm.c
    M target/s390x/tcg/misc_helper.c

  Log Message:
  -----------
  s390x/s390-virtio-hcall: prepare for more diag500 hypercalls

Let's generalize, abstracting the virtio bits. diag500 is now a generic
hypercall to handle QEMU/KVM specific things. Explicitly specify all
already defined subcodes, including legacy ones (so we know what we can
use for new hypercalls).

Move the PGM_SPECIFICATION injection into the renamed function
handle_diag_500(), so we can turn it into a void function.

We'll rename the files separately, so git properly detects the rename.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 613227965e86def30193c7f1e0cc22ed27641c9f
      
https://github.com/qemu/qemu/commit/613227965e86def30193c7f1e0cc22ed27641c9f
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/meson.build
    A hw/s390x/s390-hypercall.c
    A hw/s390x/s390-hypercall.h
    R hw/s390x/s390-virtio-hcall.c
    R hw/s390x/s390-virtio-hcall.h
    M target/s390x/kvm/kvm.c
    M target/s390x/tcg/misc_helper.c

  Log Message:
  -----------
  s390x: rename s390-virtio-hcall* to s390-hypercall*

Let's make it clearer that we are talking about general
QEMU/KVM-specific hypercalls.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: e33a6315c2141493afebfda06e871b37f2c0c670
      
https://github.com/qemu/qemu/commit/e33a6315c2141493afebfda06e871b37f2c0c670
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/sclp.c
    M target/s390x/kvm/pv.c

  Log Message:
  -----------
  s390x/s390-virtio-ccw: move setting the maximum guest size from sclp to 
machine code

Nowadays, it feels more natural to have that code located in
s390_memory_init(), where we also have direct access to the machine
object.

While at it, use the actual RAM size, not the maximum RAM size which
cannot currently be reached without support for any memory devices.
Consequently update s390_pv_vm_try_disable_async() to rely on the RAM size
as well, to avoid temporary issues while we further rework that
handling.

set_memory_limit() is temporary, we'll merge it with
s390_set_memory_limit() next.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: b30cf987b696b928fc9d153f66d5693a176e9cb5
      
https://github.com/qemu/qemu/commit/b30cf987b696b928fc9d153f66d5693a176e9cb5
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M include/hw/s390x/s390-virtio-ccw.h
    M target/s390x/cpu-sysemu.c
    M target/s390x/cpu.h

  Log Message:
  -----------
  s390x: introduce s390_get_memory_limit()

Let's add s390_get_memory_limit(), to query what has been successfully
set via s390_set_memory_limit(). Allow setting the limit only once.

We'll remember the limit in the machine state. Move
s390_set_memory_limit() to machine code, merging it into
set_memory_limit(), because this really is a machine property.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 0445caaac14397256c8321bd4f75ee6ba4ebdd9c
      
https://github.com/qemu/qemu/commit/0445caaac14397256c8321bd4f75ee6ba4ebdd9c
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-hypercall.c
    M hw/s390x/s390-hypercall.h

  Log Message:
  -----------
  s390x/s390-hypercall: introduce DIAG500 STORAGE_LIMIT

A guest OS that supports memory hotplug / memory devices must during
boot be aware of the maximum possible physical memory address that it might
have to handle at a later stage during its runtime.

For example, the maximum possible memory address might be required to
prepare the kernel virtual address space accordingly (e.g., select page
table hierarchy depth).

On s390x there is currently no such mechanism that is compatible with
paravirtualized memory devices, because the whole SCLP interface was
designed around the idea of "storage increments" and "standby memory".
Paravirtualized memory devices we want to support, such as virtio-mem, have
no intersection with any of that, but could co-exist with them in the
future if ever needed.

In particular, a guest OS must never detect and use device memory
without the help of a proper device driver. Device memory must not be
exposed in any firmware-provided memory map (SCLP or diag260 on s390x).
For this reason, these memory devices will be places in memory *above*
the "maximum storage increment" exposed via SCLP.

Let's provide a new diag500 subcode to query the memory limit determined in
s390_memory_init().

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 4ca22850fdfb93041ee516d765e5ee533f141b72
      
https://github.com/qemu/qemu/commit/4ca22850fdfb93041ee516d765e5ee533f141b72
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-stattrib-kvm.c

  Log Message:
  -----------
  s390x/s390-stattrib-kvm: prepare for memory devices and sparse memory layouts

With memory devices, we will have storage attributes for memory that
exceeds the initial ram size. Further, we can easily have memory holes,
for which there (currently) are no storage attributes.

In particular, with memory holes, KVM_S390_SET_CMMA_BITS will fail to set
some storage attributes.

So let's do it like we handle storage keys migration, relying on
guest_phys_blocks_append(). However, in contrast to storage key
migration, we will handle it on the migration destination.

This is a preparation for virtio-mem support. Note that ever since the
"early migration" feature was added (x-early-migration), the state
of device blocks (plugged/unplugged) is migrated early such that
guest_phys_blocks_append() will properly consider all currently plugged
memory blocks and skip any unplugged ones.

In the future, we should try getting rid of the large temporary buffer
and also not send any attributes for any memory holes, just so they
get ignored on the destination.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 7ff849bab0d2cece5f33550c1578a4286e5e9bdc
      
https://github.com/qemu/qemu/commit/7ff849bab0d2cece5f33550c1578a4286e5e9bdc
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-skeys.c

  Log Message:
  -----------
  s390x/s390-skeys: prepare for memory devices

With memory devices, we will have storage keys for memory that
exceeds the initial ram size.

The TODO already states that current handling is subopimal,
but we won't worry about improving that (TCG-only) thing for now.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: bfa8cc94d5835587b458522b64b8ae5ed415602a
      
https://github.com/qemu/qemu/commit/bfa8cc94d5835587b458522b64b8ae5ed415602a
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/sclp.c

  Log Message:
  -----------
  s390x/s390-virtio-ccw: prepare for memory devices

Let's prepare our address space for memory devices if enabled via
"maxmem" and if we have CONFIG_MEM_DEVICE enabled at all. Note that
CONFIG_MEM_DEVICE will be selected automatically once we add support
for devices.

Just like on other architectures, the region container for memory devices
is placed directly above our initial memory. For now, we only align the
start address of the region up to 1 GiB, but we won't add any additional
space to the region for internal alignment purposes; this can be done in
the future if really required.

The RAM size returned via SCLP is not modified, as this only
covers initial RAM (and standby memory we don't implement) and not memory
devices; clarify that in the docs of read_SCP_info(). Existing OSes without
support for memory devices will keep working as is, even when memory
devices would be attached the VM.

Guest OSs which support memory devices, such as virtio-mem, will
consult diag500(), to find out the maximum possible pfn. Guest OSes that
don't support memory devices, don't have to be changed and will continue
relying on information provided by SCLP.

There are no remaining maxram_size users in s390x code, and the remaining
ram_size users only care about initial RAM:
* hw/s390x/ipl.c
* hw/s390x/s390-hypercall.c
* hw/s390x/sclp.c
* target/s390x/kvm/pv.c

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 35d8b24fce72d96112db0b56168443287e056899
      
https://github.com/qemu/qemu/commit/35d8b24fce72d96112db0b56168443287e056899
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M target/s390x/kvm/pv.c

  Log Message:
  -----------
  s390x/pv: prepare for memory devices

Let's avoid checking for the maxram_size, and instead rely on the memory
limit determined in s390_memory_init(), that might be larger than
maxram_size, for example due to alignment purposes.

This check now correctly mimics what the kernel will check in
kvm_s390_pv_set_aside(), whereby a VM <= 2 GiB VM would end up using
a segment type ASCE.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Nina Schoetterl-Glausch <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 5d2bfecc87c14662972f84674845ccf6801fbe0f
      
https://github.com/qemu/qemu/commit/5d2bfecc87c14662972f84674845ccf6801fbe0f
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M include/hw/s390x/s390-virtio-ccw.h
    M target/s390x/cpu-sysemu.c
    M target/s390x/cpu.h

  Log Message:
  -----------
  s390x: remember the maximum page size

Let's remember the value (successfully) set via s390_set_max_pagesize().
This will be helpful to reject hotplugged memory devices that would exceed
this initially set page size.

Handle it just like how we handle s390_get_memory_limit(), storing it in
the machine, and moving the handling to machine code.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: 68ac7a5899a7ccab1e9256df32bd40be4a377efa
      
https://github.com/qemu/qemu/commit/68ac7a5899a7ccab1e9256df32bd40be4a377efa
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M MAINTAINERS
    M hw/s390x/meson.build
    M hw/s390x/s390-virtio-ccw.c
    A hw/s390x/virtio-ccw-md-stubs.c
    A hw/s390x/virtio-ccw-md.c
    A hw/s390x/virtio-ccw-md.h
    M hw/virtio/Kconfig

  Log Message:
  -----------
  s390x/virtio-ccw: add support for virtio based memory devices

Let's implement support for abstract virtio based memory devices, using
the virtio-pci implementation as an orientation. Wire them up in the
machine hotplug handler, taking care of s390x page size limitations.

As we neither support virtio-mem or virtio-pmem yet, the code is
effectively unused. We'll implement support for virtio-mem based on this
next.

Note that we won't wire up the virtio-pci variant (should currently be
impossible due to lack of support for MSI-X), but we'll add a safety net
to reject plugging them in the pre-plug handler.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: eb5c5f1ab479e9311d8e513e3eeafaf30f2b25b3
      
https://github.com/qemu/qemu/commit/eb5c5f1ab479e9311d8e513e3eeafaf30f2b25b3
  Author: David Hildenbrand <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M MAINTAINERS
    M hw/s390x/Kconfig
    M hw/s390x/meson.build
    A hw/s390x/virtio-ccw-mem.c
    A hw/s390x/virtio-ccw-mem.h
    M hw/virtio/virtio-mem.c

  Log Message:
  -----------
  s390x: virtio-mem support

Let's add our virtio-mem-ccw proxy device and wire it up. We should
be supporting everything (e.g., device unplug, "dynamic-memslots") that
we already support for the virtio-pci variant.

With a Linux guest that supports virtio-mem (and has automatic memory
onlining properly configured) the following example will work:

1. Start a VM with 4G initial memory and a virtio-mem device with a maximum
   capacity of 16GB:

   qemu/build/qemu-system-s390x \
    --enable-kvm \
    -m 4G,maxmem=20G \
    -nographic \
    -smp 8 \
    -hda Fedora-Server-KVM-40-1.14.s390x.qcow2 \
    -chardev socket,id=monitor,path=/var/tmp/monitor,server,nowait \
    -mon chardev=monitor,mode=readline \
    -object memory-backend-ram,id=mem0,size=16G,reserve=off \
    -device virtio-mem-ccw,id=vmem0,memdev=mem0,dynamic-memslots=on

2. Query the current size of virtio-mem device:

    (qemu) info memory-devices
    Memory device [virtio-mem]: "vmem0"
      memaddr: 0x100000000
      node: 0
      requested-size: 0
      size: 0
      max-size: 17179869184
      block-size: 1048576
      memdev: /objects/mem0

3. Request to grow it to 8GB (hotplug 8GB):

    (qemu) qom-set vmem0 requested-size 8G
    (qemu) info memory-devices
    Memory device [virtio-mem]: "vmem0"
      memaddr: 0x100000000
      node: 0
      requested-size: 8589934592
      size: 8589934592
      max-size: 17179869184
      block-size: 1048576
      memdev: /objects/mem0

4. Request to grow to 16GB (hotplug another 8GB):

    (qemu) qom-set vmem0 requested-size 16G
    (qemu) info memory-devices
    Memory device [virtio-mem]: "vmem0"
      memaddr: 0x100000000
      node: 0
      requested-size: 17179869184
      size: 17179869184
      max-size: 17179869184
      block-size: 1048576
      memdev: /objects/mem0

5. Try to hotunplug all memory again, shrinking to 0GB:

    (qemu) qom-set vmem0 requested-size 0G
    (qemu) info memory-devices
    Memory device [virtio-mem]: "vmem0"
      memaddr: 0x100000000
      node: 0
      requested-size: 0
      size: 0
      max-size: 17179869184
      block-size: 1048576
      memdev: /objects/mem0

6. If it worked, unplug the device

    (qemu) device_del vmem0
    (qemu) info memory-devices
    (qemu) object_del mem0

7. Hotplug a new device with a smaller capacity and directly size it to 1GB

    (qemu) object_add memory-backend-ram,id=mem0,size=8G,reserve=off
    (qemu) device_add virtio-mem-ccw,id=vmem0,memdev=mem0,\
                      dynamic-memslots=on,requested-size=1G
    (qemu) info memory-devices
    Memory device [virtio-mem]: "vmem0"
      memaddr: 0x100000000
      node: 0
      requested-size: 1073741824
      size: 1073741824
      max-size: 8589934592
      block-size: 1048576
      memdev: /objects/mem0

Trying to use a virtio-mem device backed by hugetlb into a !hugetlb VM
correctly results in the error:
   ... Memory device uses a bigger page size than initial memory

Note that the virtio-mem driver in Linux will supports 1 MiB (pageblock)
granularity.

Message-ID: <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>


  Commit: e2d98f257138b83b6a492d1da5847a7fe0930d10
      
https://github.com/qemu/qemu/commit/e2d98f257138b83b6a492d1da5847a7fe0930d10
  Author: Thomas Huth <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M meson.build

  Log Message:
  -----------
  meson.build: Disallow libnfs v6 to fix the broken macOS build

The macOS builds in our CI (and possibly other very recent distros)
are currently broken since the update to libnfs version 6 there.
That version apparently comes with a big API breakage. v5.0.3 was
the final release of the old API (see the libnfs commit here:
https://github.com/sahlberg/libnfs/commit/4379837 ).

Disallow version 6.x for now to get the broken CI job working
again. Once somebody had enough time to adapt our code in
block/nfs.c, we can revert this change again.

Message-ID: <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>


  Commit: 56ef123777b7a29f5b813696a69865d6033c3c78
      
https://github.com/qemu/qemu/commit/56ef123777b7a29f5b813696a69865d6033c3c78
  Author: Jean-Louis Dupond <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M qga/commands-linux.c

  Log Message:
  -----------
  qga: skip bind mounts in fs list

The filesystem list in build_fs_mount_list should skip bind mounts.
This because we end up in locking situations when doing fsFreeze. Like
mentioned in [1] and [2].

Next to that, the build_fs_mount_list call did a fallback via
build_fs_mount_list_from_mtab if mountinfo did not exist.
There it skipped bind mounts, but this is broken for newer OS.
This as mounts does not return the path of the bind mount but the
underlying dev/partition, so S_ISDIR will never return true in
dev_major_minor call.

This patch simply checks the existing devmajor:devminor tuple in the
mounts, and if it already exists, this means we have the same devices
mounted again, a bind mount. So skip this.

Same approach is used in open-vm-tools [3].

[1]: https://gitlab.com/qemu-project/qemu/-/issues/592
[2]: https://gitlab.com/qemu-project/qemu/-/issues/520
[3]: 
https://github.com/vmware/open-vm-tools/commit/d58847b497e212737007958c945af1df22a8ab58

Signed-off-by: Jean-Louis Dupond <[email protected]>
Reviewed-by: Konstantin Kostiuk <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Konstantin Kostiuk <[email protected]>


  Commit: 5788e9602416d24533a19d24b087d56a75119c36
      
https://github.com/qemu/qemu/commit/5788e9602416d24533a19d24b087d56a75119c36
  Author: Dehan Meng <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M qga/commands-win32.c

  Log Message:
  -----------
  qemu-ga-win: Fix a typo error

There is a typo error for api 'guest-get-osinfo',
the win2025's version in WIN_10_0_SERVER_VERSION_MATRIX
should be adjusted.

Signed-off-by: Dehan Meng <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Konstantin Kostiuk <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Konstantin Kostiuk <[email protected]>


  Commit: 2657a92b5479c8705b128ed1e55feb8960ed498a
      
https://github.com/qemu/qemu/commit/2657a92b5479c8705b128ed1e55feb8960ed498a
  Author: Michal Privoznik <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M qga/main.c

  Log Message:
  -----------
  qga: Don't access global variable in run_agent_once()

The run_agent_once() function is already given GAState via an
argument. There's no need to access the global ga_state variable
which points to the argument anyways (thanks to
initialize_agent()). Worse, some parts of the function use the
argument and the other use the global variable.  Stick with the
function argument.

Signed-off-by: Michal Privoznik <[email protected]>
Reviewed-by: Ján Tomko <[email protected]>
Reviewed-by: Konstantin Kostiuk <[email protected]>
Link: 
https://lore.kernel.org/r/8ae7f5d5032b14a5b956fe8aaf47bae5ca401699.1733414906.git.mpriv...@redhat.com
Signed-off-by: Konstantin Kostiuk <[email protected]>


  Commit: 877fad2a3e1a76fa3f9508b26858c6e659cc728f
      
https://github.com/qemu/qemu/commit/877fad2a3e1a76fa3f9508b26858c6e659cc728f
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M docs/system/arm/emulation.rst
    M hw/intc/arm_gicv3_its.c
    M target/arm/cpregs.h
    M target/arm/cpu-features.h
    M target/arm/helper.c
    M target/arm/helper.h
    M target/arm/tcg/a64.decode
    M target/arm/tcg/cpu64.c
    M target/arm/tcg/helper-a64.c
    M target/arm/tcg/helper-a64.h
    M target/arm/tcg/helper-sme.h
    M target/arm/tcg/helper-sve.h
    M target/arm/tcg/neon_helper.c
    M target/arm/tcg/op_helper.c
    M target/arm/tcg/sme_helper.c
    M target/arm/tcg/sve_helper.c
    M target/arm/tcg/tlb-insns.c
    M target/arm/tcg/translate-a64.c
    M target/arm/tcg/translate-vfp.c
    M target/arm/tcg/vec_helper.c
    M target/arm/vfp_helper.c
    M tests/functional/test_aarch64_sbsaref.py
    A tests/tcg/aarch64/system/feat-xs.c

  Log Message:
  -----------
  Merge tag 'pull-target-arm-20241217' of 
https://git.linaro.org/people/pmaydell/qemu-arm into staging

target-arm queue:
 * remove a line of redundant code
 * convert various TCG helper fns to use 'fpst' alias
 * Use float_status in helper_fcvtx_f64_to_f32
 * Use float_status in helper_vfp_fcvt{ds,sd}
 * Implement FEAT_XS
 * hw/intc/arm_gicv3_its: Zero initialize local DTEntry etc structs
 * tests/functional: update sbsa-ref firmware used in test

# -----BEGIN PGP SIGNATURE-----
#
# iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmdhsj0ZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3vldEACY/BJeDSfE3X6fi2qiVF+p
# hs2NaeiM6HS3+/1oPlPz7sW87cGV58hPW0vOCjZYlfw+Afv2wuL9zb2C7IV+PJOn
# Vy1L/tBezYvgBwi1+bRvLpCge3UKdbRNa6aowGmLnvcnQuZ6lOOcmQ8Jq/a5W1TM
# xOrvPYp0FbcfGXLcDLIluCozupsq4aJsh0gWayzr9zm2tWnzMAhb/GQLuCmLLn35
# pUiAI209xU393AOfdCpAmCGjDCqcqbjHpz0AqrIPtOwaDO3hRlJIMw1eGk2dS0BD
# R0vZG+WFSQMV972reVoTT83W7NmIeeqhZgeKDv2R347EHsbCKt5PIUpWX2zYvk+H
# rfCltOxFVWvJ0e33b9opk2/GfgckkTGw+6ZYMIdMm8UxABrdEaHcWCV0qMyLk2JH
# 4EKYlmKeR8yqkPRDbGkRVANEIDxRBmL96kN6il0wSM742y7UMwMzP3C344Jg0tf/
# AhGrwjsuRW8oeEZMgk9Z0i/J6q3CNxRQSVGGQtYsEt8fs5OXLltLrXEX+aZNF5ua
# ry5SfLWlwIR+0AO4oNaJqJYNQArqhzDUgsY4ryzrueZnaaMShobMn0AP2H3+/l4X
# W3wlIqOQ97ivk0Snc9WpDQyhPPOZuj4LN4IkTkodHu7+eoMrkvojf/BVc5kku2VL
# dE224ctbEbKsbydwubSVfQ==
# =Z/7q
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 17 Dec 2024 12:17:49 EST
# gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Peter Maydell <[email protected]>" [full]
# gpg:                 aka "Peter Maydell <[email protected]>" [full]
# gpg:                 aka "Peter Maydell <[email protected]>" 
[full]
# gpg:                 aka "Peter Maydell <[email protected]>" [unknown]
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* tag 'pull-target-arm-20241217' of 
https://git.linaro.org/people/pmaydell/qemu-arm:
  tests/functional: update sbsa-ref firmware used in test
  hw/intc/arm_gicv3_its: Zero initialize local DTEntry etc structs
  tests/tcg/aarch64: add system test for FEAT_XS
  target/arm: Enable FEAT_XS for the max cpu
  target/arm: Add decodetree entry for DSB nXS variant
  target/arm: Add ARM_CP_ADD_TLBI_NXS type flag to TLBI insns
  target/arm: Add ARM_CP_ADD_TLBI_NXS type flag for NXS insns
  target/arm: Implement fine-grained-trap handling for FEAT_XS
  target/arm: Use float_status in helper_vfp_fcvt{ds,sd}
  target/arm: Use float_status in helper_fcvtx_f64_to_f32
  target/arm: Convert neon_helper.c to use env alias
  target/arm: Convert vec_helper.c to use env alias
  target/arm: Convert sme_helper.c to fpst alias
  target/arm: Convert sve_helper.c to fpst alias
  target/arm: Convert neon_helper.c to fpst alias
  target/arm: Convert vec_helper.c to fpst alias
  target/arm: Convert helper-a64.c to fpst alias
  target/arm: Convert vfp_helper.c to fpst alias
  target/arm: remove redundant code

Signed-off-by: Stefan Hajnoczi <[email protected]>


  Commit: 866e82e36c778044364cbb0dfa9de1ad4177c74d
      
https://github.com/qemu/qemu/commit/866e82e36c778044364cbb0dfa9de1ad4177c74d
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M include/migration/misc.h
    A migration/block-active.c
    M migration/colo.c
    M migration/meson.build
    M migration/migration.c
    M migration/migration.h
    M migration/multifd-nocomp.c
    M migration/multifd-uadk.c
    M migration/multifd.c
    M migration/multifd.h
    M migration/ram.c
    M migration/ram.h
    M migration/rdma.h
    M migration/savevm.c
    M migration/trace-events
    M monitor/qmp-cmds.c
    M tests/qtest/migration/compression-tests.c

  Log Message:
  -----------
  Merge tag 'migration-20241217-pull-request' of 
https://gitlab.com/farosas/qemu into staging

Migration pull request

- Shameer's fixes for CONFIG_UADK code

- Peter's multifd sync cleanups, prereq. for VFIO and postcopy work

- Fabiano's fix for multifd regression in pre-9.0 -> post-9.1
  migrations (#2720)

- Fabiano's fix for s390x migration regression (#2704)

- Peter's fix for assertions during paused migrations; reworks
  late-block-activate logic (#2395, #686)

# -----BEGIN PGP SIGNATURE-----
#
# iQJEBAABCAAuFiEEqhtIsKIjJqWkw2TPx5jcdBvsMZ0FAmdhuLUQHGZhcm9zYXNA
# c3VzZS5kZQAKCRDHmNx0G+wxnW5sD/4pBiVV0uag46jX3GHGRnmYyasg9RlSWza1
# tO99aB8QERZdvszsbtnipoIRVCSmtcSYnZmYJaIiJv7e3pkJmV5W4RPXl3ZErGRo
# X7BQmjhEapPbcuyn4ZnsK2uS2StdwRpDc7b2g2MtCEQn4r7Q3iYLaCUjvK3zPQyv
# F54zOF1niAyXLSHLp55z1exQ2a5ySwKh8i9vL2ukBxIi3+YDqgJfnwvr9Xh5IiKR
# 3hD8JJxS3rp6wMWNxPJbzltPxKp14kR4eC2I79sOyS8rEd2zFJ1DDLbx3joCL4Lz
# 5hetS2JnN9DUHWgHUnH/Cqe2+I5oq3iDz94NoxEx90sCc/fvBgLDTeEJfsAEz2HX
# Q2GYP3EyvjJwcYVgTeFelwHiAcLwbGFo2VrplUgRdj5iVNji+OTd6WRTC9Ft4FQ/
# 7hzeDvE+D+2V+Vg1TX6QNlvKsc0VOGAcXdzZHhrzfAL1yjo/JnMr0NjpTsgO54KZ
# znrU4nW+iyipcpyMMe99w7rQBO/ph1Cr4B2EfwL++7WaNo1TMCxOyA0OVMXD77XB
# /JS23KuSAZsXU5STDwYYFfKuF6fJGubDjgFSJ0X3JDhidrs9pCAQxWFcatYS62D1
# J+f4OdRg0CBsAu1xqyCJtLP7TPYbRglvZ2RVNY+VUemFdRCNdmu4AmJ5Lttdg6pu
# BQk6iorI2Q==
# =P6t6
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 17 Dec 2024 12:45:25 EST
# gpg:                using RSA key AA1B48B0A22326A5A4C364CFC798DC741BEC319D
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Fabiano Rosas <[email protected]>" [unknown]
# gpg:                 aka "Fabiano Almeida Rosas <[email protected]>" 
[unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: AA1B 48B0 A223 26A5 A4C3  64CF C798 DC74 1BEC 319D

* tag 'migration-20241217-pull-request' of https://gitlab.com/farosas/qemu:
  tests/qtest/migration: Fix compile errors when CONFIG_UADK is set
  migration/block: Rewrite disk activation
  migration/block: Fix possible race with block_inactive
  migration/block: Apply late-block-active behavior to postcopy
  migration/block: Make late-block-active the default
  qmp/cont: Only activate disks if migration completed
  migration: Add helper to get target runstate
  s390x: Fix CSS migration
  migration/multifd: Fix compat with QEMU < 9.0
  migration/multifd: Document the reason to sync for save_setup()
  migration/multifd: Cleanup src flushes on condition check
  migration/multifd: Remove sync processing on postcopy
  migration/multifd: Unify RAM_SAVE_FLAG_MULTIFD_FLUSH messages
  migration/ram: Move RAM_SAVE_FLAG* into ram.h
  migration/multifd: Allow to sync with sender threads only
  migration/multifd: Further remove the SYNC on complete
  migration/multifd: Fix compile error caused by page_size usage

Signed-off-by: Stefan Hajnoczi <[email protected]>


  Commit: ea2026adb7acfb89b8a74b3cc8c1f1ab7c32be5d
      
https://github.com/qemu/qemu/commit/ea2026adb7acfb89b8a74b3cc8c1f1ab7c32be5d
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M MAINTAINERS
    M hw/s390x/Kconfig
    M hw/s390x/meson.build
    A hw/s390x/s390-hypercall.c
    A hw/s390x/s390-hypercall.h
    M hw/s390x/s390-skeys.c
    M hw/s390x/s390-stattrib-kvm.c
    M hw/s390x/s390-virtio-ccw.c
    R hw/s390x/s390-virtio-hcall.c
    R hw/s390x/s390-virtio-hcall.h
    M hw/s390x/sclp.c
    A hw/s390x/virtio-ccw-md-stubs.c
    A hw/s390x/virtio-ccw-md.c
    A hw/s390x/virtio-ccw-md.h
    A hw/s390x/virtio-ccw-mem.c
    A hw/s390x/virtio-ccw-mem.h
    M hw/virtio/Kconfig
    M hw/virtio/virtio-mem.c
    M include/hw/s390x/s390-virtio-ccw.h
    M include/hw/virtio/virtio-mem.h
    M target/s390x/cpu-sysemu.c
    M target/s390x/cpu.h
    M target/s390x/kvm/kvm.c
    M target/s390x/kvm/pv.c
    M target/s390x/tcg/misc_helper.c

  Log Message:
  -----------
  Merge tag 'mem-2024-12-18' of https://github.com/davidhildenbrand/qemu into 
staging

Hi,

"Host Memory Backends" and "Memory devices" queue ("mem"):
- Fixup handling of virtio-mem unplug during system resets, as
  preparation for s390x support (especially kdump in the Linux guest)
- virtio-mem support for s390x

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCAAvFiEEG9nKrXNcTDpGDfzKTd4Q9wD/g1oFAmdiqBwRHGRhdmlkQHJl
# ZGhhdC5jb20ACgkQTd4Q9wD/g1rkhA//XsuhaL43mS8ZofHg8ub9bIjj2QEpJDwZ
# EixBUz+V1ByXZ+buHY+lIFRwL+4rLgNFHDdic8D4EPg28zWRSX5CBNeiaf0th/lN
# e3PKkhPPIxCyKcUrM5wTa4dWzybw0R0qoC7gSvMyzEBQWQpGgjy359IDhuhhDscO
# egPgeZj4Jreypbxj9rmvXXEX6+T7ut5qbFtem6HhVIrV+/gSWT6ZHN6go8HdS0fu
# 7hPQCH737f8E17aK+R/Dlkhm9qdZOMLxbWEMUFPleGgxzsI5YodLTDlyFC0JQNRq
# tCn2cjFmEfJZF4W49vA5zuRJNuwOpCUKGXQcyJQD45Nilg7xu9yUYEWrBpjeDxVi
# jE3sf74NO2PvEnu7il+xIBqoTdFsTuT4RbeIFa+20sZIXUdgtm0c48RlIcFpSmgI
# ieiy1MGkNKDTbc7NrNtrmXEy19xQlRlVhmaguJtQZEN3f2RAwo6sScuCnJJ/5Kbk
# 5hFKI34xt7DvAyB6bYGaH6ZvCgC+RjJ7ah4wmAakUhpqnCCj9sVSzq8kstBQog9n
# NrsLb4JImF0L6jsYuVQJSFYdD7tDNhovUvOk/mLwWxH3GijsWoqxrzKfqlE5VBFz
# 6tu/RRtiwOaX4rNWW8RWSxAzLjhtKBPU6+JkWvweXe/6rIwV3RpUfx2d5ShcqnjV
# ocRTlWSBVmU=
# =7st4
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 18 Dec 2024 05:46:52 EST
# gpg:                using RSA key 1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A
# gpg:                issuer "[email protected]"
# gpg: Good signature from "David Hildenbrand <[email protected]>" [unknown]
# gpg:                 aka "David Hildenbrand <[email protected]>" 
[full]
# gpg:                 aka "David Hildenbrand <[email protected]>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 1BD9 CAAD 735C 4C3A 460D  FCCA 4DDE 10F7 00FF 835A

* tag 'mem-2024-12-18' of https://github.com/davidhildenbrand/qemu:
  s390x: virtio-mem support
  s390x/virtio-ccw: add support for virtio based memory devices
  s390x: remember the maximum page size
  s390x/pv: prepare for memory devices
  s390x/s390-virtio-ccw: prepare for memory devices
  s390x/s390-skeys: prepare for memory devices
  s390x/s390-stattrib-kvm: prepare for memory devices and sparse memory layouts
  s390x/s390-hypercall: introduce DIAG500 STORAGE_LIMIT
  s390x: introduce s390_get_memory_limit()
  s390x/s390-virtio-ccw: move setting the maximum guest size from sclp to 
machine code
  s390x: rename s390-virtio-hcall* to s390-hypercall*
  s390x/s390-virtio-hcall: prepare for more diag500 hypercalls
  s390x/s390-virtio-hcall: remove hypercall registration mechanism
  s390x/s390-virtio-ccw: don't crash on weird RAM sizes
  virtio-mem: unplug memory only during system resets, not device resets

Signed-off-by: Stefan Hajnoczi <[email protected]>


  Commit: 176e5abcc50bd880215b9fc1867679e09befdb24
      
https://github.com/qemu/qemu/commit/176e5abcc50bd880215b9fc1867679e09befdb24
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M MAINTAINERS
    M meson.build
    M tests/avocado/boot_linux_console.py
    R tests/avocado/hotplug_cpu.py
    R tests/avocado/intel_iommu.py
    M tests/functional/meson.build
    M tests/functional/qemu_test/__init__.py
    A tests/functional/qemu_test/archive.py
    M tests/functional/qemu_test/asset.py
    M tests/functional/qemu_test/cmd.py
    A tests/functional/qemu_test/decorators.py
    M tests/functional/qemu_test/linuxkernel.py
    M tests/functional/qemu_test/tesseract.py
    M tests/functional/qemu_test/testcase.py
    M tests/functional/qemu_test/tuxruntest.py
    A tests/functional/qemu_test/uncompress.py
    M tests/functional/qemu_test/utils.py
    M tests/functional/test_aarch64_aspeed.py
    M tests/functional/test_aarch64_raspi3.py
    M tests/functional/test_aarch64_raspi4.py
    M tests/functional/test_aarch64_sbsaref.py
    M tests/functional/test_aarch64_sbsaref_alpine.py
    M tests/functional/test_aarch64_sbsaref_freebsd.py
    M tests/functional/test_aarch64_virt.py
    M tests/functional/test_acpi_bits.py
    M tests/functional/test_alpha_clipper.py
    M tests/functional/test_arm_aspeed_ast1030.py
    M tests/functional/test_arm_aspeed_ast2500.py
    M tests/functional/test_arm_aspeed_ast2600.py
    M tests/functional/test_arm_aspeed_palmetto.py
    M tests/functional/test_arm_aspeed_rainier.py
    M tests/functional/test_arm_aspeed_romulus.py
    M tests/functional/test_arm_bflt.py
    M tests/functional/test_arm_bpim2u.py
    M tests/functional/test_arm_canona1100.py
    M tests/functional/test_arm_collie.py
    M tests/functional/test_arm_cubieboard.py
    M tests/functional/test_arm_emcraft_sf2.py
    M tests/functional/test_arm_integratorcp.py
    M tests/functional/test_arm_orangepi.py
    A tests/functional/test_arm_quanta_gsj.py
    M tests/functional/test_arm_raspi2.py
    M tests/functional/test_arm_smdkc210.py
    M tests/functional/test_arm_sx1.py
    M tests/functional/test_arm_vexpress.py
    A tests/functional/test_arm_virt.py
    M tests/functional/test_info_usernet.py
    A tests/functional/test_intel_iommu.py
    M tests/functional/test_linux_initrd.py
    M tests/functional/test_m68k_mcf5208evb.py
    M tests/functional/test_m68k_nextcube.py
    M tests/functional/test_m68k_q800.py
    M tests/functional/test_microblaze_s3adsp1800.py
    M tests/functional/test_microblazeel_s3adsp1800.py
    M tests/functional/test_mips64el_fuloong2e.py
    M tests/functional/test_mips64el_loongson3v.py
    M tests/functional/test_mips64el_malta.py
    M tests/functional/test_mips_malta.py
    M tests/functional/test_mipsel_malta.py
    M tests/functional/test_or1k_sim.py
    M tests/functional/test_ppc64_e500.py
    M tests/functional/test_ppc64_hv.py
    M tests/functional/test_ppc64_tuxrun.py
    M tests/functional/test_ppc_40p.py
    M tests/functional/test_ppc_amiga.py
    M tests/functional/test_ppc_bamboo.py
    M tests/functional/test_ppc_mac.py
    M tests/functional/test_ppc_mpc8544ds.py
    M tests/functional/test_ppc_virtex_ml507.py
    M tests/functional/test_rx_gdbsim.py
    M tests/functional/test_s390x_ccw_virtio.py
    M tests/functional/test_s390x_topology.py
    M tests/functional/test_sh4_r2d.py
    M tests/functional/test_sh4eb_r2d.py
    M tests/functional/test_sparc64_sun4u.py
    M tests/functional/test_sparc_sun4m.py
    M tests/functional/test_virtio_gpu.py
    A tests/functional/test_x86_64_hotplug_cpu.py
    M tests/functional/test_xtensa_lx60.py

  Log Message:
  -----------
  Merge tag 'pull-request-2024-12-18' of https://gitlab.com/thuth/qemu into 
staging

* Lots of functional test improvements (clean-ups, don't fail on
  temporary download errors, etc.)
* Convert some more avocado tests to the functional framework
* Disallow building with libnfs v6 due to an API breakage

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmdirOIRHHRodXRoQHJl
# ZGhhdC5jb20ACgkQLtnXdP5wLbU0NRAAke8X0B6OOD+99lY5nc7Hrh7N1m+sw5Lw
# TVwIpxdhxU11vgdlCodfdoVJCV1NGVHwkR57lLNr+bdspWDBBwlmUWn0+t2QCXGe
# oyQsV+boznsjG9pan6v6DcU/gOu7/7ZydhJi+M8Msf8ah0lcn/otAdC4ZFB93JLh
# 6xPnj69y8HomCW+wMyXl7WTjcWX0wQFzweEYY8p7X7p1rtjYyseiZlRjNAvPgTMI
# jznZ6v9/qU54xR9RnKdW+0m1Qu06nx26Wz+ZBlvrJS1Llloe23X9+LY1tDD0Xh1D
# 9P0v9PuaBWRRF+UjVjl37LMyn9h1aaKFKBoWQiKMbyvOVr4ncobjRgN8r5kdNxDP
# FZ/fA1GiX8O3foN9uB9JLKd6Hl49LAqQSPzAneEc3pfQLH3NdAjPxJDbJH5fyMa7
# qVOQC0Bdy8+2kCxFfKbemrwDOFcyq1fVYcADPDZySjMiPnwFJ1Qpni1tXY1PZ+Tl
# Q18AsFJanyAAn7L+8R3Yl54983SuR5eXIFxO+Tq9mw1V1V2h+Cm09HGcS8y5bxFG
# Xh+jhMsMB98NFLR87W6olwl57gKllSbTYuGtiz9TrbnuT/THhUJ0k/B76L7C9HWE
# ZefkFxC5Zy8jrcz3pgarO+19V+eXg5rwGtEngRQrji/3cY5CbK7Jeh5nvZQeASpb
# nZ/gJ/gC8Gs=
# =SWw6
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 18 Dec 2024 06:07:14 EST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Thomas Huth <[email protected]>" [full]
# gpg:                 aka "Thomas Huth <[email protected]>" [full]
# gpg:                 aka "Thomas Huth <[email protected]>" [full]
# gpg:                 aka "Thomas Huth <[email protected]>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* tag 'pull-request-2024-12-18' of https://gitlab.com/thuth/qemu: (38 commits)
  meson.build: Disallow libnfs v6 to fix the broken macOS build
  tests/functional: Convert the hotplug_cpu avocado test
  tests/functional: Convert the intel_iommu avocado test
  tests/functional: Add a helper function for retrieving the hostfwd port
  tests/functional: Convert the arm virt avocado test
  tests/functional: Convert the quanta-gsj avocado test
  MAINTAINERS: add myself as reviewer for functional test suite
  tests/functional: ignore errors when caching assets, except for 404
  tests/functional: skip tests if assets are not available
  tests/functional: remove now unused 'run_cmd' helper
  tests/functional: replace 'run_cmd' with subprocess helpers
  tests/functional: drop back compat imports from utils.py
  tests/functional: convert tests to new uncompress helper
  tests/functional: add 'uncompress' to QemuBaseTest
  tests/functional: add a generalized uncompress helper
  tests/functional: convert tests to new archive_extract helper
  tests/functional: add 'archive_extract' to QemuBaseTest
  tests/functional: add a generalized archive_extract
  tests/functional: let cpio_extract accept filenames
  tests/functional: add common deb_extract helper
  ...

Signed-off-by: Stefan Hajnoczi <[email protected]>


  Commit: 43699a10a7e97a84276f55a9e060f4adfe820930
      
https://github.com/qemu/qemu/commit/43699a10a7e97a84276f55a9e060f4adfe820930
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2024-12-18 (Wed, 18 Dec 2024)

  Changed paths:
    M qga/commands-linux.c
    M qga/commands-win32.c
    M qga/main.c

  Log Message:
  -----------
  Merge tag 'qga-pull-2024-12-18' of https://github.com/kostyanf14/qemu into 
staging

qga-pull-2024-12-18

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEwsLBCepDxjwUI+uE711egWG6hOcFAmdit4wACgkQ711egWG6
# hOfQ0xAAjByk0U6cTjIOTgNb3GDEE65CnL/dqiriOtmTPdbmVT4WqkQjPNG8REge
# lA0eDr7oBLWn/Yku7nqMjn4IcnBop92h9jL3RpQNeIbvPdQcpaPEORCCulky58l0
# 0hM/SnhBmRomZ2CwWu4mvl4bKRzn7WCg7mdPbBZEtvAfNdiUGOH5nwdUoJKtcPTj
# OeEOTxcN+FeYNyMRqCUJ4S44OAIh7WMbi4h/0gxufU8KFGYbQphk4xITIBFXBfIf
# oRxqwSMTLXG7nzegfad4HGX2pFUR6Omtmlgn3Cvh8UF8xEJIJIk1mA6Wd2R2am9j
# pdyKwo25K6FSkSvH43cH/IXTaQVvfCLIOOUA7rlAhfWrDsvRuisfh75T9jMOYH5S
# /jB9Vjd8E85qpTwQD2HuphJMzFRpWEeOeMJ2jWHWuMj+d3lHrR3hAmpGFBy7Xmxb
# KyVkUBgaulqoPQqt7C1urNxHjr6FoWDU1AqIAYQdqOJ5TLh/j5o6oz2ZJDOT+RiG
# NZLhTJWtjwA3Rbu1BcF2eyYv20cqeHVAFhS5tJdXOoHyqoJ7Hf+4G56zhXgjxfV9
# 60W3ETQwUPrrUtmb+qDZzmEagSQjj3UpMGEQFWXHKx4zBBXYeYU9O0Xvy04RGh+L
# PV4Y35yPegQ69GbRYUAagXk8Rh3Gbh2l4iFQz+QYCvd1b2CxYFg=
# =nY8c
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 18 Dec 2024 06:52:44 EST
# gpg:                using RSA key C2C2C109EA43C63C1423EB84EF5D5E8161BA84E7
# gpg: Good signature from "Kostiantyn Kostiuk (Upstream PR sign) 
<[email protected]>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: C2C2 C109 EA43 C63C 1423  EB84 EF5D 5E81 61BA 84E7

* tag 'qga-pull-2024-12-18' of https://github.com/kostyanf14/qemu:
  qga: Don't access global variable in run_agent_once()
  qemu-ga-win: Fix a typo error
  qga: skip bind mounts in fs list

Signed-off-by: Stefan Hajnoczi <[email protected]>


Compare: https://github.com/qemu/qemu/compare/8032c78e556c...43699a10a7e9

To unsubscribe from these emails, change your notification settings at 
https://github.com/qemu/qemu/settings/notifications

Reply via email to