|
@@ -78,6 +78,7 @@ static void build_hmat_lb(GArray *table_data, HMAT_LB_Info *hmat_lb,
|
|
|
uint32_t *initiator_list)
|
|
|
{
|
|
|
int i, index;
|
|
|
+ uint32_t initiator_to_index[MAX_NODES] = {};
|
|
|
HMAT_LB_Data *lb_data;
|
|
|
uint16_t *entry_list;
|
|
|
uint32_t base;
|
|
@@ -121,6 +122,8 @@ static void build_hmat_lb(GArray *table_data, HMAT_LB_Info *hmat_lb,
|
|
|
/* Initiator Proximity Domain List */
|
|
|
for (i = 0; i < num_initiator; i++) {
|
|
|
build_append_int_noprefix(table_data, initiator_list[i], 4);
|
|
|
+ /* Reverse mapping for array possitions */
|
|
|
+ initiator_to_index[initiator_list[i]] = i;
|
|
|
}
|
|
|
|
|
|
/* Target Proximity Domain List */
|
|
@@ -132,7 +135,8 @@ static void build_hmat_lb(GArray *table_data, HMAT_LB_Info *hmat_lb,
|
|
|
entry_list = g_new0(uint16_t, num_initiator * num_target);
|
|
|
for (i = 0; i < hmat_lb->list->len; i++) {
|
|
|
lb_data = &g_array_index(hmat_lb->list, HMAT_LB_Data, i);
|
|
|
- index = lb_data->initiator * num_target + lb_data->target;
|
|
|
+ index = initiator_to_index[lb_data->initiator] * num_target +
|
|
|
+ lb_data->target;
|
|
|
|
|
|
entry_list[index] = (uint16_t)(lb_data->data / hmat_lb->base);
|
|
|
}
|