[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v7 2/2] hw/acpi: Implement the SRAT GI affinity structure
From: |
Ankit Agrawal |
Subject: |
Re: [PATCH v7 2/2] hw/acpi: Implement the SRAT GI affinity structure |
Date: |
Fri, 1 Mar 2024 08:30:55 +0000 |
>>
>> One more thing. Right now we can't use Generic Initiators as
>> HMAT initiators. That also wants fixing given that's their
>> normal usecase rather than what you are using them for so it
>> should 'work'.
>
> Something along the lines of this will do the job.
Thanks! Will incorporate the patch in the next posting.
>
> diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h
> index 4173ef2afa..825cfe86bc 100644
> --- a/include/sysemu/numa.h
> +++ b/include/sysemu/numa.h
> @@ -41,6 +41,7 @@ struct NodeInfo {
> struct HostMemoryBackend *node_memdev;
> bool present;
> bool has_cpu;
>+ bool has_gi;
> uint8_t lb_info_provided;
> uint16_t initiator;
> uint8_t distance[MAX_NODES];
> diff --git a/hw/acpi/acpi-generic-initiator.c
> b/hw/acpi/acpi-generic-initiator.c
> index 9179590a42..8a67300320 100644
> --- a/hw/acpi/acpi-generic-initiator.c
> +++ b/hw/acpi/acpi-generic-initiator.c
> @@ -6,6 +6,7 @@
> #include "qemu/osdep.h"
> #include "hw/acpi/acpi-generic-initiator.h"
> #include "hw/pci/pci_device.h"
> +#include "hw/boards.h"
> #include "qapi/error.h"
> #include "qapi/qapi-builtin-visit.h"
> #include "qapi/visitor.h"
> @@ -58,6 +59,7 @@ static void acpi_generic_node_set_node(Object *obj, Visitor
> *v,
> const char *name, void *opaque,
> Error **errp)
> {
> + MachineState *ms = MACHINE(qdev_get_machine());
> AcpiGenericNode *gn = ACPI_GENERIC_NODE(obj);
> uint32_t value;
>
> @@ -72,6 +74,10 @@ static void acpi_generic_node_set_node(Object *obj,
> Visitor *v,
> }
>
> gn->node = value;
> +
> + if (object_dynamic_cast(obj, TYPE_ACPI_GENERIC_INITIATOR)) {
> + ms->numa_state->nodes[gn->node].has_gi = true;
> + }
> }
>
> static void acpi_generic_node_class_init(ObjectClass *oc, void *data)
> diff --git a/hw/acpi/hmat.c b/hw/acpi/hmat.c
> index b933ae3c06..9b1662b6b8 100644
> --- a/hw/acpi/hmat.c
> +++ b/hw/acpi/hmat.c
> @@ -225,7 +225,7 @@ static void hmat_build_table_structs(GArray *table_data,
> NumaState *numa_state)
> }
>
> for (i = 0; i < numa_state->num_nodes; i++) {
> - if (numa_state->nodes[i].has_cpu) {
> + if (numa_state->nodes[i].has_cpu || numa_state->nodes[i].has_gi) {
> initiator_list[num_initiator++] = i;
> }
> }
> diff --git a/hw/core/numa.c b/hw/core/numa.c
> index f08956ddb0..58a32f1564 100644
> --- a/hw/core/numa.c
> +++ b/hw/core/numa.c
> @@ -229,7 +229,8 @@ void parse_numa_hmat_lb(NumaState *numa_state,
> NumaHmatLBOptions *node,
> node->target, numa_state->num_nodes);
> return;
> }
> - if (!numa_info[node->initiator].has_cpu) {
> + if (!numa_info[node->initiator].has_cpu &&
> + !numa_info[node->initiator].has_gi) {
> error_setg(errp, "Invalid initiator=%d, it isn't an "
> "initiator proximity domain", node->initiator);
> return;
>
> Jonathan
>
> >
> >
> >
>
- Re: [PATCH v7 2/2] hw/acpi: Implement the SRAT GI affinity structure,
Ankit Agrawal <=
Re: [PATCH v7 2/2] hw/acpi: Implement the SRAT GI affinity structure, Alex Williamson, 2024/03/05
Re: [PATCH v7 2/2] hw/acpi: Implement the SRAT GI affinity structure, Jonathan Cameron, 2024/03/06