mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-17 10:38:52 +00:00
hw/acpi/viot: move the individual PCI host bridge entry generation to a new function
Instead of generating each table entry inline, move the individual PCI host bridge table entry generation to a separate build_pci_host_range() function. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Ani Sinha <ani@anisinha.ca> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20220525173232.31429-3-mark.cave-ayland@ilande.co.uk> Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
6164a11104
commit
1b805ab560
@ -16,6 +16,31 @@ struct viot_pci_ranges {
|
||||
uint16_t output_node;
|
||||
};
|
||||
|
||||
static void build_pci_host_range(GArray *table_data, int min_bus, int max_bus,
|
||||
uint16_t output_node)
|
||||
{
|
||||
/* Type */
|
||||
build_append_int_noprefix(table_data, 1 /* PCI range */, 1);
|
||||
/* Reserved */
|
||||
build_append_int_noprefix(table_data, 0, 1);
|
||||
/* Length */
|
||||
build_append_int_noprefix(table_data, 24, 2);
|
||||
/* Endpoint start */
|
||||
build_append_int_noprefix(table_data, PCI_BUILD_BDF(min_bus, 0), 4);
|
||||
/* PCI Segment start */
|
||||
build_append_int_noprefix(table_data, 0, 2);
|
||||
/* PCI Segment end */
|
||||
build_append_int_noprefix(table_data, 0, 2);
|
||||
/* PCI BDF start */
|
||||
build_append_int_noprefix(table_data, PCI_BUILD_BDF(min_bus, 0), 2);
|
||||
/* PCI BDF end */
|
||||
build_append_int_noprefix(table_data, PCI_BUILD_BDF(max_bus, 0xff), 2);
|
||||
/* Output node */
|
||||
build_append_int_noprefix(table_data, output_node, 2);
|
||||
/* Reserved */
|
||||
build_append_int_noprefix(table_data, 0, 6);
|
||||
}
|
||||
|
||||
/* Build PCI range for a given PCI host bridge */
|
||||
static int enumerate_pci_host_bridges(Object *obj, void *opaque)
|
||||
{
|
||||
@ -30,27 +55,8 @@ static int enumerate_pci_host_bridges(Object *obj, void *opaque)
|
||||
|
||||
pci_bus_range(bus, &min_bus, &max_bus);
|
||||
|
||||
/* Type */
|
||||
build_append_int_noprefix(blob, 1 /* PCI range */, 1);
|
||||
/* Reserved */
|
||||
build_append_int_noprefix(blob, 0, 1);
|
||||
/* Length */
|
||||
build_append_int_noprefix(blob, 24, 2);
|
||||
/* Endpoint start */
|
||||
build_append_int_noprefix(blob, PCI_BUILD_BDF(min_bus, 0), 4);
|
||||
/* PCI Segment start */
|
||||
build_append_int_noprefix(blob, 0, 2);
|
||||
/* PCI Segment end */
|
||||
build_append_int_noprefix(blob, 0, 2);
|
||||
/* PCI BDF start */
|
||||
build_append_int_noprefix(blob, PCI_BUILD_BDF(min_bus, 0), 2);
|
||||
/* PCI BDF end */
|
||||
build_append_int_noprefix(blob, PCI_BUILD_BDF(max_bus, 0xff), 2);
|
||||
/* Output node */
|
||||
build_append_int_noprefix(blob, pci_ranges->output_node, 2);
|
||||
/* Reserved */
|
||||
build_append_int_noprefix(blob, 0, 6);
|
||||
|
||||
build_pci_host_range(blob, min_bus, max_bus,
|
||||
pci_ranges->output_node);
|
||||
pci_ranges->count++;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user