Branch: refs/heads/master Home: https://github.com/qemu/qemu Commit: 6f0273d6ae21bb2e4222789af0e6d480aa9430b1 https://github.com/qemu/qemu/commit/6f0273d6ae21bb2e4222789af0e6d480aa9430b1 Author: Konstantin Kostiuk <kkost...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025)
Changed paths: M qga/commands-win32.c M qga/guest-agent-core.h M qga/main.c M qga/meson.build M qga/qapi-schema.json Log Message: ----------- qga-win: implement a 'guest-get-load' command Windows has no native equivalent API, but it would be possible to simulate it as illustrated here (BSD-3-Clause): https://github.com/giampaolo/psutil/pull/1485 Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> Tested-by: Dehan Meng <dem...@redhat.com> Reviewed-by: Yan Vugenfirer <yvuge...@redhat.com> Signed-off-by: Konstantin Kostiuk <kkost...@redhat.com> Commit: 1ebbc8b774d8b44697740b108ad060612828b58f https://github.com/qemu/qemu/commit/1ebbc8b774d8b44697740b108ad060612828b58f Author: Konstantin Kostiuk <kkost...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M tests/unit/test-qga.c Log Message: ----------- qga: Add tests for guest-get-load command Tested-by: Dehan Meng <dem...@redhat.com> Reviewed-by: Yan Vugenfirer <yvuge...@redhat.com> Signed-off-by: Konstantin Kostiuk <kkost...@redhat.com> Commit: d2f0d2dc6c3f504fa1fb87b5fb5534430fa9b28a https://github.com/qemu/qemu/commit/d2f0d2dc6c3f504fa1fb87b5fb5534430fa9b28a Author: Stefan Hajnoczi <stefa...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M qga/commands-win32.c M qga/guest-agent-core.h M qga/main.c M qga/meson.build M qga/qapi-schema.json M tests/unit/test-qga.c Log Message: ----------- Merge tag 'qga-pull-2025-06-12' of https://github.com/kostyanf14/qemu into staging qga-pull-2025-06-12 # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEwsLBCepDxjwUI+uE711egWG6hOcFAmhK3hkACgkQ711egWG6 # hOdZ9g//aObON4+a2fSuTWToJwj5i2fcplXDD4OUnxH+pc3qt4bc50cpD4mbH3VZ # 2W854DWfrvPOv1beVYlmOLKztCTFk445BwtV5im4TBBcRmPt9GXyGqqax+3msziF # gA0r3KrJ4mv6OUvx61Jmgz4pFkHhWda6BbnTZbFPgPSz/poLN78Ib9TpAvOWBIEg # 6bdux8Ivh4gWO22OtY7O8XDU/NwkVwQNJQ1iv3Y4EUJ+Qv4prePrDiyNVn0jf1S0 # KxIx4tPYf6B4mYbcc3/lURuI+R8H2KxCt7GmGxBl1esqjGOEUj/fjp54+OqOf/2n # a/ZIWFu0cN1SK279eluBOm4Y7IGRouaFALaBJQLdEhYQgJmrCaEnSzHQCTR4cZQr # V2KkmGFXV7IdLvlLl38safp/G8cxvq21ijEx/RkoZ7Iklx8wWx5A/Cy0D52IViXD # +gsBpqGsMia+7Rus9o4P2QjWA5hCvaN7XH2rVGtELyoQwwhBfxCmhtn8qi5Vjybz # 7f3tr0BwdRm70KL//OhSL6DZHOGyRdqyiV27IP/2K5TVqKjkZNP0eIL97Y6xoGe6 # vXLbx6y+wUW0LXJGXe2+OtR/nFTu+VJ8IapfwQfd9JIR8Z25cNsFLhvfmWlPQiMc # EkNUEbEez21PSKuKz9cVHlfLl/L4VSgzychKF9uQWm7rhbK+Roc= # =6AwB # -----END PGP SIGNATURE----- # gpg: Signature made Thu 12 Jun 2025 10:03:05 EDT # gpg: using RSA key C2C2C109EA43C63C1423EB84EF5D5E8161BA84E7 # gpg: Good signature from "Kostiantyn Kostiuk (Upstream PR sign) <kkost...@redhat.com>" [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-2025-06-12' of https://github.com/kostyanf14/qemu: qga: Add tests for guest-get-load command qga-win: implement a 'guest-get-load' command Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: c653b67d1863b7ebfa67f7c9f4aec209d7b5ced5 https://github.com/qemu/qemu/commit/c653b67d1863b7ebfa67f7c9f4aec209d7b5ced5 Author: Stefan Hajnoczi <stefa...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M include/qemu/compiler.h Log Message: ----------- include/qemu/compiler: add QEMU_UNINITIALIZED attribute macro The QEMU_UNINITIALIZED macro is to be used to skip the default compiler variable initialization done by -ftrivial-auto-var-init=zero. Use this in cases where there a method in the device I/O path (or other important hot paths), that has large variables on the stack. A rule of thumb is that "large" means a method with 4kb data in the local stack frame. Any variables which are KB in size, should be annotated with this attribute, to pre-emptively eliminate any potential overhead from the compiler zero'ing memory. Given that this turns off a security hardening feature, when using this to flag variables, it is important that the code is double-checked to ensure there is no possible use of uninitialized data in the method. Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Message-id: 20250610123709.835102-2-berra...@redhat.com [DB: split off patch & rewrite guidance on when to use the annotation] Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: ba2868ce091cd4abe4be6de4b7e44b3be303b352 https://github.com/qemu/qemu/commit/ba2868ce091cd4abe4be6de4b7e44b3be303b352 Author: Stefan Hajnoczi <stefa...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/virtio/virtio.c Log Message: ----------- hw/virtio/virtio: avoid cost of -ftrivial-auto-var-init in hot path Since commit 7ff9ff039380 ("meson: mitigate against use of uninitialize stack for exploits") the -ftrivial-auto-var-init=zero compiler option is used to zero local variables. While this reduces security risks associated with uninitialized stack data, it introduced a measurable bottleneck in the virtqueue_split_pop() and virtqueue_packed_pop() functions. These virtqueue functions are in the hot path. They are called for each element (request) that is popped from a VIRTIO device's virtqueue. Using __attribute__((uninitialized)) on large stack variables in these functions improves fio randread bs=4k iodepth=64 performance from 304k to 332k IOPS (+9%). This issue was found using perf-top(1). virtqueue_split_pop() was one of the top CPU consumers and the "annotate" feature showed that the memory zeroing instructions at the beginning of the functions were hot. Fixes: 7ff9ff039380 ("meson: mitigate against use of uninitialize stack for exploits") Cc: Daniel P. Berrangé <berra...@redhat.com> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-3-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 83750c1da807c973b0b11d977d61df7e41122d03 https://github.com/qemu/qemu/commit/83750c1da807c973b0b11d977d61df7e41122d03 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M block/linux-aio.c Log Message: ----------- block: skip automatic zero-init of large array in ioq_submit The 'ioq_submit' method has a struct array that is 8k in size. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'iocbs' array will selectively initialized when processing the I/O data. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-4-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: a503bdc22b91869e3bf45522e36b122889465306 https://github.com/qemu/qemu/commit/a503bdc22b91869e3bf45522e36b122889465306 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M chardev/char-fd.c Log Message: ----------- chardev/char-fd: skip automatic zero-init of large array The 'fd_chr_read' method has a 4k byte array used for copying data between the socket and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when reading data off the network socket. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-5-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 45bb7fb21c8d18294a9f92da99d01ab3c67c7df2 https://github.com/qemu/qemu/commit/45bb7fb21c8d18294a9f92da99d01ab3c67c7df2 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M chardev/char-pty.c Log Message: ----------- chardev/char-pty: skip automatic zero-init of large array The 'pty_chr_read' method has a 4k byte array used for copying data between the PTY and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when reading data off the PTY. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-6-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 9a23075cef1ac6e73a95a489ac72f41c573ceb9b https://github.com/qemu/qemu/commit/9a23075cef1ac6e73a95a489ac72f41c573ceb9b Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M chardev/char-socket.c Log Message: ----------- chardev/char-socket: skip automatic zero-init of large array The 'tcp_chr_read' method has a 4k byte array used for copying data between the socket and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when reading data off the network socket. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-7-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 2553d2d26a9d0f46386bf8c37d184567e5cede6c https://github.com/qemu/qemu/commit/2553d2d26a9d0f46386bf8c37d184567e5cede6c Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/ac97.c Log Message: ----------- hw/audio/ac97: skip automatic zero-init of large arrays The 'read_audio' & 'write_audio' methods have a 4k byte array used for copying data between the audio backend and device. Skip the automatic zero-init of these arrays to eliminate the performance overhead in the I/O hot path. The 'tmpbuf' array will be fully initialized when reading data from the audio backend and/or device memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-8-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: ca2cc0385d97cea66cd54ee42553f385c403d4a6 https://github.com/qemu/qemu/commit/ca2cc0385d97cea66cd54ee42553f385c403d4a6 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/cs4231a.c Log Message: ----------- hw/audio/cs4231a: skip automatic zero-init of large arrays The 'cs_write_audio' method has a pair of byte arrays, one 4k in size and one 8k, which are used in converting audio samples. Skip the automatic zero-init of these arrays to eliminate the performance overhead in the I/O hot path. The 'tmpbuf' array will be fully initialized when reading a block of data from the guest. The 'linbuf' array will be fully initialized when converting the audio samples. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-9-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 8236e206084b832d1d7ec947a4798b818f4cdf1f https://github.com/qemu/qemu/commit/8236e206084b832d1d7ec947a4798b818f4cdf1f Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/es1370.c Log Message: ----------- hw/audio/es1370: skip automatic zero-init of large array The 'es1370_transfer_audio' method has a 4k byte array used for copying data between the audio backend and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'tmpbuf' array will be fully initialized when reading data from the audio backend and/or device memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-10-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 2e438da4929018c62609381e1156aac0b2fe3de3 https://github.com/qemu/qemu/commit/2e438da4929018c62609381e1156aac0b2fe3de3 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/gus.c Log Message: ----------- hw/audio/gus: skip automatic zero-init of large array The 'GUS_read_DMA' method has a 4k byte array used for copying data between the audio backend and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'tmpbuf' array will be fully initialized when reading data from device memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-11-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 5b6cd5c5df4229972d8a0fd9dd9a089a1644d6ba https://github.com/qemu/qemu/commit/5b6cd5c5df4229972d8a0fd9dd9a089a1644d6ba Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/marvell_88w8618.c Log Message: ----------- hw/audio/marvell_88w8618: skip automatic zero-init of large array The 'mv88w8618_audio_callback' method has a 4k byte array used for copying data between the audio backend and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when reading data from device memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-12-berra...@redhat.com [Fixed hw/audio/gus in commit message --Stefan] Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 30c82f6657c1ee9fbb5473924b4d3273f214bd6f https://github.com/qemu/qemu/commit/30c82f6657c1ee9fbb5473924b4d3273f214bd6f Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/sb16.c Log Message: ----------- hw/audio/sb16: skip automatic zero-init of large array The 'write_audio' method has a 4k byte array used for copying data between the audio backend and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'tmpbuf' array will be fully initialized when reading data from device memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-13-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: bb71d9fe1419f44529c91d1b09464718d157e647 https://github.com/qemu/qemu/commit/bb71d9fe1419f44529c91d1b09464718d157e647 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/audio/via-ac97.c Log Message: ----------- hw/audio/via-ac97: skip automatic zero-init of large array The 'out_cb' method has a 4k byte array used for copying data between the audio backend and device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'tmpbuf' array will be fully initialized when reading data from device memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-14-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 8b1dac1ad57082611419b0e2f347acd96115d25f https://github.com/qemu/qemu/commit/8b1dac1ad57082611419b0e2f347acd96115d25f Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/char/sclpconsole-lm.c Log Message: ----------- hw/char/sclpconsole-lm: skip automatic zero-init of large array The 'process_mdb' method has a 4k byte array used for copying data between the guest and the chardev backend. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buffer' array will be selectively initialized when data is converted between EBCDIC and ASCII. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-15-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: ce14f24611aa0469b464a9512e192b4fd51dca2b https://github.com/qemu/qemu/commit/ce14f24611aa0469b464a9512e192b4fd51dca2b Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/dma/xlnx_csu_dma.c Log Message: ----------- hw/dma/xlnx_csu_dma: skip automatic zero-init of large array The 'xlnx_csu_dma_src_notify' method has a 4k byte array used for copying DMA data. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when data is copied. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-16-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 7048e70f391df76d009eecca25f8027858f9f304 https://github.com/qemu/qemu/commit/7048e70f391df76d009eecca25f8027858f9f304 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/display/vmware_vga.c Log Message: ----------- hw/display/vmware_vga: skip automatic zero-init of large struct The 'vmsvga_fifo_run' method has a struct which is a little over 20k in size, used for holding image data for cursor changes. Skip the automatic zero-init of this struct to eliminate the performance overhead in the I/O hot path. The cursor variable will be fully initialized only when processing a cursor definition message from the guest. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-17-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 5a1f614d0cd0bcc8e84e0b7ab6af63d56bd348a2 https://github.com/qemu/qemu/commit/5a1f614d0cd0bcc8e84e0b7ab6af63d56bd348a2 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/hyperv/syndbg.c Log Message: ----------- hw/hyperv/syndbg: skip automatic zero-init of large array The 'handle_recv_msg' method has a 4k byte array used for copying data between the network socket and guest memory. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'data_buf' array will be fully initialized when data is read off the network socket. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-18-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 6992c886838282f36b20deee44b666bbfc573a8f https://github.com/qemu/qemu/commit/6992c886838282f36b20deee44b666bbfc573a8f Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/misc/aspeed_hace.c Log Message: ----------- hw/misc/aspeed_hace: skip automatic zero-init of large array The 'do_hash_operation' method has a 256 element iovec array used for holding pointers to data that is to be hashed. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'iovec' array will be selectively initialized based on data that needs to be hashed. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-19-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 3ccc6489dd4925ddd1f3066bd3751389169cd7aa https://github.com/qemu/qemu/commit/3ccc6489dd4925ddd1f3066bd3751389169cd7aa Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/net/rtl8139.c Log Message: ----------- hw/net/rtl8139: skip automatic zero-init of large array The 'rtl8139_transmit_one' method has a 8k byte array used for copying data between guest and host. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'txbuffer' will be fully initialized when reading PCI DMA buffers. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-20-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: e1afd5ee6eb2954f4baf3c97820e4aaf7de97d2a https://github.com/qemu/qemu/commit/e1afd5ee6eb2954f4baf3c97820e4aaf7de97d2a Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/net/tulip.c Log Message: ----------- hw/net/tulip: skip automatic zero-init of large array The 'tulip_setup_frame' method has a 4k byte array used for copynig DMA data from the device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when reading data from the device. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-21-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 21cf31c51a7aeff4270c9b30b37e019c536d54b2 https://github.com/qemu/qemu/commit/21cf31c51a7aeff4270c9b30b37e019c536d54b2 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/net/virtio-net.c Log Message: ----------- hw/net/virtio-net: skip automatic zero-init of large arrays The 'virtio_net_receive_rcu' method has three arrays with VIRTQUEUE_MAX_SIZE elements, which are apprixmately 32k in size used for copying data between guest and host. Skip the automatic zero-init of these arrays to eliminate the performance overhead in the I/O hot path. The three arrays will be selectively initialized as required when processing network buffers. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-22-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 8b723287b84a62bb5d1a7799ef0959ca8e6c293a https://github.com/qemu/qemu/commit/8b723287b84a62bb5d1a7799ef0959ca8e6c293a Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/net/xgmac.c Log Message: ----------- hw/net/xgamc: skip automatic zero-init of large array The 'xgmac_enet_send' method has a 8k byte array used for copying data between guest and host. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'frame' buffer will be fully initialized when reading guest memory to fetch the data to send. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Message-id: 20250610123709.835102-23-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 7eeb1d3acc175813ad3d5e824f26123e0992093a https://github.com/qemu/qemu/commit/7eeb1d3acc175813ad3d5e824f26123e0992093a Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/nvme/ctrl.c Log Message: ----------- hw/nvme/ctrl: skip automatic zero-init of large arrays The 'nvme_map_sgl' method has a 256 element array used for copying data from the device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'segment' array will be fully initialized when reading data from the device. The 'nme_changed_nslist' method has a 4k byte array that is manually initialized with memset(). The compiler ought to be intelligent enough to turn the memset() into a static initialization operation, and thus not duplicate the automatic zero-init. Replacing memset() with '{}' makes it unambiguous that the array is statically initialized. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Message-id: 20250610123709.835102-24-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 3438eabaf4f8ae58b6c47f1727938d1d7dac4823 https://github.com/qemu/qemu/commit/3438eabaf4f8ae58b6c47f1727938d1d7dac4823 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/ppc/pnv_occ.c Log Message: ----------- hw/ppc/pnv_occ: skip automatic zero-init of large struct The 'occ_model_tick' method has a 12k struct used for copying data between guest and host. Skip the automatic zero-init of this struct to eliminate the performance overhead in the I/O hot path. The 'dynamic_data' buffer will be fully initialized when reading data from the guest. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-25-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 5dd9087fff74b5672526cad254e76f790fb35c7a https://github.com/qemu/qemu/commit/5dd9087fff74b5672526cad254e76f790fb35c7a Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/ppc/spapr_tpm_proxy.c Log Message: ----------- hw/ppc/spapr_tpm_proxy: skip automatic zero-init of large arrays The 'tpm_execute' method has a pair of 4k arrays used for copying data between guest and host. Skip the automatic zero-init of these arrays to eliminate the performance overhead in the I/O hot path. The two arrays will be fully initialized when reading data from guest memory or reading data from the proxy FD. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-26-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 14997d521d1cd0bb36c902ef1032f0d3f2a3c912 https://github.com/qemu/qemu/commit/14997d521d1cd0bb36c902ef1032f0d3f2a3c912 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/usb/hcd-ohci.c Log Message: ----------- hw/usb/hcd-ohci: skip automatic zero-init of large array The 'ohci_service_iso_td' method has a 8k byte array used for copying data between guest and host. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when reading data from guest memory. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-27-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 55243edf42ee87bce9f36ca251f3ab9cda1563e4 https://github.com/qemu/qemu/commit/55243edf42ee87bce9f36ca251f3ab9cda1563e4 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/scsi/lsi53c895a.c Log Message: ----------- hw/scsi/lsi53c895a: skip automatic zero-init of large array The 'lsi_memcpy' method has a 4k byte array used for copying data to/from the device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf' array will be fully initialized when data is copied. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-28-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: ca0559e2350c618048f7caf80cb79c1259e7cfd2 https://github.com/qemu/qemu/commit/ca0559e2350c618048f7caf80cb79c1259e7cfd2 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/scsi/megasas.c Log Message: ----------- hw/scsi/megasas: skip automatic zero-init of large arrays The 'megasas_dcmd_pd_get_list' and 'megasas_dcmd_get_properties' methods have 4k structs used for copying data from the device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'info' structs are manually initialized with memset(). The compiler ought to be intelligent enough to turn the memset() into a static initialization operation, and thus not duplicate the automatic zero-init. Replacing memset() with '{}' makes it unambiguous that the arrays are statically initialized. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-29-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 7708e298180550eac262c1fd742e6e80c711a5d8 https://github.com/qemu/qemu/commit/7708e298180550eac262c1fd742e6e80c711a5d8 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M hw/ufs/lu.c Log Message: ----------- hw/ufs/lu: skip automatic zero-init of large array The 'ufs_emulate_scsi_cmd' method has a 4k byte array used for copying data from the device. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'outbuf' array will be fully initialized when data is copied from the guest. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-30-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 751b0e79f1e0e7f88fad2fe2f22595ad03d78859 https://github.com/qemu/qemu/commit/751b0e79f1e0e7f88fad2fe2f22595ad03d78859 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M net/socket.c Log Message: ----------- net/socket: skip automatic zero-init of large array The 'net_socket_send' method has a 68k byte array used for copying data between guest and host. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf1' array will be fully initialized when reading data off the network socket. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-31-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: 837b87c4c5ba9ac7a255133c6642b8d578272a70 https://github.com/qemu/qemu/commit/837b87c4c5ba9ac7a255133c6642b8d578272a70 Author: Daniel P. Berrangé <berra...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M net/stream.c Log Message: ----------- net/stream: skip automatic zero-init of large array The 'net_stream_send' method has a 68k byte array used for copying data between guest and host. Skip the automatic zero-init of this array to eliminate the performance overhead in the I/O hot path. The 'buf1' array will be fully initialized when reading data off the network socket. Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Reviewed-by: Klaus Jensen <k.jen...@samsung.com> Reviewed-by: Harsh Prateek Bora <hars...@linux.ibm.com> Message-id: 20250610123709.835102-32-berra...@redhat.com Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Commit: a6f02277595136832c9e9bcaf447ab574f7b1128 https://github.com/qemu/qemu/commit/a6f02277595136832c9e9bcaf447ab574f7b1128 Author: Stefan Hajnoczi <stefa...@redhat.com> Date: 2025-06-12 (Thu, 12 Jun 2025) Changed paths: M block/linux-aio.c M chardev/char-fd.c M chardev/char-pty.c M chardev/char-socket.c M hw/audio/ac97.c M hw/audio/cs4231a.c M hw/audio/es1370.c M hw/audio/gus.c M hw/audio/marvell_88w8618.c M hw/audio/sb16.c M hw/audio/via-ac97.c M hw/char/sclpconsole-lm.c M hw/display/vmware_vga.c M hw/dma/xlnx_csu_dma.c M hw/hyperv/syndbg.c M hw/misc/aspeed_hace.c M hw/net/rtl8139.c M hw/net/tulip.c M hw/net/virtio-net.c M hw/net/xgmac.c M hw/nvme/ctrl.c M hw/ppc/pnv_occ.c M hw/ppc/spapr_tpm_proxy.c M hw/scsi/lsi53c895a.c M hw/scsi/megasas.c M hw/ufs/lu.c M hw/usb/hcd-ohci.c M hw/virtio/virtio.c M include/qemu/compiler.h M net/socket.c M net/stream.c Log Message: ----------- Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging Pull request v2: - Fix incorrect hw/audio/gus commit message # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmhLETkACgkQnKSrs4Gr # c8hvmQf/Rtc605hI3loERIv62n3m16oI3bwMdB3RvqIlQMc1Nk539Y4UCgd1jx7k # S4WEFCdu3EJG0Y21kcyBjyN+CHYfjtfNQYdPwkJC+kGwU1GlX5iRSdoiSK8RWMUg # +1Cnq4K3gc0LNZjYoxgQCddhuo5wP4oonw+glCoGqa3crF7aOmje28GLTyxUn4IB # 3tE+fO6CNlXeX+AMeHZEAJCz5p0rQ/o+LbkmQ/INnqaF75pw/5QDUEYnluyB2zEe # IS7ZQuYtytLWSGD0bmCQDWIHf7/2rBDI4c/kZHuQBV+KbbP+DG39Xe/0IWdUwfl/ # BTlffUzhQipZU07o+YnKm+Al7w2TIA== # =LTAj # -----END PGP SIGNATURE----- # gpg: Signature made Thu 12 Jun 2025 13:41:13 EDT # gpg: using RSA key 8695A8BFD3F97CDAAC35775A9CA4ABB381AB73C8 # gpg: Good signature from "Stefan Hajnoczi <stefa...@redhat.com>" [ultimate] # gpg: aka "Stefan Hajnoczi <stefa...@gmail.com>" [ultimate] # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35 775A 9CA4 ABB3 81AB 73C8 * tag 'block-pull-request' of https://gitlab.com/stefanha/qemu: (31 commits) net/stream: skip automatic zero-init of large array net/socket: skip automatic zero-init of large array hw/ufs/lu: skip automatic zero-init of large array hw/scsi/megasas: skip automatic zero-init of large arrays hw/scsi/lsi53c895a: skip automatic zero-init of large array hw/usb/hcd-ohci: skip automatic zero-init of large array hw/ppc/spapr_tpm_proxy: skip automatic zero-init of large arrays hw/ppc/pnv_occ: skip automatic zero-init of large struct hw/nvme/ctrl: skip automatic zero-init of large arrays hw/net/xgamc: skip automatic zero-init of large array hw/net/virtio-net: skip automatic zero-init of large arrays hw/net/tulip: skip automatic zero-init of large array hw/net/rtl8139: skip automatic zero-init of large array hw/misc/aspeed_hace: skip automatic zero-init of large array hw/hyperv/syndbg: skip automatic zero-init of large array hw/display/vmware_vga: skip automatic zero-init of large struct hw/dma/xlnx_csu_dma: skip automatic zero-init of large array hw/char/sclpconsole-lm: skip automatic zero-init of large array hw/audio/via-ac97: skip automatic zero-init of large array hw/audio/sb16: skip automatic zero-init of large array ... Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Compare: https://github.com/qemu/qemu/compare/d9ce74873a6a...a6f022775951 To unsubscribe from these emails, change your notification settings at https://github.com/qemu/qemu/settings/notifications