From: fan <nifan.cxl@gmail.com>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: fan <nifan.cxl@gmail.com>, Markus Armbruster <armbru@redhat.com>,
qemu-devel@nongnu.org, linux-cxl@vger.kernel.org,
gregory.price@memverge.com, ira.weiny@intel.com,
dan.j.williams@intel.com, a.manzanares@samsung.com,
dave@stgolabs.net, nmtadam.samsung@gmail.com,
jim.harris@samsung.com, Jorgen.Hansen@wdc.com,
wj28.lee@gmail.com, Fan Ni <fan.ni@samsung.com>
Subject: Re: [PATCH v7 09/12] hw/cxl/events: Add qmp interfaces to add/release dynamic capacity extents
Date: Mon, 20 May 2024 10:55:41 -0700 [thread overview]
Message-ID: <ZkuOnZCxyo896ocv@debian> (raw)
In-Reply-To: <20240520175012.000045fe@Huawei.com>
On Mon, May 20, 2024 at 05:50:12PM +0100, Jonathan Cameron wrote:
> On Wed, 1 May 2024 15:29:31 -0700
> fan <nifan.cxl@gmail.com> wrote:
>
> > From 873f59ec06c38645768ada452d9b18920a34723e Mon Sep 17 00:00:00 2001
> > From: Fan Ni <fan.ni@samsung.com>
> > Date: Tue, 20 Feb 2024 09:48:31 -0800
> > Subject: [PATCH] hw/cxl/events: Add qmp interfaces to add/release dynamic
> > capacity extents
> > Status: RO
> > Content-Length: 25172
> > Lines: 731
> >
> > 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": 2,
> > "region": 0,
> > "tag": "",
> > "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,
> > "flags": 1,
> > "region": 0,
> > "tag": "",
> > "extents": [
> > {
> > "offset": 134217728,
> > "len": 134217728
> > }
> > ]
> > }
> > }
> >
> > Signed-off-by: Fan Ni <fan.ni@samsung.com>
>
> Hi Fan,
>
> A few trivial questions inline. I don't feel particularly strongly
> about breaking up the flags fields, but I'd like to understand your
> reasoning for keeping them as single fields?
>
> Is it mainly to keep aligned with the specification or something else?
>
> Thanks,
>
> Jonathan
>
>
> > #endif /* CXL_EVENTS_H */
> > diff --git a/qapi/cxl.json b/qapi/cxl.json
> > index 4281726dec..27cf39f448 100644
> > --- a/qapi/cxl.json
> > +++ b/qapi/cxl.json
> > @@ -361,3 +361,93 @@
> > ##
> > {'command': 'cxl-inject-correctable-error',
> > 'data': {'path': 'str', 'type': 'CxlCorErrorType'}}
> > +
> > +##
> > +# @CXLDynamicCapacityExtent:
> > +#
> > +# A single dynamic capacity extent
> > +#
> > +# @offset: The offset (in bytes) to the start of the region
> > +# where the extent belongs to
> > +#
> > +# @len: The length of the extent in bytes
> > +#
> > +# Since: 9.1
> > +##
> > +{ 'struct': 'CXLDynamicCapacityExtent',
> > + 'data': {
> > + 'offset':'uint64',
> > + 'len': 'uint64'
> > + }
> > +}
> > +
> > +##
> > +# @cxl-add-dynamic-capacity:
> > +#
> > +# Command to initiate to add dynamic capacity extents to a host. It
> > +# simulates operations defined in cxl spec r3.1 7.6.7.6.5.
> > +#
> > +# @path: CXL DCD canonical QOM path
> > +#
> > +# @host-id: The "Host ID" field as defined in cxl spec r3.1
> > +# Table 7-70.
> > +#
> > +# @selection-policy: The "Selection Policy" bits as defined in
> > +# cxl spec r3.1 Table 7-70. It specifies the policy to use for
> > +# selecting which extents comprise the added capacity.
>
> Hmm. This one is defined as a selection of nameable choices. Perhaps
> worth an enum? If we did do that, we'd also need to break the flags
> on in the release flags below.
Initially, I defined a enum for selection policy. But for users who are
not familiar with CXL spec, I think the enum definition is not very clear to
to them without reading the spec, so I removed it. Also, there are some
reserved bits there, let it as uint8 may help keep the interface unchanged
if some of the bits are used in the future?
>
>
> > +#
> > +# @region: The "Region Number" field as defined in cxl spec r3.1
> > +# Table 7-70. The dynamic capacity region where the capacity
> > +# is being added. Valid range is from 0-7.
> > +#
> > +# @tag: The "Tag" field as defined in cxl spec r3.1 Table 7-70.
> > +#
> > +# @extents: The "Extent List" field as defined in cxl spec r3.1
> > +# Table 7-70.
> > +#
> > +# Since : 9.1
> > +##
> > +{ 'command': 'cxl-add-dynamic-capacity',
> > + 'data': { 'path': 'str',
> > + 'host-id': 'uint16',
> > + 'selection-policy': 'uint8',
> > + 'region': 'uint8',
> > + 'tag': 'str',
> > + 'extents': [ 'CXLDynamicCapacityExtent' ]
> > + }
> > +}
> > +
> > +##
> > +# @cxl-release-dynamic-capacity:
> > +#
> > +# Command to initiate to release dynamic capacity extents from a
> > +# host. It simulates operations defined in cxl spec r3.1 7.6.7.6.6.
> > +#
> > +# @path: CXL DCD canonical QOM path
> > +#
> > +# @host-id: The "Host ID" field as defined in cxl spec r3.1
> > +# Table 7-71.
> > +#
> > +# @flags: The "Flags" field as defined in cxl spec r3.1 Table 7-71,
> > +# with bit[3:0] for removal policy, bit[4] for forced removal,
> > +# bit[5] for sanitize on release, bit[7:6] reserved.
>
> This can be nicely broken up into removal policy enum plus two flags.
> It might be worth doing so to give a nicer interface?
So if we choose to do it this way, maybe we use enum for the above add
command also?
>
> > +#
> > +# @region: The dynamic capacity region where the extents will be
> > +# released.
>
> This has a better definition in the add dynamic capacity entry above.
Yeah, will fix.
Fan
>
> > +#
> > +# @tag: The "Tag" field as defined in cxl spec r3.1 Table 7-71.
> > +#
> > +# @extents: The "Extent List" field as defined in cxl spec r3.1
> > +# Table 7-71.
> > +#
> > +# Since : 9.1
> > +##
> > +{ 'command': 'cxl-release-dynamic-capacity',
> > + 'data': { 'path': 'str',
> > + 'host-id': 'uint16',
> > + 'flags': 'uint8',
> > + 'region': 'uint8',
> > + 'tag': 'str',
> > + 'extents': [ 'CXLDynamicCapacityExtent' ]
> > + }
> > +}
>
next prev parent reply other threads:[~2024-05-20 17:55 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-18 23:10 [PATCH v7 00/12] Enabling DCD emulation support in Qemu nifan.cxl
2024-04-18 23:10 ` [PATCH v7 01/12] hw/cxl/cxl-mailbox-utils: Add dc_event_log_size field to output payload of identify memory device command nifan.cxl
2024-04-19 16:40 ` Gregory Price
2024-04-18 23:10 ` [PATCH v7 02/12] hw/cxl/cxl-mailbox-utils: Add dynamic capacity region representative and mailbox command support nifan.cxl
2024-04-19 16:44 ` Gregory Price
2024-04-18 23:10 ` [PATCH v7 03/12] include/hw/cxl/cxl_device: Rename mem_size as static_mem_size for type3 memory devices nifan.cxl
2024-04-19 16:45 ` Gregory Price
2024-04-18 23:10 ` [PATCH v7 04/12] hw/mem/cxl_type3: Add support to create DC regions to " nifan.cxl
2024-04-19 16:47 ` Gregory Price
2024-05-14 8:14 ` Zhijian Li (Fujitsu)
2024-05-14 8:14 ` Zhijian Li (Fujitsu) via
2024-05-16 17:06 ` fan
2024-04-18 23:10 ` [PATCH v7 05/12] hw/mem/cxl-type3: Refactor ct3_build_cdat_entries_for_mr to take mr size instead of mr as argument nifan.cxl
2024-04-19 16:39 ` Gregory Price
2024-04-18 23:10 ` [PATCH v7 06/12] hw/mem/cxl_type3: Add host backend and address space handling for DC regions nifan.cxl
2024-04-19 17:27 ` Gregory Price
2024-04-22 11:55 ` Jonathan Cameron
2024-04-22 11:55 ` Jonathan Cameron via
2024-04-22 11:52 ` Jonathan Cameron
2024-04-22 11:52 ` Jonathan Cameron via
2024-05-14 8:28 ` Zhijian Li (Fujitsu)
2024-05-14 8:28 ` Zhijian Li (Fujitsu) via
2024-05-16 17:07 ` fan
2024-04-18 23:10 ` [PATCH v7 07/12] hw/mem/cxl_type3: Add DC extent list representative and get DC extent list mailbox support nifan.cxl
2024-04-19 16:52 ` Gregory Price
2024-04-18 23:10 ` [PATCH v7 08/12] hw/cxl/cxl-mailbox-utils: Add mailbox commands to support add/release dynamic capacity response nifan.cxl
2024-04-19 18:12 ` Gregory Price
2024-04-18 23:11 ` [PATCH v7 09/12] hw/cxl/events: Add qmp interfaces to add/release dynamic capacity extents nifan.cxl
2024-04-19 18:13 ` Gregory Price
2024-04-22 12:01 ` Jonathan Cameron
2024-04-22 12:01 ` Jonathan Cameron via
2024-04-26 9:12 ` Markus Armbruster
2024-04-26 17:31 ` fan
2024-04-29 7:58 ` Markus Armbruster
2024-04-30 17:17 ` fan
2024-05-01 14:58 ` Jonathan Cameron
2024-05-01 14:58 ` Jonathan Cameron via
2024-05-01 22:36 ` fan
2024-06-04 9:18 ` Markus Armbruster
2024-06-04 11:54 ` Jonathan Cameron
2024-06-04 11:54 ` Jonathan Cameron via
2024-06-04 12:13 ` Jonathan Cameron
2024-06-04 12:13 ` Jonathan Cameron via
2024-06-04 12:28 ` Markus Armbruster
2024-04-30 17:21 ` Jonathan Cameron
2024-04-30 17:21 ` Jonathan Cameron via
2024-05-01 22:29 ` fan
2024-05-20 16:50 ` Jonathan Cameron
2024-05-20 16:50 ` Jonathan Cameron via
2024-05-20 17:55 ` fan [this message]
2024-05-21 23:32 ` fan
2024-05-23 15:31 ` Jonathan Cameron
2024-05-23 15:31 ` Jonathan Cameron via
2024-05-21 23:38 ` fan
2024-05-23 15:32 ` Jonathan Cameron
2024-05-23 15:32 ` Jonathan Cameron via
2024-05-14 2:35 ` Zhijian Li (Fujitsu)
2024-05-14 2:35 ` Zhijian Li (Fujitsu) via
2024-04-18 23:11 ` [PATCH v7 10/12] hw/mem/cxl_type3: Add DPA range validation for accesses to DC regions nifan.cxl
2024-04-19 16:57 ` Gregory Price
2024-04-18 23:11 ` [PATCH v7 11/12] hw/cxl/cxl-mailbox-utils: Add superset extent release mailbox support nifan.cxl
2024-04-19 18:20 ` Gregory Price
2024-04-18 23:11 ` [PATCH v7 12/12] hw/mem/cxl_type3: Allow to release extent superset in QMP interface nifan.cxl
2024-04-19 18:20 ` Gregory Price
2024-04-19 18:24 ` [PATCH v7 00/12] Enabling DCD emulation support in Qemu Gregory Price
2024-04-19 18:43 ` fan
2024-04-20 20:35 ` Gregory Price
2024-04-22 12:04 ` Jonathan Cameron
2024-04-22 12:04 ` Jonathan Cameron via
2024-04-22 14:23 ` Jonathan Cameron
2024-04-22 14:23 ` Jonathan Cameron via
2024-04-22 15:07 ` Jonathan Cameron
2024-04-22 15:07 ` Jonathan Cameron via
2024-04-22 15:42 ` Gregory Price
2024-05-16 17:05 ` fan
2024-05-17 12:18 ` Jonathan Cameron
2024-05-17 12:18 ` Jonathan Cameron via
2024-05-17 16:03 ` fan
2024-05-28 18:10 ` Gregory Price
2024-05-14 2:16 ` Zhijian Li (Fujitsu)
2024-05-14 2:16 ` Zhijian Li (Fujitsu) via
2024-05-16 17:12 ` fan
2024-05-17 2:20 ` Zhijian Li (Fujitsu)
2024-05-17 2:20 ` Zhijian Li (Fujitsu) via
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZkuOnZCxyo896ocv@debian \
--to=nifan.cxl@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=Jorgen.Hansen@wdc.com \
--cc=a.manzanares@samsung.com \
--cc=armbru@redhat.com \
--cc=dan.j.williams@intel.com \
--cc=dave@stgolabs.net \
--cc=fan.ni@samsung.com \
--cc=gregory.price@memverge.com \
--cc=ira.weiny@intel.com \
--cc=jim.harris@samsung.com \
--cc=linux-cxl@vger.kernel.org \
--cc=nmtadam.samsung@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=wj28.lee@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.