OAL IPI Test (Compact 7)
3/12/2014
Tests Inter Processor Interrupt for multi-core platforms. This test exercises some of the API that can cause interprocessor interrupt.
Test 1000 provides detail information on how to run Test 3002 and 3003.
Test 2000 to 2004 should be run in user mode.
Test 3000 to 3003 should be run in kernel mode (with the -n argument to tux).
Test Prerequisites
Your device must meet the following requirements before you run this test.
Hardware: Multi-core processor
Software: tux.exe;kato.dll;oaltestipi.dll
Subtests
The table below lists the subtests included in this test.
SubTest ID | Description |
---|---|
1000 |
Usage |
2000 |
Suspend Thread |
2001 |
Terminate Thread |
2002 |
Flush cache - user address |
2003 |
Query Performance Counter - Single Thread |
2004 |
Query Performance Counter - Multiple Threads |
3000 |
Power off Core - Test 1 |
3001 |
Power off Core - Test 2 |
3002 |
Sending IPI to specific CPU |
3003 |
Sending IPI to every CPU excluding self |
Setting Up the Test
Test 3002 and 3003 require changes to IPI handling code in OAL. For detail, refer to platform\NE1TB\src\oal\oallib\mpcore.c OEMIpiHandler().
Running the Test
Test Usage:
Test 2000 to 2004 should be run in user-mode (ie without the -n flag)
Test 3000 to 3003 should be run in kernel-mode (ie with the -n flag)
Test 3002 and 3003 requires the value of g_pNKGlobal->pfnNKSendIPI
To obtain the value of g_pNKGlobal->pfnNKSendIPI
1) Make sure you have the appropriate kernel.pdb and kernel.dll in your flat release directory.
2) Break into the debugger.
3) Run: "!readex {,,kernel.dll}g_pNKGlobal->pfnNKSendIPI" in your
TargetControl Window.
Sample Output:
Windows CE>!readex {,,kernel.dll}g_pNKGlobal->pfnNKSendIPI
Refreshing system data ...
Reading system memory info ...
Populating process list ...
Reading general device info ...
Reading system memory info ...
Address : Value
0x83bd9110 : 0x8013AE10
4) Resume the device (from debug state)
5) Run the tests:
tux -o -d oaltestipi -n -x3002-3003 -c"-ipifnptr 0x8013ae10"
Verifying the Test
This test reports a Pass or Fail result.
Troubleshooting the Test
If test 3002 and 3003 skip, refer to test 1000 for how to run the test. You will also need to modify your OAL in order to run this test.
See \platform\NE1TB\src\oal\oallib\mpcore.c for more detail.
For additional platform specific issues, consult the CTK articles on the TechNet wiki.