logo
BIOS Testing the OA30 Controller

Testing low-level BIOS: OA30 Conroller

Here's a classic example of testing BIOS features. This was a very 'hands on' role as BIOS testing new features is very much an exploratory effort with each feature usually having a specific tool to dump data for verification purposes. With each test, the protocol and storage parameters needed to be learned and documented for later use. Working on the latest offerings means there wasn't a substantial amount of tools available for automation.  In this case, the component is used for verifying a Genuine OS is installed on the target system. This would be injected by the OEM manufacturer and when the OA30 feature was enabled on the system it will not boot an OS with another ID. The first issues was a build configuration issue. The second was a payload missing issue. On the third attempt everything worked as designed.

OA30-MSDM.bin: ACPI MSDM Table Breakdown

ACPI Table / MSDM Payload

00000000   4d 53 44 4d 55 00 00 00 03 88 4d 53 54 45 53 54 MSDMU....^MSTEST

00000010   4d 53 2d 54 41 42 4c 45 00 00 00 00 54 45 53 54 MS-TABLE....TEST

00000020   00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 ................

00000030   00 00 00 00 1d 00 00 00 XX XX XX XX XX 2d XX XX ........XXXXX-XXX

00000040   XX XX XX 2d XX XX XX XX XX 2d XX XX XX XX XX 2d XXX-XXXXX-XXXXX-

00000050   XX XX XX XX XX                                  XXXXXX

 

Field

Description

Length (Bytes)

Byte Offset (Decimal Position)

Example

Signature

MSDM

4

0

MSDM

Length

0x55

4

4

0x55

Revision

0x03

1

8

0x03

Checksum

Entire table checksum value.

1

9

0x88

OEMID

OEMID string.

If you previously used OA 2.x, then your OA 3.0 OEMID string value must match your OA 2.x OEMID string.

6

10

MSTEST

OEMTableID

OEMTableID string.

If you previously used OA 2.x, then your OA 3.0 OEMTableID string value must match your OA 2.x OEMTableID string.

8

16

MS-TABLE

OEM Revision

0x0

4

24

0x0

Creator ID

Vendor ID for the table creation utility.

4

28

TEST

Creator Revision

Revision value of the utility that created the table.

4

32

0x0

MSDM Version

0x1

4

36

0x1

MSDM Reserved

0x0

4

40

0x0

MSDM Data Type

0x1

4

44

0X1

MSDM Data Reserved

0x0

4

48

0x0

MSDM Data Length

0x1D

4

52

0x1D

MSDM Data

Product key value, including hyphens (-).

29

56

XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

 

OA30ctrl64.exe

  • Dumps the contents of the MSDM table
  • OA30Ctrl Command Line options

E = Dump MSDM table info (“Marker”)

R = Clear the MSDM table (“Marker”)

OA:<MarkerFile> = Inject the BIOS with “something.bin”

D = Hide the MSDM table

H = Show the MSDM table

  • First BIOS test was missing the component:

C:\OA30>oa30ctrl64.exe E

OA30Ctrl32.exe -- Version 0.900

(C) Copyright 1993-2012 Dell Inc.

ERROR:  Could not locate the OA30 Protocol

EFI_STATUS = EFI_OUT_OF_RESOURCES

Application return code (0xFF)

  • AMI eBIOS tool had HiiParser_SUPPORT = OFF
  • Turn HiiParser_SUPPORT = ON)
  • Rebuilt BIOS -> 12M.bin
  • Flashed system
  • Also noticed DM.Bin that came with the Feature.zip was missing ACPI Table portion

00         01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00

10         1d 00 00 00 XX XX XX XX XX 2d XX XX XX XX XX 2d

20         36 53 48 35 XX 2d 32 44 49 34 XX 2d XX XX XX XX

30         XX

  • Not sure if the control was integrated properly in the BIOS so integrated manually against the source tree of latest stable release

00000000   4d 53 44 4d 55 00 00 00 03 88 4d 53 54 45 53 54 MSDMU....^MSTEST

00000010   4d 53 2d 54 41 42 4c 45 00 00 00 00 54 45 53 54 MS-TABLE....TEST

00000020   00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 ................

00000030   00 00 00 00 1d 00 00 00 XX XX XX XX XX 2d XX XX ........XXXXX-XXX

00000040   XX XX XX 2d XX XX XX XX XX 2d XX XX XX XX XX 2d XXX-XXXXX-XXXXX-

00000050   XX XX XX XX XX                                  XXXXXX

 

©2013 SiloSix.com All Rights Reserved