Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: ff871d0462d0a7ebdbfadf8c8d6c3726af507f0a
      
https://github.com/qemu/qemu/commit/ff871d0462d0a7ebdbfadf8c8d6c3726af507f0a
  Author: Alexander Graf <[email protected]>
  Date:   2024-12-30 (Mon, 30 Dec 2024)

  Changed paths:
    M hw/arm/sbsa-ref.c
    M hw/arm/virt.c
    M hw/i386/microvm.c
    M hw/loongarch/virt.c
    M hw/mips/loongson3_virt.c
    M hw/openrisc/virt.c
    M hw/pci-host/gpex.c
    M hw/riscv/virt.c
    M hw/xen/xen-pvh-common.c
    M hw/xtensa/virt.c
    M include/hw/pci-host/gpex.h

  Log Message:
  -----------
  hw/pci-host/gpex: Allow more than 4 legacy IRQs

Some boards such as vmapple don't do real legacy PCI IRQ swizzling.
Instead, they just keep allocating more board IRQ lines for each new
legacy IRQ. Let's support that mode by giving instantiators a new
"nr_irqs" property they can use to support more than 4 legacy IRQ lines.
In this mode, GPEX will export more IRQ lines, one for each device.

Signed-off-by: Alexander Graf <[email protected]>
Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Akihiko Odaki <[email protected]>
Tested-by: Akihiko Odaki <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: d8d17d2bf6181cdc9b8ef3db862006ddb6af12d4
      
https://github.com/qemu/qemu/commit/d8d17d2bf6181cdc9b8ef3db862006ddb6af12d4
  Author: Michael Tokarev <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M block/vvfat.c

  Log Message:
  -----------
  Revert "vvfat: fix ubsan issue in create_long_filename"

This reverts commit 0cb3ff7c22671aa1e1e227318799ccf6762c3bea.

The original code was right in that long name in LFN directory
entry uses other parts of the entry for the name too, not just
the original "name" field.  So it is wrong to limit the offset
to be within the name field.  Some other mechanism is needed
to fix the ubsan report and whole messy usage of bytes past the
given field.

Reported-by: Volker Rümelin <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>


  Commit: e6c33efed3ca8ffbf89f0e1dbeac1a0e32d0f8b7
      
https://github.com/qemu/qemu/commit/e6c33efed3ca8ffbf89f0e1dbeac1a0e32d0f8b7
  Author: Gustavo Romero <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M docs/system/device-emulation.rst
    A docs/system/devices/ivshmem-flat.rst
    M hw/misc/Kconfig
    A hw/misc/ivshmem-flat.c
    M hw/misc/meson.build
    M hw/misc/trace-events
    A include/hw/misc/ivshmem-flat.h

  Log Message:
  -----------
  hw/misc/ivshmem-flat: Add ivshmem-flat device

Add a new device, ivshmem-flat, which is similar to the ivshmem PCI but
does not require a PCI bus. It's meant to be used on machines like those
with Cortex-M MCUs, which usually lack a PCI/PCIe bus, e.g. lm3s6965evb
and mps2-an385.

The device currently only supports the sysbus bus.

The new device, just like the ivshmem PCI device, supports both peer
notification via hardware interrupts and shared memory.

The device shared memory size can be set using the 'shmem-size' option
and it defaults to 4 MiB, which is the default size of shmem allocated
by the ivshmem server.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1134
Signed-off-by: Gustavo Romero <[email protected]>
[PMD: Rebased updating Property and using DEFINE_TYPES macro]
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-ID: <[email protected]>


  Commit: 4daf88c16550a07aa5f228aa1b2660ea1fa1ddc1
      
https://github.com/qemu/qemu/commit/4daf88c16550a07aa5f228aa1b2660ea1fa1ddc1
  Author: Gustavo Romero <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    A hw/misc/ivshmem-pci.c
    R hw/misc/ivshmem.c
    M hw/misc/meson.build

  Log Message:
  -----------
  hw/misc/ivshmem: Rename ivshmem to ivshmem-pci

Because now there is also an MMIO ivshmem device (ivshmem-flat.c), and
ivshmem.c is a PCI specific implementation, rename it to ivshmem-pci.c.

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


  Commit: 9d59b65d82415a39d862e996770c8561ef8f30b5
      
https://github.com/qemu/qemu/commit/9d59b65d82415a39d862e996770c8561ef8f30b5
  Author: Guenter Roeck <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/usb/hcd-uhci.c

  Log Message:
  -----------
  hw/usb/uhci: checkpatch cleanup

Fix reported checkpatch issues to prepare for next patches
in the series.

No functional change.

