diff options
author | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2025-07-03 11:41:06 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2025-07-08 20:27:08 +0100 |
commit | 35566583d86e167b617f0b55e485fc4ef1ae5dc3 (patch) | |
tree | 0a6e612dfc3fbf4d93219cce2ba4fdcf901af536 | |
parent | 4b3a1eb0664db2df02ff4f8affe6e7bda1edaa85 (diff) | |
download | qemu-35566583d86e167b617f0b55e485fc4ef1ae5dc3.zip qemu-35566583d86e167b617f0b55e485fc4ef1ae5dc3.tar.gz qemu-35566583d86e167b617f0b55e485fc4ef1ae5dc3.tar.bz2 |
hw/cxl-host: Add an index field to CXLFixedMemoryWindow
To enable these to be found in a fixed order, that order needs to be known.
This will later be used to sort a list of these structures so that address
map and ACPI table entries are predictable.
Tested-by: Li Zhijian <lizhijian@fujitsu.com>
Reviewed-by: Li Zhijian <lizhijian@fujitsu.com>
Reviewed-by: Fan Ni <fan.ni@samsung.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Tested-by: Itaru Kitayama <itaru.kitayama@fujitsu.com>
Message-id: 20250703104110.992379-2-Jonathan.Cameron@huawei.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hw/cxl/cxl-host.c | 9 | ||||
-rw-r--r-- | include/hw/cxl/cxl.h | 1 |
2 files changed, 7 insertions, 3 deletions
diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c index e010163..b7aa429 100644 --- a/hw/cxl/cxl-host.c +++ b/hw/cxl/cxl-host.c @@ -24,13 +24,15 @@ static void cxl_fixed_memory_window_config(CXLState *cxl_state, CXLFixedMemoryWindowOptions *object, - Error **errp) + int index, Error **errp) { ERRP_GUARD(); g_autofree CXLFixedWindow *fw = g_malloc0(sizeof(*fw)); strList *target; int i; + fw->index = index; + for (target = object->targets; target; target = target->next) { fw->num_targets++; } @@ -325,14 +327,15 @@ static void machine_set_cfmw(Object *obj, Visitor *v, const char *name, CXLState *state = opaque; CXLFixedMemoryWindowOptionsList *cfmw_list = NULL; CXLFixedMemoryWindowOptionsList *it; + int index; visit_type_CXLFixedMemoryWindowOptionsList(v, name, &cfmw_list, errp); if (!cfmw_list) { return; } - for (it = cfmw_list; it; it = it->next) { - cxl_fixed_memory_window_config(state, it->value, errp); + for (it = cfmw_list, index = 0; it; it = it->next, index++) { + cxl_fixed_memory_window_config(state, it->value, index, errp); } state->cfmw_list = cfmw_list; } diff --git a/include/hw/cxl/cxl.h b/include/hw/cxl/cxl.h index 75e47b6..b2bcce7 100644 --- a/include/hw/cxl/cxl.h +++ b/include/hw/cxl/cxl.h @@ -27,6 +27,7 @@ typedef struct PXBCXLDev PXBCXLDev; typedef struct CXLFixedWindow { + int index; uint64_t size; char **targets; PXBCXLDev *target_hbs[16]; |