From: Ira Weiny <ira.weiny@intel.com>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Ira Weiny <ira.weiny@intel.com>
Cc: Dave Jiang <dave.jiang@intel.com>, Fan Ni <fan.ni@samsung.com>,
"Navneet Singh" <navneet.singh@intel.com>,
Chris Mason <clm@fb.com>, Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>, Petr Mladek <pmladek@suse.com>,
Steven Rostedt <rostedt@goodmis.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Jonathan Corbet <corbet@lwn.net>,
Andrew Morton <akpm@linux-foundation.org>,
Dan Williams <dan.j.williams@intel.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Alison Schofield <alison.schofield@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
<linux-btrfs@vger.kernel.org>, <linux-cxl@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-doc@vger.kernel.org>,
<nvdimm@lists.linux.dev>
Subject: Re: [PATCH v3 25/25] tools/testing/cxl: Add DC Regions to mock mem data
Date: Mon, 9 Sep 2024 09:08:43 -0500 [thread overview]
Message-ID: <66df016bbfde9_f937b294d6@iweiny-mobl.notmuch> (raw)
In-Reply-To: <20240827153947.000077a8@Huawei.com>
Jonathan Cameron wrote:
> On Fri, 16 Aug 2024 09:44:33 -0500
> Ira Weiny <ira.weiny@intel.com> wrote:
>
> > cxl_test provides a good way to ensure quick smoke and regression
> > testing. The complexity of Dynamic Capacity (DC) extent processing as
> > well as the complexity of the new sparse DAX regions can mostly be
> > tested through cxl_test. This includes management of sparse regions and
> > DAX devices on those regions; the management of extent device lifetimes;
> > and the processing of DCD events.
> >
> > The only missing functionality from this test is actual interrupt
> > processing.
> >
> > Mock memory devices can easily mock DC information and manage fake
> > extent data.
> >
> > Define mock_dc_region information within the mock memory data. Add
> > sysfs entries on the mock device to inject and delete extents.
> >
> > The inject format is <start>:<length>:<tag>:<more_flag>
> > The delete format is <start>:<length>
> >
> > Directly call the event irq callback to simulate irqs to process the
> > test extents.
> >
> > Add DC mailbox commands to the CEL and implement those commands.
> >
> > Signed-off-by: Ira Weiny <ira.weiny@intel.com>
>
> Minor stuff inline.
>
> Thanks,
>
> Jonathan
>
> > +static int mock_get_dc_config(struct device *dev,
> > + struct cxl_mbox_cmd *cmd)
> > +{
> > + struct cxl_mbox_get_dc_config_in *dc_config = cmd->payload_in;
> > + struct cxl_mockmem_data *mdata = dev_get_drvdata(dev);
> > + u8 region_requested, region_start_idx, region_ret_cnt;
> > + struct cxl_mbox_get_dc_config_out *resp;
> > + int i;
> > +
> > + region_requested = dc_config->region_count;
> > + if (region_requested > NUM_MOCK_DC_REGIONS)
> > + region_requested = NUM_MOCK_DC_REGIONS;
>
> region_requested = min(...)
Sure.
>
> > +
> > + if (cmd->size_out < struct_size(resp, region, region_requested))
> > + return -EINVAL;
> > +
> > + memset(cmd->payload_out, 0, cmd->size_out);
> > + resp = cmd->payload_out;
> > +
> > + region_start_idx = dc_config->start_region_index;
> > + region_ret_cnt = 0;
> > + for (i = 0; i < NUM_MOCK_DC_REGIONS; i++) {
> > + if (i >= region_start_idx) {
> > + memcpy(&resp->region[region_ret_cnt],
> > + &mdata->dc_regions[i],
> > + sizeof(resp->region[region_ret_cnt]));
> > + region_ret_cnt++;
> > + }
> > + }
> > + resp->avail_region_count = NUM_MOCK_DC_REGIONS;
> > + resp->regions_returned = i;
> > +
> > + dev_dbg(dev, "Returning %d dc regions\n", region_ret_cnt);
> > + return 0;
> > +}
>
>
>
> > +static void cxl_mock_mem_remove(struct platform_device *pdev)
> > +{
> > + struct cxl_mockmem_data *mdata = dev_get_drvdata(&pdev->dev);
> > + struct cxl_memdev_state *mds = mdata->mds;
> > +
> > + dev_dbg(mds->cxlds.dev, "Removing extents\n");
>
> Clean this up as it doesn't do anything!
Opps... Must have been some previous xarray thing. Or perhaps I'm leaking
some memory here? I'll double check.
>
> > +}
> > +
>
> > @@ -1689,14 +2142,261 @@ static ssize_t sanitize_timeout_store(struct device *dev,
> >
> > return count;
> > }
> > -
> Grump ;) No whitespace changes in a patch doing anything 'useful'.
> > static DEVICE_ATTR_RW(sanitize_timeout);
> >
>
> > +static int log_dc_event(struct cxl_mockmem_data *mdata, enum dc_event type,
> > + u64 start, u64 length, const char *tag_str, bool more)
> > +{
> > + struct device *dev = mdata->mds->cxlds.dev;
> > + struct cxl_test_dcd *dcd_event;
> > +
> > + dev_dbg(dev, "mock device log event %d\n", type);
> > +
> > + dcd_event = devm_kmemdup(dev, &dcd_event_rec_template,
> > + sizeof(*dcd_event), GFP_KERNEL);
> > + if (!dcd_event)
> > + return -ENOMEM;
> > +
> > + dcd_event->rec.flags = 0;
> > + if (more)
> > + dcd_event->rec.flags |= CXL_DCD_EVENT_MORE;
> > + dcd_event->rec.event_type = type;
> > + dcd_event->rec.extent.start_dpa = cpu_to_le64(start);
> > + dcd_event->rec.extent.length = cpu_to_le64(length);
> > + memcpy(dcd_event->rec.extent.tag, tag_str,
> > + min(sizeof(dcd_event->rec.extent.tag),
> > + strlen(tag_str)));
> > +
> > + mes_add_event(mdata, CXL_EVENT_TYPE_DCD,
> > + (struct cxl_event_record_raw *)dcd_event);
> I guess this is where the missing event in previous patch come from.
>
> Increment the number here, not back in that patch.
No that patch needed to pass the counts correctly for the event test. DCD
event records have nothing to do with that.
I've cleaned up the patch.
Ira
prev parent reply other threads:[~2024-09-09 14:08 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-16 14:44 [PATCH v3 00/25] DCD: Add support for Dynamic Capacity Devices (DCD) Ira Weiny
2024-08-16 14:44 ` [PATCH v3 01/25] range: Add range_overlaps() Ira Weiny
2024-08-16 14:44 ` [PATCH v3 02/25] printk: Add print format (%par) for struct range Ira Weiny
2024-08-20 14:08 ` Petr Mladek
2024-08-22 17:53 ` Ira Weiny
2024-08-22 18:10 ` Andy Shevchenko
2024-08-26 13:23 ` Petr Mladek
2024-08-26 17:23 ` Andy Shevchenko
2024-08-26 21:17 ` Ira Weiny
2024-08-27 7:43 ` Petr Mladek
2024-08-27 13:21 ` Andy Shevchenko
2024-08-27 21:44 ` Ira Weiny
2024-08-27 13:17 ` Andy Shevchenko
2024-08-28 4:12 ` Ira Weiny
2024-08-28 13:50 ` Andy Shevchenko
2024-08-26 13:17 ` Petr Mladek
2024-08-26 13:24 ` Andy Shevchenko
2024-08-16 14:44 ` [PATCH v3 03/25] dax: Document dax dev range tuple Ira Weiny
2024-08-16 20:58 ` Dave Jiang
2024-08-23 15:29 ` Jonathan Cameron
2024-08-16 14:44 ` [PATCH v3 04/25] cxl/pci: Delay event buffer allocation Ira Weiny
2024-09-03 6:49 ` Li, Ming4
2024-09-05 19:44 ` Fan Ni
2024-08-16 14:44 ` [PATCH v3 05/25] cxl/mbox: Flag support for Dynamic Capacity Devices (DCD) ira.weiny
2024-09-03 6:50 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 06/25] cxl/mem: Read dynamic capacity configuration from the device ira.weiny
2024-08-16 21:45 ` Dave Jiang
2024-08-20 17:01 ` Fan Ni
2024-08-23 2:01 ` Ira Weiny
2024-08-23 2:02 ` Ira Weiny
2024-08-23 15:45 ` Jonathan Cameron
2024-08-16 14:44 ` [PATCH v3 07/25] cxl/core: Separate region mode from decoder mode ira.weiny
2024-08-16 22:11 ` Dave Jiang
2024-08-23 15:47 ` Jonathan Cameron
2024-09-03 6:56 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 08/25] cxl/region: Add dynamic capacity decoder and region modes ira.weiny
2024-08-16 22:14 ` Dave Jiang
2024-09-03 6:57 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 09/25] cxl/hdm: Add dynamic capacity size support to endpoint decoders ira.weiny
2024-08-16 23:08 ` Dave Jiang
2024-08-23 2:26 ` Ira Weiny
2024-08-23 16:09 ` Jonathan Cameron
2024-08-16 14:44 ` [PATCH v3 10/25] cxl/port: Add endpoint decoder DC mode support to sysfs ira.weiny
2024-08-16 23:17 ` Dave Jiang
2024-08-23 16:12 ` Jonathan Cameron
2024-08-16 14:44 ` [PATCH v3 11/25] cxl/mem: Expose DCD partition capabilities in sysfs ira.weiny
2024-08-16 23:42 ` Dave Jiang
2024-08-23 2:28 ` Ira Weiny
2024-08-23 14:58 ` Dave Jiang
2024-08-23 16:14 ` Jonathan Cameron
2024-08-16 14:44 ` [PATCH v3 12/25] cxl/region: Refactor common create region code Ira Weiny
2024-08-16 23:43 ` Dave Jiang
2024-08-22 18:51 ` Fan Ni
2024-08-23 16:17 ` Jonathan Cameron
2024-09-03 7:04 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 13/25] cxl/region: Add sparse DAX region support ira.weiny
2024-08-16 23:51 ` Dave Jiang
2024-08-22 18:50 ` Fan Ni
2024-08-23 16:59 ` Jonathan Cameron
2024-09-03 2:15 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 14/25] cxl/events: Split event msgnum configuration from irq setup Ira Weiny
2024-08-16 23:57 ` Dave Jiang
2024-08-22 21:39 ` Fan Ni
2024-08-23 17:01 ` Jonathan Cameron
2024-09-03 7:06 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 15/25] cxl/pci: Factor out interrupt policy check Ira Weiny
2024-08-22 21:41 ` Fan Ni
2024-09-03 7:07 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 16/25] cxl/mem: Configure dynamic capacity interrupts ira.weiny
2024-08-17 0:02 ` Dave Jiang
2024-08-23 17:08 ` Jonathan Cameron
2024-09-03 7:09 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 17/25] cxl/core: Return endpoint decoder information from region search Ira Weiny
2024-08-19 16:35 ` Dave Jiang
2024-08-23 17:12 ` Jonathan Cameron
2024-09-03 7:10 ` Li, Ming4
2024-08-16 14:44 ` [PATCH v3 18/25] cxl/extent: Process DCD events and realize region extents ira.weiny
2024-08-19 18:51 ` Dave Jiang
2024-08-23 2:53 ` Ira Weiny
2024-08-23 21:32 ` Fan Ni
2024-08-27 12:08 ` Jonathan Cameron
2024-08-27 16:02 ` Fan Ni
2024-08-27 13:18 ` Jonathan Cameron
2024-08-29 21:16 ` Ira Weiny
2024-08-30 9:21 ` Jonathan Cameron
2024-09-03 6:37 ` Li, Ming4
2024-09-05 19:30 ` Fan Ni
2024-08-16 14:44 ` [PATCH v3 19/25] cxl/region/extent: Expose region extent information in sysfs ira.weiny
2024-08-19 19:05 ` Dave Jiang
2024-08-23 2:58 ` Ira Weiny
2024-08-23 17:17 ` Jonathan Cameron
2024-08-23 17:19 ` Jonathan Cameron
2024-08-28 17:44 ` Fan Ni
2024-08-16 14:44 ` [PATCH v3 20/25] dax/bus: Factor out dev dax resize logic Ira Weiny
2024-08-19 22:35 ` Dave Jiang
2024-08-27 13:26 ` Jonathan Cameron
2024-08-29 21:36 ` Ira Weiny
2024-08-16 14:44 ` [PATCH v3 21/25] dax/region: Create resources on sparse DAX regions ira.weiny
2024-08-18 11:38 ` Markus Elfring
2024-08-19 23:30 ` Dave Jiang
2024-08-23 14:28 ` Ira Weiny
2024-08-27 14:12 ` Jonathan Cameron
2024-08-29 21:54 ` Ira Weiny
2024-08-16 14:44 ` [PATCH v3 22/25] cxl/region: Read existing extents on region creation ira.weiny
2024-08-20 0:06 ` Dave Jiang
2024-08-23 21:31 ` Ira Weiny
2024-08-27 14:19 ` Jonathan Cameron
2024-09-05 19:35 ` Fan Ni
2024-08-16 14:44 ` [PATCH v3 23/25] cxl/mem: Trace Dynamic capacity Event Record ira.weiny
2024-08-20 22:54 ` Dave Jiang
2024-08-26 18:02 ` Ira Weiny
2024-08-27 14:20 ` Jonathan Cameron
2024-09-05 19:38 ` Fan Ni
2024-08-16 14:44 ` [PATCH v3 24/25] tools/testing/cxl: Make event logs dynamic Ira Weiny
2024-08-20 23:30 ` Dave Jiang
2024-08-27 14:32 ` Jonathan Cameron
2024-09-09 13:57 ` Ira Weiny
2024-08-16 14:44 ` [PATCH v3 25/25] tools/testing/cxl: Add DC Regions to mock mem data Ira Weiny
2024-08-27 14:39 ` Jonathan Cameron
2024-09-09 14:08 ` Ira Weiny [this message]
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=66df016bbfde9_f937b294d6@iweiny-mobl.notmuch \
--to=ira.weiny@intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=clm@fb.com \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=dsterba@suse.com \
--cc=fan.ni@samsung.com \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=navneet.singh@intel.com \
--cc=nvdimm@lists.linux.dev \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--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