Signed-off-by: Guenter Roeck <[email protected]>
Reviewed-by: Cédric Le Goater <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: d826e47404cdf4f462a3f27b2f47455f21e7764e
      
https://github.com/qemu/qemu/commit/d826e47404cdf4f462a3f27b2f47455f21e7764e
  Author: Guenter Roeck <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/usb/hcd-uhci.c
    M include/hw/usb/uhci-regs.h

  Log Message:
  -----------
  hw/usb/uhci: Introduce and use register defines

Introduce defines for UHCI registers to simplify adding register access
in subsequent patches of the series.

No functional change.

Signed-off-by: Guenter Roeck <[email protected]>
Reviewed-by: Cédric Le Goater <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 8f27e70e3bcffe3e3d7236f62d50156555043061
      
https://github.com/qemu/qemu/commit/8f27e70e3bcffe3e3d7236f62d50156555043061
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/microblaze/boot.c
    M hw/microblaze/boot.h
    M hw/microblaze/petalogix_ml605_mmu.c
    M hw/microblaze/petalogix_s3adsp1800_mmu.c
    M hw/microblaze/xlnx-zynqmp-pmu.c

  Log Message:
  -----------
  hw/microblaze: Propagate CPU endianness to microblaze_load_kernel()

Pass vCPU endianness as argument so we can load kernels
with different endianness (different from the qemu-system-binary
builtin one).

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Anton Johansson <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Reviewed-by: Edgar E. Iglesias <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-Id: <[email protected]>


  Commit: a115ab5ba30ae78efdf346df594940042b69aa27
      
https://github.com/qemu/qemu/commit/a115ab5ba30ae78efdf346df594940042b69aa27
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/i386/kvm/apic.c
    M hw/i386/pc.c
    M hw/i386/vapic.c
    M hw/i386/xen/xen_apic.c
    M hw/i386/xen/xen_platform.c

  Log Message:
  -----------
  hw/i386: Mark devices as little-endian

