On 05/18/2011 07:44 PM, Kevin O'Connor wrote: > On Wed, May 18, 2011 at 03:49:25PM -0400, Stefan Berger wrote: >> On 04/12/2011 09:32 AM, Stefan Berger wrote: >>> + >>> +static u32 add_tpm_device(void **tpm_addr, void **tcpa_addr) >>> +{ >>> + struct tcpa_descriptor_rev2 *tcpa; >>> + >>> + *tpm_addr = NULL; >>> + *tcpa_addr = NULL; >>> + >>> + if (has_working_tpm()) { >>> + u32 laml = 64 * 1024; >> Kevin, >> >> the above line prepares 64 kb to be allocated for an ACPI table. >> It works fine if booting a VM from an image. However, when passing >> the kernel, initrd and command line parameters to Qemu directly >> (-kernel, -append, ..), the 64kb above seem to be too much -- I see >> errors in the Linux kernel's dmesg when Linux tries to access the >> ACPI tables. Lowering the above to 48kb (happens to) makes it work. >> I am wondering whether something is copying into the ACPI area or >> what else may be the reason - do you know? > I don't know of any reason why that would fail. You can print out the > address and compare it to the e820 map that SeaBIOS outputs and verify > it is properly reserved. > > Does increasing the amount of guest system ram help? It helped. At some point the initrd and ACPI tables weren't overlapping anymore... I forgot to increase the size reserved for ACPI tables inside the Qemu code... > BTW, is this just a buffer or could the size be dynamically > calculated? > Following specs it's supposed to be 64kb. The BIOS writes logs into this area. Stefan > -Kevin