mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
fw-cfg: support writeable blobs
Useful to send guest data back to QEMU. Changes from Laszlo Ersek <lersek@redhat.com>: - rebase the patch from Michael Tsirkin's original postings at [1] and [2] to the following patches: - loader: Allow a custom AddressSpace when loading ROMs - loader: Add AddressSpace loading support to uImages - loader: fix handling of custom address spaces when adding ROM blobs - reject such writes immediately that would exceed the end of the array, rather than performing a partial write before setting the error bit: see the (len != dma.length) condition - document the write interface [1] http://lists.nongnu.org/archive/html/qemu-devel/2016-02/msg04968.html [2] http://lists.nongnu.org/archive/html/qemu-devel/2016-03/msg02735.html Cc: "Gabriel L. Somlo" <somlo@cmu.edu> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Igor Mammedov <imammedo@redhat.com> Cc: Michael Walle <michael@walle.cc> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Peter Maydell <peter.maydell@linaro.org> Cc: Shannon Zhao <zhaoshenglong@huawei.com> Cc: qemu-arm@nongnu.org Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Acked-by: Gabriel Somlo <somlo@cmu.edu> Tested-by: Gabriel Somlo <somlo@cmu.edu> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
c471ad0e9b
commit
baf2d5bfba
8 changed files with 75 additions and 30 deletions
|
@ -180,7 +180,8 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
|
|||
size_t max_len, hwaddr addr,
|
||||
const char *fw_file_name,
|
||||
FWCfgReadCallback fw_callback,
|
||||
void *callback_opaque, AddressSpace *as);
|
||||
void *callback_opaque, AddressSpace *as,
|
||||
bool read_only);
|
||||
int rom_add_elf_program(const char *name, void *data, size_t datasize,
|
||||
size_t romsize, hwaddr addr, AddressSpace *as);
|
||||
int rom_check_and_register_reset(void);
|
||||
|
@ -194,7 +195,7 @@ void hmp_info_roms(Monitor *mon, const QDict *qdict);
|
|||
#define rom_add_file_fixed(_f, _a, _i) \
|
||||
rom_add_file(_f, NULL, _a, _i, false, NULL, NULL)
|
||||
#define rom_add_blob_fixed(_f, _b, _l, _a) \
|
||||
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL, NULL)
|
||||
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL, NULL, true)
|
||||
#define rom_add_file_mr(_f, _mr, _i) \
|
||||
rom_add_file(_f, NULL, 0, _i, false, _mr, NULL)
|
||||
#define rom_add_file_as(_f, _as, _i) \
|
||||
|
@ -202,7 +203,7 @@ void hmp_info_roms(Monitor *mon, const QDict *qdict);
|
|||
#define rom_add_file_fixed_as(_f, _a, _i, _as) \
|
||||
rom_add_file(_f, NULL, _a, _i, false, NULL, _as)
|
||||
#define rom_add_blob_fixed_as(_f, _b, _l, _a, _as) \
|
||||
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL, _as)
|
||||
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL, _as, true)
|
||||
|
||||
#define PC_ROM_MIN_VGA 0xc0000
|
||||
#define PC_ROM_MIN_OPTION 0xc8000
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue