[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 02/12] hw/arm/virt-acpi-build.c: Migrate virtio creation to co
From: |
Sunil V L |
Subject: |
[PATCH v2 02/12] hw/arm/virt-acpi-build.c: Migrate virtio creation to common location |
Date: |
Thu, 24 Aug 2023 19:59:32 +0530 |
RISC-V also needs to create the virtio in DSDT in the same way as ARM. So,
instead of duplicating the code, move this function to the device specific
file which is common across architectures.
Suggested-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
---
hw/arm/virt-acpi-build.c | 29 ++---------------------------
hw/virtio/meson.build | 1 +
hw/virtio/virtio-acpi.c | 28 ++++++++++++++++++++++++++++
include/hw/virtio/virtio-acpi.h | 11 +++++++++++
4 files changed, 42 insertions(+), 27 deletions(-)
create mode 100644 hw/virtio/virtio-acpi.c
create mode 100644 include/hw/virtio/virtio-acpi.h
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index b8e725d953..69733f6663 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -58,6 +58,7 @@
#include "migration/vmstate.h"
#include "hw/acpi/ghes.h"
#include "hw/acpi/viot.h"
+#include "hw/virtio/virtio-acpi.h"
#define ARM_SPI_BASE 32
@@ -118,32 +119,6 @@ static void acpi_dsdt_add_flash(Aml *scope, const
MemMapEntry *flash_memmap)
aml_append(scope, dev);
}
-static void acpi_dsdt_add_virtio(Aml *scope,
- const MemMapEntry *virtio_mmio_memmap,
- uint32_t mmio_irq, int num)
-{
- hwaddr base = virtio_mmio_memmap->base;
- hwaddr size = virtio_mmio_memmap->size;
- int i;
-
- for (i = 0; i < num; i++) {
- uint32_t irq = mmio_irq + i;
- Aml *dev = aml_device("VR%02u", i);
- aml_append(dev, aml_name_decl("_HID", aml_string("LNRO0005")));
- aml_append(dev, aml_name_decl("_UID", aml_int(i)));
- aml_append(dev, aml_name_decl("_CCA", aml_int(1)));
-
- Aml *crs = aml_resource_template();
- aml_append(crs, aml_memory32_fixed(base, size, AML_READ_WRITE));
- aml_append(crs,
- aml_interrupt(AML_CONSUMER, AML_LEVEL, AML_ACTIVE_HIGH,
- AML_EXCLUSIVE, &irq, 1));
- aml_append(dev, aml_name_decl("_CRS", crs));
- aml_append(scope, dev);
- base += size;
- }
-}
-
static void acpi_dsdt_add_pci(Aml *scope, const MemMapEntry *memmap,
uint32_t irq, VirtMachineState *vms)
{
@@ -850,7 +825,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
VirtMachineState *vms)
acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
}
fw_cfg_acpi_dsdt_add(scope, &memmap[VIRT_FW_CFG]);
- acpi_dsdt_add_virtio(scope, &memmap[VIRT_MMIO],
+ virtio_acpi_dsdt_add(scope, &memmap[VIRT_MMIO],
(irqmap[VIRT_MMIO] + ARM_SPI_BASE), NUM_VIRTIO_TRANSPORTS);
acpi_dsdt_add_pci(scope, memmap, irqmap[VIRT_PCIE] + ARM_SPI_BASE, vms);
if (vms->acpi_dev) {
diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build
index 13e7c6c272..3ae1242bcf 100644
--- a/hw/virtio/meson.build
+++ b/hw/virtio/meson.build
@@ -75,3 +75,4 @@ system_ss.add(when: 'CONFIG_ALL', if_true:
files('virtio-stub.c'))
system_ss.add(files('virtio-hmp-cmds.c'))
specific_ss.add_all(when: 'CONFIG_VIRTIO', if_true: specific_virtio_ss)
+system_ss.add(when: 'CONFIG_ACPI', if_true: files('virtio-acpi.c'))
diff --git a/hw/virtio/virtio-acpi.c b/hw/virtio/virtio-acpi.c
new file mode 100644
index 0000000000..977499defd
--- /dev/null
+++ b/hw/virtio/virtio-acpi.c
@@ -0,0 +1,28 @@
+#include "hw/virtio/virtio-acpi.h"
+#include "hw/acpi/aml-build.h"
+
+void virtio_acpi_dsdt_add(Aml *scope,
+ const MemMapEntry *virtio_mmio_memmap,
+ uint32_t mmio_irq, int num)
+{
+ hwaddr base = virtio_mmio_memmap->base;
+ hwaddr size = virtio_mmio_memmap->size;
+ int i;
+
+ for (i = 0; i < num; i++) {
+ uint32_t irq = mmio_irq + i;
+ Aml *dev = aml_device("VR%02u", i);
+ aml_append(dev, aml_name_decl("_HID", aml_string("LNRO0005")));
+ aml_append(dev, aml_name_decl("_UID", aml_int(i)));
+ aml_append(dev, aml_name_decl("_CCA", aml_int(1)));
+
+ Aml *crs = aml_resource_template();
+ aml_append(crs, aml_memory32_fixed(base, size, AML_READ_WRITE));
+ aml_append(crs,
+ aml_interrupt(AML_CONSUMER, AML_LEVEL, AML_ACTIVE_HIGH,
+ AML_EXCLUSIVE, &irq, 1));
+ aml_append(dev, aml_name_decl("_CRS", crs));
+ aml_append(scope, dev);
+ base += size;
+ }
+}
diff --git a/include/hw/virtio/virtio-acpi.h b/include/hw/virtio/virtio-acpi.h
new file mode 100644
index 0000000000..b8687b1b42
--- /dev/null
+++ b/include/hw/virtio/virtio-acpi.h
@@ -0,0 +1,11 @@
+#ifndef VIRTIO_ACPI_H
+#define VIRTIO_ACPI_H
+
+#include "qemu/osdep.h"
+#include "exec/hwaddr.h"
+
+void virtio_acpi_dsdt_add(Aml *scope, const MemMapEntry *virtio_mmio_memmap,
+ uint32_t mmio_irq, int num);
+
+#endif
+
--
2.39.2
- [PATCH v2 00/12] RISC-V: ACPI: Enable AIA, PLIC and update RHCT, Sunil V L, 2023/08/24
- [PATCH v2 01/12] hw/arm/virt-acpi-build.c: Migrate fw_cfg creation to common location, Sunil V L, 2023/08/24
- [PATCH v2 02/12] hw/arm/virt-acpi-build.c: Migrate virtio creation to common location,
Sunil V L <=
- [PATCH v2 03/12] hw/riscv: virt: Make few IMSIC macros and functions public, Sunil V L, 2023/08/24
- [PATCH v2 04/12] hw/riscv/virt-acpi-build.c: Add AIA support in RINTC, Sunil V L, 2023/08/24
- [PATCH v2 05/12] hw/riscv/virt-acpi-build.c: Add IMSIC in the MADT, Sunil V L, 2023/08/24
- [PATCH v2 07/12] hw/riscv/virt-acpi-build.c: Add CMO information in RHCT, Sunil V L, 2023/08/24
- [PATCH v2 06/12] hw/riscv/virt-acpi-build.c: Add APLIC in the MADT, Sunil V L, 2023/08/24
- [PATCH v2 08/12] hw/riscv/virt-acpi-build.c: Add MMU node in RHCT, Sunil V L, 2023/08/24
- [PATCH v2 09/12] hw/pci-host/gpex: Define properties for MMIO ranges, Sunil V L, 2023/08/24
- [PATCH v2 10/12] hw/riscv/virt: Update GPEX MMIO related properties, Sunil V L, 2023/08/24
- [PATCH v2 11/12] hw/riscv/virt-acpi-build.c: Add IO controllers and devices, Sunil V L, 2023/08/24
- [PATCH v2 12/12] hw/riscv/virt-acpi-build.c: Add PLIC in MADT, Sunil V L, 2023/08/24