mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-05 06:56:57 +00:00
Provide EFI support for SOS could cause weird issues. For example, hypervisor works based on E820 table whereras it's possible that the memory map from EFI table is not aligned with E820 table. The SOS kernel kaslr will try to find the random address for extracted kernel image in EFI table first. So it's possible that none-RAM in E820 is picked for extracted kernel image. This will make kernel boot fail. This patch removes EFI support for SOS by not passing struct boot_efi_info to SOS kernel zeropage, and reserve a memory to store RSDP table for SOS and pass the RSDP address to SOS kernel zeropage for SOS to locate ACPI table. The patch requires SOS kernel version be high than 4.20, otherwise the kernel might fail to find the RSDP. Tracked-On: #5626 Signed-off-by: Victor Sun <victor.sun@intel.com> Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com>
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
/*
|
|
* Copyright (C) 2018 Intel Corporation. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef ZEROPAGE_H
|
|
#define ZEROPAGE_H
|
|
#include <e820.h>
|
|
|
|
struct zero_page {
|
|
uint8_t pad0[0x70]; /* 0x000 */
|
|
|
|
uint64_t acpi_rsdp_addr; /* 0x070 */
|
|
|
|
uint8_t pad1[0x170]; /* 0x78 */
|
|
uint8_t e820_nentries; /* 0x1e8 */
|
|
uint8_t pad2[0x8]; /* 0x1e9 */
|
|
|
|
struct {
|
|
uint8_t setup_sects; /* 0x1f1 */
|
|
uint8_t hdr_pad1[0x1e]; /* 0x1f2 */
|
|
uint8_t loader_type; /* 0x210 */
|
|
uint8_t load_flags; /* 0x211 */
|
|
uint8_t hdr_pad2[0x6]; /* 0x212 */
|
|
uint32_t ramdisk_addr; /* 0x218 */
|
|
uint32_t ramdisk_size; /* 0x21c */
|
|
uint8_t hdr_pad3[0x8]; /* 0x220 */
|
|
uint32_t bootargs_addr; /* 0x228 */
|
|
uint8_t hdr_pad4[0x8]; /* 0x22c */
|
|
uint8_t relocatable_kernel; /* 0x234 */
|
|
uint8_t hdr_pad5[0x13]; /* 0x235 */
|
|
uint32_t payload_offset;/* 0x248 */
|
|
uint32_t payload_length;/* 0x24c */
|
|
uint8_t hdr_pad6[0x8]; /* 0x250 */
|
|
uint64_t pref_addr; /* 0x258 */
|
|
uint8_t hdr_pad7[8]; /* 0x260 */
|
|
} __packed hdr;
|
|
|
|
uint8_t pad3[0x68]; /* 0x268 */
|
|
struct e820_entry entries[0x80]; /* 0x2d0 */
|
|
uint8_t pad4[0x330]; /* 0xcd0 */
|
|
} __packed;
|
|
|
|
#endif
|