efi_selftest: add HII database protocols test

This efi_selftest tests HII database protocol and HII string protocol.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
AKASHI Takahiro 2019-01-21 12:13:01 +09:00 committed by Alexander Graf
parent cb728e51a7
commit 4c4fb10da2
3 changed files with 1500 additions and 0 deletions

View file

@ -25,6 +25,7 @@ efi_selftest_exception.o \
efi_selftest_exitbootservices.o \
efi_selftest_fdt.o \
efi_selftest_gop.o \
efi_selftest_hii.o \
efi_selftest_loaded_image.o \
efi_selftest_manageprotocols.o \
efi_selftest_memory.o \

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,453 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* This file's test data is derived from UEFI SCT.
* The original copyright is attached below.
*/
/*
* Copyright 2006 - 2016 Unified EFI, Inc.<BR>
* Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
*
* This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD
* License which accompanies this distribution. The full text of the license
* may be found at
* http://opensource.org/licenses/bsd-license.php
*
* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
*/
#include <efi.h>
#ifdef NOT_USED
/*
* TODO: These macro's are not used as they appear only in
* "#ifdef NOT_USED" clauses. In the future, define them elsewhere.
*/
/* HII form */
#define EFI_IFR_AND_OP 0x15
#define EFI_IFR_END_OP 0x29
#define EFI_IFR_BITWISE_AND_OP 0x35
/* HII image */
#define EFI_HII_IIBT_END 0x00
#define EFI_HII_IIBT_IMAGE_1BIT 0x10
#endif
/* HII keyboard layout */
#define EFI_NULL_MODIFIER 0x0000
u8 packagelist1[] = {
// EFI_HII_PACKAGE_LIST_HEADER, length = 20
// SimpleFont, Font, GUID, Form, String, Image, DevicePath,
// (74) (110) 20 (8) 78 (67) (8)
// KeyboardLayout, End
// 192 4
0x89, 0xcd, 0xab, 0x03, 0xf4, 0x03, 0x44, 0x70,
0x81, 0xde, 0x99, 0xb1, 0x81, 0x20, 0xf7, 0x68, //16: guid
0x3a, 0x01, 0x00, 0x00, // 4: total 314(0x13a)
#ifdef NOT_USED /* TODO: simple font package not implemented yet */
//
// Simple Font Package 1, length = 74
//
0x4A, 0x00, 0x00,
EFI_HII_PACKAGE_SIMPLE_FONTS,
1, 0,
1, 0,
0x55, 0x0, 0x1,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
0x77, 0x0, 0x2,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0,
//
// Font Package 1, length = 110
//
0x6e, 0x00, 0x00, // 3
EFI_HII_PACKAGE_FONTS, // 1
0x5c, 0x00, 0x00, 0x00, // 4: size of header
0x5c, 0x00, 0x00, 0x00, // 4: offset
0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00,
0xf5, 0x00, 0xec, 0xec, //10+2(pads)
0xff, 0x33, 0xff, 0x44, // 4: font style
0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, //64
//
// Glyph block 1, length = 18
//
EFI_HII_GIBT_GLYPH_DEFAULT, // 1
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x99,
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, //16: BitMapData
EFI_HII_GIBT_END, // 1
#endif
//
// Guid Package 1, length = 20
//
0x14, 0x00, 0x00, // 3
EFI_HII_PACKAGE_TYPE_GUID, // 1
0x5a, 0xc9, 0x87, 0x03, 0x3, 0xd7, 0x46, 0x23,
0xb2, 0xab, 0xd0, 0xc7, 0xdd, 0x90, 0x44, 0xf8, //16: guid
#ifdef NOT_USED /* TODO: form package not implemented yet */
//
// EFI_HII_PACKAGE_FORMS, length = 8
//
0x08, 0x00, 0x00, // 3
EFI_HII_PACKAGE_FORMS, // 1
//
// Opcode 1, length = 4
//
EFI_IFR_AND_OP,
0x82,
EFI_IFR_END_OP,
0x02,
//
#endif
// EFI_HII_PACKAGE_STRINGS, length = 78
//
0x4e, 0x00, 0x00, // 3: length(header)
EFI_HII_PACKAGE_STRINGS, // 1: type(header)
0x3c, 0x00, 0x00, 0x00, // 4: header_size
0x3c, 0x00, 0x00, 0x00, // 4: string_offset
0x00, 0x00, 0x11, 0x22, 0x44, 0x55, 0x77, 0x89, //32: language_window
0x11, 0x00, 0x11, 0x22, 0x44, 0x55, 0x87, 0x89,
0x22, 0x00, 0x11, 0x22, 0x44, 0x55, 0x77, 0x89,
0x33, 0x00, 0x11, 0x22, 0x44, 0x55, 0x77, 0x89,
0x01, 0x00, // 2: language name
0x65, 0x6e, 0x2d, 0x55, 0x53, 0x3b, 0x7a, 0x68, //14: language
0x2d, 0x48, 0x61, 0x6e, 0x74, 0x00, // "en-US;zh-Hant"
EFI_HII_SIBT_STRING_UCS2, // 1
0x45, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x6C, 0x00,
0x69, 0x00, 0x73, 0x00, 0x68, 0x00, 0x00, 0x00, //16: "English"
EFI_HII_SIBT_END, // 1
#ifdef NOT_USED /* TODO: image package not implemented yet */
//
// EFI_HII_PACKAGE_IMAGES, length = 67
//
0x43, 0x00, 0x00, // 3
EFI_HII_PACKAGE_IMAGES, // 1
0x0c, 0x00, 0x00, 0x00, // 4: image info offset
0x39, 0x00, 0x00, 0x00, // 4: palette info offset
EFI_HII_IIBT_IMAGE_1BIT, // 1
0x01,
0x0b, 0x00,
0x13, 0x00,
0x80, 0x00,
0xc0, 0x00,
0xe0, 0x00,
0xf0, 0x00,
0xf8, 0x00,
0xfc, 0x00,
0xfe, 0x00,
0xff, 0x00,
0xff, 0x80,
0xff, 0xc0,
0xff, 0xe0,
0xfe, 0x00,
0xef, 0x00,
0xcf, 0x00,
0x87, 0x80,
0x07, 0x80,
0x03, 0xc0,
0x03, 0xc0,
0x01, 0x80, //43
EFI_HII_IIBT_END, // 1
0x01, 0x00,
0x06, 0x00,
0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, //10
//
// EFI_HII_PACKAGE_DEVICE_PATH, length = 8
//
0x08, 0x00, 0x00, // 3
EFI_HII_PACKAGE_DEVICE_PATH, // 1
0x01, 0x23, 0x45, 0x66, // 4: dummy device path protocol
// instance address
#endif
//
// Keyboard layout package 1, length = 192
0xc0, 0x00, 0x00, // 3: length(header)
EFI_HII_PACKAGE_KEYBOARD_LAYOUT, // 1: type(header)
0x02, 0x00, // 2: LayoutCount
//
// Layout 1, length = 93
//
0x5d, 0x00, // 2: layout_length
0x95, 0xe4, 0x40, 0x8d, 0xaa, 0xe2, 0x6f, 0x4c,
0x89, 0x70, 0x68, 0x85, 0x09, 0xee, 0xc7, 0xd2, //16: guid
0x37, 0x00, 0x00, 0x00, // 4: layout_descriptor_
// string_offset
0x02, // 1: descriptor_count
//
// Descriptor 1, length = 16
//
49, 0x00, 0x00, 0x00, // 4: key (EfiKeyD1)
'q', 0x00, // 2: unicode
'Q', 0x00, // 2: shifted_unicode
0x00, 0x00, // 2: alt_gr_unicode
0x00, 0x00, // 2: shifted_alt_gr_unicode
EFI_NULL_MODIFIER, 0x00, // 2: modifier
0x03, 0x00, // 2: affected_attribute
//
// Descriptor 2, length = 16
//
50, 0x00, 0x00, 0x00, // 4: key (EfiKeyD2)
'w', 0x00, // 2: unicode
'W', 0x00, // 2: shifted_unicode
0x00, 0x00, // 2: alt_gr_unicode
0x00, 0x00, // 2: shifted_alt_gr_unicode
EFI_NULL_MODIFIER, 0x00, // 2: modifier
0x3, 0x0, // 2: affected_attribute
//
// EFI_DESCRIPTOR_STRING_BUNDLE, length = 38
//
0x01, 0x00, // 2: DescriptionCount
'e', 0x0, 'n', 0x0, '-', 0x0, 'U', 0x0, 'S', 0x0,
//10: RFC3066 language code
' ', 0x0, // 2: Space
'S', 0x0, 'i', 0x0, 'm', 0x0, 'p', 0x0, 'l', 0x0, 'e', 0x0,
'1', 0x0, 'o', 0x0, 'n', 0x0, 'l', 0x0, 'y', 0x0, '\0', 0x0,
//24: DescriptionString
//
// Layout 2, length = 93
//
0x5d, 0x00, // 2: layout_length
0x3e, 0x0b, 0xe6, 0x2a, 0xd6, 0xb9, 0xd8, 0x49,
0x9a, 0x16, 0xc2, 0x48, 0xf1, 0xeb, 0xa8, 0xdb, //16: guid
0x37, 0x00, 0x00, 0x00, // 4: layout_descriptor_
// string_offset
0x02, // 1 Descriptor count
//
// Descriptor 1, length = 16
//
51, 0x0, 0x0, 0x0, // 4: key (EfiKeyD3)
'e', 0x00, // 2: unicode
'E', 0x00, // 2: shifted_unicode
0x00, 0x00, // 2: alt_gr_unicode
0x00, 0x00, // 2: shifted_alt_gr_unicode
EFI_NULL_MODIFIER, 0x0, // 2: modifier
0x3, 0x0, // 2: affected_attribute
//
// Descriptor 2, length = 16
//
52, 0x0, 0x0, 0x0, // 4: key (EfiKeyD4)
'r', 0x00, // 2: unicode
'R', 0x00, // 2: shifted_unicode
0x00, 0x00, // 2: alt_gr_unicode
0x00, 0x00, // 2: shifted_alt_gr_unicode
EFI_NULL_MODIFIER, 0x0, // 2: modifier
0x3, 0x0, // 2: affected_attribute
//
// EFI_DESCRIPTOR_STRING_BUNDLE, length = 38
//
0x01, 0x00, // 2: DescriptionCount
'e', 0x0, 'n', 0x0, '-', 0x0, 'U', 0x0, 'S', 0x0,
//10: RFC3066 language code
' ', 0x0, // 2: Space
'S', 0x0, 'i', 0x0, 'm', 0x0, 'p', 0x0, 'l', 0x0, 'e', 0x0,
'2', 0x0, 'o', 0x0, 'n', 0x0, 'l', 0x0, 'y', 0x0, '\0', 0x0,
//24: DescriptionString
//
// End of package list, length = 4
//
0x4, 0x00, 0x00,
EFI_HII_PACKAGE_END
};
u8 packagelist2[] = {
// EFI_HII_PACKAGE_LIST_HEADER, length = 20
// SimpleFont, Font, GUID, KeyboardLayout, Form, End
// (74) (122) 20 192 (8) 4
0xd3, 0xde, 0x85, 0x86, 0xce, 0x1b, 0xf3, 0x43,
0xa2, 0x0c, 0xa3, 0x06, 0xec, 0x69, 0x72, 0xdd, //16
0xec, 0x00, 0x00, 0x00, // 4: total 236(0xec)
#ifdef NOT_USED /* TODO: simple font package not implemented yet */
//
// Simple Font Package 2, length = 74
//
0x4A, 0x00, 0x00, // 3
EFI_HII_PACKAGE_SIMPLE_FONTS, // 1
1, 0, // 2
1, 0, // 2
0x33, 0x0, 0, 1, 2, 3, 4, 5, 0, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, //22
0x44, 0x0, 0x2, 2, 3, 4, 5, 6, 0, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, //22
3, 4, 5, 6, 7, 8, 9, 10, 11, 9, 13,
14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, //22
//
// Font Package 2, length = 122
//
0x7A, 0x00, 0x00, // 3
EFI_HII_PACKAGE_FONTS, // 1
0x5C, 0x00, 0x00, 0x00, // 4: size of header
0x5C, 0x00, 0x00, 0x00, // 4: dummy offset
0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00,
0xf5, 0x00, 0xec, 0xec, //10+2(pads)
0xff, 0x11, 0xff, 0x22, // 4: font style
0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, //64
//
// Glyph block 1, length = 30
//
EFI_HII_GIBT_GLYPH, // 1
0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00,
0xf5, 0x00, //10
0xff, 0x01, // 2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, //16: BitMapData
EFI_HII_GIBT_END, // 1
#endif
//
// Guid Package 1, length = 20
//
0x14, 0x00, 0x00, // 3
EFI_HII_PACKAGE_TYPE_GUID, // 1
0x5a, 0xc9, 0x87, 0x03, 0x3, 0xd7, 0x46, 0x23,
0xb2, 0xab, 0xd0, 0xc7, 0xdd, 0x90, 0x44, 0xf8, //16: guid
//
// Keyboard layout package 2, length = 192
0xc0, 0x00, 0x00, // 3
EFI_HII_PACKAGE_KEYBOARD_LAYOUT, // 1
0x02, 0x00, //0xec, 0xec, // 2: LayoutCount
//
// Layout 1, length = 93
//
0x5d, 0x00, // 2: layout_length
0x1f, 0x6a, 0xf5, 0xe0, 0x6b, 0xdf, 0x7e, 0x4a,
0xa3, 0x9a, 0xe7, 0xa5, 0x19, 0x15, 0x45, 0xd6,//16: guid
0x37, 0x00, 0x00, 0x00, // 4: layout_descriptor
// string offset
0x02, // 1: descriptor_count
//
// Descriptor 1, length = 16
//
32, 0x00, 0x00, 0x00, // 4: key (EfiKeyC1)
'a', 0x00, // 2: unicode
'A', 0x00, // 2: shifted_unicode
0x00, 0x00, // 2: alt_gr_unicode
0x00, 0x00, // 2: shifted_alt_gr_unic
EFI_NULL_MODIFIER, 0x00, // 2: modifier
0x03, 0x00, // 2: affected_attribute
//
// Descriptor 2, length = 16
//
33 /*EfiKeyC2*/, 0x00, 0x00, 0x00,
's', 0x00,
'S', 0x00,
0x00, 0x00,
0x00, 0x00,
EFI_NULL_MODIFIER, 0x00,
0x3, 0x0,
//
// EFI_DESCRIPTOR_STRING_BUNDLE, length = 38
//
0x01, 0x00, // 2: DescriptionCount
'e', 0x0, 'n', 0x0, '-', 0x0, 'U', 0x0, 'S', 0x0,
//10: RFC3066 language code
' ', 0x0, // 2: Space
'S', 0x0, 'i', 0x0, 'm', 0x0, 'p', 0x0, 'l', 0x0, 'e', 0x0,
'3', 0x0, 'o', 0x0, 'n', 0x0, 'l', 0x0, 'y', 0x0, '\0', 0x0,
//24: DescriptionString
//
// Layout 2, length = 93
//
0x5d, 0x00, // 2: layout_length
0xc9, 0x6a, 0xbe, 0x47, 0xcc, 0x54, 0xf9, 0x46,
0xa2, 0x62, 0xd5, 0x3b, 0x25, 0x6a, 0xc, 0x34, //16: guid
0x37, 0x00, 0x00, 0x00, // 4: layout_descriptor
// string_offset
0x02, // 1: descriptor_count
//
// Descriptor 1, length = 16
//
34 /*EfiKeyC3*/, 0x0, 0x0, 0x0,
'd', 0x00,
'D', 0x00,
0x00, 0x00,
0x00, 0x00,
EFI_NULL_MODIFIER, 0x0,
0x3, 0x0,
//
// Descriptor 2, length = 16
//
35 /*EfiKeyC4*/, 0x0, 0x0, 0x0,
'e', 0x00,
'E', 0x00,
0x00, 0x00,
0x00, 0x00,
EFI_NULL_MODIFIER, 0x0,
0x3, 0x0,
//
// EFI_DESCRIPTOR_STRING_BUNDLE, length = 38
//
0x01, 0x00, // 2: DescriptionCount
'e', 0x0, 'n', 0x0, '-', 0x0, 'U', 0x0, 'S', 0x0,
//10: RFC3066 language code
' ', 0x0, // 2: Space
'S', 0x0, 'i', 0x0, 'm', 0x0, 'p', 0x0, 'l', 0x0, 'e', 0x0,
'4', 0x0, 'o', 0x0, 'n', 0x0, 'l', 0x0, 'y', 0x0, '\0', 0x0,
//24: DescriptionString
#ifdef NOT_USED /* TODO: form package not implemented yet */
//
// EFI_HII_PACKAGE_FORMS, length = 8
//
0x08, 0x00, 0x00, // 3
EFI_HII_PACKAGE_FORMS, // 1
//
// Opcode 1
//
EFI_IFR_BITWISE_AND_OP, // 1
0x02, // 1
EFI_IFR_END_OP, // 1
0x02, // 1
#endif
//
// End of package list, length = 4
//
0x4, 0x00, 0x00, // 3
EFI_HII_PACKAGE_END // 1
};
efi_guid_t packagelist_guid1 =
EFI_GUID(0x03abcd89, 0x03f4, 0x7044,
0x81, 0xde, 0x99, 0xb1, 0x81, 0x20, 0xf7, 0x68);
efi_guid_t packagelist_guid2 =
EFI_GUID(0x8685ded3, 0x1bce, 0x43f3,
0xa2, 0x0c, 0xa3, 0x06, 0xec, 0x69, 0x72, 0xdd);
efi_guid_t kb_layout_guid11 =
EFI_GUID(0x8d40e495, 0xe2aa, 0x4c6f,
0x89, 0x70, 0x68, 0x85, 0x09, 0xee, 0xc7, 0xd2);
efi_guid_t kb_layout_guid12 =
EFI_GUID(0x2ae60b3e, 0xb9d6, 0x49d8,
0x9a, 0x16, 0xc2, 0x48, 0xf1, 0xeb, 0xa8, 0xdb);
efi_guid_t kb_layout_guid21 =
EFI_GUID(0xe0f56a1f, 0xdf6b, 0x4a7e,
0xa3, 0x9a, 0xe7, 0xa5, 0x19, 0x15, 0x45, 0xd6);
efi_guid_t kb_layout_guid22 =
EFI_GUID(0x47be6ac9, 0x54cc, 0x46f9,
0xa2, 0x62, 0xd5, 0x3b, 0x25, 0x6a, 0x0c, 0x34);
efi_guid_t package_guid =
EFI_GUID(0x0387c95a, 0xd703, 0x2346,
0xb2, 0xab, 0xd0, 0xc7, 0xdd, 0x90, 0x44, 0xf8);