Linux CXL
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: fan <nifan.cxl@gmail.com>, <linux-cxl@vger.kernel.org>,
	<a.manzanares@samsung.com>
Cc: Ira Weiny <ira.weiny@intel.com>, Fan Ni <fan.ni@samsung.com>,
	"Singh, Naveen" <naveen.c.singh@intel.com>, <dave@stgolabs.net>,
	<nmtadam.samsung@gmail.com>
Subject: Re: Questions about the qemu DCD support in cxl-2023-09-13
Date: Thu, 26 Oct 2023 17:58:03 +0100	[thread overview]
Message-ID: <20231026175802.00001cfc@Huawei.com> (raw)
In-Reply-To: <20231026100121.00007100@Huawei.com>

On Thu, 26 Oct 2023 10:01:21 +0100
Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:

> On Tue, 24 Oct 2023 22:25:53 -0700
> fan <nifan.cxl@gmail.com> wrote:
> 
> > On Tue, Oct 24, 2023 at 11:56:02AM -0700, fan wrote:  
> > > On Mon, Oct 23, 2023 at 12:48:02PM -0700, fan wrote:    
> > > > On Thu, Sep 21, 2023 at 03:24:26PM -0700, Ira Weiny wrote:    
> > > > > Fan,
> > > > > 
> > > > > I'm working off of Jonathan's latest CXL branch with the DCD patches.[1]
> > > > > 
> > > > > I've been testing various things and so far I have a couple of questions.
> > > > > 
> > > > > 1) If the qmp command is used to add extents which overlap other extents
> > > > >    shouldn't that throw an error?  I don't see any validation of this and
> > > > >    I would think a real device would reject such a request from the FM.
> > > > > 
> > > > > 2) Where is CXLType3Dev->dc.total_extent_count set?  Attempting to add
> > > > >    extents prior to driver load does not seem to work.  And I think this
> > > > >    is because total_extent_count is 0 in cmd_dcd_get_dyn_cap_ext_list().
> > > > > 
> > > > > Ira
> > > > > 
> > > > > [1] https://gitlab.com/jic23/qemu/-/tree/cxl-2023-09-13    
> > > > 
> > > > Hi Ira,
> > > > FYI. I have updated the DCD emulation patch series based on feedbacks on
> > > > the previous version.
> > > > 
> > > > The new version is here:
> > > > https://github.com/moking/qemu-jic-clone/tree/dcd-dev
> > > > 
> > > > The code is based on Jonathan's branch cxl-2023-09-26.
> > > > 
> > > > The main changes include,
> > > > 
> > > > 1. Update cxl_find_dc_region to detect the case the range of
> > > > the extent cross multiple DC regions.
> > > > 2. Add comments to explain the checks performed in function
> > > > cxl_detect_malformed_extent_list. (Jonathan)
> > > > 3. Minimize the checks in cmd_dcd_add_dyn_cap_rsp.(Jonathan)
> > > > 4. Update total_extent_count in add/release dynamic capacity response function.
> > > > (Ira and Jorgen Hansen).
> > > > 5. Fix the logic issue in test_bits and renamed it to
> > > > test_any_bits_set to clear its function.
> > > > 6. Add pending extent list for add/release extent event.
> > > > 7. When add/release extent response is received, use the pending list to
> > > > verify the extents are valid.
> > > > 8. Add test_any_bits_set and cxl_insert_extent_to_extent_list declaration to
> > > > cxl_device.h so it can be used in different files.
> > > > 9. Updated ct3d_qmp_cxl_event_log_enc to include dynamic capacity event log type.
> > > > 10. Extract the functionality to delete extent from extent list to a helper
> > > > function.
> > > > 11. Move the update of the bitmap which reflects which blocks are backed with
> > > > dc extents from the moment when a dc extent is offered to the moment when it
> > > > is accepted from the host.
> > > > 
> > > > I was able to test the DCD code you sent previously, let me know if you
> > > > find any issues.
> > > > 
> > > > Fan    
> > > 
> > > FYI. 
> > > 
> > > Updated the last two commits to drop the extents for pending to
> > > release as the host can proactively release dc extents so there can be
> > > no pending-to-release extent list on the device side.
> > > 
> > > Fan    
> > 
> > Ira located a bug when testing dc extent adding with his latest DCD kernel
> > code.
> > The dpa passed in the qmp command is offset relative to the base of the
> > region where the extent is offered, we need to convert it to address relative
> > to the base address of the base of the region0 so the bit in the bitmap can
> > be correctly mapped.
> > 
> > Update the commit (commit 0ad5136: hw/cxl/events: Add qmp interfaces to
> > add/release dynamic capacity ext…) with the following changes to fix the issue.  
> 
> Hi Fan,
> 
> I hit this whilst reusing some of your code for the fmapi initiate add DC
> command.   Try adding an empty extent list..
> 
> "extents": []
> 
> boom.
> 
> Definitely need to reject that input :)

