[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v3 15/22] hw/acpi-build: only indicate nvdimm and pc-d
From: |
David Hildenbrand |
Subject: |
[Qemu-ppc] [PATCH v3 15/22] hw/acpi-build: only indicate nvdimm and pc-dimm |
Date: |
Thu, 20 Sep 2018 12:32:36 +0200 |
Once we have other memory devices that are not ACPI devices (e.g.
virtio based), we cannot indicate them via ACPI. So let's skip these
devices.
Signed-off-by: David Hildenbrand <address@hidden>
---
hw/i386/acpi-build.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index e1ee8ae9e0..2278522b87 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2266,7 +2266,6 @@ static void build_srat_hotpluggable_memory(GArray
*table_data, uint64_t base,
for (cur = base, info = info_list;
cur < end;
cur += size, info = info->next) {
- numamem = acpi_data_push(table_data, sizeof *numamem);
if (!info) {
/*
@@ -2278,19 +2277,30 @@ static void build_srat_hotpluggable_memory(GArray
*table_data, uint64_t base,
* Memory devices may override proximity set by this entry,
* providing _PXM method if necessary.
*/
+ numamem = acpi_data_push(table_data, sizeof *numamem);
build_srat_memory(numamem, end - 1, 1, default_node,
MEM_AFFINITY_HOTPLUGGABLE |
MEM_AFFINITY_ENABLED);
break;
}
mi = info->value;
+ if (mi->type != MEMORY_DEVICE_INFO_KIND_DIMM &&
+ mi->type != MEMORY_DEVICE_INFO_KIND_NVDIMM) {
+ /*
+ * Don't indicate memory devices that are not proper ACPI devices,
+ * merge them with the empty ranges.
+ */
+ size = 0;
+ continue;
+ }
+
is_nvdimm = (mi->type == MEMORY_DEVICE_INFO_KIND_NVDIMM);
di = !is_nvdimm ? mi->u.dimm.data : mi->u.nvdimm.data;
if (cur < di->addr) {
+ numamem = acpi_data_push(table_data, sizeof *numamem);
build_srat_memory(numamem, cur, di->addr - cur, default_node,
MEM_AFFINITY_HOTPLUGGABLE |
MEM_AFFINITY_ENABLED);
- numamem = acpi_data_push(table_data, sizeof *numamem);
}
size = di->size;
@@ -2303,6 +2313,7 @@ static void build_srat_hotpluggable_memory(GArray
*table_data, uint64_t base,
flags |= MEM_AFFINITY_NON_VOLATILE;
}
+ numamem = acpi_data_push(table_data, sizeof *numamem);
build_srat_memory(numamem, di->addr, size, di->node, flags);
}
--
2.17.1
- Re: [Qemu-ppc] [PATCH v3 14/22] memory-device: trace when pre_assigning/assigning/unassigning addresses, (continued)
[Qemu-ppc] [PATCH v3 13/22] memory-device: complete factoring out unplug handling, David Hildenbrand, 2018/09/20
[Qemu-ppc] [PATCH v3 12/22] memory-device: complete factoring out plug handling, David Hildenbrand, 2018/09/20
[Qemu-ppc] [PATCH v3 15/22] hw/acpi-build: only indicate nvdimm and pc-dimm,
David Hildenbrand <=
[Qemu-ppc] [PATCH v3 16/22] memory-device: add optional function get_device_id(), David Hildenbrand, 2018/09/20
[Qemu-ppc] [PATCH v3 17/22] virtio-pmem: prototype, David Hildenbrand, 2018/09/20