[PULL 0/9] Hyper-V Dynamic Memory Protocol driver (hv-balloon)

Maciej S. Szmigiero posted 9 patches 1 year ago
Failed in applying to current master (apply log)
There is a newer version of this series
Kconfig.host                              |    3 +
MAINTAINERS                               |    8 +
hw/core/machine-hmp-cmds.c                |   15 +
hw/hyperv/Kconfig                         |   10 +
hw/hyperv/hv-balloon-internal.h           |   33 +
hw/hyperv/hv-balloon-our_range_memslots.c |  201 ++++
hw/hyperv/hv-balloon-our_range_memslots.h |  110 ++
hw/hyperv/hv-balloon-page_range_tree.c    |  228 ++++
hw/hyperv/hv-balloon-page_range_tree.h    |  118 ++
hw/hyperv/hv-balloon.c                    | 1766 +++++++++++++++++++++++++++++
hw/hyperv/meson.build                     |    1 +
hw/hyperv/trace-events                    |   18 +
hw/i386/Kconfig                           |    1 +
hw/i386/pc.c                              |   22 +
hw/mem/memory-device.c                    |   49 +-
include/hw/hyperv/dynmem-proto.h          |  423 +++++++
include/hw/hyperv/hv-balloon.h            |   18 +
include/hw/mem/memory-device.h            |    7 +-
meson.build                               |   28 +-
meson_options.txt                         |    2 +
monitor/monitor.c                         |    1 +
qapi/machine.json                         |  101 +-
scripts/meson-buildoptions.sh             |    3 +
23 files changed, 3153 insertions(+), 13 deletions(-)
create mode 100644 hw/hyperv/hv-balloon-internal.h
create mode 100644 hw/hyperv/hv-balloon-our_range_memslots.c
create mode 100644 hw/hyperv/hv-balloon-our_range_memslots.h
create mode 100644 hw/hyperv/hv-balloon-page_range_tree.c
create mode 100644 hw/hyperv/hv-balloon-page_range_tree.h
create mode 100644 hw/hyperv/hv-balloon.c
create mode 100644 include/hw/hyperv/dynmem-proto.h
create mode 100644 include/hw/hyperv/hv-balloon.h
[PULL 0/9] Hyper-V Dynamic Memory Protocol driver (hv-balloon)
Posted by Maciej S. Szmigiero 1 year ago
From: "Maciej S. Szmigiero" <maciej.szmigiero@oracle.com>

The following changes since commit d762bf97931b58839316b68a570eecc6143c9e3e:

  Merge tag 'pull-target-arm-20231102' of https://git.linaro.org/people/pmaydell/qemu-arm into staging (2023-11-03 10:04:12 +0800)

are available in the Git repository at:

  https://github.com/maciejsszmigiero/qemu.git tags/pull-hv-balloon-20231105

for you to fetch changes up to 2b49ecabc6bf15efa6aa05f20a7c319ff65c4e11:

  MAINTAINERS: Add an entry for Hyper-V Dynamic Memory Protocol (2023-11-03 20:31:10 +0100)

----------------------------------------------------------------
Hyper-V Dynamic Memory protocol driver.

This driver is like virtio-balloon on steroids for Windows guests:
it allows both changing the guest memory allocation via ballooning and
inserting pieces of extra RAM into it on demand from a provided memory
backend via Windows-native Hyper-V Dynamic Memory protocol.

* Protocol definitions.

* Hyper-V DM protocol driver (hv-balloon) base (ballooning only).

* Hyper-V DM protocol driver (hv-balloon) hot-add support.

* qapi query-memory-devices support for the driver.

* qapi HV_BALLOON_STATUS_REPORT event.

* The relevant PC machine plumbing.

* New MAINTAINERS entry for the above.

----------------------------------------------------------------
David Hildenbrand (2):
      memory-device: Support empty memory devices
      memory-device: Drop size alignment check