Fan,

Another thing I noticed...

I would not provide a more flexible QMP interface than the FMAPI interfaces.
The key thing I've noticed so far is no need to provide option for a list
of extents in different regions.  Just provide them as separate commands if that
is what is wanted.   That is drop the region-id in QMP out of the extent and
put alongside path in the top level arguements.

{ "execute": "cxl-add-dynamic-capcity",
  "arguements": {
	"path": "cxl-mem1",
	"region-id": 3,
	"extents": [ { "dpa": 0, "len": 6 } ] }}
  }



> 
> Jonathan
> 
> 
> > 
> > 
> > diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c
> > index ea88b53f41..d51f2ef9f5 100644
> > --- a/hw/mem/cxl_type3.c
> > +++ b/hw/mem/cxl_type3.c
> > @@ -1978,7 +1978,7 @@ static void qmp_cxl_process_dynamic_capacity(const char *path, CxlEventLog log,
> > 		 extents[i].shared_seq = 0;
> > 
> > 		 /* No duplicate or overlapped extents are allowed */
> > -        dpa -= dcd->dc.regions[0].base;
> > +        dpa = dpa + dcd->dc.regions[rid].base - dcd->dc.regions[0].base;
> > 		 if (test_any_bits_set(blk_bitmap, dpa / min_block_size,
> > 			 len / min_block_size)) {
> > 			 error_setg(errp, "duplicate or overlapped extents are detected");
> > 
> > 
> > Fan
> >   
> 
> 
> 


WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: fan <nifan.cxl@gmail.com>, <linux-cxl@vger.kernel.org>,
	<a.manzanares@samsung.com>
Cc: Ira Weiny <ira.weiny@intel.com>, Fan Ni <fan.ni@samsung.com>,
	"Singh, Naveen" <naveen.c.singh@intel.com>, <dave@stgolabs.net>,
	<nmtadam.samsung@gmail.com>
Subject: Re: Questions about the qemu DCD support in cxl-2023-09-13
Date: Thu, 26 Oct 2023 17:58:02 +0100	[thread overview]
Message-ID: <20231026175802.00001cfc@Huawei.com> (raw)
Message-ID: <20231026165802.FRz_S2Iz-BtjyfwgogPmgoenLiBxDOrIhfOi2LK-GdU@z> (raw)
In-Reply-To: <20231026100121.00007100@Huawei.com>

On Thu, 26 Oct 2023 10:01:21 +0100
Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:

> On Tue, 24 Oct 2023 22:25:53 -0700
> fan <nifan.cxl@gmail.com> wrote:
> 
> > On Tue, Oct 24, 2023 at 11:56:02AM -0700, fan wrote:  
> > > On Mon, Oct 23, 2023 at 12:48:02PM -0700, fan wrote:    
> > > > On Thu, Sep 21, 2023 at 03:24:26PM -0700, Ira Weiny wrote:    
> > > > > Fan,
> > > > > 
> > > > > I'm working off of Jonathan's latest CXL branch with the DCD patches.[1]
> > > > > 
> > > > > I've been testing various things and so far I have a couple of questions.
> > > > > 
> > > > > 1) If the qmp command is used to add extents which overlap other extents
> > > > >    shouldn't that throw an error?  I don't see any validation of this and
> > > > >    I would think a real device would reject such a request from the FM.
> > > > > 
> > > > > 2) Where is CXLType3Dev->dc.total_extent_count set?  Attempting to add
> > > > >    extents prior to driver load does not seem to work.  And I think this
> > > > >    is because total_extent_count is 0 in cmd_dcd_get_dyn_cap_ext_list().
> > > > > 
> > > > > Ira
> > > > > 
> > > > > [1] https://gitlab.com/jic23/qemu/-/tree/cxl-2023-09-13    
> > > > 
> > > > Hi Ira,
> > > > FYI. I have updated the DCD emulation patch series based on feedbacks on
> > > > the previous version.
> > > > 
> > > > The new version is here:
> > > > https://github.com/moking/qemu-jic-clone/tree/dcd-dev
> > > > 
> > > > The code is based on Jonathan's branch cxl-2023-09-26.
> > > > 
> > > > The main changes include,
> > > > 
> > > > 1. Update cxl_find_dc_region to detect the case the range of
> > > > the extent cross multiple DC regions.
> > > > 2. Add comments to explain the checks performed in function
> > > > cxl_detect_malformed_extent_list. (Jonathan)
> > > > 3. Minimize the checks in cmd_dcd_add_dyn_cap_rsp.(Jonathan)
> > > > 4. Update total_extent_count in add/release dynamic capacity response function.
> > > > (Ira and Jorgen Hansen).
> > > > 5. Fix the logic issue in test_bits and renamed it to
> > > > test_any_bits_set to clear its function.
> > > > 6. Add pending extent list for add/release extent event.
> > > > 7. When add/release extent response is received, use the pending list to
> > > > verify the extents are valid.
> > > > 8. Add test_any_bits_set and cxl_insert_extent_to_extent_list declaration to
> > > > cxl_device.h so it can be used in different files.
> > > > 9. Updated ct3d_qmp_cxl_event_log_enc to include dynamic capacity event log type.
> > > > 10. Extract the functionality to delete extent from extent list to a helper
> > > > function.
> > > > 11. Move the update of the bitmap which reflects which blocks are backed with
> > > > dc extents from the moment when a dc extent is offered to the moment when it
> > > > is accepted from the host.
> > > > 
> > > > I was able to test the DCD code you sent previously, let me know if you
> > > > find any issues.
> > > > 
> > > > Fan    
> > > 
> > > FYI. 
> > > 
> > > Updated the last two commits to drop the extents for pending to
> > > release as the host can proactively release dc extents so there can be
> > > no pending-to-release extent list on the device side.
> > > 
> > > Fan    
> > 
> > Ira located a bug when testing dc extent adding with his latest DCD kernel
> > code.
> > The dpa passed in the qmp command is offset relative to the base of the
> > region where the extent is offered, we need to convert it to address relative
> > to the base address of the base of the region0 so the bit in the bitmap can
> > be correctly mapped.
> > 
> > Update the commit (commit 0ad5136: hw/cxl/events: Add qmp interfaces to
> > add/release dynamic capacity ext…) with the following changes to fix the issue.  
> 
> Hi Fan,
> 
> I hit this whilst reusing some of your code for the fmapi initiate add DC
> command.   Try adding an empty extent list..
> 
> "extents": []
> 
> boom.
> 
> Definitely need to reject that input :)

