Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/sbsa/arm_sbsa_testcase_checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ The checklist provides information about:
<td>S_L5GI_01</td>
<td>S_L5GI_01</td>
<td>216</td>
<td>Check Non GIC Interrupts</td>
<td>Check Non standard GICv3 implmentation</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
Expand Down
13 changes: 11 additions & 2 deletions test_pool/gic/g016.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@

#define TEST_NUM (ACS_GIC_TEST_NUM_BASE + 16)
#define TEST_RULE "S_L5GI_01"
#define TEST_DESC "Check Non GIC Interrupts "
#define TEST_DESC "Check Non standard GICv3 implmentation"

static
void
payload(void)
{
uint32_t index = val_pe_get_index_mpid(val_pe_get_mpid());
uint32_t num_non_gic = 0;

uint32_t num_gicd = 0;

num_non_gic = val_get_num_nongic_ctrl();

Expand All @@ -40,6 +40,15 @@ payload(void)
return;
}

/* MADT permits only a single GICD structure. Exposing multiple GICDs via MADT would be treated
as a non-standard GICv3 implementation */
num_gicd = val_gic_get_info(GIC_INFO_NUM_GICD);
if (num_gicd > 1) {
val_print(ERROR, "\n GIC Distributor count is greater than 1");
val_set_status(index, RESULT_FAIL(02));
return;
}

val_set_status(index, RESULT_PASS);
return;
}
Expand Down
3 changes: 2 additions & 1 deletion val/include/val_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,8 @@ typedef enum {
GIC_INFO_NUM_ITS,
GIC_INFO_ITS_BASE,
GIC_INFO_NUM_MSI_FRAME,
GIC_INFO_NUM_GICR_GICRD
GIC_INFO_NUM_GICR_GICRD,
GIC_INFO_NUM_GICD
}GIC_INFO_e;

/* GICv2m APIs */
Expand Down
3 changes: 3 additions & 0 deletions val/src/acs_gic.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,9 @@ val_gic_get_info(GIC_INFO_e type)
case GIC_INFO_NUM_GICR_GICRD:
return g_gic_info_table->header.num_gicr_rd;

case GIC_INFO_NUM_GICD:
return g_gic_info_table->header.num_gicd;

default:
val_print(ERROR, "\n GIC Info - TYPE not recognized %d ", type);
break;
Expand Down
2 changes: 1 addition & 1 deletion val/src/rule_metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,7 @@ rule_test_map_t rule_test_map[RULE_ID_SENTINEL] = {
[S_L5GI_01] = {
.test_entry_id = G016_ENTRY,
.module_id = GIC,
.rule_desc = "Check Non GIC Interrupts",
.rule_desc = "Check Non standard GICv3 implmentation",
.platform_bitmask = PLATFORM_BAREMETAL | PLATFORM_UEFI,
.flag = BASE_RULE,
.test_num = ACS_GIC_TEST_NUM_BASE + 16,
Expand Down
Loading