1. Jul 23, 2023
  2. Jul 16, 2023
  3. Jul 14, 2023
    • Richard Henderson's avatar
      Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging · 4633c1e2
      Richard Henderson authored
      * SCSI unit attention fix
      * add PCIe devices to s390x emulator
      * IDE unplug fix for Xen
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmSxEWkUHHBib256aW5p
      # QHJlZGhhdC5jb20ACgkQv/vSX3jHroPDrAf/SyGEcBr1U2v0HBwfqGcHOVPwx5Dc
      # jk9628klLgRF9EqEoffFfJTf9LU5Su4WsjtGLvH+GBCV0thfaPrvQJxD4KWvxgUl
      # SKX5zepw9GY+uiTmbyuStLo5a8ksL6z5Zvw92gKh2PEKwuicerJL7OnK8drTMXXS
      # haL/UL3v3Qa3OwkxBIIq9uXdZjUiSib6PQD9/u7OoY67F6/ThmtUozgcMpqR/39Q
      # 0AdNibteN2XlUrysS9hreC0pAmqB6luAdo7wcUR53NV7Yp0yOa1jySJRxiNvHGrB
      # gK7jpHL/UBjTTkBodfZD21q5Ih4Vpya2FWpg4ZZlrIEJQc2AyxCl3zw3Bg==
      # =Ai1b
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Fri 14 Jul 2023 10:12:09 AM BST
      # gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
      # gpg:                issuer "pbonzini@redhat.com"
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined]
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined]
      # 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: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * tag 'for-upstream' of https://gitlab.com/bonzini/qemu
      
      :
        scsi: clear unit attention only for REPORT LUNS commands
        scsi: cleanup scsi_clear_unit_attention()
        scsi: fetch unit attention when creating the request
        kconfig: Add PCIe devices to s390x machines
        hw/ide/piix: properly initialize the BMIBA register
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      4633c1e2
    • Stefano Garzarella's avatar
      scsi: clear unit attention only for REPORT LUNS commands · 2eb5599e
      Stefano Garzarella authored and Paolo Bonzini's avatar Paolo Bonzini committed
      
      
      scsi_clear_unit_attention() now only handles REPORTED LUNS DATA HAS
      CHANGED.
      
      This only happens when we handle REPORT LUNS commands, so let's rename
      the function in scsi_clear_reported_luns_changed() and call it only in
      scsi_target_emulate_report_luns().
      
      Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: Stefano Garzarella's avatarStefano Garzarella <sgarzare@redhat.com>
      Message-ID: <20230712134352.118655-4-sgarzare@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      2eb5599e
    • Stefano Garzarella's avatar
      scsi: cleanup scsi_clear_unit_attention() · ba947dab
      Stefano Garzarella authored and Paolo Bonzini's avatar Paolo Bonzini committed
      
      
      The previous commit moved the unit attention clearing when we create
      the request. So now we can clean scsi_clear_unit_attention() to handle
      only the case of the REPORT LUNS command: this is the only case in
      which a UNIT ATTENTION is cleared without having been reported.
      
      Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: Stefano Garzarella's avatarStefano Garzarella <sgarzare@redhat.com>
      Message-ID: <20230712134352.118655-3-sgarzare@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      ba947dab
    • Stefano Garzarella's avatar
      scsi: fetch unit attention when creating the request · 9472083e
      Stefano Garzarella authored and Paolo Bonzini's avatar Paolo Bonzini committed
      Commit 1880ad4f ("virtio-scsi: Batched prepare for cmd reqs") split
      calls to scsi_req_new() and scsi_req_enqueue() in the virtio-scsi device.
      No ill effects were observed until commit 8cc5583a ("virtio-scsi: Send
      "REPORTED LUNS CHANGED" sense data upon disk hotplug events") added a
      unit attention that was easy to trigger with device hotplug and
      hot-unplug.
      
      Because the two calls were separated, all requests in the batch were
      prepared calling scsi_req_new() to report a sense.  The first one
      submitted would report the right sense and reset it to NO_SENSE, while
      the others reported CHECK_CONDITION with no sense data.  This caused
      SCSI errors in Linux.
      
      To solve this issue, let's fetch the unit attention as early as possible
      when we prepare the request, so that only the first request in the batch
      will use the unit attention SCSIReqOps and the others will not report
      CHECK CONDITION.
      
      Fixes: 1880ad4f ("virtio-scsi: Batched prepare for cmd reqs")
      Fixes: ...
      9472083e
    • Cédric Le Goater's avatar
      kconfig: Add PCIe devices to s390x machines · cc9ff56f
      Cédric Le Goater authored and Paolo Bonzini's avatar Paolo Bonzini committed
      
      
      It is useful to extend the number of available PCIe devices to KVM guests
      for passthrough scenarios and also to expose these models to a different
      (big endian) architecture. Introduce a new config PCIE_DEVICES to select
      models, Intel Ethernet adapters and one USB controller. These devices all
      support MSI-X which is a requirement on s390x as legacy INTx are not
      supported.
      
      Cc: Matthew Rosato <mjrosato@linux.ibm.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Thomas Huth <thuth@redhat.com>
      Signed-off-by: Cédric Le Goater's avatarCédric Le Goater <clg@redhat.com>
      Message-ID: <20230712080146.839113-1-clg@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      cc9ff56f
    • Olaf Hering's avatar
      hw/ide/piix: properly initialize the BMIBA register · 230dfd92
      Olaf Hering authored and Paolo Bonzini's avatar Paolo Bonzini committed
      According to the 82371FB documentation (82371FB.pdf, 2.3.9. BMIBA-BUS
      MASTER INTERFACE BASE ADDRESS REGISTER, April 1997), the register is
      32bit wide. To properly reset it to default values, all 32bit need to be
      cleared. Bit #0 "Resource Type Indicator (RTE)" needs to be enabled.
      
      The initial change wrote just the lower 8 bit, leaving parts of the "Bus
      Master Interface Base Address" address at bit 15:4 unchanged.
      
      Fixes: e6a71ae3
      
       ("Add support for 82371FB (Step A1) and Improved support for 82371SB (Function 1)")
      
      Signed-off-by: default avatarOlaf Hering <olaf@aepfle.de>
      Reviewed-by: default avatarBernhard Beschow <shentey@gmail.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Message-ID: <20230712074721.14728-1-olaf@aepfle.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      230dfd92
  4. Jul 12, 2023
    • Richard Henderson's avatar
      Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging · 3dd9e547
      Richard Henderson authored
      Pull request
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQEzBAABCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmSvAB0ACgkQnKSrs4Gr
      # c8hVzAgAomXGVhqm/qnQ99SIry+kec9a1Bom4ZprvpEtiHndoq8bw/ujeUlr/XK0
      # CBKdYNYY3R1rSB6yLsV2ea45elk3x/iMqygbJF3QfWxpHfx0l8vs1WB6uSQFqo/E
      # ext1dvP8Czc0BP4MLaijvkW2u0j8qsLQnJcu9JDrRzgD8OqJSlhOxBSmb8VDvDvx
      # am0RMRkYxSl7jn2LFEE4mMfUjy9JJSFhnzP8lMoGH/m8C62Eult2PFDItnTAG8hN
      # IAyNDCDr2LKZwe6DP9JHUKCtqNYUHnGibgKH3k9NKWgUyOHSxqtDUC9vtoTPskGf
      # BRo0XZM7qnSUZCoAhEjvKVWcEkFIkw==
      # =aHUy
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Wed 12 Jul 2023 08:33:49 PM BST
      # gpg:                using RSA key 8695A8BFD3F97CDAAC35775A9CA4ABB381AB73C8
      # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" [full]
      # gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>" [full]
      
      * tag 'block-pull-request' of https://gitlab.com/stefanha/qemu
      
      :
        virtio-blk: fix host notifier issues during dataplane start/stop
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      3dd9e547
    • Stefan Hajnoczi's avatar
      virtio-blk: fix host notifier issues during dataplane start/stop · 75dcb4d7
      Stefan Hajnoczi authored
      The main loop thread can consume 100% CPU when using --device
      virtio-blk-pci,iothread=<iothread>. ppoll() constantly returns but
      reading virtqueue host notifiers fails with EAGAIN. The file descriptors
      are stale and remain registered with the AioContext because of bugs in
      the virtio-blk dataplane start/stop code.
      
      The problem is that the dataplane start/stop code involves drain
      operations, which call virtio_blk_drained_begin() and
      virtio_blk_drained_end() at points where the host notifier is not
      operational:
      - In virtio_blk_data_plane_start(), blk_set_aio_context() drains after
        vblk->dataplane_started has been set to true but the host notifier has
        not been attached yet.
      - In virtio_blk_data_plane_stop(), blk_drain() and blk_set_aio_context()
        drain after the host notifier has already been detached but with
        vblk->dataplane_started still set to true.
      
      I would like to simplify ->ioeventfd_start/stop() to avoid interactions
      with drain entirely, but couldn't find a way to do that. Instead, this
      patch accepts the fragile nature of the code and reorders it so that
      vblk->dataplane_started is false during drain operations. This way the
      virtio_blk_drained_begin() and virtio_blk_drained_end() calls don't
      touch the host notifier. The result is that
      virtio_blk_data_plane_start() and virtio_blk_data_plane_stop() have
      complete control over the host notifier and stale file descriptors are
      no longer left in the AioContext.
      
      This patch fixes the 100% CPU consumption in the main loop thread and
      correctly moves host notifier processing to the IOThread.
      
      Fixes: 1665d932
      
       ("virtio-blk: implement BlockDevOps->drained_begin()")
      Reported-by: default avatarLukáš Doktor <ldoktor@redhat.com>
      Signed-off-by: Stefan Hajnoczi's avatarStefan Hajnoczi <stefanha@redhat.com>
      Tested-by: default avatarLukas Doktor <ldoktor@redhat.com>
      Message-id: 20230704151527.193586-1-stefanha@redhat.com
      Signed-off-by: Stefan Hajnoczi's avatarStefan Hajnoczi <stefanha@redhat.com>
      75dcb4d7
    • Richard Henderson's avatar
      Merge tag 'mem-2023-07-12' of https://github.com/davidhildenbrand/qemu into staging · 6f05a92d
      Richard Henderson authored
      Hi,
      
      "Host Memory Backends" and "Memory devices" queue ("mem"):
      - Memory device cleanups (especially around machine initialization)
      - "x-ignore-shared" migration support for virtio-mem
      - Add an abstract virtio-md-pci device as a common parent for
        virtio-mem-pci and virtio-pmem-pci (virtio based memory devices)
      - Device unplug support for virtio-mem-pci
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJFBAABCAAvFiEEG9nKrXNcTDpGDfzKTd4Q9wD/g1oFAmSuYAQRHGRhdmlkQHJl
      # ZGhhdC5jb20ACgkQTd4Q9wD/g1od9A/9HXT8IqKGup9is7P/mpobPWXczRGZ5sEg
      # /q21PzX6crr9aFa+fYRF/Dlm3G/cSMOVXFRKGz3royLjsvaEj/veEewfKF8KWbBf
      # eIS9udQTOwoD2kAhcv3pm0SwSJoVizpw2z7IodGVKE6iZxTXsmDksqQuFbrvVLSh
      # 2wtP4lizEXco/YsiCoAnStj2QtXBcHw7Ua7W2cDzxFmL+1pM5w3rjQ1ydCNz3bSG
      # l4CXXs1i8OmOZbFN78F/E9SEkzQnAuHSO0Sc1aeAJkwVzOt2lj/YMgt0jHjAY0at
      # pheWZ5pEE6hnQP740YXpt4Y6IIgO22pH23dLhq9A2reyRnwjt830uObHi3qAE8kB
      # KR+ZQ+Z5bI6ZNB/EFiUsC1dFsr2fF20zQlO02MctyJ+lUG6p3gpvwsGScQxt+zdF
      # QlkiSecGErYwC+nZ529SQB4gSEJTCjd/STDoidVYnZazdStaOaSyft02xRNzBPW/
      # OnOY+6ZxZK6R11KfwGjnsftrovQIP3Pqi9TXGzW2xVlkWJHqlicy6G3ZfceTTlj9
      # Gg2Ue694Wr1r4PDV2XlYcZ1IPLjSy5Msp5V2wERRrp3OItxnvegvTevQN7USEHC+
      # BPGNMu11jriSY2pE5BSFN0hfGOvuvsk3GreLJiHFUXoje6gzAynuLjCN/CHdIVyK
      # 5i0AwdZ+xcA=
      # =ch6m
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Wed 12 Jul 2023 09:10:44 AM BST
      # gpg:                using RSA key 1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A
      # gpg:                issuer "david@redhat.com"
      # gpg: Good signature from "David Hildenbrand <david@redhat.com>" [unknown]
      # gpg:                 aka "David Hildenbrand <davidhildenbrand@gmail.com>" [undefined]
      # gpg:                 aka "David Hildenbrand <hildenbr@in.tum.de>" [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: 1BD9 CAAD 735C 4C3A 460D  FCCA 4DDE 10F7 00FF 835A
      
      * tag 'mem-2023-07-12' of https://github.com/davidhildenbrand/qemu
      
      : (21 commits)
        virtio-mem-pci: Device unplug support
        virtio-mem: Prepare for device unplug support
        virtio-md-pci: Support unplug requests for compatible devices
        virtio-md-pci: Handle unplug of virtio based memory devices
        arm/virt: Use virtio-md-pci (un)plug functions
        pc: Factor out (un)plug handling of virtio-md-pci devices
        virtio-md-pci: New parent type for virtio-mem-pci and virtio-pmem-pci
        virtio-mem: Support "x-ignore-shared" migration
        migration/ram: Expose ramblock_is_ignored() as migrate_ram_is_ignored()
        virtio-mem: Skip most of virtio_mem_unplug_all() without plugged memory
        softmmu/physmem: Warn with ram_block_discard_range() on MAP_PRIVATE file mapping
        memory-device: Track used region size in DeviceMemoryState
        memory-device: Refactor memory_device_pre_plug()
        hw/i386/pc: Remove PC_MACHINE_DEVMEM_REGION_SIZE
        hw/i386/acpi-build: Rely on machine->device_memory when building SRAT
        hw/i386/pc: Use machine_memory_devices_init()
        hw/loongarch/virt: Use machine_memory_devices_init()
        hw/ppc/spapr: Use machine_memory_devices_init()
        hw/arm/virt: Use machine_memory_devices_init()
        memory-device: Introduce machine_memory_devices_init()
        ...
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      6f05a92d
    • David Hildenbrand's avatar
      virtio-mem-pci: Device unplug support · 339a8bbd
      David Hildenbrand authored
      
      
      Let's support device unplug by forwarding the unplug_request_check()
      callback to the virtio-mem device.
      
      Further, disallow changing the requested-size once an unplug request is
      pending.
      
      Disallowing requested-size changes handles corner cases such as
      (1) pausing the VM (2) requesting device unplug and (3) adjusting the
      requested size. If the VM would plug memory (due to the requested size
      change) before processing the unplug request, we would be in trouble.
      
      Message-ID: <20230711153445.514112-8-david@redhat.com>
      Tested-by: default avatarMario Casquero <mcasquer@redhat.com>
      Reviewed-by: MST's avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: David Hildenbrand's avatarDavid Hildenbrand <david@redhat.com>
      339a8bbd
    • David Hildenbrand's avatar
      virtio-mem: Prepare for device unplug support · 92a8ee1b
      David Hildenbrand authored
      
      
      In many cases, blindly unplugging a virtio-mem device is problematic. We
      can only safely remove a device once:
      * The guest is not expecting to be able to read unplugged memory
        (unplugged-inaccessible == on)
      * The virtio-mem device does not have memory plugged (size == 0)
      * The virtio-mem device does not have outstanding requests to the VM to
        plug memory (requested-size == 0)
      
      So let's add a callback to the virtio-mem device class to check for that.
      We'll wire-up virtio-mem-pci next.
      
      Message-ID: <20230711153445.514112-7-david@redhat.com>
      Tested-by: default avatarMario Casquero <mcasquer@redhat.com>
      Reviewed-by: MST's avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: David Hildenbrand's avatarDavid Hildenbrand <david@redhat.com>
      92a8ee1b