Fan,

Another thing I noticed...

I would not provide a more flexible QMP interface than the FMAPI interfaces.
The key thing I've noticed so far is no need to provide option for a list
of extents in different regions.  Just provide them as separate commands if that
is what is wanted.   That is drop the region-id in QMP out of the extent and
put alongside path in the top level arguements.

{ "execute": "cxl-add-dynamic-capcity",
  "arguements": {
	"path": "cxl-mem1",
	"region-id": 3,
	"extents": [ { "dpa": 0, "len": 6 } ] }}
  }



> 
> Jonathan
> 
> 
> > 
> > 
> > diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c
> > index ea88b53f41..d51f2ef9f5 100644
> > --- a/hw/mem/cxl_type3.c
> > +++ b/hw/mem/cxl_type3.c
> > @@ -1978,7 +1978,7 @@ static void qmp_cxl_process_dynamic_capacity(const char *path, CxlEventLog log,
> > 		 extents[i].shared_seq = 0;
> > 
> > 		 /* No duplicate or overlapped extents are allowed */
> > -        dpa -= dcd->dc.regions[0].base;
> > +        dpa = dpa + dcd->dc.regions[rid].base - dcd->dc.regions[0].base;
> > 		 if (test_any_bits_set(blk_bitmap, dpa / min_block_size,
> > 			 len / min_block_size)) {
> > 			 error_setg(errp, "duplicate or overlapped extents are detected");
> > 
> > 
> > Fan
> >   
> 
> 
> 


  reply	other threads:[~2023-10-26 16:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20230921222437uscas1p158e5ceecab50dcb39e33811f567152d8@uscas1p1.samsung.com>
2023-09-21 22:24 ` Questions about the qemu DCD support in cxl-2023-09-13 Ira Weiny
2023-09-21 22:51   ` Fan Ni
2023-10-23 19:48   ` fan
2023-10-24 18:56     ` fan
2023-10-25  5:25       ` fan
2023-10-26  9:01         ` Jonathan Cameron
2023-10-26 16:58           ` Jonathan Cameron [this message]
2023-10-26 16:58             ` Jonathan Cameron
2023-10-27 16:34             ` fan
2023-10-31 17:18               ` Jonathan Cameron
2023-10-31 17:44                 ` fan

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=20231026175802.00001cfc@Huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=a.manzanares@samsung.com \
    --cc=dave@stgolabs.net \
    --cc=fan.ni@samsung.com \
    --cc=ira.weiny@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=naveen.c.singh@intel.com \
    --cc=nifan.cxl@gmail.com \
    --cc=nmtadam.samsung@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox