specification: updating for latest linux changes#35
specification: updating for latest linux changes#35dpsmith wants to merge 1 commit intoTrenchBoot:masterfrom
Conversation
Update the specification to align with the changes made for the Linux maintainers. Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
| u64 boot_params_addr; | ||
| u64 slrt; | ||
| u64 txt_info; | ||
| u64 txt_info; |
| :uuid0: Chunk 0 of UUID, 9082AC5A | ||
| :uuid1: Chunk 1 of UUID, 74A7476F | ||
| :uuid2: Chunk 2 of UUID, A2555C0F | ||
| :uuid3: Chunk 3 of UUID, 42B651CB |
There was a problem hiding this comment.
Should it be unconditionally included in non-TXT binaries as well? It probably makes sense for x86 as vendor can be easily detected, but I'm not so sure about other architectures.
There was a problem hiding this comment.
Yes, while it originates from Intel TXT, we want to standardize the dl-stub across architectures and this provides the cleanest, IOW maximize reuse, method to communicate the necessary information to the dl-stub
| :uuid1: Chunk 1 of UUID, 74A7476F | ||
| :uuid2: Chunk 2 of UUID, A2555C0F | ||
| :uuid3: Chunk 3 of UUID, 42B651CB | ||
| :header_len: Length of the header. |
There was a problem hiding this comment.
To be unambiguous since this is not always the case:
| :header_len: Length of the header. | |
| :header_len: Length of the header in bytes. |
| :header_len: Length of the header. | ||
| :version: Header version. | ||
| :entry_point: Address of the DLME entry point. | ||
| :first_valid_page: Address to first valid page of DLME. |
There was a problem hiding this comment.
| :first_valid_page: Address to first valid page of DLME. | |
| :first_valid_page: Address of the first valid 4KiB-page of DLME. |
I suppose it also needs to have zeroes in its lowest bits.
There was a problem hiding this comment.
I would not specify 4K, it should be kept platform agnostic. I am good with the other wording change.
| :start: Offset to first byte of DLME within page space. | ||
| :end: Offset to last byte + 1 of DLME within page space. |
There was a problem hiding this comment.
The base for the offsets is unspecified.
There was a problem hiding this comment.
This is how it is defined in MLE guide,
Note: linear addresses start at the beginning of the executable region of the binary,
not the beginning of the file. The offset between the beginning of the binary file and
beginning of the linear address space is ABI-dependent.
I am going to have to think of a good way to say this in relation to this spec. Suggestions are welcome.
| Handler to facilitate it in launching the kernel. | ||
|
|
||
|
|
||
| DLME Header Structure |
There was a problem hiding this comment.
Are there any alignment requirements?
There was a problem hiding this comment.
The only requirement from TXT spec is that it must be within the MLE range. If we want to impose alignment, I'm open to that discussion. It may require a slight change to the Linux series, though I don't think it would be difficult.
| | **1.3** - All other registers besides EDI/RDI are not guarenteed | ||
| | **1.4** - The invoking code **SHALL** use a long jump to the DLE Handler | ||
| | **1.5** - The DLE Handler **SHALL NOT** return control on error | ||
| | **2.3** - All other registers besides EDI/RDI are not guarenteed |
There was a problem hiding this comment.
A typo:
| | **2.3** - All other registers besides EDI/RDI are not guarenteed | |
| | **2.3** - All other registers besides EDI/RDI are not guaranteed |
| typedef struct tdEFI_SLAUNCH_PROTOCOL { | ||
| EFI_SLAUNCH_SLRT_UPDATE_REGISTER_DLME RegisterDlme; | ||
| EFI_SLAUNCH_LAUNCH Launch; | ||
| } EFI_SLAUNCH_PROTOCOL |
There was a problem hiding this comment.
| } EFI_SLAUNCH_PROTOCOL | |
| } EFI_SLAUNCH_PROTOCOL; |
| IN EFI_PHYSICAL_ADDRESS *DlmeBase | ||
| IN EFI_PHYSICAL_ADDRESS *DlmeHeader |
There was a problem hiding this comment.
| IN EFI_PHYSICAL_ADDRESS *DlmeBase | |
| IN EFI_PHYSICAL_ADDRESS *DlmeHeader | |
| IN EFI_PHYSICAL_ADDRESS *DlmeBase, | |
| IN EFI_PHYSICAL_ADDRESS *DlmeHeader, |
| :dlme_header_offset: The offest into the DLME of the DLME Header. | ||
| :dlme_config_table: The offsee into the DLME of the DLME Config Table. |
There was a problem hiding this comment.
| :dlme_header_offset: The offest into the DLME of the DLME Header. | |
| :dlme_config_table: The offsee into the DLME of the DLME Config Table. | |
| :dlme_header_offset: The offset into the DLME of the DLME Header. | |
| :dlme_config_table: The offset into the DLME of the DLME Config Table. |
Update the specification to align with the changes made for the Linux maintainers.