Hi Michael, > On Jan 17, 2017, at 9:45 AM, Michael S. Tsirkin <m...@redhat.com> wrote: > > On Mon, Jan 16, 2017 at 10:57:42AM -0800, Ben Warren wrote: >> I think we have a misunderstanding here. I’m storing the VM >> Generation ID __data__ (a GUID) in a fw_cfg blob, not the address. > > Yes, I think I gathered this much from the discussion. This is what > I'm saying - don't. Have guest loader reserve guest memory and write the > address into a fw cfg blob, and have qemu write the id at that address. > This way you can update guest memory at any time. > So I’ve gone down the path of creating a writeable fw_cfg blob to hold the VGID address, but it doesn’t seem to be getting updated.
Here’s the code I’ve added: #define VMGENID_FW_CFG_FILE "etc/vmgenid" #define VMGENID_FW_CFG_ADDR_FILE "etc/vmgenid_addr” // Create writeable fw_cfg blob, vas->vgia is a GArray of size 8 and element size 1 fw_cfg_add_file_callback(s, VMGENID_FW_CFG_ADDR_FILE, NULL, NULL, vms->vgia->data, 8, false); // Request BIOS to allocate memory for the read-only DATA file: bios_linker_loader_alloc(linker, VMGENID_FW_CFG_FILE, guid, 0,false); // Request BIOS to allocate memory for the writeable ADDRESS file: bios_linker_loader_alloc(linker, VMGENID_FW_CFG_ADDR_FILE, s->vgia, 0, false); // Request BIOS to write the address of the DATA file into the ADDRESS file: bios_linker_loader_add_pointer(linker, VMGENID_FW_CFG_ADDR_FILE, 0, sizeof(uint64_t), VMGENID_FW_CFG_FILE, 0); I’ve instrumented SeaBIOS and see the requests being made and memcpy to the file happening, but don’t see any changes in QEMU in the memory pointed to by VMGENID_FW_CFG_ADDR_FILE. Is this how writeable fw_cfg is supposed to work? thanks, Ben > -- > MST
smime.p7s
Description: S/MIME cryptographic signature