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