[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v7 11/12] hw/cxl/cxl-mailbox-utils: Add superset extent relea
From: |
Gregory Price |
Subject: |
Re: [PATCH v7 11/12] hw/cxl/cxl-mailbox-utils: Add superset extent release mailbox support |
Date: |
Fri, 19 Apr 2024 14:20:15 -0400 |
On Thu, Apr 18, 2024 at 04:11:02PM -0700, nifan.cxl@gmail.com wrote:
> From: Fan Ni <fan.ni@samsung.com>
>
> With the change, we extend the extent release mailbox command processing
> to allow more flexible release. As long as the DPA range of the extent to
> release is covered by accepted extent(s) in the device, the release can be
> performed.
>
> Signed-off-by: Fan Ni <fan.ni@samsung.com>
> ---
> hw/cxl/cxl-mailbox-utils.c | 21 ++++++++-------------
> 1 file changed, 8 insertions(+), 13 deletions(-)
>
Hmmm. This will complicate MHD accounting, but it looks ok to me as-is.
Reviewed-by: Gregory Price <gregory.price@memverge.com>
> diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c
> index 57f1ce9cce..89f0ab8116 100644
> --- a/hw/cxl/cxl-mailbox-utils.c
> +++ b/hw/cxl/cxl-mailbox-utils.c
> @@ -1704,6 +1704,13 @@ static CXLRetCode
> cxl_dc_extent_release_dry_run(CXLType3Dev *ct3d,
> dpa = in->updated_entries[i].start_dpa;
> len = in->updated_entries[i].len;
>
> + /* Check if the DPA range is not fully backed with valid extents */
> + if (!ct3_test_region_block_backed(ct3d, dpa, len)) {
> + ret = CXL_MBOX_INVALID_PA;
> + goto free_and_exit;
> + }
> +
> + /* After this point, extent overflow is the only error can happen */
> while (len > 0) {
> QTAILQ_FOREACH(ent, updated_list, node) {
> range_init_nofail(&range, ent->start_dpa, ent->len);
> @@ -1718,14 +1725,7 @@ static CXLRetCode
> cxl_dc_extent_release_dry_run(CXLType3Dev *ct3d,
> if (range_contains(&range, dpa + len - 1)) {
> len2 = ent_start_dpa + ent_len - dpa - len;
> } else {
> - /*
> - * TODO: we reject the attempt to remove an extent
> - * that overlaps with multiple extents in the device
> - * for now. We will allow it once superset release
> - * support is added.
> - */
> - ret = CXL_MBOX_INVALID_PA;
> - goto free_and_exit;
> + dpa = ent_start_dpa + ent_len;
> }
> len_done = ent_len - len1 - len2;
>
> @@ -1752,14 +1752,9 @@ static CXLRetCode
> cxl_dc_extent_release_dry_run(CXLType3Dev *ct3d,
> }
>
> len -= len_done;
> - /* len == 0 here until superset release is added */
> break;
> }
> }
> - if (len) {
> - ret = CXL_MBOX_INVALID_PA;
> - goto free_and_exit;
> - }
> }
> }
> free_and_exit:
> --
> 2.43.0
>
- Re: [PATCH v7 02/12] hw/cxl/cxl-mailbox-utils: Add dynamic capacity region representative and mailbox command support, (continued)
- [PATCH v7 03/12] include/hw/cxl/cxl_device: Rename mem_size as static_mem_size for type3 memory devices, nifan . cxl, 2024/04/18
- [PATCH v7 06/12] hw/mem/cxl_type3: Add host backend and address space handling for DC regions, nifan . cxl, 2024/04/18
- [PATCH v7 10/12] hw/mem/cxl_type3: Add DPA range validation for accesses to DC regions, nifan . cxl, 2024/04/18
- [PATCH v7 11/12] hw/cxl/cxl-mailbox-utils: Add superset extent release mailbox support, nifan . cxl, 2024/04/18
- Re: [PATCH v7 11/12] hw/cxl/cxl-mailbox-utils: Add superset extent release mailbox support,
Gregory Price <=
- [PATCH v7 12/12] hw/mem/cxl_type3: Allow to release extent superset in QMP interface, nifan . cxl, 2024/04/18
- [PATCH v7 08/12] hw/cxl/cxl-mailbox-utils: Add mailbox commands to support add/release dynamic capacity response, nifan . cxl, 2024/04/18
- [PATCH v7 09/12] hw/cxl/events: Add qmp interfaces to add/release dynamic capacity extents, nifan . cxl, 2024/04/18