From: Alison Schofield <alison.schofield@intel.com>
To: ira.weiny@intel.com
Cc: Dan Williams <dan.j.williams@intel.com>,
Navneet Singh <navneet.singh@intel.com>,
Fan Ni <fan.ni@samsung.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Dave Jiang <dave.jiang@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC v2 03/18] cxl/mem: Read Dynamic capacity configuration from the device
Date: Thu, 7 Sep 2023 08:46:04 -0700 [thread overview]
Message-ID: <ZPnwPDZrKYT7hp6X@aschofie-mobl2> (raw)
In-Reply-To: <20230604-dcd-type2-upstream-v2-3-f740c47e7916@intel.com>
On Mon, Aug 28, 2023 at 10:20:54PM -0700, Ira Weiny wrote:
> From: Navneet Singh <navneet.singh@intel.com>
>
> Devices can optionally support Dynamic Capacity (DC). These devices are
> known as Dynamic Capacity Devices (DCD).
snip
>
> +static enum cxl_region_mode
> +cxl_decoder_to_region_mode(enum cxl_decoder_mode mode)
> +{
> + switch (mode) {
> + case CXL_DECODER_NONE:
> + return CXL_REGION_NONE;
> + case CXL_DECODER_RAM:
> + return CXL_REGION_RAM;
> + case CXL_DECODER_PMEM:
> + return CXL_REGION_PMEM;
> + case CXL_DECODER_DEAD:
> + return CXL_REGION_DEAD;
> + case CXL_DECODER_MIXED:
> + default:
> + return CXL_REGION_MIXED;
> + }
> +
> + return CXL_REGION_MIXED;
Can the paths to return _MIXED be simplified here?
> +}
> +
snip
> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
> index cd4a9ffdacc7..ed282dcd5cf5 100644
> --- a/drivers/cxl/cxl.h
> +++ b/drivers/cxl/cxl.h
> @@ -374,6 +374,28 @@ static inline const char *cxl_decoder_mode_name(enum cxl_decoder_mode mode)
> return "mixed";
> }
>
> +enum cxl_region_mode {
> + CXL_REGION_NONE,
> + CXL_REGION_RAM,
> + CXL_REGION_PMEM,
> + CXL_REGION_MIXED,
> + CXL_REGION_DEAD,
> +};
I'm concerned about _DEAD.
At first I was going to say name these as CXL_REGION_MODE_*, but it's
pretty obvious that these are mode words...except for DEAD. Is that
an actual mode or is it some type of status? I don't think I see it
used yet.
> +
> +static inline const char *cxl_region_mode_name(enum cxl_region_mode mode)
> +{
> + static const char * const names[] = {
> + [CXL_REGION_NONE] = "none",
> + [CXL_REGION_RAM] = "ram",
> + [CXL_REGION_PMEM] = "pmem",
> + [CXL_REGION_MIXED] = "mixed",
> + };
> +
> + if (mode >= CXL_REGION_NONE && mode <= CXL_REGION_MIXED)
> + return names[mode];
> + return "mixed";
> +}
snip
> +
> /**
> * struct cxl_memdev_state - Generic Type-3 Memory Device Class driver data
> *
> @@ -449,6 +464,8 @@ struct cxl_dev_state {
> * @enabled_cmds: Hardware commands found enabled in CEL.
> * @exclusive_cmds: Commands that are kernel-internal only
> * @total_bytes: sum of all possible capacities
> + * @static_cap: Sum of RAM and PMEM capacities
> + * @dynamic_cap: Complete DPA range occupied by DC regions
Wondering about renaming RAM and PMEM caps as 'static'.
They are changeable via set partition commands.
> * @volatile_only_bytes: hard volatile capacity
> * @persistent_only_bytes: hard persistent capacity
> * @partition_align_bytes: alignment size for partition-able capacity
> @@ -456,6 +473,10 @@ struct cxl_dev_state {
> * @active_persistent_bytes: sum of hard + soft persistent
> * @next_volatile_bytes: volatile capacity change pending device reset
> * @next_persistent_bytes: persistent capacity change pending device reset
> + * @nr_dc_region: number of DC regions implemented in the memory device
> + * @dc_region: array containing info about the DC regions
> + * @dc_event_log_size: The number of events the device can store in the
> + * Dynamic Capacity Event Log before it overflows
> * @event: event log driver state
> * @poison: poison driver state info
> * @fw: firmware upload / activation state
> @@ -473,7 +494,10 @@ struct cxl_memdev_state {
> DECLARE_BITMAP(dcd_cmds, CXL_DCD_ENABLED_MAX);
> DECLARE_BITMAP(enabled_cmds, CXL_MEM_COMMAND_ID_MAX);
> DECLARE_BITMAP(exclusive_cmds, CXL_MEM_COMMAND_ID_MAX);
> +
> u64 total_bytes;
> + u64 static_cap;
> + u64 dynamic_cap;
> u64 volatile_only_bytes;
> u64 persistent_only_bytes;
> u64 partition_align_bytes;
> @@ -481,6 +505,11 @@ struct cxl_memdev_state {
> u64 active_persistent_bytes;
> u64 next_volatile_bytes;
> u64 next_persistent_bytes;
> +
> + u8 nr_dc_region;
> + struct cxl_dc_region_info dc_region[CXL_MAX_DC_REGION];
> + size_t dc_event_log_size;
> +
> struct cxl_event_state event;
> struct cxl_poison_state poison;
> struct cxl_security_state security;
> @@ -587,6 +616,7 @@ struct cxl_mbox_identify {
> __le16 inject_poison_limit;
> u8 poison_caps;
> u8 qos_telemetry_caps;
> + __le16 dc_event_log_size;
> } __packed;
>
snip
> /*
next prev parent reply other threads:[~2023-09-07 16:13 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-29 5:20 [PATCH RFC v2 00/18] DCD: Add support for Dynamic Capacity Devices (DCD) Ira Weiny
2023-08-29 5:20 ` [PATCH RFC v2 01/18] cxl/hdm: Debug, use decoder name function Ira Weiny
2023-08-29 14:03 ` Jonathan Cameron
2023-08-29 21:48 ` Fan Ni
2023-09-03 2:55 ` Ira Weiny
2023-08-30 20:32 ` Dave Jiang
2023-08-29 5:20 ` [PATCH RFC v2 02/18] cxl/mbox: Flag support for Dynamic Capacity Devices (DCD) Ira Weiny
2023-08-29 14:07 ` Jonathan Cameron
2023-09-03 3:38 ` Ira Weiny
2023-08-29 21:49 ` Fan Ni
2023-08-30 20:33 ` Dave Jiang
2023-10-24 16:16 ` Jonathan Cameron
2023-08-29 5:20 ` [PATCH RFC v2 03/18] cxl/mem: Read Dynamic capacity configuration from the device ira.weiny
2023-08-29 14:37 ` Jonathan Cameron
2023-09-03 23:36 ` Ira Weiny
2023-08-30 21:01 ` Dave Jiang
2023-09-05 0:14 ` Ira Weiny
2023-09-08 20:23 ` Ira Weiny
2023-08-30 21:44 ` Fan Ni
2023-09-08 22:52 ` Ira Weiny
2023-09-12 21:32 ` Fan Ni
2023-09-07 15:46 ` Alison Schofield [this message]
2023-09-12 1:18 ` Ira Weiny
2023-09-08 12:46 ` Jørgen Hansen
2023-09-11 20:26 ` Ira Weiny
2023-08-29 5:20 ` [PATCH RFC v2 04/18] cxl/region: Add Dynamic Capacity decoder and region modes Ira Weiny
2023-08-29 14:39 ` Jonathan Cameron
2023-08-30 21:13 ` Dave Jiang
2023-08-31 17:00 ` Fan Ni
2023-08-29 5:20 ` [PATCH RFC v2 05/18] cxl/port: Add Dynamic Capacity mode support to endpoint decoders Ira Weiny
2023-08-29 14:49 ` Jonathan Cameron
2023-09-05 0:05 ` Ira Weiny
2023-08-31 17:25 ` Fan Ni
2023-09-08 23:26 ` Ira Weiny
2023-08-29 5:20 ` [PATCH RFC v2 06/18] cxl/port: Add Dynamic Capacity size " Ira Weiny
2023-08-29 15:09 ` Jonathan Cameron
2023-09-05 4:32 ` Ira Weiny
2023-08-29 5:20 ` [PATCH RFC v2 07/18] cxl/mem: Expose device dynamic capacity configuration ira.weiny
2023-08-29 15:14 ` Jonathan Cameron
2023-09-05 17:55 ` Fan Ni
2023-09-05 20:45 ` Ira Weiny
2023-08-30 22:46 ` Dave Jiang
2023-09-08 23:22 ` Ira Weiny
2023-08-29 5:20 ` [PATCH RFC v2 08/18] cxl/region: Add Dynamic Capacity CXL region support Ira Weiny
2023-08-29 15:19 ` Jonathan Cameron
2023-08-30 23:27 ` Dave Jiang
2023-09-06 4:36 ` Ira Weiny
2023-09-05 21:09 ` Fan Ni
2023-08-29 5:21 ` [PATCH RFC v2 09/18] cxl/mem: Read extents on memory device discovery Ira Weiny
2023-08-29 15:26 ` Jonathan Cameron
2023-08-30 0:16 ` Ira Weiny
2023-09-05 21:41 ` Ira Weiny
2023-08-29 5:21 ` [PATCH RFC v2 10/18] cxl/mem: Handle DCD add and release capacity events Ira Weiny
2023-08-29 15:59 ` Jonathan Cameron
2023-09-05 23:49 ` Ira Weiny
2023-08-31 17:28 ` Dave Jiang
2023-09-08 15:35 ` Ira Weiny
2023-08-29 5:21 ` [PATCH RFC v2 11/18] cxl/region: Expose DC extents on region driver load Ira Weiny
2023-08-29 16:20 ` Jonathan Cameron
2023-09-06 3:36 ` Ira Weiny
2023-08-31 18:38 ` Dave Jiang
2023-09-08 23:57 ` Ira Weiny
2023-08-29 5:21 ` [PATCH RFC v2 12/18] cxl/region: Notify regions of DC changes Ira Weiny
2023-08-29 16:40 ` Jonathan Cameron
2023-09-06 4:00 ` Ira Weiny
2023-09-18 13:56 ` Jørgen Hansen
2023-09-18 17:45 ` Ira Weiny
2023-08-29 5:21 ` [PATCH RFC v2 13/18] dax/bus: Factor out dev dax resize logic Ira Weiny
2023-08-30 11:27 ` Jonathan Cameron
2023-09-06 4:12 ` Ira Weiny
2023-08-31 21:48 ` Dave Jiang
2023-08-29 5:21 ` [PATCH RFC v2 14/18] dax/region: Support DAX device creation on dynamic DAX regions Ira Weiny
2023-08-30 11:50 ` Jonathan Cameron
2023-09-06 4:35 ` Ira Weiny
2023-09-12 16:49 ` Jonathan Cameron
2023-09-12 22:08 ` Ira Weiny
2023-09-12 22:35 ` Dan Williams
2023-09-13 17:30 ` Ira Weiny
2023-09-13 17:59 ` Dan Williams
2023-09-13 19:26 ` Ira Weiny
2023-09-14 10:32 ` Jonathan Cameron
2023-08-29 5:21 ` [PATCH RFC v2 15/18] cxl/mem: Trace Dynamic capacity Event Record ira.weiny
2023-08-29 16:46 ` Jonathan Cameron
2023-09-06 4:07 ` Ira Weiny
2023-08-29 5:21 ` [PATCH RFC v2 16/18] tools/testing/cxl: Make event logs dynamic Ira Weiny
2023-08-30 12:11 ` Jonathan Cameron
2023-09-06 21:15 ` Ira Weiny
2023-08-29 5:21 ` [PATCH RFC v2 17/18] tools/testing/cxl: Add DC Regions to mock mem data Ira Weiny
2023-08-30 12:20 ` Jonathan Cameron
2023-09-06 21:18 ` Ira Weiny
2023-08-31 23:19 ` Dave Jiang
2023-08-29 5:21 ` [PATCH RFC v2 18/18] tools/testing/cxl: Add Dynamic Capacity events Ira Weiny
2023-08-30 12:23 ` Jonathan Cameron
2023-09-06 21:39 ` Ira Weiny
2023-08-31 23:20 ` Dave Jiang
2023-09-07 21:01 ` [PATCH RFC v2 00/18] DCD: Add support for Dynamic Capacity Devices (DCD) Fan Ni
2023-09-12 1:44 ` Ira Weiny
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=ZPnwPDZrKYT7hp6X@aschofie-mobl2 \
--to=alison.schofield@intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=fan.ni@samsung.com \
--cc=ira.weiny@intel.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=navneet.singh@intel.com \
--cc=vishal.l.verma@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox