On 13/05/2025 19:14, 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 that address map and ACPI table entries are predictable.
> 
> Signed-off-by: Jonathan Cameron <jonathan.came...@huawei.com>


Reviewed-by: Li Zhijian <lizhij...@fujitsu.com>


> ---
>   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;
>   }

Reply via email to