Offline Diagnostic Environment (ODE)

From Linux PARISC Wiki
Revision as of 10:25, 26 March 2024 by Deller (Talk | contribs)

Jump to: navigation, search

Offline Diagnostic Environment (ODE) is a an environment to test HP PARISC or IA64 hardware.
It is usually distributed as ISO image, which contains a LIF image with ISL + ODE binary + other data.
To boot it in qemu, it is sufficient to boot the ISO file.

HP provides some documentation about ODE at


Booting ODE

qemu-system-hppa -boot d -machine machine  -cdrom HP_ODE_CDROM.iso

Make sure to use either B160L or C3700 as machine parameter since ODE will decide at runtime based on the found machine type which test programs it will enable.

This will boot to ISL:

HARD Booted.

ISL Revision A.00.44  Mar 12, 2003 
   Cannot find an auto-execute file.  AUTOBOOT ABORTED.

Typing ode will start the diagnostic environment. It is possible to start a specific test by adding it to ode:


will start the PCXL2 CPU tests for the PA7100LC CPU in the B160L. You will be asked for a password, in qemu it's usually 'quality', but can be 'poultry' or 'saturn' as well.


ISL_CMD> l2diag

******                                                               ******
******                             L2DIAG                            ******
******                                                               ******
******       Copyright (C) 1995-2000 by Hewlett-Packard Company      ******
******                       All Rights Reserved                     ******
******                                                               ******
******   This program may only be used by HP support personnel and   ******
******   those customers with the appropriate Class license or       ******
******   Node license for systems specified by the license.  HP      ******
******   shall not be liable for any damages resulting from misuse   ******
******   or unauthorized use of this program.  This program          ******
******   remains the property of HP.                                 ******
******                                                               ******
******                         Version A.01.13                       ******
******                                                               ******

Type DIAGINFO for test information.

Enter password or a <CR> to exit:

Type HELP for command information.

No other processors logged in.


diaginfo provides some useful information:

L2DIAG> diaginfo

L2DIAG is the PCXL2 ODE based diagnostic program.  It is intended
to test the processor of the various PCXL2 based systems in the offline
environment.  The program consists of 119 sections, 1/119,
and are organized into the following groups: 

   1.  CPU data path tests, Sections 1/6 (6 sections)
   2.  ICACHE tests, Sections 7/10 (4 sections)
   3.  DCACHE tests, Sections 11/17 (7 sections)
   4.  2nd Level Cache tests, Sections 18/21 (4 sections)
   5.  TLB tests, Sections 22/27 (6 sections)
   6.  CPU instruction tests, Sections 28/76 (49 sections)
   7.  CPU extended tests, Sections 77/88  (12 sections)
   8.  Floating point tests, Sections  89/119 (31 sections)

A test or range of test can be selected by 'section X or section X/Y' where X is the starting test number, and Y the ending test number. If only X is specified, only test X is run.

Useful ODE tools

Tools of interest on the ODE ISO
Tools Description Comment
L2DIAG PCXL2 PA-7300LC diag useful for testing 32 bit CPU emulation in qemu (B160L machine)
UDIAG PCX-U PA-8000 diag useful for testing 64 bit CPU emulation in qemu (C3700 machine)
WDIAG PCX-W PA-8500 diag useful for testing 64 bit CPU emulation in qemu (C3700 machine)

Known issues/test failures in WDIAG in section 35/86

Known test failures in WDIAG
Section Test Comment
1 cpu internal register tests
0x001a5660:  diag 281840
0x001a5664:  nop
0x001a5668:  diag 2008a6
0x001a566c:  cmpb,<>,n r8,r6,0x1a585c
should save r8 somewhere, then second diag restores that to r6 ???
6 various unknown diag instructions
0x001a68dc:  diag 4008bd
0x001a68e0:  ldo 0(ret1),r24
0x001a68e4:  depdi 1,53,1,ret1
0x001a68e8:  diag 5d1840
0x001a68ec:  diag 200ba0
0x001a68f0:  ssm 0,r0
0x001a68f4:  diag 2008aa
0x001a68f8:  bb,<,n r10,1a,0x1a6904
0x001a68fc:  depdi 0,63,11,r1
0x001a6900:  b,l,n 0x1a690c,r0
0x001a6904:  depdi 0,23,24,r1
0x001a690c:  cmpb,*<>,n r1,r5,0x1a6fe4
63 PSW-B bit Not emulated due to performance reasons
65 dcor not investigated yet fixed by Richards patches
66 shladd not investigated yet fixed:
71 PSW-X bit Not emulated due to performance reasons
72  ?? not investigated yet
73 b,gate not investigated yet
74  ?? not investigated yet
75 b,gate not investigated yet
77 ds not investigated yet
79-86 TLB? hangs

Known issues/test failures in L2DIAG

Known CPU instruction test failures in L2DIAG in section 28/76
Section Test Comment
6 mtctl r1,rctr test CPU recovery counter (not implemented in qemu yet)
36 probe,w (sr1,r11),r12,r5 does not return 0
0x001c13c0:  addi 0,r0,r1
0x001c13c4:  probe,w (sr1,r11),r12,r5
0x001c13c8:  cmpb,<>,n r1,r5,0x1c1568
40 depw,cond sar fixed (0x001a07a0: add,tsv r13,r14,r15 ??) Sven fixed
41 addi,cond fixed Sven fixed
45 sub,cond fixed Sven fixed
54 sub & subi,tsv,cond fixed Sven fixed
55 uaddcm,tc
0x001a2b2c:  uaddcm,tc,shc r13,r14,r15
r13..r15: 55555555 55555555 00000000 should not trap. fixed now:
56 b,l vs. b,gate
0x001ba05c:  ldil L%4000,r18
0x001ba060:  b,l 0x1ba068,r31
0x001ba064:  b,gate 0x1ba06c,r0
0x001ba068:  cmpb,<>,n r0,r18,0x1ba1c0
0x001ba1c0:  addi 1,r0,ret0
checks that "b,gate" is not allowed in delay slot??
58 uaddcm & dcor dcor/uaddcm condition misbehaviour Richards fix:
59 shladd,cond fixed:
62 ERROR 0131 IN SECTION 062 ?? not investigated yet
63 virt memory access / relied-upon-translation? not investigated yet, maybe tdtlbp does not need to follow idtlba?
64 rfi/be,l should not exec delay slot ???
0x001e0058:  rfi
0x001e0060:  be,l 0(sr1,r21),sr0,r31
0x001e0064:  addi 18,r0,r18
0x001e2000:  nop
0x001e2004:  cmpib,<> 0,r18,0x1e021c
branches, but should not (r18 == 18, but should be 0)
65 ERROR 0121 IN SECTION 065 not investigated yet
66 ERROR 0003 IN SECTION 066 not investigated yet
68 ERROR 0005 IN SECTION 068 not investigated yet
73 ERROR 0010 IN SECTION 073 not investigated yet
76 ERROR 0005 IN SECTION 076 not investigated yet
Personal tools