HV: add Kconfig of CONSTANT_ACPI

If CONFIG_CONSTANT_ACPI is true, then the value in host_acpi_info structure
is constant. Otherwise the host_acpi_info value could be overrided.

This is useful when platform ACPI table value is not fixed in Bootloader
before production.

In production release, this config should be set to yes.

Tracked-On: #1264

Signed-off-by: Victor Sun <victor.sun@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Victor Sun 2018-09-13 16:17:38 +08:00 committed by lijinxia
parent eb8c4fb0d5
commit a1e9fdc7f9
4 changed files with 50 additions and 14 deletions

View File

@ -116,6 +116,10 @@ config RAM_SIZE
hex "Size of the RAM region assigned to the hypervisor"
default 0x02000000
config CONSTANT_ACPI
bool "The platform ACPI info is constant"
default n
config DMAR_PARSE_ENABLED
bool
default n if PLATFORM_SBL

View File

@ -31,7 +31,7 @@ struct acpi_info {
/* EXTERNAL VARIABLES */
/**********************************/
extern struct vm_description vm0_desc;
extern const struct acpi_info host_acpi_info;
extern struct acpi_info host_acpi_info;
/* BSP Interfaces */
void init_bsp(void);

View File

@ -6,7 +6,7 @@
#include <hypervisor.h>
const struct acpi_info host_acpi_info = {
struct acpi_info host_acpi_info = {
.x86_family = 6U,
.x86_model = 0x5CU, /* ApolloLake */
.pm_s_state = {

View File

@ -10,17 +10,49 @@
#include <hypervisor.h>
const struct acpi_info host_acpi_info = {
0, /* x86 family */
0, /* x86 model */
{
{SPACE_SYSTEM_IO, 0, 0, 0, 0}, /* PM1a EVT */
{SPACE_SYSTEM_IO, 0, 0, 0, 0}, /* PM1b EVT */
{SPACE_SYSTEM_IO, 0, 0, 0, 0}, /* PM1a CNT */
{SPACE_SYSTEM_IO, 0, 0, 0, 0}, /* PM1b CNT */
{0, 0, 0}, /* _S3 Package */
{0, 0, 0}, /* _S5 Package */
(uint32_t *)0, /* Wake Vector 32 */
(uint64_t *)0 /* Wake Vector 64 */
struct acpi_info host_acpi_info = {
.x86_family = 0U,
.x86_model = 0U,
.pm_s_state = {
.pm1a_evt = {
.space_id = SPACE_SYSTEM_IO,
.bit_width = 0U,
.bit_offset = 0U,
.access_size = 0U,
.address = 0UL
},
.pm1b_evt = {
.space_id = SPACE_SYSTEM_IO,
.bit_width = 0U,
.bit_offset = 0U,
.access_size = 0U,
.address = 0UL
},
.pm1a_cnt = {
.space_id = SPACE_SYSTEM_IO,
.bit_width = 0U,
.bit_offset = 0U,
.access_size = 0U,
.address = 0UL
},
.pm1b_cnt = {
.space_id = SPACE_SYSTEM_IO,
.bit_width = 0U,
.bit_offset = 0U,
.access_size = 0U,
.address = 0UL
},
.s3_pkg = {
.val_pm1a = 0U,
.val_pm1b = 0U,
.reserved = 0U
},
.s5_pkg = {
.val_pm1a = 0U,
.val_pm1b = 0U,
.reserved = 0U
},
.wake_vector_32 = (uint32_t *)0UL,
.wake_vector_64 = (uint64_t *)0UL
}
};