On Wed, Jul 30, 2014 at 11:13:07AM -0400, Stefan Berger wrote: > "Michael S. Tsirkin" <m...@redhat.com> wrote on 07/30/2014 11:07:28 AM: > > > > > >If you need bios to allocate this memory, then we will > > > >need a new allocation type for this, add it to linker > > > >in bios and qemu. > > > > > > Why does the BIOS 'need' to allocate it? Why can it not just use the > > > memory > > > that QEMU allocates? Obviously I am using the 'pointer relocation' feature > > > of the BIOS to bend the pointer in the TCPA table to this log area. > > > > You tell me - your patches make BIOS allocate it. > > No, the BIOS does not allocate it, it merely relocates the pointer.
Yes it does :) You pushed the log as part of the table_data which bios allocates memory for, and reads from QEMU. > One example here: > > fadt->firmware_ctrl = cpu_to_le32(facs); > /* FACS address to be filled by Guest linker */ > bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE, > ACPI_BUILD_TABLE_FILE, > table_data, &fadt->firmware_ctrl, > sizeof fadt->firmware_ctrl); > > similar example here: > > log_area_start_address = table_data->len + sizeof(*tcpa); > > [...] > tcpa->log_area_start_address = cpu_to_le64(log_area_start_address); > > /* LASA address to be filled by Guest linker */ > bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE, > ACPI_BUILD_TABLE_FILE, > table_data, &tcpa->log_area_start_address, > sizeof(tcpa->log_area_start_address)); > > > > Stefan It relocates it to within the table that it allocated.