[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 6/8] acpi: fix "Memory device control fields" reg
From: |
Zhu Guihua |
Subject: |
[Qemu-devel] [PATCH v6 6/8] acpi: fix "Memory device control fields" register |
Date: |
Thu, 2 Apr 2015 17:50:22 +0800 |
acpi_mem_hotplug.txt states that 0 bit in Memory device control fields
must be cleared before writing to register. Now "Memory device control
fields" is declared with "Preserve" update rule, so 0 bit isn't cleared
when other fields are written.
To solve this bug, This patch fixes UpdateRule to WriteAsZeros in "Memory
device control fields" register.
Signed-off-by: Zhu Guihua <address@hidden>
---
docs/specs/acpi_mem_hotplug.txt | 5 ++++-
hw/i386/acpi-build.c | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/docs/specs/acpi_mem_hotplug.txt b/docs/specs/acpi_mem_hotplug.txt
index dcc4808..68daa14 100644
--- a/docs/specs/acpi_mem_hotplug.txt
+++ b/docs/specs/acpi_mem_hotplug.txt
@@ -31,7 +31,10 @@ Memory hot-plug interface (IO port 0xa00-0xa17, 1-4 byte
access):
[0xc-0x13] reserved, writes into it are ignored
[0x14] Memory device control fields
bits:
- 0: reserved, OSPM must clear it before writing to register
+ 0: reserved, OSPM must clear it before writing to register.
+ Due to BUG in versions prior 2.4 that field isn't cleared
+ when other fields are written. Keep it reserved and don't
+ try to reuse it.
1: if set to 1 clears device insert event, set by OSPM
after it has emitted device check event for the
selected memory device
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index dc1b8e8..eb66fef 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -924,7 +924,7 @@ build_ssdt(GArray *table_data, GArray *linker,
aml_append(scope, field);
field = aml_field(stringify(MEMORY_HOTPLUG_IO_REGION), aml_byte_acc,
- aml_preserve);
+ aml_write_as_zeros);
aml_append(field, aml_reserved_field(160 /* bits, Offset(20) */));
aml_append(field, /* 1 if enabled, read only */
aml_named_field(stringify(MEMORY_SLOT_ENABLED), 1));
--
1.9.3
- [Qemu-devel] [PATCH v6 0/8] QEMU memory hot unplug support, Zhu Guihua, 2015/04/02
- [Qemu-devel] [PATCH v6 2/8] acpi, mem-hotplug: add acpi_memory_slot_status() to get MemStatus, Zhu Guihua, 2015/04/02
- [Qemu-devel] [PATCH v6 3/8] acpi, mem-hotplug: add unplug request cb for memory device, Zhu Guihua, 2015/04/02
- [Qemu-devel] [PATCH v6 6/8] acpi: fix "Memory device control fields" register,
Zhu Guihua <=
- [Qemu-devel] [PATCH v6 5/8] acpi: extend aml_field() to support UpdateRule, Zhu Guihua, 2015/04/02
- [Qemu-devel] [PATCH v6 4/8] acpi, mem-hotplug: add unplug cb for memory device, Zhu Guihua, 2015/04/02
- [Qemu-devel] [PATCH v6 8/8] qmp-event: add event notification for memory hot unplug error, Zhu Guihua, 2015/04/02
[Qemu-devel] [PATCH v6 7/8] acpi: add hardware implementation for memory hot unplug, Zhu Guihua, 2015/04/02
Re: [Qemu-devel] [PATCH v6 0/8] QEMU memory hot unplug support, Zhu Guihua, 2015/04/08