Maciej S. Szmigiero (7):
      Add Hyper-V Dynamic Memory Protocol definitions
      Add Hyper-V Dynamic Memory Protocol driver (hv-balloon) base
      Add Hyper-V Dynamic Memory Protocol driver (hv-balloon) hot-add support
      qapi: Add query-memory-devices support to hv-balloon
      qapi: Add HV_BALLOON_STATUS_REPORT event and its QMP query command
      hw/i386/pc: Support hv-balloon
      MAINTAINERS: Add an entry for Hyper-V Dynamic Memory Protocol

 Kconfig.host                              |    3 +
 MAINTAINERS                               |    8 +
 hw/core/machine-hmp-cmds.c                |   15 +
 hw/hyperv/Kconfig                         |   10 +
 hw/hyperv/hv-balloon-internal.h           |   33 +
 hw/hyperv/hv-balloon-our_range_memslots.c |  201 ++++
 hw/hyperv/hv-balloon-our_range_memslots.h |  110 ++
 hw/hyperv/hv-balloon-page_range_tree.c    |  228 ++++
 hw/hyperv/hv-balloon-page_range_tree.h    |  118 ++
 hw/hyperv/hv-balloon.c                    | 1766 +++++++++++++++++++++++++++++
 hw/hyperv/meson.build                     |    1 +
 hw/hyperv/trace-events                    |   18 +
 hw/i386/Kconfig                           |    1 +
 hw/i386/pc.c                              |   22 +
 hw/mem/memory-device.c                    |   49 +-
 include/hw/hyperv/dynmem-proto.h          |  423 +++++++
 include/hw/hyperv/hv-balloon.h            |   18 +
 include/hw/mem/memory-device.h            |    7 +-
 meson.build                               |   28 +-
 meson_options.txt                         |    2 +
 monitor/monitor.c                         |    1 +
 qapi/machine.json                         |  101 +-
 scripts/meson-buildoptions.sh             |    3 +
 23 files changed, 3153 insertions(+), 13 deletions(-)
 create mode 100644 hw/hyperv/hv-balloon-internal.h
 create mode 100644 hw/hyperv/hv-balloon-our_range_memslots.c
 create mode 100644 hw/hyperv/hv-balloon-our_range_memslots.h
 create mode 100644 hw/hyperv/hv-balloon-page_range_tree.c
 create mode 100644 hw/hyperv/hv-balloon-page_range_tree.h
 create mode 100644 hw/hyperv/hv-balloon.c
 create mode 100644 include/hw/hyperv/dynmem-proto.h
 create mode 100644 include/hw/hyperv/hv-balloon.h
Re: [PULL 0/9] Hyper-V Dynamic Memory Protocol driver (hv-balloon)
Posted by Stefan Hajnoczi 1 year ago
On Sun, 5 Nov 2023 at 19:49, Maciej S. Szmigiero
<mail@maciej.szmigiero.name> wrote:
>
> From: "Maciej S. Szmigiero" <maciej.szmigiero@oracle.com>
>
> The following changes since commit d762bf97931b58839316b68a570eecc6143c9e3e:
>
>   Merge tag 'pull-target-arm-20231102' of https://git.linaro.org/people/pmaydell/qemu-arm into staging (2023-11-03 10:04:12 +0800)
>
> are available in the Git repository at:
>
>   https://github.com/maciejsszmigiero/qemu.git tags/pull-hv-balloon-20231105
>
> for you to fetch changes up to 2b49ecabc6bf15efa6aa05f20a7c319ff65c4e11:
>
>   MAINTAINERS: Add an entry for Hyper-V Dynamic Memory Protocol (2023-11-03 20:31:10 +0100)

Hi Maciej,
Please take a look at this CI system build failure:

/usr/bin/ld: libqemuutil.a.p/meson-generated_.._qapi_qapi-commands-machine.c.o:
in function `qmp_marshal_query_hv_balloon_status_report':
/builds/qemu-project/qemu/build/qapi/qapi-commands-machine.c:1000:
undefined reference to `qmp_query_hv_balloon_status_report'

https://gitlab.com/qemu-project/qemu/-/jobs/5463619044

I have dropped this pull request from the staging tree for the time being.

You can run the GitLab CI by pushing to a personal qemu.git fork on
GitLab with "git push -o ci.variable=QEMU_CI=1 ..." and it's often
possible to reproduce the CI jobs locally using the Docker build tests
(see "make docker-help").

Stefan