These devices are only used by the X86 targets, which are only
built as little-endian. Therefore the DEVICE_NATIVE_ENDIAN
definition expand to DEVICE_LITTLE_ENDIAN (besides, the
DEVICE_BIG_ENDIAN case isn't tested). Simplify directly using
DEVICE_LITTLE_ENDIAN.

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


  Commit: 625a975f67314a91084e59e2320c910b4129cbaf
      
https://github.com/qemu/qemu/commit/625a975f67314a91084e59e2320c910b4129cbaf
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/tricore/tricore_testdevice.c

  Log Message:
  -----------
  hw/tricore: Mark devices as little-endian

These devices are only used by the TriCore target, which is
only built as little-endian. Therefore the DEVICE_NATIVE_ENDIAN
definition expand to DEVICE_LITTLE_ENDIAN (besides, the
DEVICE_BIG_ENDIAN case isn't tested). Simplify directly using
DEVICE_LITTLE_ENDIAN.

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


  Commit: e72eee9684b5eca48815e762ad097101c487514f
      
https://github.com/qemu/qemu/commit/e72eee9684b5eca48815e762ad097101c487514f
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/openrisc/openrisc_sim.c
    M hw/openrisc/virt.c

  Log Message:
  -----------
  hw/openrisc: Mark devices as big-endian

The openrisc little-endian control is in a control register:
SR[LEE] (which we do not implement at present).

These devices are only used by the OpenRISC target, which is
only built as big-endian. Therefore the DEVICE_NATIVE_ENDIAN
definition expand to DEVICE_BIG_ENDIAN (besides, the
DEVICE_LITTLE_ENDIAN case isn't tested). Simplify directly
using DEVICE_BIG_ENDIAN.

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


  Commit: eba75400f37d4b80835b371d834c9d94a52063a6
      
https://github.com/qemu/qemu/commit/eba75400f37d4b80835b371d834c9d94a52063a6
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/sparc/sun4m_iommu.c
    M hw/sparc64/sun4u.c

  Log Message:
  -----------
  hw/sparc: Mark devices as big-endian

These devices are only used by the SPARC targets, which are
only built as big-endian. Therefore the DEVICE_NATIVE_ENDIAN
definition expand to DEVICE_BIG_ENDIAN (besides, the
DEVICE_LITTLE_ENDIAN case isn't tested). Simplify directly
using DEVICE_BIG_ENDIAN.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Mark Cave-Ayland <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-Id: <[email protected]>


  Commit: 2f44fddd191d002cbd9e63c02e1048a8d076b6fa
      
https://github.com/qemu/qemu/commit/2f44fddd191d002cbd9e63c02e1048a8d076b6fa
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/net/trace-events
    M hw/net/xilinx_ethlite.c

  Log Message:
  -----------
  hw/net/xilinx_ethlite: Convert some debug logs to trace events

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Edgar E. Iglesias <[email protected]>
Message-Id: <[email protected]>


  Commit: 9dd886c04d3ce759fa1bed3bd537ba8f6782285d
      
https://github.com/qemu/qemu/commit/9dd886c04d3ce759fa1bed3bd537ba8f6782285d
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/net/xilinx_ethlite.c

  Log Message:
  -----------
  hw/net/xilinx_ethlite: Remove unuseful debug logs

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Edgar E. Iglesias <[email protected]>
Message-Id: <[email protected]>


  Commit: 0fb867ed63dc14086e74c97865530bc69866b060
      
https://github.com/qemu/qemu/commit/0fb867ed63dc14086e74c97865530bc69866b060
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/net/xilinx_ethlite.c

  Log Message:
  -----------
  hw/net/xilinx_ethlite: Update QOM style

Use XlnxXpsEthLite typedef, OBJECT_DECLARE_SIMPLE_TYPE macro;
convert type_init() to DEFINE_TYPES().

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Edgar E. Iglesias <[email protected]>
Message-Id: <[email protected]>


  Commit: 7eb77fa4cd88bd70f68a603aa829207bf403e987
      
https://github.com/qemu/qemu/commit/7eb77fa4cd88bd70f68a603aa829207bf403e987
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/net/xilinx_ethlite.c

  Log Message:
  -----------
  hw/net/xilinx_ethlite: Correct maximum RX buffer size

The current max RX bufsize is set to 0x800. This is
invalid, since it contains the MMIO registers region.
Add the correct definition (valid for both TX & RX,
see datasheet p. 20, Table 11 "XPS Ethernet Lite MAC
Memory Map") and use it.

Reviewed-by: Edgar E. Iglesias <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <[email protected]>


  Commit: 0798e09f3badf25a5b490ab0146b0d41ae78a798
      
https://github.com/qemu/qemu/commit/0798e09f3badf25a5b490ab0146b0d41ae78a798
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/net/xilinx_ethlite.c

  Log Message:
  -----------
  hw/net/xilinx_ethlite: Rename rxbuf -> port_index

'rxbuf' is the index of the dual port RAM used.
Rename it as 'port_index'.

Reviewed-by: Edgar E. Iglesias <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <[email protected]>


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

  Changed paths:
    M hw/nvram/fw_cfg.c

  Log Message:
  -----------
  fw_cfg: Don't set callback_opaque NULL in fw_cfg_modify_bytes_read()

On arm/virt platform, Chen Xiang reported a Guest crash while
attempting the below steps,

1. Launch the Guest with nvdimm=on
2. Hot-add a NVDIMM dev
3. Reboot
4. Guest boots fine.
5. Reboot again.
6. Guest boot fails.

QEMU_EFI reports the below error:
ProcessCmdAddPointer: invalid pointer value in "etc/acpi/tables"
OnRootBridgesConnected: InstallAcpiTables: Protocol Error

Debugging shows that on first reboot(after hot adding NVDIMM),
Qemu updates the etc/table-loader len,

qemu_ram_resize()
  fw_cfg_modify_file()
     fw_cfg_modify_bytes_read()

And in fw_cfg_modify_bytes_read() we set the "callback_opaque" for
the key entry to NULL. Because of this, on the second reboot,
virt_acpi_build_update() is called with a NULL "build_state" and
returns without updating the ACPI tables. This seems to be
upsetting the firmware.

To fix this, don't change the callback_opaque in fw_cfg_modify_bytes_read().

Fixes: bdbb5b1706d165 ("fw_cfg: add fw_cfg_machine_reset function")
Reported-by: chenxiang <[email protected]>
Acked-by: Igor Mammedov <[email protected]>
Acked-by: Gerd Hoffmann <[email protected]>
Signed-off-by: Shameer Kolothum <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 3154922c7fb8a62ebdcf7fe65e11cd4115207150
      
https://github.com/qemu/qemu/commit/3154922c7fb8a62ebdcf7fe65e11cd4115207150
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/misc/vmcoreinfo.c

  Log Message:
  -----------
  hw/misc/vmcoreinfo: Declare QOM type using DEFINE_TYPES macro

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


  Commit: 924e1be17571968f81ef0bde87729678c201df21
      
https://github.com/qemu/qemu/commit/924e1be17571968f81ef0bde87729678c201df21
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/misc/vmcoreinfo.c

  Log Message:
  -----------
  hw/misc/vmcoreinfo: Rename opaque pointer as 'opaque'

Both QEMUResetHandler and FWCfgWriteCallback take an opaque
pointer argument, no need to cast.

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


  Commit: 8c6619f3e692c5173c9f4919dbf99fb14dc0b7e9
      
https://github.com/qemu/qemu/commit/8c6619f3e692c5173c9f4919dbf99fb14dc0b7e9
  Author: Philippe Mathieu-Daudé <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/i386/amd_iommu.c

  Log Message:
  -----------
  hw/i386/amd_iommu: Simplify non-KVM checks on XTSup feature

Generic code wanting to access KVM specific methods should
do so being protected by the 'kvm_enabled()' helper.

Doing so avoid link failures when optimization is disabled
(using --enable-debug), see for example commits c04cfb4596a
("hw/i386: fix short-circuit logic with non-optimizing builds")
and 0266aef8cd6 ("amd_iommu: Fix kvm_enable_x2apic link error
with clang in non-KVM builds").

XTSup feature depends on KVM, so protect the whole block
checking the XTSup feature with a check on whether KVM is
enabled.

Since x86_cpus_init() already checks APIC ID > 255 imply
kernel support for irqchip and X2APIC, remove the confuse
and unlikely reachable "AMD IOMMU xtsup=on requires support
on the KVM side" message.

Fix a type in "configuration" in error message.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Vasant Hegde <[email protected]>
Message-Id: <[email protected]>


  Commit: 12ed6aca7ca328a12e235f4daa9824873da60315
      
https://github.com/qemu/qemu/commit/12ed6aca7ca328a12e235f4daa9824873da60315
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/block/virtio-blk.c

  Log Message:
  -----------
  hw/block/virtio-blk: Replaces request free function with g_free

The virtio_blk_free_request() function has been a 1-liner forwarding
to g_free() for a while now. We may as well call g_free on the request
pointer directly.

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Akihiko Odaki <[email protected]>
Tested-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 92270bdff02bc6ba77a091f066576f96d5a96f7b
      
https://github.com/qemu/qemu/commit/92270bdff02bc6ba77a091f066576f96d5a96f7b
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/usb/hcd-xhci-nec.c
    M hw/usb/hcd-xhci-pci.c

  Log Message:
  -----------
  hw/usb/hcd-xhci-pci: Move msi/msix properties from NEC to superclass

The NEC XHCI controller exposes the underlying PCI device's msi and
msix properties, but the superclass and thus the qemu-xhci device do
not. There does not seem to be any obvious reason for this limitation.
This change moves these properties to the superclass so they are
exposed by both PCI XHCI device variants.

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 916bf7f93793df8690f48111207961a85f5a25b1
      
https://github.com/qemu/qemu/commit/916bf7f93793df8690f48111207961a85f5a25b1
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/usb/hcd-xhci.c

  Log Message:
  -----------
  hw/usb/hcd-xhci: Unimplemented/guest error logging for port MMIO

The XHCI device code uses tracing rather than logging on various code
paths that are so far unimplemented. In some cases, these code paths
actually indicate faulty guest software. This patch switches instances
in the read and write handlers for the port MMIO region to use
qemu_log_mask() with LOG_UNIMP or LOG_GUEST_ERROR, as appropriate in
each case.

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: f5ab12caba4f1656479c1feb5248beac1c833243
      
https://github.com/qemu/qemu/commit/f5ab12caba4f1656479c1feb5248beac1c833243
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M include/qemu-main.h
    M system/main.c
    M tests/qtest/fuzz/fuzz.c
    M ui/cocoa.m
    M ui/gtk.c
    M ui/sdl2.c

  Log Message:
  -----------
  ui & main loop: Redesign of system-specific main thread event handling

macOS's Cocoa event handling must be done on the initial (main) thread
of the process. Furthermore, if library or application code uses
libdispatch, the main dispatch queue must be handling events on the main
thread as well.

So far, this has affected Qemu in both the Cocoa and SDL UIs, although
in different ways: the Cocoa UI replaces the default qemu_main function
with one that spins Qemu's internal main event loop off onto a
background thread. SDL (which uses Cocoa internally) on the other hand
uses a polling approach within Qemu's main event loop. Events are
polled during the SDL UI's dpy_refresh callback, which happens to run
on the main thread by default.

As UIs are mutually exclusive, this works OK as long as nothing else
needs platform-native event handling. In the next patch, a new device is
introduced based on the ParavirtualizedGraphics.framework in macOS.
This uses libdispatch internally, and only works when events are being
handled on the main runloop. With the current system, it works when
using either the Cocoa or the SDL UI. However, it does not when running
headless. Moreover, any attempt to install a similar scheme to the
Cocoa UI's main thread replacement fails when combined with the SDL
UI.

This change tidies up main thread management to be more flexible.

 * The qemu_main global function pointer is a custom function for the
   main thread, and it may now be NULL. When it is, the main thread
   runs the main Qemu loop. This represents the traditional setup.
 * When non-null, spawning the main Qemu event loop on a separate
   thread is now done centrally rather than inside the Cocoa UI code.
 * For most platforms, qemu_main is indeed NULL by default, but on
   Darwin, it defaults to a function that runs the CFRunLoop.
 * The Cocoa UI sets qemu_main to a function which runs the
   NSApplication event handling runloop, as is usual for a Cocoa app.
 * The SDL UI overrides the qemu_main function to NULL, thus
   specifying that Qemu's main loop must run on the main
   thread.
 * The GTK UI also overrides the qemu_main function to NULL.
 * For other UIs, or in the absence of UIs, the platform's default
   behaviour is followed.

This means that on macOS, the platform's runloop events are always
handled, regardless of chosen UI. The new PV graphics device will
thus work in all configurations. There is no functional change on other
operating systems.

Implementing this via a global function pointer variable is a bit
ugly, but it's probably worth investigating the existing UI thread rule
violations in the SDL (e.g. #2537) and GTK+ back-ends. Fixing those
issues might precipitate requirements similar but not identical to those
of the Cocoa UI; hopefully we'll see some kind of pattern emerge, which
can then be used as a basis for an overhaul. (In fact, it may turn
out to be simplest to split the UI/native platform event thread from the
QEMU main event loop on all platforms, with any UI or even none at all.)

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Akihiko Odaki <[email protected]>
Tested-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
[PMD: Declare 'qemu_main' symbol in tests/qtest/fuzz/fuzz.c,
      add missing g_assert_not_reached() call in main()]
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 2352159c97a1fd245e998daafa08fcaaf57d4fa8
      
https://github.com/qemu/qemu/commit/2352159c97a1fd245e998daafa08fcaaf57d4fa8
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/display/Kconfig
    A hw/display/apple-gfx-mmio.m
    A hw/display/apple-gfx.h
    A hw/display/apple-gfx.m
    M hw/display/meson.build
    M hw/display/trace-events
    M meson.build

  Log Message:
  -----------
  hw/display/apple-gfx: Introduce ParavirtualizedGraphics.Framework support

MacOS provides a framework (library) that allows any vmm to implement a
paravirtualized 3d graphics passthrough to the host metal stack called
ParavirtualizedGraphics.Framework (PVG). The library abstracts away
almost every aspect of the paravirtualized device model and only provides
and receives callbacks on MMIO access as well as to share memory address
space between the VM and PVG.

This patch implements a QEMU device that drives PVG for the VMApple
variant of it.

Signed-off-by: Alexander Graf <[email protected]>
Co-authored-by: Alexander Graf <[email protected]>

Subsequent changes:

 * Cherry-pick/rebase conflict fixes, API use updates.
 * Moved from hw/vmapple/ (useful outside that machine type)
 * Overhaul of threading model, many thread safety improvements.
 * Asynchronous rendering.
 * Memory and object lifetime fixes.
 * Refactoring to split generic and (vmapple) MMIO variant specific
   code.

Implementation wise, most of the complexity lies in the differing threading
models of ParavirtualizedGraphics.framework, which uses libdispatch and
internal locks, versus QEMU, which heavily uses the BQL, especially during
memory-mapped device I/O. Great care has therefore been taken to prevent
deadlocks by never calling into PVG methods while holding the BQL, and
similarly never acquiring the BQL in a callback from PVG. Different strategies
have been used (libdispatch, blocking and non-blocking BHs, RCU, etc.)
depending on the specific requirements at each framework entry and exit point.

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Akihiko Odaki <[email protected]>
Tested-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
[PMD: Re-ordered imported headers, style fixups]
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: b21f17cce561316f1eb1917a4ca660e65c75c420
      
https://github.com/qemu/qemu/commit/b21f17cce561316f1eb1917a4ca660e65c75c420
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/display/Kconfig
    A hw/display/apple-gfx-pci.m
    M hw/display/apple-gfx.h
    M hw/display/meson.build

  Log Message:
  -----------
  hw/display/apple-gfx: Adds PCI implementation

This change wires up the PCI variant of the paravirtualised
graphics device, mainly useful for x86-64 macOS guests, implemented
by macOS's ParavirtualizedGraphics.framework. It builds on code
shared with the vmapple/mmio variant of the PVG device.

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: bb43a2342ddf57e6cd4f24161ee4e641cfbcceca
      
https://github.com/qemu/qemu/commit/bb43a2342ddf57e6cd4f24161ee4e641cfbcceca
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/display/apple-gfx-mmio.m
    M hw/display/apple-gfx-pci.m
    M hw/display/apple-gfx.h
    M hw/display/apple-gfx.m
    M hw/display/trace-events

  Log Message:
  -----------
  hw/display/apple-gfx: Adds configurable mode list

This change adds a property 'display_modes' on the graphics device
which permits specifying a list of display modes. (screen resolution
and refresh rate)

The property is an array of a custom type to make the syntax slightly
less awkward to use, for example:

-device '{"driver":"apple-gfx-pci", "display-modes":["1920x1080@60", 
"3840x2160@60"]}'

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Akihiko Odaki <[email protected]>
Tested-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 67e908c936b5f568b2ee913c1558e0235cd96293
      
https://github.com/qemu/qemu/commit/67e908c936b5f568b2ee913c1558e0235cd96293
  Author: Phil Dennis-Jordan <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: Add myself as maintainer for apple-gfx, reviewer for HVF

I'm happy to take responsibility for the macOS PV graphics code. As
HVF patches don't seem to get much attention at the moment, I'm also
adding myself as designated reviewer for HVF and x86 HVF to try and
improve that.

Signed-off-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Roman Bolshakov <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 79b6a98587c65c8b8fdde8eb778396f1fc98a852
      
https://github.com/qemu/qemu/commit/79b6a98587c65c8b8fdde8eb778396f1fc98a852
  Author: William Hooper <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M net/vmnet-common.m

  Log Message:
  -----------
  net/vmnet: Pad short Ethernet frames

At least on macOS 12.7.2, vmnet doesn't pad Ethernet frames, such as the
host's ARP replies, to the minimum size (60 bytes before the frame check
sequence) defined in IEEE Std 802.3-2022, so guests' Ethernet device
drivers may drop them with "frame too short" errors.

This patch calls eth_pad_short_frame() to add padding, as in net/tap.c
and net/slirp.c. Thanks to Bin Meng, Philippe Mathieu-Daudé, and Phil
Dennis-Jordan for reviewing earlier versions.

Signed-off-by: William Hooper <[email protected]>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2058
Reviewed-by: Phil Dennis-Jordan <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: c6f59e3b68abefc1f6942d4b4e3063d96d903b27
      
https://github.com/qemu/qemu/commit/c6f59e3b68abefc1f6942d4b4e3063d96d903b27
  Author: Hyman Huang <[email protected]>
  Date:   2024-12-31 (Tue, 31 Dec 2024)

  Changed paths:
    M hw/display/qxl.c

  Log Message:
  -----------
  hw/display/qxl: Do not use C99 // comments

Do not use C99 // comments to fix the checkpatch.pl error

Signed-off-by: Hyman Huang <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-ID: 
<7d287eaf00e0b52b600431efd350b15a0b5b3544.1734633496.git.yong.hu...@smartx.com>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>


  Commit: 17cc8772ae89a4186b6538fa1ed4ef3f46359ecd
      
https://github.com/qemu/qemu/commit/17cc8772ae89a4186b6538fa1ed4ef3f46359ecd
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-01-01 (Wed, 01 Jan 2025)

  Changed paths:
    M block/vvfat.c

  Log Message:
  -----------
  Merge tag 'pull-trivial-patches' of https://gitlab.com/mjt0k/qemu into staging

trivial patches for 2024-12-31

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCgAdFiEEZKoqtTHVaQM2a/75gqpKJDselHgFAmd0C88ACgkQgqpKJDse
# lHjRoxAAgfdMuMScLk4K4OprUfTEyPIT2Fmp2sAcMqpciQO0JDP6RIyKbt+GVyK5
# aqYWwRxjBhwlmbHQH8TaFkdbv5SSZIHwU5087QP09YDVzlmSOfF+/SySUC7H/jKL
# 4zgumF2lc0+P5OftAbnrU8UlrapTlkxcI8sEBSl5Mz7NOv7cCoVzGu0KnlMQyh8q
# nrdyk7QJl/HdF4mMTlTtnNCcr5oz7wAKadoFS40pIHLU9jt49s2OyQLL2OTEjF30
# yAM5EULfoWYbUk6GBH55ZzBSIL1g4U53khDzi3/i8b8HMUU4c2VHueipZB51k1Xx
# KcK2CkRMtK1/UCQ5J7RL6X6GwJxXfQ2wYprEpcixxah9Pl99dTqUh3Uko58jglGt
# uDoIoiUyIJBUOedlZdeapH5BbesexwrM6x6bIVcluVy3l/IuDZ1UfIASxRgdqkEN
# kBGJhK01S3hZT0chxVIOXCB6NbOj0IF7D/Wh3lB/nuP9QwizaiK3eT9ThJYKERSC
# x69EKlsvwcrb+8HL8H3hfQ9CbuNru9mrnifFLntSaQdMXg5P0/mUb+sEs/cgtB+j
# 8tVYYEVOa4JKK2O+SVxt/o+JMZcFxOMAwEwRnGjokvY3uhWJdgSieUC5ZbKQyxF6
# JqK0os12p2LUbnXWPm9cbA4s8bEnu7cjeNwGEPhwzJnQIre1oUw=
# =eAHD
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 31 Dec 2024 10:20:47 EST
# gpg:                using RSA key 64AA2AB531D56903366BFEF982AA4A243B1E9478
# gpg: Good signature from "Michael Tokarev <[email protected]>" [unknown]
# gpg:                 aka "Michael Tokarev <[email protected]>" [unknown]
# gpg:                 aka "Michael Tokarev <[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: 9D8B E14E 3F2A 9DD7 9199  28F1 61AD 3D98 ECDF 2C8E
#      Subkey fingerprint: 64AA 2AB5 31D5 6903 366B  FEF9 82AA 4A24 3B1E 9478

* tag 'pull-trivial-patches' of https://gitlab.com/mjt0k/qemu:
  Revert "vvfat: fix ubsan issue in create_long_filename"

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


  Commit: 8b70d7f2071e2db51b1910502bfb7f84ebf926be
      
https://github.com/qemu/qemu/commit/8b70d7f2071e2db51b1910502bfb7f84ebf926be
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-01-01 (Wed, 01 Jan 2025)

  Changed paths:
    M MAINTAINERS
    M docs/system/device-emulation.rst
    A docs/system/devices/ivshmem-flat.rst
    M hw/arm/sbsa-ref.c
    M hw/arm/virt.c
    M hw/block/virtio-blk.c
    M hw/display/Kconfig
    A hw/display/apple-gfx-mmio.m
    A hw/display/apple-gfx-pci.m
    A hw/display/apple-gfx.h
    A hw/display/apple-gfx.m
    M hw/display/meson.build
    M hw/display/qxl.c
    M hw/display/trace-events
    M hw/i386/amd_iommu.c
    M hw/i386/kvm/apic.c
    M hw/i386/microvm.c
    M hw/i386/pc.c
    M hw/i386/vapic.c
    M hw/i386/xen/xen_apic.c
    M hw/i386/xen/xen_platform.c
    M hw/loongarch/virt.c
    M hw/microblaze/boot.c
    M hw/microblaze/boot.h
    M hw/microblaze/petalogix_ml605_mmu.c
    M hw/microblaze/petalogix_s3adsp1800_mmu.c
    M hw/microblaze/xlnx-zynqmp-pmu.c
    M hw/mips/loongson3_virt.c
    M hw/misc/Kconfig
    A hw/misc/ivshmem-flat.c
    A hw/misc/ivshmem-pci.c
    R hw/misc/ivshmem.c
    M hw/misc/meson.build
    M hw/misc/trace-events
    M hw/misc/vmcoreinfo.c
    M hw/net/trace-events
    M hw/net/xilinx_ethlite.c
    M hw/nvram/fw_cfg.c
    M hw/openrisc/openrisc_sim.c
    M hw/openrisc/virt.c
    M hw/pci-host/gpex.c
    M hw/riscv/virt.c
    M hw/sparc/sun4m_iommu.c
    M hw/sparc64/sun4u.c
    M hw/tricore/tricore_testdevice.c
    M hw/usb/hcd-uhci.c
    M hw/usb/hcd-xhci-nec.c
    M hw/usb/hcd-xhci-pci.c
    M hw/usb/hcd-xhci.c
    M hw/xen/xen-pvh-common.c
    M hw/xtensa/virt.c
    A include/hw/misc/ivshmem-flat.h
    M include/hw/pci-host/gpex.h
    M include/hw/usb/uhci-regs.h
    M include/qemu-main.h
    M meson.build
    M net/vmnet-common.m
    M system/main.c
    M tests/qtest/fuzz/fuzz.c
    M ui/cocoa.m
    M ui/gtk.c
    M ui/sdl2.c

  Log Message:
  -----------
  Merge tag 'hw-misc-20241231' of https://github.com/philmd/qemu into staging

Misc HW patches queue

- Allow more than 4 legacy IRQs on Generic PCI Express Bridge (Alexander)
- Add MMIO-based Inter-VM shared memory device 'ivshmem-flat' (Gustavo)
- Use UHCI register definitions (Guenter)
- Propagate CPU endianness to microblaze_load_kernel (Philippe)
- Mark x86/TriCore devices as little-endian, OpenRISC/SPARC as big (Philippe)
- Don't set callback_opaque NULL in fw_cfg_modify_bytes_read (Shameer)
- Simplify non-KVM checks on AMD IOMMU XTSup feature (Philippe)
- Trivial cleanups on xilinx_ethlite, vmcoreinfo, qxl (Philippe, Hyman)
- Move USB-HCD-XHCI msi/msix properties from NEC to superclass (Phil)
- Redesign of main thread event handling due to macOS Cocoa (Phil)
- Introduce ParavirtualizedGraphics.Framework support 'apple-gfx' (Phil)
- Pad short Ethernet frames on macOS vmnet (William)

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmd0Ul0ACgkQ4+MsLN6t
# wN7sCA/9HFWahKYW+6Y+gHfLPvJzkIqC5mwfQAUY7GsrNVFdIpUjK9ln9xUEqCQz
# DkVxoZQcP++d8cnnl17wXHsRcavyDDadGU5/161eNC7fbKbLRAslObz/dtExxDn2
# sctx9HMcbLl1UMFPqi/Pbt8NEZr0iOLzDDl+nRuOK8QRFnd2zGm1lF1oHeyja3t1
# flnQKI9YD0U/+0RVNR2FOpUam2Fu1EuQEPp0jMwkmcoyoNLwCXrP9XyRybVZnzgM
# cFm9fYbVlwjsVia+Bsk3CmHX5Gna/1bS3CL8Y9gUScYYwYU5VDAA8Fvv4gPsa4+u
# WSyttL2qCFdgF75S5FoAvEQzYFBcw25eFf8jJhbEn4I6MuQew8lww5OZEyvE8rag
# 2hg3nc4W0x76mLunqrNm+h+Z3vqd/amFcd9YNZjpzxQK//TwvOAQTWi31VtWa4OF
# F1qdv78tQKkRY7noq8WkcL/io6D7iE/BMx/XIOF8uPf8BLIBMvPDnDABjaB/yLkS
# Q/e+/monxkhknDY6K9xkVei7rn6c0LkuLzKxVzEzVKPVzM8N0JAl/1KaNVO8fxjJ
# kLvfGP/RdYOZqG4dNi8W3PhV/+UZz1FS3L1MpI4NXQ59br57BbVQP9ARGO6WpPWn
# O9zIJOAqdzcWU0aULIsvQA3nC1iJnFHEovq0bl8qBbY51k26Lg0=
# =AL3L
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 31 Dec 2024 15:21:49 EST
# gpg:                using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE
# gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <[email protected]>" 
[full]
# Primary key fingerprint: FAAB E75E 1291 7221 DCFD  6BB2 E3E3 2C2C DEAD C0DE

* tag 'hw-misc-20241231' of https://github.com/philmd/qemu: (29 commits)
  hw/display/qxl: Do not use C99 // comments
  net/vmnet: Pad short Ethernet frames
  MAINTAINERS: Add myself as maintainer for apple-gfx, reviewer for HVF
  hw/display/apple-gfx: Adds configurable mode list
  hw/display/apple-gfx: Adds PCI implementation
  hw/display/apple-gfx: Introduce ParavirtualizedGraphics.Framework support
  ui & main loop: Redesign of system-specific main thread event handling
  hw/usb/hcd-xhci: Unimplemented/guest error logging for port MMIO
  hw/usb/hcd-xhci-pci: Move msi/msix properties from NEC to superclass
  hw/block/virtio-blk: Replaces request free function with g_free
  hw/i386/amd_iommu: Simplify non-KVM checks on XTSup feature
  hw/misc/vmcoreinfo: Rename opaque pointer as 'opaque'
  hw/misc/vmcoreinfo: Declare QOM type using DEFINE_TYPES macro
  fw_cfg: Don't set callback_opaque NULL in fw_cfg_modify_bytes_read()
  hw/net/xilinx_ethlite: Rename rxbuf -> port_index
  hw/net/xilinx_ethlite: Correct maximum RX buffer size
  hw/net/xilinx_ethlite: Update QOM style
  hw/net/xilinx_ethlite: Remove unuseful debug logs
  hw/net/xilinx_ethlite: Convert some debug logs to trace events
  hw/sparc: Mark devices as big-endian
  ...

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


Compare: https://github.com/qemu/qemu/compare/7c89e226f878...8b70d7f2071e

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


Reply via email to