typedef struct VersalCpuClusterMap {
VersalGicMap gic;
+ /*
+ * true: one GIC per cluster.
+ * false: one GIC for all CPUs
+ */
+ bool per_cluster_gic;
const char *name;
const char *cpu_model;
cpus[i * map->num_core + j] = cpu;
}
+ if (map->per_cluster_gic) {
+ versal_create_and_connect_gic(s, map, mr, &cpus[i * map->num_core],
+ map->num_core);
+ }
}
qdev_realize_and_unref(cluster, NULL, &error_fatal);
- versal_create_and_connect_gic(s, map, mr, cpus,
- map->num_cluster * map->num_core);
+ if (!map->per_cluster_gic) {
+ versal_create_and_connect_gic(s, map, mr, cpus,
+ map->num_cluster * map->num_core);
+ }
has_gtimer = arm_feature(&ARM_CPU(cpus[0])->env, ARM_FEATURE_GENERIC_TIMER);
if (map->dtb_expose && has_gtimer) {