qemu/hw/nvram
Jason A. Donenfeld e935b73508 x86: return modified setup_data only if read as memory, not as file
If setup_data is being read into a specific memory location, then
generally the setup_data address parameter is read first, so that the
caller knows where to read it into. In that case, we should return
setup_data containing the absolute addresses that are hard coded and
determined a priori. This is the case when kernels are loaded by BIOS,
for example. In contrast, when setup_data is read as a file, then we
shouldn't modify setup_data, since the absolute address will be wrong by
definition. This is the case when OVMF loads the image.

This allows setup_data to be used like normal, without crashing when EFI
tries to use it.

(As a small development note, strangely, fw_cfg_add_file_callback() was
exported but fw_cfg_add_bytes_callback() wasn't, so this makes that
consistent.)

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Laurent Vivier <laurent@vivier.eu>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
Cc: Richard Henderson <richard.henderson@linaro.org>
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Message-Id: <20220921093134.2936487-1-Jason@zx2c4.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-09-27 11:30:59 +02:00
..
chrp_nvram.c nvram: Exit QEMU if NVRAM cannot contain all -prom-env data 2020-08-14 13:34:31 +10:00
ds1225y.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
eeprom93xx.c migration: Replace migration's JSON writer by the general one 2020-12-19 10:39:16 +01:00
eeprom_at24c.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
fw_cfg-interface.c hw/nvram: Always register FW_CFG_DATA_GENERATOR_INTERFACE 2020-10-12 11:50:20 -04:00
fw_cfg.c x86: return modified setup_data only if read as memory, not as file 2022-09-27 11:30:59 +02:00
Kconfig hw/nvram: Introduce Xilinx battery-backed ram 2021-09-30 13:42:10 +01:00
mac_nvram.c nvram: Exit QEMU if NVRAM cannot contain all -prom-env data 2020-08-14 13:34:31 +10:00
meson.build hw/nvram: Restrict fw_cfg QOM interface to sysemu and tools 2022-01-18 10:45:35 +01:00
npcm7xx_otp.c hw/*: Use type casting for SysBusDevice in NPCM7XX 2021-01-12 21:19:02 +00:00
nrf51_nvm.c Do not include exec/address-spaces.h if it's not really necessary 2021-05-02 17:24:51 +02:00
spapr_nvram.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
xlnx-bbram.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
xlnx-efuse-crc.c hw/nvram: Introduce Xilinx eFuse QOM 2021-09-30 13:42:09 +01:00
xlnx-efuse.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
xlnx-versal-efuse-cache.c hw/nvram: Introduce Xilinx Versal eFuse device 2021-09-30 13:42:10 +01:00
xlnx-versal-efuse-ctrl.c hw/nvram: Fix Memory Leak in Xilinx Versal eFuse device 2021-10-23 18:50:33 +02:00
xlnx-zynqmp-efuse.c hw/nvram: Fix Memory Leak in Xilinx ZynqMP eFuse device 2021-10-23 18:50:33 +02:00