On Mon, Feb 22, 2016 at 02:41:38PM +0200, Michael S. Tsirkin wrote: > Useful to send guest data back to QEMU. > The write interface is restricted to DMA. > > Suggested-by: Kevin O'Connor <ke...@koconnor.net> > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > --- > > hw/lm32/lm32_hwsetup.h | 2 +- > include/hw/loader.h | 4 ++-- > include/hw/nvram/fw_cfg.h | 3 ++- > hw/arm/virt-acpi-build.c | 2 +- > hw/core/loader.c | 19 ++++++++++++------- > hw/i386/acpi-build.c | 4 ++-- > hw/nvram/fw_cfg.c | 36 ++++++++++++++++++++++++++++-------- > 7 files changed, 48 insertions(+), 22 deletions(-) > > diff --git a/hw/lm32/lm32_hwsetup.h b/hw/lm32/lm32_hwsetup.h > index 838754d..805b445 100644 > --- a/hw/lm32/lm32_hwsetup.h > +++ b/hw/lm32/lm32_hwsetup.h > @@ -74,7 +74,7 @@ static inline void hwsetup_create_rom(HWSetup *hw, > hwaddr base) > { > rom_add_blob("hwsetup", hw->data, TARGET_PAGE_SIZE, > - TARGET_PAGE_SIZE, base, NULL, NULL, NULL); > + TARGET_PAGE_SIZE, base, NULL, NULL, NULL, true); > }
Instead of supporting "writable blobs", I wonder if it would be simpler for both firmware and qemu to implement an "ioctl" like interface. That is, just directly invoke a new fw_cfg callback from fw_cfg_dma_transfer() with the data obtained via dma_memory_read(). I think that may be more flexible because then the QEMU code doesn't have to check for changes to a blob - it would instead be immediately invoked upon a change. -Kevin