Share via


OAL IPI Test (Compact 2013)

3/26/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.

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 Also

Other Resources

OAL - Interrupt Tests