[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v8 13/14] hw/cxl/cxl-mailbox-utils: Add superset extent release m
From: |
nifan . cxl |
Subject: |
[PATCH v8 13/14] hw/cxl/cxl-mailbox-utils: Add superset extent release mailbox support |
Date: |
Thu, 23 May 2024 10:44:53 -0700 |
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.
Tested-by: Svetly Todorov <svetly.todorov@memverge.com>
Reviewed-by: Gregory Price <gregory.price@memverge.com>
Signed-off-by: Fan Ni <fan.ni@samsung.com>
---
hw/cxl/cxl-mailbox-utils.c | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c
index 045bce8f74..ec8949ce7b 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
- [PATCH v8 00/14] Enabling DCD emulation support in Qemu, nifan . cxl, 2024/05/23
- [PATCH v8 03/14] hw/cxl/cxl-mailbox-utils: Add dc_event_log_size field to output payload of identify memory device command, nifan . cxl, 2024/05/23
- [PATCH v8 01/14] hw/cxl/mailbox: change CCI cmd set structure to be a member, not a reference, nifan . cxl, 2024/05/23
- [PATCH v8 10/14] hw/cxl/cxl-mailbox-utils: Add mailbox commands to support add/release dynamic capacity response, nifan . cxl, 2024/05/23
- [PATCH v8 02/14] hw/cxl/mailbox: interface to add CCI commands to an existing CCI, nifan . cxl, 2024/05/23
- [PATCH v8 06/14] hw/mem/cxl_type3: Add support to create DC regions to type3 memory devices, nifan . cxl, 2024/05/23
- [PATCH v8 07/14] hw/mem/cxl-type3: Refactor ct3_build_cdat_entries_for_mr to take mr size instead of mr as argument, nifan . cxl, 2024/05/23
- [PATCH v8 13/14] hw/cxl/cxl-mailbox-utils: Add superset extent release mailbox support,
nifan . cxl <=
- [PATCH v8 14/14] hw/mem/cxl_type3: Allow to release extent superset in QMP interface, nifan . cxl, 2024/05/23
- [PATCH v8 05/14] include/hw/cxl/cxl_device: Rename mem_size as static_mem_size for type3 memory devices, nifan . cxl, 2024/05/23
- [PATCH v8 11/14] hw/cxl/events: Add qmp interfaces to add/release dynamic capacity extents, nifan . cxl, 2024/05/23
- [PATCH v8 12/14] hw/mem/cxl_type3: Add DPA range validation for accesses to DC regions, nifan . cxl, 2024/05/23
- [PATCH v8 04/14] hw/cxl/cxl-mailbox-utils: Add dynamic capacity region representative and mailbox command support, nifan . cxl, 2024/05/23
- [PATCH v8 08/14] hw/mem/cxl_type3: Add host backend and address space handling for DC regions, nifan . cxl, 2024/05/23
- [PATCH v8 09/14] hw/mem/cxl_type3: Add DC extent list representative and get DC extent list mailbox support, nifan . cxl, 2024/05/23