1Single thread tests 2=================== 3 4m301: 5Valid sequence of requests, no exceptions expected. 6Acquire mutexes of monotone increasing level (Global lock 7on level 0 too) for all available levels from 0 up to 15, 8then Release them all in the inverse order. 9 10m369: 11Valid sequence of requests, no exceptions expected. 12Acquire mutexes of monotone increasing level (Global lock on level 0 too) 13for all available levels from 0 up to 15, Acquire 2 mutexes of each level, 14then Release them all in the inverse order (keep the exactly inverse order 15for Releasing mutexes of the same level too). 16 17m36a: 18Exactly m301 but additionally: 19all Release operations are located into separate method. 20 21m36b: 22Exactly m301 but additionally: 23all Acquire and Release operations are located into separate methods. 24 25m36c: 26Invalid sequence of Acquire operations: 271) Acquire N-th level mutex (N>=1): 282) Acquire: 29 - mutexes from 0 up to (N-1)-levels 30 - Global lock 313) exception AE_AML_MUTEX_ORDER is expected for each Acquire of (2) 32 33m389: 34Exception on Release. 35Release the mutex twice. 36Attempt to Release free mutex: Acquire, Release, Release. 37Exception is expected on the second Release. 38Do it for all level mutexes and Global lock too. 39 40m07b: 41Exception on Release. 42Attempt to Release clean mutex which was never Acquired. 43 44m38a: 45Exception on Release. 46Break the sequence of Acquiring mutexes while Releasing them, 47jump over the level. Invalid sequence of Releases: 48 1) Take level from range (N>=1 & N<=15) 49 2) Acquire mutexes of all levels from 0 up to N 50 3) Try to Release any mutex: 51 - in the level range from (N-1) down to 0 52 - Global lock 53 4) Do 1-3 for all levels in range (N>=1 & N<=15) 54 55m38d: 56Check up that the Releasing of the same level mutexes 57can be performed in an arbitrary order, independently 58on the order they were Acquired. 59For each level separately, one by one - 60Acquire all for one level then Release them all and 61then only go to the next level. 62Involve the Global lock too. 63 64m07d: 65Check up that the Releasing of the same level mutexes 66can be performed in an arbitrary order, independently 67on the order they were Acquired. 68Cross through all the levels - 69at first Acquire all for all levels then Release them all. 70 71m07a: 72Multiply owning the same ACPI mutex. 73Acquire the same mutex arg2 times, then Release it (arg2+1) times, 74expect exception on the last Release. 75The repeated Acquire are made with TimeoutValue equal to zero. 76 77m07e: 78Acquire/Release combination #1 79 80m08b: 81Check the life after AE_AML_MUTEX_ORDER exception on Acquire. 82 1) Acquire N-th level mutex MUX-N 83 2) run Acquire (N-2)-th level mutex MUX-(N-2) and get AE_AML_MUTEX_ORDER exception 84 3) run Acquire (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception 85 4) Acquire mutex MUX-N and check that no exception on this operation 86 5) Release mutex MUX-N and check that no exception on this operation 87 6) Release mutex MUX-N and check that no exception on this operation 88 7) do 1-6 for all N in range 2-15 levels 89 8) check additionally that all the mutexes are free (run Release and 90 get AE_AML_MUTEX_NOT_ACQUIRED exception for all the mutexes of all levels) 91 9) Acquire all mutexes of all levels and check that no exceptions 92 10) Release all mutexes of all levels and check that no exceptions 93 11) check additionally that all the mutexes are free (see 8) 94 12) do it for GL mode too 95 13) do additional Acquire of MUX-(N-2) and MUX-(N-1) before Acquire of MUX-N (Release them later) 96 97m08d: 98Check the life after AE_AML_MUTEX_ORDER exception on Release. 99 1) Acquire (N-1)-th level mutex MUX-(N-1) 100 2) Acquire (N)-th level mutex MUX-N 101 3) run Release (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception 102 4) Release (N)-th level mutex MUX-N and check that no exception on this operation 103 5) Release (N-1)-th level mutex MUX-(N-1) and check that no exception on this operation 104 6) do 1-5 for all N in range 1-15 levels 105 7) check additionally that all the mutexes are free (run Release and 106 get AE_AML_MUTEX_NOT_ACQUIRED exception for all the mutexes of all levels) 107 8) Acquire all mutexes of all levels and check that no exceptions 108 9) Release all mutexes of all levels and check that no exceptions 109 10) check additionally that all the mutexes are free (see 7) 110 11) do it for GL mode too 111 112m07f: 113Check the life after AE_AML_MUTEX_ORDER exception on Release. 114Similar to the m08d but trying to heal situation by 115Acquiring/Release operations applied to the greater 116level so changing the current level upper than all the 117currently Acquired levels so don't expect exceptions on 118the following Release operations applied in the correct 119inverse order to all the Acquired mutexes. 120(for the current 20060828 ACPICA this doesn't help). 121 122m0b9: 123Different ways to Acquire/Release mutexes. 124 1) Acquire and Release operations are in a global level AML code 125 126m07c: 127Different ways to Acquire/Release mutexes. 128 2) Acquire and Release operations are in the same method 129 3) Acquire and Release operations are in different methods 130 131xxxx: 132To check that the current level is not anyhow affected by the 133invalid operations (which caused exception or returned FAIL). 134Such checkings are present in m08b and m08d tests. 135From m08b: 136 1) Acquire N-th level mutex MUX-N 137 2) run Acquire (N-2)-th level mutex MUX-(N-2) and get AE_AML_MUTEX_ORDER exception 138 3) run Acquire (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception 139The step 3 checks that the invalid operation Acquire 140performed on step 2 doesn't affect the current level. 141From m08d: 142 1) Acquire (N-1)-th level mutex MUX-(N-1) 143 2) Acquire (N)-th level mutex MUX-N 144 3) run Release (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception 145 4) Release (N)-th level mutex MUX-N and check that no exception on this operation 146The step 4 checks that the invalid operation Release 147performed on step 3 doesn't affect the current level. 148 149m0ba: 150Acquire/Release operations enclosed in other operations. 151 152badasl-m103: 153Exception on Acquire. 154Access to inappropriate type data. 155 156 157// ################################################################# 158 159 160 161