Skip to content

Commit

Permalink
Merge pull request #424 from ved-rivos/0908_1
Browse files Browse the repository at this point in the history
move test code out of utils into app
  • Loading branch information
ved-rivos authored Sep 8, 2024
2 parents 1442178 + 36ed432 commit 22a2f48
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 33 deletions.
36 changes: 36 additions & 0 deletions iommu_ref_model/test/test_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,28 @@ main(void) {

// Enable command queue
fail_if( ( enable_cq(4) < 0 ) );

// Test that writes to cqcsr are discarded when it is busy
g_reg_file.cqcsr.busy = 1;
cqcsr.cqen = 0;
write_register(CQCSR_OFFSET, 4, cqcsr.raw);
cqcsr.raw = read_register(CQCSR_OFFSET, 4);
if ( cqcsr.cqen == 0 ) return -1;
if ( cqcsr.cqon == 0 ) return -1;
g_reg_file.cqcsr.busy = 0;

// Enable fault queue
fail_if( ( enable_fq(4) < 0 ) );

// Test that writes to fqcsr are discarded when it is busy
g_reg_file.fqcsr.busy = 1;
fqcsr.fqen = 0;
write_register(FQCSR_OFFSET, 4, fqcsr.raw);
fqcsr.raw = read_register(FQCSR_OFFSET, 4);
if ( fqcsr.fqen == 0 ) return -1;
if ( fqcsr.fqon == 0 ) return -1;
g_reg_file.fqcsr.busy = 0;

// Enable page queue
fail_if( ( enable_disable_pq(4, 1) < 0 ) );

Expand Down Expand Up @@ -3056,6 +3076,15 @@ main(void) {
fail_if( ( ((read_register(PQH_OFFSET, 4)) != read_register(PQT_OFFSET, 4)) ) );
fail_if( ( enable_disable_pq(4, 1) < 0 ) );

// Test that write to pqen when register is busy is discarded
g_reg_file.pqcsr.busy = 1;
pqcsr.pqen = 0;
write_register(PQCSR_OFFSET, 4, pqcsr.raw);
pqcsr.raw = read_register(PQCSR_OFFSET, 4);
if ( pqcsr.pqen == 0 ) return -1;
if ( pqcsr.pqon == 0 ) return -1;
g_reg_file.pqcsr.busy = 0;

// PRI enabled - should queue in PQ
pr.RID = 0x2233;
pr.DSEG = 0x11;
Expand Down Expand Up @@ -3975,6 +4004,13 @@ main(void) {
write_register(FQCSR_OFFSET, 4, fqcsr.raw);
fail_if( ( enable_iommu(Off) < 0 ) );
fail_if( ( enable_iommu(DDT_3LVL) < 0 ) );
// test that writes to ddtp when it is busy are discarded
g_reg_file.ddtp.busy = 1;
ddtp.iommu_mode = Off;
write_register(DDTP_OFFSET, 8, ddtp.raw);
ddtp.raw = read_register(DDTP_OFFSET, 8);
g_reg_file.ddtp.busy = 0;
fail_if( (ddtp.iommu_mode != DDT_3LVL) );
offset += 4;
break;
case DDTP_OFFSET:
Expand Down
34 changes: 1 addition & 33 deletions iommu_ref_model/test/test_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,6 @@ enable_cq(
printf("CQ enable failed\n");
return -1;
}
g_reg_file.cqcsr.busy = 1;
cqcsr.cqen = 0;
write_register(CQCSR_OFFSET, 4, cqcsr.raw);
cqcsr.raw = read_register(CQCSR_OFFSET, 4);
if ( cqcsr.cqen == 0 ) return -1;
if ( cqcsr.cqon == 0 ) return -1;
g_reg_file.cqcsr.busy = 0;

return 0;
}

Expand Down Expand Up @@ -105,13 +97,6 @@ enable_fq(
printf("FQ enable failed\n");
return -1;
}
g_reg_file.fqcsr.busy = 1;
fqcsr.fqen = 0;
write_register(FQCSR_OFFSET, 4, fqcsr.raw);
fqcsr.raw = read_register(FQCSR_OFFSET, 4);
if ( fqcsr.fqen == 0 ) return -1;
if ( fqcsr.fqon == 0 ) return -1;
g_reg_file.fqcsr.busy = 0;
return 0;
}

Expand Down Expand Up @@ -147,15 +132,6 @@ enable_disable_pq(
printf("PQ disable failed\n");
return -1;
}
if ( enable_disable == 1 ) {
g_reg_file.pqcsr.busy = 1;
pqcsr.pqen = 0;
write_register(PQCSR_OFFSET, 4, pqcsr.raw);
pqcsr.raw = read_register(PQCSR_OFFSET, 4);
if ( pqcsr.pqen == 0 ) return -1;
if ( pqcsr.pqon == 0 ) return -1;
g_reg_file.pqcsr.busy = 0;
}
return 0;
}

Expand All @@ -182,15 +158,7 @@ enable_iommu(
do {
ddtp.raw = read_register(DDTP_OFFSET, 8);
} while ( ddtp.busy == 1 );
if ( iommu_mode != Off ) {
g_reg_file.ddtp.busy = 1;
ddtp.iommu_mode = Off;
write_register(DDTP_OFFSET, 8, ddtp.raw);
ddtp.raw = read_register(DDTP_OFFSET, 8);
g_reg_file.ddtp.busy = 0;
if ( ddtp.iommu_mode != iommu_mode ) return -1;
}
return 0;
return (ddtp.iommu_mode == iommu_mode) ? 0 : -1;
}
void
send_translation_request(uint32_t did, uint8_t pid_valid, uint32_t pid, uint8_t no_write,
Expand Down

0 comments on commit 22a2f48

Please sign in to comment.