[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/6] hw/acpi/viot: sort VIOT ACPI table entries by PCI host b
From: |
Ani Sinha |
Subject: |
Re: [PATCH 5/6] hw/acpi/viot: sort VIOT ACPI table entries by PCI host bus min_bus |
Date: |
Thu, 19 May 2022 13:20:49 +0530 |
On Wed, May 18, 2022 at 4:39 PM Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk> wrote:
>
> This ensures that the VIOT ACPI table output is always stable for a given PCI
> topology by ensuring that entries are ordered according to min_bus.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
other than the nit below,
Reviewed-by: Ani Sinha <ani@anisinha.ca>
> ---
> hw/acpi/viot.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/hw/acpi/viot.c b/hw/acpi/viot.c
> index ce3b7b8c75..f5714b95bd 100644
> --- a/hw/acpi/viot.c
> +++ b/hw/acpi/viot.c
> @@ -64,6 +64,20 @@ static int pci_host_bridges(Object *obj, void *opaque)
> return 0;
> }
>
> +static int pci_host_range_compare(gconstpointer a, gconstpointer b)
nit: shouldn't this have a gint return type since we use gconstpointer
as arguments anyway?
https://docs.gtk.org/glib/callback.CompareFunc.html
> +{
> + struct viot_pci_host_range *range_a = (struct viot_pci_host_range *)a;
> + struct viot_pci_host_range *range_b = (struct viot_pci_host_range *)b;
> +
> + if (range_a->min_bus < range_b->min_bus) {
> + return -1;
> + } else if (range_a->min_bus > range_b->min_bus) {
> + return 1;
> + } else {
> + return 0;
> + }
> +}
> +
> /*
> * Generate a VIOT table with one PCI-based virtio-iommu that manages PCI
> * endpoints.
> @@ -87,6 +101,9 @@ void build_viot(MachineState *ms, GArray *table_data,
> BIOSLinker *linker,
> object_child_foreach_recursive(OBJECT(ms), pci_host_bridges,
> pci_host_ranges);
>
> + /* Sort the pci host ranges by min_bus */
> + g_array_sort(pci_host_ranges, pci_host_range_compare);
> +
> /* ACPI table header */
> acpi_table_begin(&table, table_data);
> /* Node count */
> --
> 2.20.1
>
- Re: [PATCH 1/6] hw/acpi/viot: rename build_pci_range_node() to pci_host_bridges(), (continued)
- [PATCH 2/6] hw/acpi/viot: move the individual PCI host bridge entry generation to a new function, Mark Cave-Ayland, 2022/05/18
- [PATCH 3/6] hw/acpi/viot: build array of PCI host bridges before generating VIOT ACPI table, Mark Cave-Ayland, 2022/05/18
- [PATCH 4/6] tests/acpi: virt: allow VIOT acpi table changes, Mark Cave-Ayland, 2022/05/18
- [PATCH 5/6] hw/acpi/viot: sort VIOT ACPI table entries by PCI host bus min_bus, Mark Cave-Ayland, 2022/05/18
- Re: [PATCH 5/6] hw/acpi/viot: sort VIOT ACPI table entries by PCI host bus min_bus,
Ani Sinha <=
- [PATCH 6/6] tests/acpi: virt: update golden masters for VIOT, Mark Cave-Ayland, 2022/05/18
- Re: [PATCH 0/6] hw/acpi/viot: generate stable VIOT ACPI tables, Philippe Mathieu-Daudé, 2022/05/22