mirror of https://github.com/xemu-project/xemu.git
hw/acpi/aml-build: Add Processor hierarchy node structure
Add a generic API to build Processor hierarchy node structure (Type 0), which is strictly consistent with descriptions in ACPI 6.3: 5.2.29.1. This function will be used to build ACPI PPTT table for cpu topology. Co-developed-by: Ying Fang <fangying1@huawei.com> Co-developed-by: Henglong Fan <fanhenglong@huawei.com> Co-developed-by: Yanan Wang <wangyanan55@huawei.com> Signed-off-by: Yanan Wang <wangyanan55@huawei.com> Reviewed-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Message-Id: <20211020142125.7516-5-wangyanan55@huawei.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
72b0527ff6
commit
9de36ef872
|
@ -1964,6 +1964,36 @@ void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms,
|
|||
acpi_table_end(linker, &table);
|
||||
}
|
||||
|
||||
/*
|
||||
* ACPI spec, Revision 6.3
|
||||
* 5.2.29.1 Processor hierarchy node structure (Type 0)
|
||||
*/
|
||||
static void build_processor_hierarchy_node(GArray *tbl, uint32_t flags,
|
||||
uint32_t parent, uint32_t id,
|
||||
uint32_t *priv_rsrc,
|
||||
uint32_t priv_num)
|
||||
{
|
||||
int i;
|
||||
|
||||
build_append_byte(tbl, 0); /* Type 0 - processor */
|
||||
build_append_byte(tbl, 20 + priv_num * 4); /* Length */
|
||||
build_append_int_noprefix(tbl, 0, 2); /* Reserved */
|
||||
build_append_int_noprefix(tbl, flags, 4); /* Flags */
|
||||
build_append_int_noprefix(tbl, parent, 4); /* Parent */
|
||||
build_append_int_noprefix(tbl, id, 4); /* ACPI Processor ID */
|
||||
|
||||
/* Number of private resources */
|
||||
build_append_int_noprefix(tbl, priv_num, 4);
|
||||
|
||||
/* Private resources[N] */
|
||||
if (priv_num > 0) {
|
||||
assert(priv_rsrc);
|
||||
for (i = 0; i < priv_num; i++) {
|
||||
build_append_int_noprefix(tbl, priv_rsrc[i], 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* build rev1/rev3/rev5.1 FADT */
|
||||
void build_fadt(GArray *tbl, BIOSLinker *linker, const AcpiFadtData *f,
|
||||
const char *oem_id, const char *oem_table_id)
|
||||
|
|
Loading…
Reference in New Issue