diff --git a/repos/os/run/cpu_quota.run b/repos/os/run/cpu_quota.run index c474ff4344..c031e1fa2e 100644 --- a/repos/os/run/cpu_quota.run +++ b/repos/os/run/cpu_quota.run @@ -2,15 +2,8 @@ # Check platform # # HW is the only kernel that provides appliance of quota to the scheduling. -# On X86, the timer driver uses the PIT with a timeout of max. 54 ms. Thus, -# the driver needs to restart the timer permanently which is a hard job with 6 -# high-priority counter-threads in the background. As a consequence, timeouts -# take much longer than requested and the test fails. However, as the PIT -# tends to be replaced by a better timing source, we simply skip X86 for now. -# # assert_spec hw -assert_spec arm # # Build @@ -43,11 +36,6 @@ install_config { - - - - - @@ -55,9 +43,9 @@ install_config { - + - + @@ -77,7 +65,7 @@ install_config { - + @@ -88,9 +76,9 @@ install_config { - + - + @@ -110,13 +98,13 @@ install_config { - + - + @@ -124,6 +112,13 @@ install_config { + + + + + + + } @@ -149,6 +144,15 @@ proc check_counter { name opt cnt total_cnt } { set err 0.01 set is 0 + # + # On X86, the timer driver uses the PIT with a maximum timeout of 54 ms. + # Thus, the driver frequently interrupts the counters with highest + # priority to update the timer. This is why we need a higher error + # tolerance as for ARM where the driver, once configured, can sleep for + # the whole test timeout. + # + if {[have_spec x86]} { set err 0.02 } + if {[expr $total_cnt != 0]} { set is [expr double($cnt) / $total_cnt ] } set is_pc [expr double(round($is * 100000)) / 1000]