[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 25/96] pc: acpi-build: update linker on guest access
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 25/96] pc: acpi-build: update linker on guest access |
Date: |
Wed, 18 Feb 2015 22:46:32 +0100 |
From: Igor Mammedov <address@hidden>
Linker table is build only once, so if later during
tables rebuild sizes of other ACPI tables change
pointers will be patched incorrectly due to wrong
offsets in linker. Resulting in guest not being able
to find ACPI tables.
Fix it by updating 'linker' table with the rest of
tables when firmware reads it.
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Marcel Apfelbaum <address@hidden>
---
hw/i386/acpi-build.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index d9b99bc..47368c9 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1368,6 +1368,8 @@ struct AcpiBuildState {
uint8_t patched;
PcGuestInfo *guest_info;
void *rsdp;
+ ram_addr_t linker_ram;
+ uint32_t linker_size;
} AcpiBuildState;
static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg)
@@ -1574,6 +1576,8 @@ static void acpi_build_update(void *build_opaque,
uint32_t offset)
memcpy(qemu_get_ram_ptr(build_state->table_ram), tables.table_data->data,
build_state->table_size);
memcpy(build_state->rsdp, tables.rsdp->data, acpi_data_len(tables.rsdp));
+ memcpy(qemu_get_ram_ptr(build_state->linker_ram), tables.linker->data,
+ build_state->linker_size);
cpu_physical_memory_set_dirty_range_nocode(build_state->table_ram,
build_state->table_size);
@@ -1640,7 +1644,9 @@ void acpi_setup(PcGuestInfo *guest_info)
assert(build_state->table_ram != RAM_ADDR_MAX);
build_state->table_size = acpi_data_len(tables.table_data);
- acpi_add_rom_blob(NULL, tables.linker, "etc/table-loader", 0);
+ build_state->linker_ram =
+ acpi_add_rom_blob(build_state, tables.linker, "etc/table-loader", 0);
+ build_state->linker_size = acpi_data_len(tables.linker);
fw_cfg_add_file(guest_info->fw_cfg, ACPI_BUILD_TPMLOG_FILE,
tables.tcpalog->data, acpi_data_len(tables.tcpalog));
--
MST
- [Qemu-devel] [PULL 15/96] pci-assign: Convert to realize, (continued)
- [Qemu-devel] [PULL 15/96] pci-assign: Convert to realize, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 17/96] acpi, pc: Add hotunplug request cb for pc machine., Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 16/96] qdev: Don't exit when running into bad -global, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 18/96] acpi, ich9: Add hotunplug request cb for ich9., Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 19/96] acpi, pc: Add unplug cb for pc machine., Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 20/96] acpi, ich9: Add unplug cb for ich9., Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 21/96] acpi, piix4: Add unplug cb for piix4., Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 22/96] vl.c: Fix error messages when parsing maxmem parameters, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 23/96] pc: memory: Validate alignment of maxram_size to page size, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 24/96] acpi: update RSDP on guest access, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 25/96] pc: acpi-build: update linker on guest access,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 26/96] pc: acpi-build: migrate RSDP table, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 27/96] exec: round up size on MR resize, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 28/96] acpi-build: fix ACPI RAM management, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 29/96] acpi: has_immutable_rsdp->!rsdp_in_ram, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 30/96] acpi-build: simplify rsdp management for legacy, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 31/96] scripts/update-linux-headers.sh: pull virtio hdrs, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 32/96] include: import virtio headers from linux 4.0, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 35/96] virtio-balloon: use standard headers, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 33/96] virtio: use standard virtio_ring.h, Michael S. Tsirkin, 2015/02/18
- [Qemu-devel] [PULL 34/96] virtio: use standard-headers, Michael S. Tsirkin, 2015/02/18