>
> ----------------------------------------------------------------
> Hyper-V Dynamic Memory protocol driver.
>
> This driver is like virtio-balloon on steroids for Windows guests:
> it allows both changing the guest memory allocation via ballooning and
> inserting pieces of extra RAM into it on demand from a provided memory
> backend via Windows-native Hyper-V Dynamic Memory protocol.
>
> * Protocol definitions.
>
> * Hyper-V DM protocol driver (hv-balloon) base (ballooning only).
>
> * Hyper-V DM protocol driver (hv-balloon) hot-add support.
>
> * qapi query-memory-devices support for the driver.
>
> * qapi HV_BALLOON_STATUS_REPORT event.
>
> * The relevant PC machine plumbing.
>
> * New MAINTAINERS entry for the above.
>
> ----------------------------------------------------------------
> David Hildenbrand (2):
>       memory-device: Support empty memory devices
>       memory-device: Drop size alignment check
>
> Maciej S. Szmigiero (7):
>       Add Hyper-V Dynamic Memory Protocol definitions
>       Add Hyper-V Dynamic Memory Protocol driver (hv-balloon) base
>       Add Hyper-V Dynamic Memory Protocol driver (hv-balloon) hot-add support
>       qapi: Add query-memory-devices support to hv-balloon
>       qapi: Add HV_BALLOON_STATUS_REPORT event and its QMP query command
>       hw/i386/pc: Support hv-balloon
>       MAINTAINERS: Add an entry for Hyper-V Dynamic Memory Protocol
>
>  Kconfig.host                              |    3 +
>  MAINTAINERS                               |    8 +
>  hw/core/machine-hmp-cmds.c                |   15 +
>  hw/hyperv/Kconfig                         |   10 +
>  hw/hyperv/hv-balloon-internal.h           |   33 +
>  hw/hyperv/hv-balloon-our_range_memslots.c |  201 ++++
>  hw/hyperv/hv-balloon-our_range_memslots.h |  110 ++
>  hw/hyperv/hv-balloon-page_range_tree.c    |  228 ++++
>  hw/hyperv/hv-balloon-page_range_tree.h    |  118 ++
>  hw/hyperv/hv-balloon.c                    | 1766 +++++++++++++++++++++++++++++
>  hw/hyperv/meson.build                     |    1 +
>  hw/hyperv/trace-events                    |   18 +
>  hw/i386/Kconfig                           |    1 +
>  hw/i386/pc.c                              |   22 +
>  hw/mem/memory-device.c                    |   49 +-
>  include/hw/hyperv/dynmem-proto.h          |  423 +++++++
>  include/hw/hyperv/hv-balloon.h            |   18 +
>  include/hw/mem/memory-device.h            |    7 +-
>  meson.build                               |   28 +-
>  meson_options.txt                         |    2 +
>  monitor/monitor.c                         |    1 +
>  qapi/machine.json                         |  101 +-
>  scripts/meson-buildoptions.sh             |    3 +
>  23 files changed, 3153 insertions(+), 13 deletions(-)
>  create mode 100644 hw/hyperv/hv-balloon-internal.h
>  create mode 100644 hw/hyperv/hv-balloon-our_range_memslots.c
>  create mode 100644 hw/hyperv/hv-balloon-our_range_memslots.h
>  create mode 100644 hw/hyperv/hv-balloon-page_range_tree.c
>  create mode 100644 hw/hyperv/hv-balloon-page_range_tree.h
>  create mode 100644 hw/hyperv/hv-balloon.c
>  create mode 100644 include/hw/hyperv/dynmem-proto.h
>  create mode 100644 include/hw/hyperv/hv-balloon.h
>
Re: [PULL 0/9] Hyper-V Dynamic Memory Protocol driver (hv-balloon)
Posted by Maciej S. Szmigiero 1 year ago
On 6.11.2023 02:33, Stefan Hajnoczi wrote:
> On Sun, 5 Nov 2023 at 19:49, Maciej S. Szmigiero
> <mail@maciej.szmigiero.name> wrote:
>>
>> From: "Maciej S. Szmigiero" <maciej.szmigiero@oracle.com>
>>
>> The following changes since commit d762bf97931b58839316b68a570eecc6143c9e3e:
>>
>>    Merge tag 'pull-target-arm-20231102' of https://git.linaro.org/people/pmaydell/qemu-arm into staging (2023-11-03 10:04:12 +0800)
>>
>> are available in the Git repository at:
>>
>>    https://github.com/maciejsszmigiero/qemu.git tags/pull-hv-balloon-20231105
>>
>> for you to fetch changes up to 2b49ecabc6bf15efa6aa05f20a7c319ff65c4e11:
>>
>>    MAINTAINERS: Add an entry for Hyper-V Dynamic Memory Protocol (2023-11-03 20:31:10 +0100)
> 
> Hi Maciej,
> Please take a look at this CI system build failure:
> 
> /usr/bin/ld: libqemuutil.a.p/meson-generated_.._qapi_qapi-commands-machine.c.o:
> in function `qmp_marshal_query_hv_balloon_status_report':
> /builds/qemu-project/qemu/build/qapi/qapi-commands-machine.c:1000:
> undefined reference to `qmp_query_hv_balloon_status_report'
> 
> https://gitlab.com/qemu-project/qemu/-/jobs/5463619044
> 
> I have dropped this pull request from the staging tree for the time being.
> 
> You can run the GitLab CI by pushing to a personal qemu.git fork on
> GitLab with "git push -o ci.variable=QEMU_CI=1 ..." and it's often
> possible to reproduce the CI jobs locally using the Docker build tests
> (see "make docker-help").
> 
Oops, was testing the driver but forgot to also recently test the
configuration when the driver is disabled in QEMU build config.

Will fix this ASAP.

> Stefan

Thanks,
Maciej