VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h

Last change on this file was 99404, checked in by vboxsync, 2 years ago

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

  • Property svn:eol-style set to native
File size: 3.6 KB
Line 
1/** @file
2 Common header file.
3
4Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
5Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
6
7SPDX-License-Identifier: BSD-2-Clause-Patent
8
9**/
10
11#ifndef _CAPSULE_COMMON_HEADER_
12#define _CAPSULE_COMMON_HEADER_
13
14//
15// 8 extra pages for PF handler.
16//
17#define EXTRA_PAGE_TABLE_PAGES 8
18
19#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull
20
21//
22// This capsule PEIM puts its private data at the start of the
23// coalesced capsule. Here's the structure definition.
24//
25#define EFI_CAPSULE_PEIM_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('C', 'a', 'p', 'P')
26
27#pragma pack(1)
28typedef struct {
29 UINT64 Signature;
30 UINT64 CapsuleAllImageSize;
31 UINT64 CapsuleNumber;
32 UINT64 CapsuleOffset[1];
33} EFI_CAPSULE_PEIM_PRIVATE_DATA;
34#pragma pack()
35
36typedef struct {
37 ///
38 /// The physical start address of the resource region.
39 ///
40 EFI_PHYSICAL_ADDRESS PhysicalStart;
41 ///
42 /// The number of bytes of the resource region.
43 ///
44 UINT64 ResourceLength;
45} MEMORY_RESOURCE_DESCRIPTOR;
46
47#define CAPSULE_TEST_SIGNATURE SIGNATURE_32('T', 'E', 'S', 'T')
48
49#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
50 #pragma pack(1)
51typedef struct {
52 EFI_PHYSICAL_ADDRESS EntryPoint;
53 EFI_PHYSICAL_ADDRESS StackBufferBase;
54 UINT64 StackBufferLength;
55 EFI_PHYSICAL_ADDRESS JumpBuffer;
56 EFI_PHYSICAL_ADDRESS BlockListAddr;
57 EFI_PHYSICAL_ADDRESS MemoryResource;
58 EFI_PHYSICAL_ADDRESS MemoryBase64Ptr;
59 EFI_PHYSICAL_ADDRESS MemorySize64Ptr;
60 BOOLEAN Page1GSupport;
61 UINT64 AddressEncMask;
62} SWITCH_32_TO_64_CONTEXT;
63
64typedef struct {
65 UINT16 ReturnCs;
66 EFI_PHYSICAL_ADDRESS ReturnEntryPoint;
67 UINT64 ReturnStatus;
68 //
69 // NOTICE:
70 // Be careful about the Base field of IA32_DESCRIPTOR
71 // that is UINTN type.
72 // To extend new field for this structure, add it to
73 // right before this Gdtr field.
74 //
75 IA32_DESCRIPTOR Gdtr;
76} SWITCH_64_TO_32_CONTEXT;
77 #pragma pack()
78#endif
79
80/**
81 The function to coalesce a fragmented capsule in memory.
82
83 @param PeiServices General purpose services available to every PEIM.
84 @param BlockListBuffer Point to the buffer of Capsule Descriptor Variables.
85 @param MemoryResource Pointer to the buffer of memory resource descriptor.
86 @param MemoryBase Pointer to the base of a block of memory that we can walk
87 all over while trying to coalesce our buffers.
88 On output, this variable will hold the base address of
89 a coalesced capsule.
90 @param MemorySize Size of the memory region pointed to by MemoryBase.
91 On output, this variable will contain the size of the
92 coalesced capsule.
93
94 @retval EFI_NOT_FOUND if we can't determine the boot mode
95 if the boot mode is not flash-update
96 if we could not find the capsule descriptors
97
98 @retval EFI_BUFFER_TOO_SMALL
99 if we could not coalesce the capsule in the memory
100 region provided to us
101
102 @retval EFI_SUCCESS if there's no capsule, or if we processed the
103 capsule successfully.
104**/
105EFI_STATUS
106EFIAPI
107CapsuleDataCoalesce (
108 IN EFI_PEI_SERVICES **PeiServices,
109 IN EFI_PHYSICAL_ADDRESS *BlockListBuffer,
110 IN MEMORY_RESOURCE_DESCRIPTOR *MemoryResource,
111 IN OUT VOID **MemoryBase,
112 IN OUT UINTN *MemorySize
113 );
114
115#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette