- target/arm: Change arm_cpu_mp_affinity when enabled IPIV feature - fw_cfg: Don't set callback_opaque NULL in fw_cfg_modify_bytes_read() Signed-off-by: Jiabo Feng <fengjiabo1@huawei.com> (cherry picked from commit 519065adc4ba430c349a235e25b346829814f0d9)
65 lines
2.2 KiB
Diff
65 lines
2.2 KiB
Diff
From b93ac4e4fd07e36b95ce211faefd0c7912b6f62a Mon Sep 17 00:00:00 2001
|
||
From: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
|
||
Date: Tue, 3 Dec 2024 13:18:06 +0000
|
||
Subject: [PATCH] fw_cfg: Don't set callback_opaque NULL in
|
||
fw_cfg_modify_bytes_read()
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
On arm/virt platform, Chen Xiang reported a Guest crash while
|
||
attempting the below steps,
|
||
|
||
1. Launch the Guest with nvdimm=on
|
||
2. Hot-add a NVDIMM dev
|
||
3. Reboot
|
||
4. Guest boots fine.
|
||
5. Reboot again.
|
||
6. Guest boot fails.
|
||
|
||
QEMU_EFI reports the below error:
|
||
ProcessCmdAddPointer: invalid pointer value in "etc/acpi/tables"
|
||
OnRootBridgesConnected: InstallAcpiTables: Protocol Error
|
||
|
||
Debugging shows that on first reboot(after hot adding NVDIMM),
|
||
Qemu updates the etc/table-loader len,
|
||
|
||
qemu_ram_resize()
|
||
fw_cfg_modify_file()
|
||
fw_cfg_modify_bytes_read()
|
||
|
||
And in fw_cfg_modify_bytes_read() we set the "callback_opaque" for
|
||
the key entry to NULL. Because of this, on the second reboot,
|
||
virt_acpi_build_update() is called with a NULL "build_state" and
|
||
returns without updating the ACPI tables. This seems to be
|
||
upsetting the firmware.
|
||
|
||
To fix this, don't change the callback_opaque in fw_cfg_modify_bytes_read().
|
||
|
||
Fixes: bdbb5b1706d165 ("fw_cfg: add fw_cfg_machine_reset function")
|
||
Reported-by: chenxiang <chenxiang66@hisilicon.com>
|
||
Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
|
||
Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
|
||
Message-ID: <20241203131806.37548-1-shameerali.kolothum.thodi@huawei.com>
|
||
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||
---
|
||
hw/nvram/fw_cfg.c | 1 -
|
||
1 file changed, 1 deletion(-)
|
||
|
||
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
|
||
index 4e4524673a..d32079ebdf 100644
|
||
--- a/hw/nvram/fw_cfg.c
|
||
+++ b/hw/nvram/fw_cfg.c
|
||
@@ -729,7 +729,6 @@ static void *fw_cfg_modify_bytes_read(FWCfgState *s, uint16_t key,
|
||
ptr = s->entries[arch][key].data;
|
||
s->entries[arch][key].data = data;
|
||
s->entries[arch][key].len = len;
|
||
- s->entries[arch][key].callback_opaque = NULL;
|
||
s->entries[arch][key].allow_write = false;
|
||
|
||
return ptr;
|
||
--
|
||
2.41.0.windows.1
|
||
|