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
- Log in to post comments