On 6/25/25 6:19 PM, Jonathan Cameron via wrote:
> 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 <lizhij...@fujitsu.com>
> Reviewed-by: Li Zhijian <lizhij...@fujitsu.com>
> Reviewed-by: Fan Ni <fan...@samsung.com>
> Signed-off-by: Jonathan Cameron <jonathan.came...@huawei.com>
Reviewed-by: Eric Auger <eric.au...@redhat.com>
Eric
>
> ---
> v16: Tested tag
> ---
> include/hw/cxl/cxl.h | 1 +
> hw/cxl/cxl-host.c | 9 ++++++---
> 2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/include/hw/cxl/cxl.h b/include/hw/cxl/cxl.h
> index 75e47b6864..b2bcce7ed6 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];
> diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c
> index e010163174..b7aa429ddf 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;
> }