qemu/qapi
Fan Ni d0b9b28a5b hw/cxl/events: Add qmp interfaces to add/release dynamic capacity extents
To simulate FM functionalities for initiating Dynamic Capacity Add
(Opcode 5604h) and Dynamic Capacity Release (Opcode 5605h) as in CXL spec
r3.1 7.6.7.6.5 and 7.6.7.6.6, we implemented two QMP interfaces to issue
add/release dynamic capacity extents requests.

With the change, we allow to release an extent only when its DPA range
is contained by a single accepted extent in the device. That is to say,
extent superset release is not supported yet.

1. Add dynamic capacity extents:

For example, the command to add two continuous extents (each 128MiB long)
to region 0 (starting at DPA offset 0) looks like below:

{ "execute": "qmp_capabilities" }

{ "execute": "cxl-add-dynamic-capacity",
  "arguments": {
      "path": "/machine/peripheral/cxl-dcd0",
      "host-id": 0,
      "selection-policy": "prescriptive",
      "region": 0,
      "extents": [
      {
          "offset": 0,
          "len": 134217728
      },
      {
          "offset": 134217728,
          "len": 134217728
      }
      ]
  }
}

2. Release dynamic capacity extents:

For example, the command to release an extent of size 128MiB from region 0
(DPA offset 128MiB) looks like below:

{ "execute": "cxl-release-dynamic-capacity",
  "arguments": {
      "path": "/machine/peripheral/cxl-dcd0",
      "host-id": 0,
      "removal-policy":"prescriptive",
      "region": 0,
      "extents": [
      {
          "offset": 134217728,
          "len": 134217728
      }
      ]
  }
}

Tested-by: Svetly Todorov <svetly.todorov@memverge.com>
Reviewed-by: Gregory Price <gregory.price@memverge.com>
Signed-off-by: Fan Ni <fan.ni@samsung.com>
Message-Id: <20240523174651.1089554-12-nifan.cxl@gmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2024-07-01 17:16:04 -04:00
..
acpi.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
audio.json audio/pw: Pipewire->PipeWire case fix for user-visible text 2023-07-17 15:22:56 +04:00
authz.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
block-core.json qapi: blockdev-backup: add discard-source parameter 2024-05-28 15:52:15 +03:00
block-export.json qapi: Move error documentation to new "Errors" sections 2024-03-04 07:12:40 +01:00
block.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
char.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
common.json qapi: document PCIe Gen5/Gen6 speeds since 9.0 2024-03-18 04:57:45 -04:00
compat.json qapi: Belatedly update CompatPolicy documentation for unstable 2023-10-19 07:02:29 +02:00
control.json qapi: Drop stray Arguments: line from qmp_capabilities docs 2024-03-26 06:36:08 +01:00
crypto.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
cryptodev.json spelling: information 2023-06-09 23:38:16 +03:00
cxl.json hw/cxl/events: Add qmp interfaces to add/release dynamic capacity extents 2024-07-01 17:16:04 -04:00
dump.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
ebpf.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
error.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
introspect.json qapi: Drop redundant documentation of inherited members 2024-02-03 09:19:25 +01:00
job.json blockjob: introduce block-job-change QMP command 2023-10-31 18:20:25 +01:00
machine-common.json CPU topology: extend with s390 specifics 2023-10-20 07:16:53 +02:00
machine-target.json target/s390x: report deprecated-props in cpu-model-expansion reply 2024-05-10 08:34:20 +02:00
machine.json hw/intc: Introduce x-query-interrupt-controllers QMP command 2024-06-19 12:40:49 +02:00
meson.build qapi/vfio: Add VFIO migration QAPI event 2024-05-16 16:59:19 +02:00
migration.json migration/postcopy: Add postcopy-recover-setup phase 2024-06-21 09:47:59 -03:00
misc-target.json i386/sev: Update query-sev QAPI format to handle SEV-SNP 2024-06-05 11:01:06 +02:00
misc.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
net.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
opts-visitor.c qapi: Inline and remove QERR_INVALID_PARAMETER definition 2024-04-24 09:50:58 +02:00
pci.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
pragma.json qapi: document parameters of query-cpu-model-* QAPI commands 2024-03-26 06:36:08 +01:00
qapi-clone-visitor.c qapi: Do not cast function pointers 2024-05-29 12:41:56 +02:00
qapi-dealloc-visitor.c qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
qapi-forward-visitor.c qapi: remove needless include 2022-03-22 14:46:18 +04:00
qapi-schema.json qapi/vfio: Add VFIO migration QAPI event 2024-05-16 16:59:19 +02:00
qapi-type-helpers.c qapi: New strv_from_str_list() 2024-03-04 07:12:40 +01:00
qapi-util.c qapi: Fix dangling references to docs/devel/qapi-code-gen.txt 2024-01-26 07:04:53 +01:00
qapi-visit-core.c qapi: Factor out compat_policy_input_ok() 2021-10-29 21:27:20 +02:00
qdev.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
qmp-dispatch.c Revert "monitor: use aio_co_reschedule_self()" 2024-06-10 11:05:43 +02:00
qmp-event.c Replace qemu_gettimeofday() with g_get_real_time() 2022-04-06 10:50:37 +02:00
qmp-registry.c qapi: Generalize command policy checking 2021-10-29 18:24:46 +02:00
qobject-input-visitor.c qapi: Inline QERR_INVALID_PARAMETER_TYPE definition (constant value) 2024-04-24 09:50:58 +02:00
qobject-output-visitor.c qapi: Extend -compat to set policy for unstable interfaces 2021-10-29 21:28:01 +02:00
qom.json i386/sev: Introduce 'sev-snp-guest' object 2024-06-05 11:01:06 +02:00
replay.json qapi: Expand a few awkward abbreviations in documentation 2024-03-26 06:36:08 +01:00
rocker.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
run-state.json qapi: document leftover members in qapi/run-state.json 2024-03-26 06:36:08 +01:00
sockets.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
stats.json qapi: document leftover members in qapi/stats.json 2024-03-26 06:36:08 +01:00
string-input-visitor.c qapi: Inline QERR_INVALID_PARAMETER_TYPE definition (constant value) 2024-04-24 09:50:58 +02:00
string-output-visitor.c string-output-visitor: Fix (pseudo) struct handling 2024-01-26 11:16:58 +01:00
tpm.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
trace-events qapi: Generalize struct member policy checking 2021-10-29 18:23:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
trace.json trace: Remove deprecated 'vcpu' field from QMP trace events 2024-06-04 11:53:43 +02:00
transaction.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
ui.json qapi: document InputMultiTouchType 2024-03-26 06:36:08 +01:00
vfio.json qapi/vfio: Add VFIO migration QAPI event 2024-05-16 16:59:19 +02:00
virtio.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
yank.json qapi/yank: Tweak @yank's error description for consistency 2024-03-04 07:12:40 +01:00